403Webshell
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/air-sport_cz/www/admin939wizxmp/themes/new-theme/public/order.bundle.js
/*! For license information please see order.bundle.js.LICENSE.txt */
(()=>{var e={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":[]}')},4110:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=window.$;t.default=function(e,t){r.post(e).then((function(){return window.location.assign(t)}))}},61353:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=s(r(99663)),o=s(r(22600));function s(e){return e&&e.__esModule?e:{default:e}}var a=window.$,i=function(){function e(t){(0,n.default)(this,e),this.selector=".ps-sortable-column",this.columns=a(t).find(this.selector)}return(0,o.default)(e,[{key:"attach",value:function(){var e=this;this.columns.on("click",(function(t){var r=a(t.delegateTarget);e.sortByColumn(r,e.getToggledSortDirection(r))}))}},{key:"sortBy",value:function(e,t){var r=this.columns.is('[data-sort-col-name="'+e+'"]');if(!r)throw new Error('Cannot sort by "'+e+'": invalid column');this.sortByColumn(r,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,r){var n=new URL(window.location.href),o=n.searchParams;return r?(o.set(r+"[orderBy]",e),o.set(r+"[sortOrder]",t)):(o.set("orderBy",e),o.set("sortOrder",t)),n.toString()}}]),e}();t.default=i},5595:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=s(r(99663)),o=s(r(22600));function s(e){return e&&e.__esModule?e:{default:e}}var a=window.$,i=function(){function e(){(0,n.default)(this,e)}return(0,o.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(r){var n=a(r.currentTarget).is(":checked");n?t.enableBulkActionsBtn(e):t.disableBulkActionsBtn(e),e.getContainer().find(".js-bulk-action-checkbox").prop("checked",n)}))}},{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=i},93757:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=a(r(99663)),o=a(r(22600)),s=a(r(95778));function a(e){return e&&e.__esModule?e:{default:e}}var i=window.$,d=function(){function e(){var t=this;return(0,n.default)(this,e),this.router=new s.default,{extend:function(e){return t.extend(e)}}}return(0,o.default)(e,[{key:"extend",value:function(e){var t=this;e.getContainer().on("click",".js-bulk-action-btn.open_tabs",(function(r){t.openTabs(r,e)}))}},{key:"openTabs",value:function(e,t){var r=this,n=i(e.currentTarget),o=n.data("route"),s=n.data("routeParamName"),a=n.data("tabsBlockedMessage"),d=t.getContainer().find(".js-bulk-action-checkbox:checked"),u=!0;d.each((function(e,t){var n=i(t),d={};d[s]=n.val();var c=window.open(r.router.generate(o,d));c?(c.blur(),window.focus()):u=!1,u||alert(a)}))}}]),e}();t.default=d},69077:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=s(r(99663)),o=s(r(22600));function s(e){return e&&e.__esModule?e:{default:e}}var a=window.$,i=function(){function e(){(0,n.default)(this,e),this.locks=[]}return(0,o.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 r=a(e.currentTarget),n=r.closest(".js-choice-options").data("url");t.submitForm(n,r)}))}},{key:"submitForm",value:function(e,t){var r=t.data("value");if(!this.isLocked(e)){var n=a("<form>",{action:e,method:"POST"}).append(a("<input>",{name:"value",value:r,type:"hidden"}));n.appendTo("body"),n.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=i},2573:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=s(r(99663)),o=s(r(22600));function s(e){return e&&e.__esModule?e:{default:e}}var a=window.$,i=function(){function e(){(0,n.default)(this,e)}return(0,o.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 r=a("#"+e.getId()+"_grid_common_show_query_modal");r.modal("show"),r.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 r=t.getContainer().find(".js-grid-table").data("query");e.find('textarea[name="sql"]').val(r),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,r){var n=a(r),o=n.find("a").length>0?n.find("a").text():n.text();t.length>0&&(t=t.concat(" > ")),t=t.concat(o)})),t}}]),e}();t.default=i},96803:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=a(r(99663)),o=a(r(22600)),s=a(r(4110));function a(e){return e&&e.__esModule?e:{default:e}}var i=window.$,d=function(){function e(){(0,n.default)(this,e)}return(0,o.default)(e,[{key:"extend",value:function(e){e.getContainer().on("click",".js-reset-search",(function(e){(0,s.default)(i(e.currentTarget).data("url"),i(e.currentTarget).data("redirect"))}))}}]),e}();t.default=d},91137:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=s(r(99663)),o=s(r(22600));function s(e){return e&&e.__esModule?e:{default:e}}var a=function(){function e(){(0,n.default)(this,e)}return(0,o.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,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=s(r(99663)),o=s(r(22600));function s(e){return e&&e.__esModule?e:{default:e}}var a=window.$,i=function(){function e(){(0,n.default)(this,e)}return(0,o.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),r=t.closest("td"),n=a("td.clickable",e).not(r),o=!1;n.addClass("cursor-pointer").mousedown((function(){a(window).mousemove((function(){o=!0,a(window).unbind("mousemove")}))})),n.mouseup((function(){var e=o;if(o=!1,a(window).unbind("mousemove"),!e){var r=t.data("confirm-message");r.length&&!window.confirm(r)||(document.location=t.attr("href"))}}))}))}))}}]),e}();t.default=i},46446:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=s(r(99663)),o=s(r(22600));function s(e){return e&&e.__esModule?e:{default:e}}var a=window.$,i=function(){function e(){(0,n.default)(this,e)}return(0,o.default)(e,[{key:"extend",value:function(e){e.getContainer().on("click",".js-bulk-modal-form-submit-btn",(function(t){var r=a(t.target).data("modal-id"),n=a("#"+r);n.modal("show"),n.find(".js-submit-modal-form-btn").on("click",(function(){var t=n.find("form"),r=t.find("#"+t.data("bulk-inputs-id"));e.getContainer().find(".js-bulk-action-checkbox:checked").each((function(e,n){var o=a(n),s=r.data("prototype").replace(/__name__/g,o.val()),i=a(a.parseHTML(s)[0]);i.val(o.val()),t.append(i)})),t.submit()}))}))}}]),e}();t.default=i},76897:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=s(r(99663)),o=s(r(22600));function s(e){return e&&e.__esModule?e:{default:e}}var a=window.$,i=function(){function e(t){(0,n.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,o.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,r=a(e.currentTarget).closest("tr");if(r.hasClass(this.previewOpenClass))return r.next(".preview-row").remove(),r.removeClass(this.previewOpenClass),this.showExpandIcon(r),void this.hideCollapseIcon(r);this.closeOpenedPreviews();var n=a(e.currentTarget).data("preview-data-url");this.isLocked(n)||(this.lock(n),a.ajax({url:n,method:"GET",dataType:"json",complete:function(){t.unlock(n)}}).then((function(e){t.renderPreviewContent(r,e.preview)})).catch((function(e){window.showErrorMessage(e.responseJSON.message)})))}},{key:"renderPreviewContent",value:function(e,t){var r=e.find("td").length,n=a('\n        <tr class="preview-row">\n          <td colspan="'+r+'">'+t+"</td>\n        </tr>\n      ");e.addClass(this.previewOpenClass),this.showCollapseIcon(e),this.hideExpandIcon(e),"function"==typeof this.previewCustomization&&this.previewCustomization(n),e.after(n)}},{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,r){var n=a(r);if(n.hasClass(e.previewOpenClass)){var o=n.next();o.hasClass("preview-row")&&(o.remove(),n.removeClass(e.previewOpenClass),e.hideCollapseIcon(n))}}))}}]),e}();t.default=i},37758:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=s(r(99663)),o=s(r(22600));function s(e){return e&&e.__esModule?e:{default:e}}var a=function(){function e(){(0,n.default)(this,e)}return(0,o.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,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=a(r(99663)),o=a(r(22600)),s=a(r(61353));function a(e){return e&&e.__esModule?e:{default:e}}var i=function(){function e(){(0,n.default)(this,e)}return(0,o.default)(e,[{key:"extend",value:function(e){var t=e.getContainer().find("table.table");new s.default(t).attach()}}]),e}();t.default=i},17868:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=a(r(99663)),o=a(r(22600)),s=a(r(68840));function a(e){return e&&e.__esModule?e:{default:e}}var i=window.$,d=function(){function e(){var t=this;return(0,n.default)(this,e),{extend:function(e){return t.extend(e)}}}return(0,o.default)(e,[{key:"extend",value:function(e){var t=this;e.getContainer().on("click",".js-bulk-action-submit-btn",(function(r){t.submit(r,e)}))}},{key:"submit",value:function(e,t){var r=i(e.currentTarget),n=r.data("confirm-message"),o=r.data("confirmTitle");void 0!==n&&n.length>0?void 0!==o?this.showConfirmModal(r,t,n,o):window.confirm(n)&&this.postForm(r,t):this.postForm(r,t)}},{key:"showConfirmModal",value:function(e,t,r,n){var o=this,a=e.data("confirmButtonLabel"),i=e.data("closeButtonLabel"),d=e.data("confirmButtonClass");new s.default({id:t.getId()+"-grid-confirm-modal",confirmTitle:n,confirmMessage:r,confirmButtonLabel:a,closeButtonLabel:i,confirmButtonClass:d},(function(){return o.postForm(e,t)})).show()}},{key:"postForm",value:function(e,t){var r=i("#"+t.getId()+"_filter_form");r.attr("action",e.data("form-url")),r.attr("method",e.data("form-method")),r.submit()}}]),e}();t.default=d},36188:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=s(r(99663)),o=s(r(22600));function s(e){return e&&e.__esModule?e:{default:e}}var a=window.$,i=function(){function e(){var t=this;return(0,n.default)(this,e),{extend:function(e){return t.extend(e)}}}return(0,o.default)(e,[{key:"extend",value:function(e){var t=this;e.getHeaderContainer().on("click",".js-grid-action-submit-btn",(function(r){t.handleSubmit(r,e)}))}},{key:"handleSubmit",value:function(e,t){var r=a(e.currentTarget),n=r.data("confirm-message");if(!(void 0!==n&&n.length>0)||window.confirm(n)){var o=a("#"+t.getId()+"_filter_form");o.attr("action",r.data("url")),o.attr("method",r.data("method")),o.find('input[name="'+t.getId()+'[_token]"]').val(r.data("csrf")),o.submit()}}}]),e}();t.default=i},53277:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=s(r(99663)),o=s(r(22600));function s(e){return e&&e.__esModule?e:{default:e}}var a=window.$,i=function(){function e(t){(0,n.default)(this,e),this.id=t,this.$container=a("#"+this.id+"_grid")}return(0,o.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=i},68840:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,o=(n=r(85315))&&n.__esModule?n:{default:n};t.default=function(e,t,r){var n=this,a=e.id,i=e.closable;this.modal=function(e){var t,r=e.id,n=void 0===r?"confirm-modal":r,s=e.confirmTitle,a=e.confirmMessage,i=void 0===a?"":a,d=e.closeButtonLabel,u=void 0===d?"Close":d,c=e.confirmButtonLabel,l=void 0===c?"Accept":c,f=e.confirmButtonClass,m=void 0===f?"btn-primary":f,h=e.customButtons,v=void 0===h?[]:h,p={};return p.container=document.createElement("div"),p.container.classList.add("modal","fade"),p.container.id=n,p.dialog=document.createElement("div"),p.dialog.classList.add("modal-dialog"),p.content=document.createElement("div"),p.content.classList.add("modal-content"),p.header=document.createElement("div"),p.header.classList.add("modal-header"),s&&(p.title=document.createElement("h4"),p.title.classList.add("modal-title"),p.title.innerHTML=s),p.closeIcon=document.createElement("button"),p.closeIcon.classList.add("close"),p.closeIcon.setAttribute("type","button"),p.closeIcon.dataset.dismiss="modal",p.closeIcon.innerHTML="×",p.body=document.createElement("div"),p.body.classList.add("modal-body","text-left","font-weight-normal"),p.message=document.createElement("p"),p.message.classList.add("confirm-message"),p.message.innerHTML=i,p.footer=document.createElement("div"),p.footer.classList.add("modal-footer"),p.closeButton=document.createElement("button"),p.closeButton.setAttribute("type","button"),p.closeButton.classList.add("btn","btn-outline-secondary","btn-lg"),p.closeButton.dataset.dismiss="modal",p.closeButton.innerHTML=u,p.confirmButton=document.createElement("button"),p.confirmButton.setAttribute("type","button"),p.confirmButton.classList.add("btn",m,"btn-lg","btn-confirm-submit"),p.confirmButton.dataset.dismiss="modal",p.confirmButton.innerHTML=l,s?p.header.append(p.title,p.closeIcon):p.header.appendChild(p.closeIcon),p.body.appendChild(p.message),(t=p.footer).append.apply(t,[p.closeButton].concat((0,o.default)(v),[p.confirmButton])),p.content.append(p.header,p.body,p.footer),p.dialog.appendChild(p.content),p.container.appendChild(p.dialog),p}(e),this.$modal=s(this.modal.container),this.show=function(){n.$modal.modal()},this.modal.confirmButton.addEventListener("click",t),this.$modal.modal({backdrop:!!i||"static",keyboard:void 0===i||i,closable:void 0===i||i,show:!1}),this.$modal.on("hidden.bs.modal",(function(){document.querySelector("#"+a).remove(),r&&r()})),document.body.appendChild(this.modal.container)};var s=window.$},95778:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=d(r(52945)),o=d(r(99663)),s=d(r(22600)),a=d(r(2564)),i=d(r(57208));function d(e){return e&&e.__esModule?e:{default:e}}var u=window.$,c=function(){function e(){return(0,o.default)(this,e),window.prestashop&&window.prestashop.customRoutes&&(0,n.default)(i.default.routes,window.prestashop.customRoutes),a.default.setData(i.default),a.default.setBaseUrl(u(document).find("body").data("base-url")),this}return(0,s.default)(e,[{key:"generate",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=(0,n.default)(t,{_token:u(document).find("body").data("token")});return a.default.generate(e,r)}}]),e}();t.default=c},33333:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){n(e),e.on("click",".js-preview-more-products-btn",(function(t){t.preventDefault();var o=r(t.currentTarget);o.closest("tbody").find(".js-product-preview-more").removeClass("d-none"),o.closest("tr").remove(),n(e)}))};var r=window.$;function n(e){var t=!1;r(".js-cell-product-stock-location",e.find("tr:not(.d-none)")).filter("td").each((function(e,n){return""===r(n).html().trim()||(t=!0,!1)})),r(".js-cell-product-stock-location",e).toggle(t)}},24043:(e,t,r)=>{e.exports={default:r(47185),__esModule:!0}},52945:(e,t,r)=>{e.exports={default:r(56981),__esModule:!0}},32242:(e,t,r)=>{e.exports={default:r(33391),__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,r)=>{"use strict";t.__esModule=!0;var n,o=(n=r(32242))&&n.__esModule?n:{default:n};t.default=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),(0,o.default)(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}()},85315:(e,t,r)=>{"use strict";t.__esModule=!0;var n,o=(n=r(24043))&&n.__esModule?n:{default:n};t.default=function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}return(0,o.default)(e)}},47185:(e,t,r)=>{r(91867),r(2586),e.exports=r(34579).Array.from},56981:(e,t,r)=>{r(72699),e.exports=r(34579).Object.assign},33391:(e,t,r)=>{r(31477);var n=r(34579).Object;e.exports=function(e,t,r){return n.defineProperty(e,t,r)}},85663:e=>{e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},12159:(e,t,r)=>{var n=r(36727);e.exports=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e}},57428:(e,t,r)=>{var n=r(7932),o=r(78728),s=r(16531);e.exports=function(e){return function(t,r,a){var i,d=n(t),u=o(d.length),c=s(a,u);if(e&&r!=r){for(;u>c;)if((i=d[c++])!=i)return!0}else for(;u>c;c++)if((e||c in d)&&d[c]===r)return e||c||0;return!e&&-1}}},14677:(e,t,r)=>{var n=r(32894),o=r(22939)("toStringTag"),s="Arguments"==n(function(){return arguments}());e.exports=function(e){var t,r,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?r:s?n(t):"Object"==(a=n(t))&&"function"==typeof t.callee?"Arguments":a}},32894:e=>{var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},34579:e=>{var t=e.exports={version:"2.6.11"};"number"==typeof __e&&(__e=t)},52445:(e,t,r)=>{"use strict";var n=r(4743),o=r(83101);e.exports=function(e,t,r){t in e?n.f(e,t,o(0,r)):e[t]=r}},19216:(e,t,r)=>{var n=r(85663);e.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,o){return e.call(t,r,n,o)}}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,r)=>{e.exports=!r(7929)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},97467:(e,t,r)=>{var n=r(36727),o=r(33938).document,s=n(o)&&n(o.createElement);e.exports=function(e){return s?o.createElement(e):{}}},73338:e=>{e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},83856:(e,t,r)=>{var n=r(33938),o=r(34579),s=r(19216),a=r(41818),i=r(27069),d=function(e,t,r){var u,c,l,f=e&d.F,m=e&d.G,h=e&d.S,v=e&d.P,p=e&d.B,_=e&d.W,b=m?o:o[t]||(o[t]={}),g=b.prototype,k=m?n:h?n[t]:(n[t]||{}).prototype;for(u in m&&(r=t),r)(c=!f&&k&&void 0!==k[u])&&i(b,u)||(l=c?k[u]:r[u],b[u]=m&&"function"!=typeof k[u]?r[u]:p&&c?s(l,n):_&&k[u]==l?function(e){var t=function(t,r,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,n)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(l):v&&"function"==typeof l?s(Function.call,l):l,v&&((b.virtual||(b.virtual={}))[u]=l,e&d.R&&g&&!g[u]&&a(g,u,l)))};d.F=1,d.G=2,d.S=4,d.P=8,d.B=16,d.W=32,d.U=64,d.R=128,e.exports=d},7929:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},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,r){return t.call(e,r)}},41818:(e,t,r)=>{var n=r(4743),o=r(83101);e.exports=r(89666)?function(e,t,r){return n.f(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},54881:(e,t,r)=>{var n=r(33938).document;e.exports=n&&n.documentElement},33758:(e,t,r)=>{e.exports=!r(89666)&&!r(7929)((function(){return 7!=Object.defineProperty(r(97467)("div"),"a",{get:function(){return 7}}).a}))},50799:(e,t,r)=>{var n=r(32894);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},45991:(e,t,r)=>{var n=r(15449),o=r(22939)("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(n.Array===e||s[o]===e)}},36727:e=>{e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},95602:(e,t,r)=>{var n=r(12159);e.exports=function(e,t,r,o){try{return o?t(n(r)[0],r[1]):t(r)}catch(t){var s=e.return;throw void 0!==s&&n(s.call(e)),t}}},33945:(e,t,r)=>{"use strict";var n=r(98989),o=r(83101),s=r(25378),a={};r(41818)(a,r(22939)("iterator"),(function(){return this})),e.exports=function(e,t,r){e.prototype=n(a,{next:o(1,r)}),s(e,t+" Iterator")}},45700:(e,t,r)=>{"use strict";var n=r(16227),o=r(83856),s=r(57470),a=r(41818),i=r(15449),d=r(33945),u=r(25378),c=r(95089),l=r(22939)("iterator"),f=!([].keys&&"next"in[].keys()),m="keys",h="values",v=function(){return this};e.exports=function(e,t,r,p,_,b,g){d(r,t,p);var k,x,y,w=function(e){if(!f&&e in E)return E[e];switch(e){case m:case h:return function(){return new r(this,e)}}return function(){return new r(this,e)}},I=t+" Iterator",T=_==h,O=!1,E=e.prototype,C=E[l]||E["@@iterator"]||_&&E[_],S=C||w(_),j=_?T?w("entries"):S:void 0,P="Array"==t&&E.entries||C;if(P&&(y=c(P.call(new e)))!==Object.prototype&&y.next&&(u(y,I,!0),n||"function"==typeof y[l]||a(y,l,v)),T&&C&&C.name!==h&&(O=!0,S=function(){return C.call(this)}),n&&!g||!f&&!O&&E[l]||a(E,l,S),i[t]=S,i[I]=v,_)if(k={values:T?S:w(h),keys:b?S:w(m),entries:j},g)for(x in k)x in E||s(E,x,k[x]);else o(o.P+o.F*(f||O),t,k);return k}},96630:(e,t,r)=>{var n=r(22939)("iterator"),o=!1;try{var s=[7][n]();s.return=function(){o=!0},Array.from(s,(function(){throw 2}))}catch(e){}e.exports=function(e,t){if(!t&&!o)return!1;var r=!1;try{var s=[7],a=s[n]();a.next=function(){return{done:r=!0}},s[n]=function(){return a},e(s)}catch(e){}return r}},15449:e=>{e.exports={}},16227:e=>{e.exports=!0},88082:(e,t,r)=>{"use strict";var n=r(89666),o=r(46162),s=r(48195),a=r(86274),i=r(66530),d=r(50799),u=Object.assign;e.exports=!u||r(7929)((function(){var e={},t={},r=Symbol(),n="abcdefghijklmnopqrst";return e[r]=7,n.split("").forEach((function(e){t[e]=e})),7!=u({},e)[r]||Object.keys(u({},t)).join("")!=n}))?function(e,t){for(var r=i(e),u=arguments.length,c=1,l=s.f,f=a.f;u>c;)for(var m,h=d(arguments[c++]),v=l?o(h).concat(l(h)):o(h),p=v.length,_=0;p>_;)m=v[_++],n&&!f.call(h,m)||(r[m]=h[m]);return r}:u},98989:(e,t,r)=>{var n=r(12159),o=r(57856),s=r(73338),a=r(58989)("IE_PROTO"),i=function(){},d=function(){var e,t=r(97467)("iframe"),n=s.length;for(t.style.display="none",r(54881).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),d=e.F;n--;)delete d.prototype[s[n]];return d()};e.exports=Object.create||function(e,t){var r;return null!==e?(i.prototype=n(e),r=new i,i.prototype=null,r[a]=e):r=d(),void 0===t?r:o(r,t)}},4743:(e,t,r)=>{var n=r(12159),o=r(33758),s=r(33206),a=Object.defineProperty;t.f=r(89666)?Object.defineProperty:function(e,t,r){if(n(e),t=s(t,!0),n(r),o)try{return a(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},57856:(e,t,r)=>{var n=r(4743),o=r(12159),s=r(46162);e.exports=r(89666)?Object.defineProperties:function(e,t){o(e);for(var r,a=s(t),i=a.length,d=0;i>d;)n.f(e,r=a[d++],t[r]);return e}},48195:(e,t)=>{t.f=Object.getOwnPropertySymbols},95089:(e,t,r)=>{var n=r(27069),o=r(66530),s=r(58989)("IE_PROTO"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=o(e),n(e,s)?e[s]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},12963:(e,t,r)=>{var n=r(27069),o=r(7932),s=r(57428)(!1),a=r(58989)("IE_PROTO");e.exports=function(e,t){var r,i=o(e),d=0,u=[];for(r in i)r!=a&&n(i,r)&&u.push(r);for(;t.length>d;)n(i,r=t[d++])&&(~s(u,r)||u.push(r));return u}},46162:(e,t,r)=>{var n=r(12963),o=r(73338);e.exports=Object.keys||function(e){return n(e,o)}},86274:(e,t)=>{t.f={}.propertyIsEnumerable},83101:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},57470:(e,t,r)=>{e.exports=r(41818)},25378:(e,t,r)=>{var n=r(4743).f,o=r(27069),s=r(22939)("toStringTag");e.exports=function(e,t,r){e&&!o(e=r?e:e.prototype,s)&&n(e,s,{configurable:!0,value:t})}},58989:(e,t,r)=>{var n=r(20250)("keys"),o=r(65730);e.exports=function(e){return n[e]||(n[e]=o(e))}},20250:(e,t,r)=>{var n=r(34579),o=r(33938),s="__core-js_shared__",a=o[s]||(o[s]={});(e.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})("versions",[]).push({version:n.version,mode:r(16227)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},90510:(e,t,r)=>{var n=r(11052),o=r(8333);e.exports=function(e){return function(t,r){var s,a,i=String(o(t)),d=n(r),u=i.length;return d<0||d>=u?e?"":void 0:(s=i.charCodeAt(d))<55296||s>56319||d+1===u||(a=i.charCodeAt(d+1))<56320||a>57343?e?i.charAt(d):s:e?i.slice(d,d+2):a-56320+(s-55296<<10)+65536}}},16531:(e,t,r)=>{var n=r(11052),o=Math.max,s=Math.min;e.exports=function(e,t){return(e=n(e))<0?o(e+t,0):s(e,t)}},11052:e=>{var t=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:t)(e)}},7932:(e,t,r)=>{var n=r(50799),o=r(8333);e.exports=function(e){return n(o(e))}},78728:(e,t,r)=>{var n=r(11052),o=Math.min;e.exports=function(e){return e>0?o(n(e),9007199254740991):0}},66530:(e,t,r)=>{var n=r(8333);e.exports=function(e){return Object(n(e))}},33206:(e,t,r)=>{var n=r(36727);e.exports=function(e,t){if(!n(e))return e;var r,o;if(t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;if("function"==typeof(r=e.valueOf)&&!n(o=r.call(e)))return o;if(!t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},65730:e=>{var t=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++t+r).toString(36))}},22939:(e,t,r)=>{var n=r(20250)("wks"),o=r(65730),s=r(33938).Symbol,a="function"==typeof s;(e.exports=function(e){return n[e]||(n[e]=a&&s[e]||(a?s:o)("Symbol."+e))}).store=n},83728:(e,t,r)=>{var n=r(14677),o=r(22939)("iterator"),s=r(15449);e.exports=r(34579).getIteratorMethod=function(e){if(null!=e)return e[o]||e["@@iterator"]||s[n(e)]}},2586:(e,t,r)=>{"use strict";var n=r(19216),o=r(83856),s=r(66530),a=r(95602),i=r(45991),d=r(78728),u=r(52445),c=r(83728);o(o.S+o.F*!r(96630)((function(e){Array.from(e)})),"Array",{from:function(e){var t,r,o,l,f=s(e),m="function"==typeof this?this:Array,h=arguments.length,v=h>1?arguments[1]:void 0,p=void 0!==v,_=0,b=c(f);if(p&&(v=n(v,h>2?arguments[2]:void 0,2)),null==b||m==Array&&i(b))for(r=new m(t=d(f.length));t>_;_++)u(r,_,p?v(f[_],_):f[_]);else for(l=b.call(f),r=new m;!(o=l.next()).done;_++)u(r,_,p?a(l,v,[o.value,_],!0):o.value);return r.length=_,r}})},72699:(e,t,r)=>{var n=r(83856);n(n.S+n.F,"Object",{assign:r(88082)})},31477:(e,t,r)=>{var n=r(83856);n(n.S+n.F*!r(89666),"Object",{defineProperty:r(4743).f})},91867:(e,t,r)=>{"use strict";var n=r(90510)(!0);r(45700)(String,"String",(function(e){this._t=String(e),this._i=0}),(function(){var e,t=this._t,r=this._i;return r>=t.length?{value:void 0,done:!0}:(e=n(t,r),this._i+=e.length,{value:e,done:!1})}))},2564:e=>{"use strict";var t=Object.assign||function(e){for(var t,r=1;r<arguments.length;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},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.exports=new function e(){var n=this;(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,e),this.setRoutes=function(e){n.routesRouting=e||[]},this.getRoutes=function(){return n.routesRouting},this.setBaseUrl=function(e){n.contextRouting.base_url=e},this.getBaseUrl=function(){return n.contextRouting.base_url},this.setPrefix=function(e){n.contextRouting.prefix=e},this.setScheme=function(e){n.contextRouting.scheme=e},this.getScheme=function(){return n.contextRouting.scheme},this.setHost=function(e){n.contextRouting.host=e},this.getHost=function(){return n.contextRouting.host},this.buildQueryParams=function(e,t,o){var s=new RegExp(/\[]$/);t instanceof Array?t.forEach((function(t,a){s.test(e)?o(e,t):n.buildQueryParams(e+"["+("object"===(void 0===t?"undefined":r(t))?a:"")+"]",t,o)})):"object"===(void 0===t?"undefined":r(t))?Object.keys(t).forEach((function(r){return n.buildQueryParams(e+"["+r+"]",t[r],o)})):o(e,t)},this.getRoute=function(e){var t=n.contextRouting.prefix+e;if(n.routesRouting[t])return n.routesRouting[t];if(!n.routesRouting[e])throw new Error('The route "'+e+'" does not exist.');return n.routesRouting[e]},this.generate=function(e,r,o){var s=n.getRoute(e),a=r||{},i=t({},a),d="_scheme",u="",c=!0,l="";if((s.tokens||[]).forEach((function(t){if("text"===t[0])return u=t[1]+u,void(c=!1);if("variable"!==t[0])throw new Error('The token type "'+t[0]+'" is not supported.');var r=(s.defaults||{})[t[3]];if(0==c||!r||(a||{})[t[3]]&&a[t[3]]!==s.defaults[t[3]]){var n;if((a||{})[t[3]])n=a[t[3]],delete i[t[3]];else{if(!r){if(c)return;throw new Error('The route "'+e+'" requires the parameter "'+t[3]+'".')}n=s.defaults[t[3]]}if(!0!==n&&!1!==n&&""!==n||!c){var o=encodeURIComponent(n).replace(/%2F/g,"/");"null"===o&&null===n&&(o=""),u=t[1]+o+u}c=!1}else r&&delete i[t[3]]})),""==u&&(u="/"),(s.hosttokens||[]).forEach((function(e){var t;return"text"===e[0]?void(l=e[1]+l):void("variable"===e[0]&&((a||{})[e[3]]?(t=a[e[3]],delete i[e[3]]):s.defaults[e[3]]&&(t=s.defaults[e[3]]),l=e[1]+t+l))})),u=n.contextRouting.base_url+u,s.requirements[d]&&n.getScheme()!==s.requirements[d]?u=s.requirements[d]+"://"+(l||n.getHost())+u:l&&n.getHost()!==l?u=n.getScheme()+"://"+l+u:!0===o&&(u=n.getScheme()+"://"+n.getHost()+u),0<Object.keys(i).length){var f=[],m=function(e,t){var r=t;r=null===(r="function"==typeof r?r():r)?"":r,f.push(encodeURIComponent(e)+"="+encodeURIComponent(r))};Object.keys(i).forEach((function(e){return n.buildQueryParams(e,i[e],m)})),u=u+"?"+f.join("&").replace(/%20/g,"+")}return u},this.setData=function(e){n.setBaseUrl(e.base_url),n.setRoutes(e.routes),"prefix"in e&&n.setPrefix(e.prefix),n.setHost(e.host),n.setScheme(e.scheme)},this.contextRouting={base_url:"",prefix:"",host:"",scheme:""}}}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}(()=>{"use strict";var e=p(r(53277)),t=p(r(96803)),n=p(r(37758)),o=p(r(2573)),s=p(r(58630)),a=p(r(58899)),i=p(r(36188)),d=p(r(17868)),u=p(r(5595)),c=p(r(91137)),l=p(r(69077)),f=p(r(46446)),m=p(r(76897)),h=p(r(33333)),v=p(r(93757));function p(e){return e&&e.__esModule?e:{default:e}}(0,window.$)((function(){var r=new e.default("order");r.addExtension(new n.default),r.addExtension(new o.default),r.addExtension(new t.default),r.addExtension(new s.default),r.addExtension(new a.default),r.addExtension(new i.default),r.addExtension(new d.default),r.addExtension(new u.default),r.addExtension(new c.default),r.addExtension(new f.default),r.addExtension(new l.default),r.addExtension(new m.default(h.default)),r.addExtension(new v.default)}))})(),window.order={}})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9hcHAvdXRpbHMvcmVzZXRfc2VhcmNoLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2FwcC91dGlscy90YWJsZS1zb3J0aW5nLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vYnVsay1hY3Rpb24tY2hlY2tib3gtZXh0ZW5zaW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vYnVsay1vcGVuLXRhYnMtZXh0ZW5zaW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vY2hvaWNlLWV4dGVuc2lvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL2V4cG9ydC10by1zcWwtbWFuYWdlci1leHRlbnNpb24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9maWx0ZXJzLXJlc2V0LWV4dGVuc2lvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL2ZpbHRlcnMtc3VibWl0LWJ1dHRvbi1lbmFibGVyLWV4dGVuc2lvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL2xpbmstcm93LWFjdGlvbi1leHRlbnNpb24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9tb2RhbC1mb3JtLXN1Ym1pdC1leHRlbnNpb24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9wcmV2aWV3LWV4dGVuc2lvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL3JlbG9hZC1saXN0LWV4dGVuc2lvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL3NvcnRpbmctZXh0ZW5zaW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vc3VibWl0LWJ1bGstYWN0aW9uLWV4dGVuc2lvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL3N1Ym1pdC1ncmlkLWFjdGlvbi1leHRlbnNpb24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvY29tcG9uZW50cy9ncmlkL2dyaWQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvY29tcG9uZW50cy9tb2RhbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL3JvdXRlci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9wYWdlcy9vcmRlci9wcmV2aWV3LXByb2R1Y3RzLXRvZ2dsZXIuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9hcnJheS9mcm9tLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2Fzc2lnbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9hcnJheS9mcm9tLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2Fzc2lnbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jbGFzc29mLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29mLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NyZWF0ZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZmFpbHMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oYXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faHRtbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faW9iamVjdC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWNhbGwuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1kZXRlY3QuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyYXRvcnMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19saWJyYXJ5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWFzc2lnbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHAuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHBzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcHMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1waWUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcmVkZWZpbmUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtdG8tc3RyaW5nLXRhZy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zdHJpbmctYXQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pb2JqZWN0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tbGVuZ3RoLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tb2JqZWN0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdWlkLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5mcm9tLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmFzc2lnbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2Zvcy1yb3V0aW5nL2Rpc3Qvcm91dGluZy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvcGFnZXMvb3JkZXIvaW5kZXguanMiXSwibmFtZXMiOlsiJCIsIndpbmRvdyIsInVybCIsInJlZGlyZWN0VXJsIiwicG9zdCIsInRoZW4iLCJsb2NhdGlvbiIsImFzc2lnbiIsIlRhYmxlU29ydGluZyIsInRhYmxlIiwidGhpcyIsInNlbGVjdG9yIiwiY29sdW1ucyIsImZpbmQiLCJvbiIsImUiLCIkY29sdW1uIiwiZGVsZWdhdGVUYXJnZXQiLCJzb3J0QnlDb2x1bW4iLCJnZXRUb2dnbGVkU29ydERpcmVjdGlvbiIsImNvbHVtbk5hbWUiLCJkaXJlY3Rpb24iLCJpcyIsIkVycm9yIiwiY29sdW1uIiwiZ2V0VXJsIiwiZGF0YSIsImNvbE5hbWUiLCJwcmVmaXgiLCJVUkwiLCJocmVmIiwicGFyYW1zIiwic2VhcmNoUGFyYW1zIiwic2V0IiwidG9TdHJpbmciLCJCdWxrQWN0aW9uQ2hlY2tib3hFeHRlbnNpb24iLCJncmlkIiwiaGFuZGxlQnVsa0FjdGlvbkNoZWNrYm94U2VsZWN0IiwiaGFuZGxlQnVsa0FjdGlvblNlbGVjdEFsbENoZWNrYm94IiwiZ2V0Q29udGFpbmVyIiwiaXNDaGVja2VkIiwiY3VycmVudFRhcmdldCIsImVuYWJsZUJ1bGtBY3Rpb25zQnRuIiwiZGlzYWJsZUJ1bGtBY3Rpb25zQnRuIiwicHJvcCIsImxlbmd0aCIsIkJ1bGtPcGVuVGFic0V4dGVuc2lvbiIsInJvdXRlciIsIlJvdXRlciIsImV4dGVuZCIsImV2ZW50Iiwib3BlblRhYnMiLCIkc3VibWl0QnRuIiwicm91dGUiLCJyb3V0ZVBhcmFtTmFtZSIsInRhYnNCbG9ja2VkTWVzc2FnZSIsIiRjaGVja2JveGVzIiwiYWxsVGFic09wZW5lZCIsImVhY2giLCJpIiwiZWxlbWVudCIsIiRjaGVja2JveCIsInJvdXRlUGFyYW1zIiwidmFsIiwiaGFuZGxlIiwib3BlbiIsImdlbmVyYXRlIiwiYmx1ciIsImZvY3VzIiwiYWxlcnQiLCJDaG9pY2VFeHRlbnNpb24iLCJsb2NrcyIsInByZXZlbnREZWZhdWx0IiwiJGJ1dHRvbiIsImNsb3Nlc3QiLCJzdWJtaXRGb3JtIiwic2VsZWN0ZWRTdGF0dXNJZCIsImlzTG9ja2VkIiwiJGZvcm0iLCJhY3Rpb24iLCJtZXRob2QiLCJhcHBlbmQiLCJuYW1lIiwidmFsdWUiLCJ0eXBlIiwiYXBwZW5kVG8iLCJzdWJtaXQiLCJsb2NrIiwiaW5jbHVkZXMiLCJwdXNoIiwiRXhwb3J0VG9TcWxNYW5hZ2VyRXh0ZW5zaW9uIiwiZ2V0SGVhZGVyQ29udGFpbmVyIiwib25TaG93U3FsUXVlcnlDbGljayIsIm9uRXhwb3J0U3FsTWFuYWdlckNsaWNrIiwiJHNxbE1hbmFnZXJGb3JtIiwiZ2V0SWQiLCJmaWxsRXhwb3J0Rm9ybSIsIiRtb2RhbCIsIm1vZGFsIiwicXVlcnkiLCJnZXROYW1lRnJvbUJyZWFkY3J1bWIiLCIkYnJlYWRjcnVtYnMiLCJpdGVtIiwiJGJyZWFkY3J1bWIiLCJicmVhZGNydW1iVGl0bGUiLCJ0ZXh0IiwiY29uY2F0IiwiRmlsdGVyc1Jlc2V0RXh0ZW5zaW9uIiwiRmlsdGVyc1N1Ym1pdEJ1dHRvbkVuYWJsZXJFeHRlbnNpb24iLCIkZmlsdGVyc1JvdyIsIkxpbmtSb3dBY3Rpb25FeHRlbnNpb24iLCJpbml0Um93TGlua3MiLCJpbml0Q29uZmlybWFibGVBY3Rpb25zIiwiY29uZmlybU1lc3NhZ2UiLCJjb25maXJtIiwiJHBhcmVudFJvdyIsIiRyb3dBY3Rpb24iLCIkcGFyZW50Q2VsbCIsImNsaWNrYWJsZUNlbGxzIiwibm90IiwiaXNEcmFnZ2luZyIsImFkZENsYXNzIiwibW91c2Vkb3duIiwibW91c2Vtb3ZlIiwidW5iaW5kIiwibW91c2V1cCIsIndhc0RyYWdnaW5nIiwiZG9jdW1lbnQiLCJhdHRyIiwiTW9kYWxGb3JtU3VibWl0RXh0ZW5zaW9uIiwibW9kYWxJZCIsInRhcmdldCIsIiRidWxrSW5wdXRzQmxvY2siLCJpbnB1dCIsInJlcGxhY2UiLCIkaW5wdXQiLCJwYXJzZUhUTUwiLCJQcmV2aWV3RXh0ZW5zaW9uIiwicHJldmlld0N1c3RvbWl6YXRpb24iLCJleHBhbmRTZWxlY3RvciIsImNvbGxhcHNlU2VsZWN0b3IiLCJwcmV2aWV3T3BlbkNsYXNzIiwicHJldmlld1RvZ2dsZVNlbGVjdG9yIiwiJGdyaWRDb250YWluZXIiLCJoYW5kbGVJY29uSG92ZXJpbmciLCJ0b2dnbGVQcmV2aWV3IiwiJHByZXZpZXdUb2dnbGUiLCJoYXNDbGFzcyIsImhpZGVFeHBhbmRJY29uIiwic2hvd0V4cGFuZEljb24iLCIkY29sdW1uUm93IiwibmV4dCIsInJlbW92ZSIsInJlbW92ZUNsYXNzIiwiaGlkZUNvbGxhcHNlSWNvbiIsImNsb3NlT3BlbmVkUHJldmlld3MiLCJkYXRhVXJsIiwiYWpheCIsImRhdGFUeXBlIiwiY29tcGxldGUiLCJ1bmxvY2siLCJyZXNwb25zZSIsInJlbmRlclByZXZpZXdDb250ZW50IiwicHJldmlldyIsImNhdGNoIiwic2hvd0Vycm9yTWVzc2FnZSIsInJlc3BvbnNlSlNPTiIsIm1lc3NhZ2UiLCJjb250ZW50Iiwicm93Q29sdW1uQ291bnQiLCIkcHJldmlld1RlbXBsYXRlIiwic2hvd0NvbGxhcHNlSWNvbiIsImFmdGVyIiwicGFyZW50Iiwia2V5IiwiaW5kZXhPZiIsImluZGV4Iiwic3BsaWNlIiwiJHJvd3MiLCJyb3ciLCIkcm93IiwiJHByZXZpZXdSb3ciLCJSZWxvYWRMaXN0RXh0ZW5zaW9uIiwicmVsb2FkIiwiU29ydGluZ0V4dGVuc2lvbiIsIiRzb3J0YWJsZVRhYmxlIiwiYXR0YWNoIiwiU3VibWl0QnVsa0FjdGlvbkV4dGVuc2lvbiIsImNvbmZpcm1UaXRsZSIsInVuZGVmaW5lZCIsInNob3dDb25maXJtTW9kYWwiLCJwb3N0Rm9ybSIsImNvbmZpcm1CdXR0b25MYWJlbCIsImNsb3NlQnV0dG9uTGFiZWwiLCJjb25maXJtQnV0dG9uQ2xhc3MiLCJDb25maXJtTW9kYWwiLCJpZCIsInNob3ciLCJTdWJtaXRHcmlkQWN0aW9uRXh0ZW5zaW9uIiwiaGFuZGxlU3VibWl0IiwiR3JpZCIsIiRjb250YWluZXIiLCJleHRlbnNpb24iLCJjb25maXJtQ2FsbGJhY2siLCJjYW5jZWxDYWxsYmFjayIsImNsb3NhYmxlIiwiY3VzdG9tQnV0dG9ucyIsImNvbnRhaW5lciIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJkaWFsb2ciLCJoZWFkZXIiLCJ0aXRsZSIsImlubmVySFRNTCIsImNsb3NlSWNvbiIsInNldEF0dHJpYnV0ZSIsImRhdGFzZXQiLCJkaXNtaXNzIiwiYm9keSIsImZvb3RlciIsImNsb3NlQnV0dG9uIiwiY29uZmlybUJ1dHRvbiIsImFwcGVuZENoaWxkIiwiTW9kYWwiLCJhZGRFdmVudExpc3RlbmVyIiwiYmFja2Ryb3AiLCJrZXlib2FyZCIsInF1ZXJ5U2VsZWN0b3IiLCJwcmVzdGFzaG9wIiwiY3VzdG9tUm91dGVzIiwicm91dGVzIiwiUm91dGluZyIsInNldERhdGEiLCJzZXRCYXNlVXJsIiwidG9rZW5pemVkUGFyYW1zIiwiX3Rva2VuIiwidG9nZ2xlU3RvY2tMb2NhdGlvbkNvbHVtbiIsIiRidG4iLCJzaG93Q29sdW1uIiwiZmlsdGVyIiwiaHRtbCIsInRyaW0iLCJ0b2dnbGUiLCJtb2R1bGUiLCJleHBvcnRzIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiVHlwZUVycm9yIiwib2JqIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmluZVByb3BlcnRpZXMiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJwcm90b3R5cGUiLCJfZnJvbTIiLCJhcnIiLCJBcnJheSIsImlzQXJyYXkiLCJhcnIyIiwiJE9iamVjdCIsIml0IiwiZGVzYyIsImRlZmluZVByb3BlcnR5IiwiaXNPYmplY3QiLCJ0b0lPYmplY3QiLCJ0b0xlbmd0aCIsInRvQWJzb2x1dGVJbmRleCIsIklTX0lOQ0xVREVTIiwiJHRoaXMiLCJlbCIsImZyb21JbmRleCIsIk8iLCJjb2YiLCJUQUciLCJBUkciLCJhcmd1bWVudHMiLCJUIiwiQiIsInRyeUdldCIsIk9iamVjdCIsImNhbGxlZSIsImNhbGwiLCJzbGljZSIsImNvcmUiLCJ2ZXJzaW9uIiwiX19lIiwiJGRlZmluZVByb3BlcnR5IiwiY3JlYXRlRGVzYyIsIm9iamVjdCIsImYiLCJhRnVuY3Rpb24iLCJmbiIsInRoYXQiLCJhIiwiYiIsImMiLCJhcHBseSIsImdldCIsInNwbGl0IiwiZ2xvYmFsIiwiY3R4IiwiaGlkZSIsImhhcyIsIiRleHBvcnQiLCJzb3VyY2UiLCJvd24iLCJvdXQiLCJJU19GT1JDRUQiLCJGIiwiSVNfR0xPQkFMIiwiRyIsIklTX1NUQVRJQyIsIlMiLCJJU19QUk9UTyIsIlAiLCJJU19CSU5EIiwiSVNfV1JBUCIsIlciLCJleHBQcm90byIsIkMiLCJGdW5jdGlvbiIsInZpcnR1YWwiLCJSIiwiVSIsImV4ZWMiLCJNYXRoIiwic2VsZiIsIl9fZyIsImhhc093blByb3BlcnR5IiwiZFAiLCJkb2N1bWVudEVsZW1lbnQiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIkl0ZXJhdG9ycyIsIklURVJBVE9SIiwiQXJyYXlQcm90byIsImFuT2JqZWN0IiwiaXRlcmF0b3IiLCJlbnRyaWVzIiwicmV0IiwiY3JlYXRlIiwic2V0VG9TdHJpbmdUYWciLCJJdGVyYXRvclByb3RvdHlwZSIsIk5BTUUiLCJMSUJSQVJZIiwicmVkZWZpbmUiLCIkaXRlckNyZWF0ZSIsImdldFByb3RvdHlwZU9mIiwiQlVHR1kiLCJrZXlzIiwiS0VZUyIsIlZBTFVFUyIsInJldHVyblRoaXMiLCJCYXNlIiwiREVGQVVMVCIsIklTX1NFVCIsIkZPUkNFRCIsIm1ldGhvZHMiLCJnZXRNZXRob2QiLCJraW5kIiwicHJvdG8iLCJERUZfVkFMVUVTIiwiVkFMVUVTX0JVRyIsIiRuYXRpdmUiLCIkZGVmYXVsdCIsIiRlbnRyaWVzIiwiJGFueU5hdGl2ZSIsInZhbHVlcyIsIlNBRkVfQ0xPU0lORyIsInJpdGVyIiwiZnJvbSIsInNraXBDbG9zaW5nIiwic2FmZSIsIml0ZXIiLCJkb25lIiwiREVTQ1JJUFRPUlMiLCJnZXRLZXlzIiwiZ09QUyIsInBJRSIsInRvT2JqZWN0IiwiSU9iamVjdCIsIiRhc3NpZ24iLCJBIiwiU3ltYm9sIiwiSyIsImZvckVhY2giLCJrIiwiam9pbiIsImFMZW4iLCJnZXRTeW1ib2xzIiwiaXNFbnVtIiwiaiIsImRQcyIsImVudW1CdWdLZXlzIiwiSUVfUFJPVE8iLCJFbXB0eSIsImNyZWF0ZURpY3QiLCJpZnJhbWVEb2N1bWVudCIsImlmcmFtZSIsInN0eWxlIiwiZGlzcGxheSIsInNyYyIsImNvbnRlbnRXaW5kb3ciLCJ3cml0ZSIsImx0IiwiY2xvc2UiLCJQcm9wZXJ0aWVzIiwicmVzdWx0IiwiSUU4X0RPTV9ERUZJTkUiLCJ0b1ByaW1pdGl2ZSIsIkF0dHJpYnV0ZXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJPYmplY3RQcm90byIsImNvbnN0cnVjdG9yIiwiYXJyYXlJbmRleE9mIiwibmFtZXMiLCIka2V5cyIsImJpdG1hcCIsImRlZiIsInRhZyIsInN0YXQiLCJzaGFyZWQiLCJ1aWQiLCJTSEFSRUQiLCJzdG9yZSIsIm1vZGUiLCJjb3B5cmlnaHQiLCJ0b0ludGVnZXIiLCJkZWZpbmVkIiwiVE9fU1RSSU5HIiwicG9zIiwicyIsIlN0cmluZyIsImwiLCJjaGFyQ29kZUF0IiwiY2hhckF0IiwibWF4IiwibWluIiwiY2VpbCIsImZsb29yIiwiaXNOYU4iLCJ2YWx1ZU9mIiwicHgiLCJyYW5kb20iLCJVU0VfU1lNQk9MIiwiY2xhc3NvZiIsImlzQXJyYXlJdGVyIiwiY3JlYXRlUHJvcGVydHkiLCJnZXRJdGVyRm4iLCJhcnJheUxpa2UiLCJzdGVwIiwibWFwZm4iLCJtYXBwaW5nIiwiaXRlckZuIiwiJGF0IiwiaXRlcmF0ZWQiLCJfdCIsIl9pIiwicG9pbnQiLCJfZXh0ZW5kcyIsImQiLCJfdHlwZW9mIiwiX2NsYXNzQ2FsbENoZWNrIiwic2V0Um91dGVzIiwicm91dGVzUm91dGluZyIsImdldFJvdXRlcyIsImNvbnRleHRSb3V0aW5nIiwiYmFzZV91cmwiLCJnZXRCYXNlVXJsIiwic2V0UHJlZml4Iiwic2V0U2NoZW1lIiwic2NoZW1lIiwiZ2V0U2NoZW1lIiwic2V0SG9zdCIsImhvc3QiLCJnZXRIb3N0IiwiYnVpbGRRdWVyeVBhcmFtcyIsIlJlZ0V4cCIsInRlc3QiLCJnZXRSb3V0ZSIsImciLCJoIiwidG9rZW5zIiwiZGVmYXVsdHMiLCJlbmNvZGVVUklDb21wb25lbnQiLCJob3N0dG9rZW5zIiwicmVxdWlyZW1lbnRzIiwibSIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJvcmRlckdyaWQiLCJhZGRFeHRlbnNpb24iLCJSZWxvYWRMaXN0QWN0aW9uRXh0ZW5zaW9uIiwiU3VibWl0R3JpZEV4dGVuc2lvbiIsIlN1Ym1pdEJ1bGtFeHRlbnNpb24iLCJwcmV2aWV3UHJvZHVjdHNUb2dnbGVyIl0sIm1hcHBpbmdzIjoiO2duYkE2Qk9BLEVBQUtDLE9BQUxELEUsVUFFTSxTQUFxQkUsRUFBS0MsR0FDckNILEVBQUVJLEtBQUtGLEdBQUtHLE1BQUssa0JBQU1KLE9BQU9LLFNBQVNDLE9BQU9KLFEscUtDUHpDSCxFQUFLQyxPQUFMRCxFQU1EUSxFLFdBSUosV0FBWUMsSUFBTyxxQkFDakJDLEtBQUtDLFNBQVcsc0JBQ2hCRCxLQUFLRSxRQUFVWixFQUFFUyxHQUFPSSxLQUFLSCxLQUFLQyxVLHNEQU0zQixXQUNQRCxLQUFLRSxRQUFRRSxHQUFHLFNBQVMsU0FBQ0MsR0FDeEIsSUFBTUMsRUFBVWhCLEVBQUVlLEVBQUVFLGdCQUNwQixFQUFLQyxhQUFhRixFQUFTLEVBQUtHLHdCQUF3QkgsUyw2QkFTckRJLEVBQVlDLEdBQ2pCLElBQU1MLEVBQVVOLEtBQUtFLFFBQVFVLEdBQWIsd0JBQXdDRixFQUF4QyxNQUVoQixJQUFLSixFQUNILE1BQU0sSUFBSU8sTUFBSixtQkFBNkJILEVBQTdCLHFCQUdSVixLQUFLUSxhQUFhRixFQUFTSyxLLG1DQVNoQkcsRUFBUUgsR0FDbkJwQixPQUFPSyxTQUFXSSxLQUFLZSxPQUNyQkQsRUFBT0Us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V0FDM0JpZCxFQUFVQyxhQUFhLElBQUl6WSxXQUMzQndZLEVBQVVDLGFBQWEsSUFBSXBYLFdBQzNCbVgsRUFBVUMsYUFBYSxJQUFJL2EsV0FDM0I4YSxFQUFVQyxhQUFhLElBQUk1VyxVQUFpQmdYLFlBQzVDTCxFQUFVQyxhQUFhLElBQUl2YyxlIiwiZmlsZSI6Im9yZGVyLmJ1bmRsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuLyoqXG4gKiBTZW5kIGEgUG9zdCBSZXF1ZXN0IHRvIHJlc2V0IHNlYXJjaCBBY3Rpb24uXG4gKi9cblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG5jb25zdCBpbml0ID0gZnVuY3Rpb24gcmVzZXRTZWFyY2godXJsLCByZWRpcmVjdFVybCkge1xuICAkLnBvc3QodXJsKS50aGVuKCgpID0+IHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24ocmVkaXJlY3RVcmwpKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGluaXQ7XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLyoqXG4gKiBNYWtlcyBhIHRhYmxlIHNvcnRhYmxlIGJ5IGNvbHVtbnMuXG4gKiBUaGlzIGZvcmNlcyBhIHBhZ2UgcmVsb2FkIHdpdGggbW9yZSBxdWVyeSBwYXJhbWV0ZXJzLlxuICovXG5jbGFzcyBUYWJsZVNvcnRpbmcge1xuICAvKipcbiAgICogQHBhcmFtIHtqUXVlcnl9IHRhYmxlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih0YWJsZSkge1xuICAgIHRoaXMuc2VsZWN0b3IgPSAnLnBzLXNvcnRhYmxlLWNvbHVtbic7XG4gICAgdGhpcy5jb2x1bW5zID0gJCh0YWJsZSkuZmluZCh0aGlzLnNlbGVjdG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2hlcyB0aGUgbGlzdGVuZXJzXG4gICAqL1xuICBhdHRhY2goKSB7XG4gICAgdGhpcy5jb2x1bW5zLm9uKCdjbGljaycsIChlKSA9PiB7XG4gICAgICBjb25zdCAkY29sdW1uID0gJChlLmRlbGVnYXRlVGFyZ2V0KTtcbiAgICAgIHRoaXMuc29ydEJ5Q29sdW1uKCRjb2x1bW4sIHRoaXMuZ2V0VG9nZ2xlZFNvcnREaXJlY3Rpb24oJGNvbHVtbikpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNvcnQgdXNpbmcgYSBjb2x1bW4gbmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29sdW1uTmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyZWN0aW9uIFwiYXNjXCIgb3IgXCJkZXNjXCJcbiAgICovXG4gIHNvcnRCeShjb2x1bW5OYW1lLCBkaXJlY3Rpb24pIHtcbiAgICBjb25zdCAkY29sdW1uID0gdGhpcy5jb2x1bW5zLmlzKGBbZGF0YS1zb3J0LWNvbC1uYW1lPVwiJHtjb2x1bW5OYW1lfVwiXWApO1xuXG4gICAgaWYgKCEkY29sdW1uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzb3J0IGJ5IFwiJHtjb2x1bW5OYW1lfVwiOiBpbnZhbGlkIGNvbHVtbmApO1xuICAgIH1cblxuICAgIHRoaXMuc29ydEJ5Q29sdW1uKCRjb2x1bW4sIGRpcmVjdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogU29ydCB1c2luZyBhIGNvbHVtbiBlbGVtZW50XG4gICAqIEBwYXJhbSB7alF1ZXJ5fSBjb2x1bW5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpcmVjdGlvbiBcImFzY1wiIG9yIFwiZGVzY1wiXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzb3J0QnlDb2x1bW4oY29sdW1uLCBkaXJlY3Rpb24pIHtcbiAgICB3aW5kb3cubG9jYXRpb24gPSB0aGlzLmdldFVybChcbiAgICAgIGNvbHVtbi5kYXRhKCdzb3J0Q29sTmFtZScpLFxuICAgICAgKGRpcmVjdGlvbiA9PT0gJ2Rlc2MnKSA/ICdkZXNjJyA6ICdhc2MnLFxuICAgICAgY29sdW1uLmRhdGEoJ3NvcnRQcmVmaXgnKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGludmVydGVkIGRpcmVjdGlvbiB0byBzb3J0IGFjY29yZGluZyB0byB0aGUgY29sdW1uJ3MgY3VycmVudCBvbmVcbiAgICogQHBhcmFtIHtqUXVlcnl9IGNvbHVtblxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBnZXRUb2dnbGVkU29ydERpcmVjdGlvbihjb2x1bW4pIHtcbiAgICByZXR1cm4gY29sdW1uLmRhdGEoJ3NvcnREaXJlY3Rpb24nKSA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB1cmwgZm9yIHRoZSBzb3J0ZWQgdGFibGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbE5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpcmVjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4XG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGdldFVybChjb2xOYW1lLCBkaXJlY3Rpb24sIHByZWZpeCkge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHVybC5zZWFyY2hQYXJhbXM7XG5cbiAgICBpZiAocHJlZml4KSB7XG4gICAgICBwYXJhbXMuc2V0KGAke3ByZWZpeH1bb3JkZXJCeV1gLCBjb2xOYW1lKTtcbiAgICAgIHBhcmFtcy5zZXQoYCR7cHJlZml4fVtzb3J0T3JkZXJdYCwgZGlyZWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyYW1zLnNldCgnb3JkZXJCeScsIGNvbE5hbWUpO1xuICAgICAgcGFyYW1zLnNldCgnc29ydE9yZGVyJywgZGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVGFibGVTb3J0aW5nO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogQ2xhc3MgQnVsa0FjdGlvblNlbGVjdENoZWNrYm94RXh0ZW5zaW9uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1bGtBY3Rpb25DaGVja2JveEV4dGVuc2lvbiB7XG4gIC8qKlxuICAgKiBFeHRlbmQgZ3JpZCB3aXRoIGJ1bGsgYWN0aW9uIGNoZWNrYm94ZXMgaGFuZGxpbmcgZnVuY3Rpb25hbGl0eVxuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICovXG4gIGV4dGVuZChncmlkKSB7XG4gICAgdGhpcy5oYW5kbGVCdWxrQWN0aW9uQ2hlY2tib3hTZWxlY3QoZ3JpZCk7XG4gICAgdGhpcy5oYW5kbGVCdWxrQWN0aW9uU2VsZWN0QWxsQ2hlY2tib3goZ3JpZCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBcIlNlbGVjdCBhbGxcIiBidXR0b24gaW4gdGhlIGdyaWRcbiAgICpcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBoYW5kbGVCdWxrQWN0aW9uU2VsZWN0QWxsQ2hlY2tib3goZ3JpZCkge1xuICAgIGdyaWQuZ2V0Q29udGFpbmVyKCkub24oJ2NoYW5nZScsICcuanMtYnVsay1hY3Rpb24tc2VsZWN0LWFsbCcsIChlKSA9PiB7XG4gICAgICBjb25zdCAkY2hlY2tib3ggPSAkKGUuY3VycmVudFRhcmdldCk7XG5cbiAgICAgIGNvbnN0IGlzQ2hlY2tlZCA9ICRjaGVja2JveC5pcygnOmNoZWNrZWQnKTtcblxuICAgICAgaWYgKGlzQ2hlY2tlZCkge1xuICAgICAgICB0aGlzLmVuYWJsZUJ1bGtBY3Rpb25zQnRuKGdyaWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlQnVsa0FjdGlvbnNCdG4oZ3JpZCk7XG4gICAgICB9XG5cbiAgICAgIGdyaWQuZ2V0Q29udGFpbmVyKCkuZmluZCgnLmpzLWJ1bGstYWN0aW9uLWNoZWNrYm94JykucHJvcCgnY2hlY2tlZCcsIGlzQ2hlY2tlZCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBlYWNoIGJ1bGsgYWN0aW9uIGNoZWNrYm94IHNlbGVjdCBpbiB0aGUgZ3JpZFxuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGhhbmRsZUJ1bGtBY3Rpb25DaGVja2JveFNlbGVjdChncmlkKSB7XG4gICAgZ3JpZC5nZXRDb250YWluZXIoKS5vbignY2hhbmdlJywgJy5qcy1idWxrLWFjdGlvbi1jaGVja2JveCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGNoZWNrZWRSb3dzQ291bnQgPSBncmlkLmdldENvbnRhaW5lcigpLmZpbmQoJy5qcy1idWxrLWFjdGlvbi1jaGVja2JveDpjaGVja2VkJykubGVuZ3RoO1xuXG4gICAgICBpZiAoY2hlY2tlZFJvd3NDb3VudCA+IDApIHtcbiAgICAgICAgdGhpcy5lbmFibGVCdWxrQWN0aW9uc0J0bihncmlkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZUJ1bGtBY3Rpb25zQnRuKGdyaWQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBidWxrIGFjdGlvbnMgYnV0dG9uXG4gICAqXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW5hYmxlQnVsa0FjdGlvbnNCdG4oZ3JpZCkge1xuICAgIGdyaWQuZ2V0Q29udGFpbmVyKCkuZmluZCgnLmpzLWJ1bGstYWN0aW9ucy1idG4nKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIGJ1bGsgYWN0aW9ucyBidXR0b25cbiAgICpcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkaXNhYmxlQnVsa0FjdGlvbnNCdG4oZ3JpZCkge1xuICAgIGdyaWQuZ2V0Q29udGFpbmVyKCkuZmluZCgnLmpzLWJ1bGstYWN0aW9ucy1idG4nKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5pbXBvcnQgUm91dGVyIGZyb20gJy4uLy4uL3JvdXRlcic7XG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLyoqXG4gKiBDbGFzcyBCdWxrT3BlblRhYnNFeHRlbnNpb25cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVsa09wZW5UYWJzRXh0ZW5zaW9uIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5yb3V0ZXIgPSBuZXcgUm91dGVyKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGV4dGVuZDogKGdyaWQpID0+IHRoaXMuZXh0ZW5kKGdyaWQpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRXh0ZW5kIGdyaWQgd2l0aCBidWxrIGFjdGlvbiBvcGVuIHRhYnNcbiAgICpcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqL1xuICBleHRlbmQoZ3JpZCkge1xuICAgIGdyaWQuZ2V0Q29udGFpbmVyKCkub24oJ2NsaWNrJywgJy5qcy1idWxrLWFjdGlvbi1idG4ub3Blbl90YWJzJywgKGV2ZW50KSA9PiB7XG4gICAgICB0aGlzLm9wZW5UYWJzKGV2ZW50LCBncmlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgYnVsayBhY3Rpb24gb3BlbmluZyB0YWJzXG4gICAqXG4gICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50XG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgb3BlblRhYnMoZXZlbnQsIGdyaWQpIHtcbiAgICBjb25zdCAkc3VibWl0QnRuID0gJChldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICBjb25zdCByb3V0ZSA9ICRzdWJtaXRCdG4uZGF0YSgncm91dGUnKTtcbiAgICBjb25zdCByb3V0ZVBhcmFtTmFtZSA9ICRzdWJtaXRCdG4uZGF0YSgncm91dGVQYXJhbU5hbWUnKTtcbiAgICBjb25zdCB0YWJzQmxvY2tlZE1lc3NhZ2UgPSAkc3VibWl0QnRuLmRhdGEoJ3RhYnNCbG9ja2VkTWVzc2FnZScpO1xuXG4gICAgY29uc3QgJGNoZWNrYm94ZXMgPSBncmlkLmdldENvbnRhaW5lcigpLmZpbmQoJy5qcy1idWxrLWFjdGlvbi1jaGVja2JveDpjaGVja2VkJyk7XG4gICAgbGV0IGFsbFRhYnNPcGVuZWQgPSB0cnVlO1xuICAgICRjaGVja2JveGVzLmVhY2goKGksIGVsZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0ICRjaGVja2JveCA9ICQoZWxlbWVudCk7XG4gICAgICBjb25zdCByb3V0ZVBhcmFtcyA9IHt9O1xuICAgICAgcm91dGVQYXJhbXNbcm91dGVQYXJhbU5hbWVdID0gJGNoZWNrYm94LnZhbCgpO1xuXG4gICAgICBjb25zdCBoYW5kbGUgPSB3aW5kb3cub3Blbih0aGlzLnJvdXRlci5nZW5lcmF0ZShyb3V0ZSwgcm91dGVQYXJhbXMpKTtcblxuICAgICAgaWYgKGhhbmRsZSkge1xuICAgICAgICBoYW5kbGUuYmx1cigpO1xuICAgICAgICB3aW5kb3cuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFsbFRhYnNPcGVuZWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFhbGxUYWJzT3BlbmVkKSB7XG4gICAgICAgIGFsZXJ0KHRhYnNCbG9ja2VkTWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG4vKipcbiAqIFRoaXMgZXh0ZW5zaW9uIGVuYWJsZXMgc3VibWl0IGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGNob2ljZSBmaWVsZHMgaW4gZ3JpZC5cbiAqXG4gKiBVc2FnZSBvZiB0aGUgZXh0ZW5zaW9uOlxuICpcbiAqIGNvbnN0IG15R3JpZCA9IG5ldyBHcmlkKCdteUdyaWQnKTtcbiAqIG15R3JpZC5hZGRFeHRlbnNpb24obmV3IENob2ljZUV4dGVuc2lvbigpKTtcbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENob2ljZUV4dGVuc2lvbiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMubG9ja3MgPSBbXTtcbiAgfVxuXG4gIGV4dGVuZChncmlkKSB7XG4gICAgY29uc3QgJGNob2ljZU9wdGlvbnNDb250YWluZXIgPSBncmlkLmdldENvbnRhaW5lcigpLmZpbmQoJ3RhYmxlLnRhYmxlIC5qcy1jaG9pY2Utb3B0aW9ucycpO1xuXG4gICAgJGNob2ljZU9wdGlvbnNDb250YWluZXIuZmluZCgnLmpzLWRyb3Bkb3duLWl0ZW0nKS5vbignY2xpY2snLCAoZSkgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY29uc3QgJGJ1dHRvbiA9ICQoZS5jdXJyZW50VGFyZ2V0KTtcbiAgICAgIGNvbnN0ICRwYXJlbnQgPSAkYnV0dG9uLmNsb3Nlc3QoJy5qcy1jaG9pY2Utb3B0aW9ucycpO1xuICAgICAgY29uc3QgdXJsID0gJHBhcmVudC5kYXRhKCd1cmwnKTtcblxuICAgICAgdGhpcy5zdWJtaXRGb3JtKHVybCwgJGJ1dHRvbik7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3VibWl0cyB0aGUgZm9ybS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge2pRdWVyeX0gJGJ1dHRvblxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc3VibWl0Rm9ybSh1cmwsICRidXR0b24pIHtcbiAgICBjb25zdCBzZWxlY3RlZFN0YXR1c0lkID0gJGJ1dHRvbi5kYXRhKCd2YWx1ZScpO1xuXG4gICAgaWYgKHRoaXMuaXNMb2NrZWQodXJsKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0ICRmb3JtID0gJCgnPGZvcm0+Jywge1xuICAgICAgYWN0aW9uOiB1cmwsXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICB9KS5hcHBlbmQoXG4gICAgICAkKCc8aW5wdXQ+Jywge1xuICAgICAgICBuYW1lOiAndmFsdWUnLFxuICAgICAgICB2YWx1ZTogc2VsZWN0ZWRTdGF0dXNJZCxcbiAgICAgICAgdHlwZTogJ2hpZGRlbicsXG4gICAgICB9KSk7XG5cbiAgICAkZm9ybS5hcHBlbmRUbygnYm9keScpO1xuICAgICRmb3JtLnN1Ym1pdCgpO1xuXG4gICAgdGhpcy5sb2NrKHVybCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGN1cnJlbnQgdXJsIGlzIGJlaW5nIHVzZWQgYXQgdGhlIG1vbWVudC5cbiAgICpcbiAgICogQHBhcmFtIHVybFxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgaXNMb2NrZWQodXJsKSB7XG4gICAgcmV0dXJuIHRoaXMubG9ja3MuaW5jbHVkZXModXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2NrcyB0aGUgY3VycmVudCB1cmwgc28gaXQgY2FudCBiZSB1c2VkIHR3aWNlIHRvIGV4ZWN1dGUgc2FtZSByZXF1ZXN0XG4gICAqIEBwYXJhbSB1cmxcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGxvY2sodXJsKSB7XG4gICAgdGhpcy5sb2Nrcy5wdXNoKHVybCk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG4vKipcbiAqIENsYXNzIEV4cG9ydFRvU3FsTWFuYWdlckV4dGVuc2lvbiBleHRlbmRzIGdyaWQgd2l0aCBleHBvcnRpbmcgcXVlcnkgdG8gU1FMIE1hbmFnZXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXhwb3J0VG9TcWxNYW5hZ2VyRXh0ZW5zaW9uIHtcbiAgLyoqXG4gICAqIEV4dGVuZCBncmlkXG4gICAqXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKi9cbiAgZXh0ZW5kKGdyaWQpIHtcbiAgICBncmlkLmdldEhlYWRlckNvbnRhaW5lcigpLm9uKCdjbGljaycsICcuanMtY29tbW9uX3Nob3dfcXVlcnktZ3JpZC1hY3Rpb24nLCAoKSA9PiB0aGlzLm9uU2hvd1NxbFF1ZXJ5Q2xpY2soZ3JpZCkpO1xuICAgIGdyaWQuZ2V0SGVhZGVyQ29udGFpbmVyKCkub24oXG4gICAgICAnY2xpY2snLFxuICAgICAgJy5qcy1jb21tb25fZXhwb3J0X3NxbF9tYW5hZ2VyLWdyaWQtYWN0aW9uJyxcbiAgICAgICgpID0+IHRoaXMub25FeHBvcnRTcWxNYW5hZ2VyQ2xpY2soZ3JpZCksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnZva2VkIHdoZW4gY2xpY2tpbmcgb24gdGhlIFwic2hvdyBzcWwgcXVlcnlcIiB0b29sYmFyIGJ1dHRvblxuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIG9uU2hvd1NxbFF1ZXJ5Q2xpY2soZ3JpZCkge1xuICAgIGNvbnN0ICRzcWxNYW5hZ2VyRm9ybSA9ICQoYCMke2dyaWQuZ2V0SWQoKX1fY29tbW9uX3Nob3dfcXVlcnlfbW9kYWxfZm9ybWApO1xuICAgIHRoaXMuZmlsbEV4cG9ydEZvcm0oJHNxbE1hbmFnZXJGb3JtLCBncmlkKTtcblxuICAgIGNvbnN0ICRtb2RhbCA9ICQoYCMke2dyaWQuZ2V0SWQoKX1fZ3JpZF9jb21tb25fc2hvd19xdWVyeV9tb2RhbGApO1xuICAgICRtb2RhbC5tb2RhbCgnc2hvdycpO1xuXG4gICAgJG1vZGFsLm9uKCdjbGljaycsICcuYnRuLXNxbC1zdWJtaXQnLCAoKSA9PiAkc3FsTWFuYWdlckZvcm0uc3VibWl0KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZWQgd2hlbiBjbGlja2luZyBvbiB0aGUgXCJleHBvcnQgdG8gdGhlIHNxbCBxdWVyeVwiIHRvb2xiYXIgYnV0dG9uXG4gICAqXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgb25FeHBvcnRTcWxNYW5hZ2VyQ2xpY2soZ3JpZCkge1xuICAgIGNvbnN0ICRzcWxNYW5hZ2VyRm9ybSA9ICQoYCMke2dyaWQuZ2V0SWQoKX1fY29tbW9uX3Nob3dfcXVlcnlfbW9kYWxfZm9ybWApO1xuXG4gICAgdGhpcy5maWxsRXhwb3J0Rm9ybSgkc3FsTWFuYWdlckZvcm0sIGdyaWQpO1xuXG4gICAgJHNxbE1hbmFnZXJGb3JtLnN1Ym1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbGwgZXhwb3J0IGZvcm0gd2l0aCBTUUwgYW5kIGl0J3MgbmFtZVxuICAgKlxuICAgKiBAcGFyYW0ge2pRdWVyeX0gJHNxbE1hbmFnZXJGb3JtXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZmlsbEV4cG9ydEZvcm0oJHNxbE1hbmFnZXJGb3JtLCBncmlkKSB7XG4gICAgY29uc3QgcXVlcnkgPSBncmlkLmdldENvbnRhaW5lcigpLmZpbmQoJy5qcy1ncmlkLXRhYmxlJykuZGF0YSgncXVlcnknKTtcblxuICAgICRzcWxNYW5hZ2VyRm9ybS5maW5kKCd0ZXh0YXJlYVtuYW1lPVwic3FsXCJdJykudmFsKHF1ZXJ5KTtcbiAgICAkc3FsTWFuYWdlckZvcm0uZmluZCgnaW5wdXRbbmFtZT1cIm5hbWVcIl0nKS52YWwodGhpcy5nZXROYW1lRnJvbUJyZWFkY3J1bWIoKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGV4cG9ydCBuYW1lIGZyb20gcGFnZSdzIGJyZWFkY3J1bWJcbiAgICpcbiAgICogQHJldHVybiB7U3RyaW5nfVxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZ2V0TmFtZUZyb21CcmVhZGNydW1iKCkge1xuICAgIGNvbnN0ICRicmVhZGNydW1icyA9ICQoJy5oZWFkZXItdG9vbGJhcicpLmZpbmQoJy5icmVhZGNydW1iLWl0ZW0nKTtcbiAgICBsZXQgbmFtZSA9ICcnO1xuXG4gICAgJGJyZWFkY3J1bWJzLmVhY2goKGksIGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0ICRicmVhZGNydW1iID0gJChpdGVtKTtcblxuICAgICAgY29uc3QgYnJlYWRjcnVtYlRpdGxlID0gJGJyZWFkY3J1bWIuZmluZCgnYScpLmxlbmd0aCA+IDBcbiAgICAgICAgPyAkYnJlYWRjcnVtYi5maW5kKCdhJykudGV4dCgpXG4gICAgICAgIDogJGJyZWFkY3J1bWIudGV4dCgpO1xuXG4gICAgICBpZiAobmFtZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIG5hbWUgPSBuYW1lLmNvbmNhdCgnID4gJyk7XG4gICAgICB9XG5cbiAgICAgIG5hbWUgPSBuYW1lLmNvbmNhdChicmVhZGNydW1iVGl0bGUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5hbWU7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuaW1wb3J0IHJlc2V0U2VhcmNoIGZyb20gJ0BhcHAvdXRpbHMvcmVzZXRfc2VhcmNoJztcblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG4vKipcbiAqIENsYXNzIEZpbHRlcnNSZXNldEV4dGVuc2lvbiBleHRlbmRzIGdyaWQgd2l0aCBmaWx0ZXJzIHJlc2V0dGluZ1xuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGaWx0ZXJzUmVzZXRFeHRlbnNpb24ge1xuICAvKipcbiAgICogRXh0ZW5kIGdyaWRcbiAgICpcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqL1xuICBleHRlbmQoZ3JpZCkge1xuICAgIGdyaWQuZ2V0Q29udGFpbmVyKCkub24oJ2NsaWNrJywgJy5qcy1yZXNldC1zZWFyY2gnLCAoZXZlbnQpID0+IHtcbiAgICAgIHJlc2V0U2VhcmNoKCQoZXZlbnQuY3VycmVudFRhcmdldCkuZGF0YSgndXJsJyksICQoZXZlbnQuY3VycmVudFRhcmdldCkuZGF0YSgncmVkaXJlY3QnKSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuLyoqXG4gKiBSZXNwb25zaWJsZSBmb3IgZ3JpZCBmaWx0ZXJzIHNlYXJjaCBhbmQgcmVzZXQgYnV0dG9uIGF2YWlsYWJpbGl0eSB3aGVuIGZpbHRlciBpbnB1dHMgY2hhbmdlcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmlsdGVyc1N1Ym1pdEJ1dHRvbkVuYWJsZXJFeHRlbnNpb24ge1xuICAvKipcbiAgICogRXh0ZW5kIGdyaWRcbiAgICpcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqL1xuICBleHRlbmQoZ3JpZCkge1xuICAgIGNvbnN0ICRmaWx0ZXJzUm93ID0gZ3JpZC5nZXRDb250YWluZXIoKS5maW5kKCcuY29sdW1uLWZpbHRlcnMnKTtcbiAgICAkZmlsdGVyc1Jvdy5maW5kKCcuZ3JpZC1zZWFyY2gtYnV0dG9uJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTtcblxuICAgICRmaWx0ZXJzUm93LmZpbmQoJ2lucHV0Om5vdCguanMtYnVsay1hY3Rpb24tc2VsZWN0LWFsbCksIHNlbGVjdCcpLm9uKCdpbnB1dCBkcC5jaGFuZ2UnLCAoKSA9PiB7XG4gICAgICAkZmlsdGVyc1Jvdy5maW5kKCcuZ3JpZC1zZWFyY2gtYnV0dG9uJykucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7XG4gICAgICAkZmlsdGVyc1Jvdy5maW5kKCcuanMtZ3JpZC1yZXNldC1idXR0b24nKS5wcm9wKCdoaWRkZW4nLCBmYWxzZSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG4vKipcbiAqIENsYXNzIExpbmtSb3dBY3Rpb25FeHRlbnNpb24gaGFuZGxlcyBsaW5rIHJvdyBhY3Rpb25zXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExpbmtSb3dBY3Rpb25FeHRlbnNpb24ge1xuICAvKipcbiAgICogRXh0ZW5kIGdyaWRcbiAgICpcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqL1xuICBleHRlbmQoZ3JpZCkge1xuICAgIHRoaXMuaW5pdFJvd0xpbmtzKGdyaWQpO1xuICAgIHRoaXMuaW5pdENvbmZpcm1hYmxlQWN0aW9ucyhncmlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRlbmQgZ3JpZFxuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICovXG4gIGluaXRDb25maXJtYWJsZUFjdGlvbnMoZ3JpZCkge1xuICAgIGdyaWQuZ2V0Q29udGFpbmVyKCkub24oJ2NsaWNrJywgJy5qcy1saW5rLXJvdy1hY3Rpb24nLCAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpcm1NZXNzYWdlID0gJChldmVudC5jdXJyZW50VGFyZ2V0KS5kYXRhKCdjb25maXJtLW1lc3NhZ2UnKTtcblxuICAgICAgaWYgKGNvbmZpcm1NZXNzYWdlLmxlbmd0aCAmJiAhd2luZG93LmNvbmZpcm0oY29uZmlybU1lc3NhZ2UpKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgY2xpY2sgZXZlbnQgb24gcm93cyB0aGF0IG1hdGNoZXMgdGhlIGZpcnN0IGxpbmsgYWN0aW9uIChpZiBwcmVzZW50KVxuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICovXG4gIGluaXRSb3dMaW5rcyhncmlkKSB7XG4gICAgJCgndHInLCBncmlkLmdldENvbnRhaW5lcigpKS5lYWNoKGZ1bmN0aW9uIGluaXRFYWNoUm93KCkge1xuICAgICAgY29uc3QgJHBhcmVudFJvdyA9ICQodGhpcyk7XG5cbiAgICAgICQoJy5qcy1saW5rLXJvdy1hY3Rpb25bZGF0YS1jbGlja2FibGUtcm93PTFdOmZpcnN0JywgJHBhcmVudFJvdykuZWFjaChmdW5jdGlvbiBwcm9wYWdhdGVGaXJzdExpbmtBY3Rpb24oKSB7XG4gICAgICAgIGNvbnN0ICRyb3dBY3Rpb24gPSAkKHRoaXMpO1xuICAgICAgICBjb25zdCAkcGFyZW50Q2VsbCA9ICRyb3dBY3Rpb24uY2xvc2VzdCgndGQnKTtcblxuICAgICAgICBjb25zdCBjbGlja2FibGVDZWxscyA9ICQoJ3RkLmNsaWNrYWJsZScsICRwYXJlbnRSb3cpLm5vdCgkcGFyZW50Q2VsbCk7XG4gICAgICAgIGxldCBpc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgICAgIGNsaWNrYWJsZUNlbGxzLmFkZENsYXNzKCdjdXJzb3ItcG9pbnRlcicpLm1vdXNlZG93bigoKSA9PiB7XG4gICAgICAgICAgJCh3aW5kb3cpLm1vdXNlbW92ZSgoKSA9PiB7XG4gICAgICAgICAgICBpc0RyYWdnaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICQod2luZG93KS51bmJpbmQoJ21vdXNlbW92ZScpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjbGlja2FibGVDZWxscy5tb3VzZXVwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCB3YXNEcmFnZ2luZyA9IGlzRHJhZ2dpbmc7XG4gICAgICAgICAgaXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgICAgICQod2luZG93KS51bmJpbmQoJ21vdXNlbW92ZScpO1xuXG4gICAgICAgICAgaWYgKCF3YXNEcmFnZ2luZykge1xuICAgICAgICAgICAgY29uc3QgY29uZmlybU1lc3NhZ2UgPSAkcm93QWN0aW9uLmRhdGEoJ2NvbmZpcm0tbWVzc2FnZScpO1xuXG4gICAgICAgICAgICBpZiAoIWNvbmZpcm1NZXNzYWdlLmxlbmd0aCB8fCB3aW5kb3cuY29uZmlybShjb25maXJtTWVzc2FnZSkpIHtcbiAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24gPSAkcm93QWN0aW9uLmF0dHIoJ2hyZWYnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG4vKipcbiAqIEFsbG93cyBzdWJtaXR0aW5nIGZvcm0gaW5zaWRlIG1vZGFscy5cbiAqIEZvcm0gbXVzdCBiZSBpbnNpZGUgbW9kYWwsIHNlZSBleGFtcGxlIHN0cnVjdHVyZSBiZWxvdzpcbiAqXG4gKiA8ZGl2IGNsYXNzPVwibW9kYWxcIiBpZD1cInVuaXF1ZU1vZGFsSWRcIj5cbiAqICA8Zm9ybSBkYXRhLWJ1bGstaW5wdXRzLWlkPVwiYnVsa0lucHV0c1wiPlxuICogICAgPGRpdiBjbGFzcz1cImQtbm9uZVwiPlxuICogICAgICA8ZGl2IGlkPVwiYnVsa0lucHV0c1wiIGRhdGEtcHJvdG90eXBlPVwiPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiX19uYW1lX19cIi8+XCI+PC9kaXY+XG4gKiAgICA8L2Rpdj5cbiAqICA8L2Zvcm0+XG4gKiA8L2Rpdj5cbiAqXG4gKiBOb3RlIHRoYXQgXCJkYXRhLXByb3RvdHlwZVwiIGlzIHJlcXVpcmVkIHRvIGFkZCBjaGVja2VkIGl0ZW1zIHRvIHRoZSBmb3JtLiBcIl9fbmFtZV9fXCJcbiAqIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB2YWx1ZSBvZiBidWxrIGNoZWNrYm94LlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNb2RhbEZvcm1TdWJtaXRFeHRlbnNpb24ge1xuICBleHRlbmQoZ3JpZCkge1xuICAgIGdyaWQuZ2V0Q29udGFpbmVyKCkub24oJ2NsaWNrJywgJy5qcy1idWxrLW1vZGFsLWZvcm0tc3VibWl0LWJ0bicsIChldmVudCkgPT4ge1xuICAgICAgY29uc3QgbW9kYWxJZCA9ICQoZXZlbnQudGFyZ2V0KS5kYXRhKCdtb2RhbC1pZCcpO1xuXG4gICAgICBjb25zdCAkbW9kYWwgPSAkKGAjJHttb2RhbElkfWApO1xuICAgICAgJG1vZGFsLm1vZGFsKCdzaG93Jyk7XG5cbiAgICAgICRtb2RhbC5maW5kKCcuanMtc3VibWl0LW1vZGFsLWZvcm0tYnRuJykub24oJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICBjb25zdCAkZm9ybSA9ICRtb2RhbC5maW5kKCdmb3JtJyk7XG4gICAgICAgIGNvbnN0ICRidWxrSW5wdXRzQmxvY2sgPSAkZm9ybS5maW5kKGAjJHskZm9ybS5kYXRhKCdidWxrLWlucHV0cy1pZCcpfWApO1xuICAgICAgICBjb25zdCAkY2hlY2tib3hlcyA9IGdyaWQuZ2V0Q29udGFpbmVyKCkuZmluZCgnLmpzLWJ1bGstYWN0aW9uLWNoZWNrYm94OmNoZWNrZWQnKTtcblxuICAgICAgICAkY2hlY2tib3hlcy5lYWNoKChpLCBlbGVtZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgJGNoZWNrYm94ID0gJChlbGVtZW50KTtcblxuICAgICAgICAgIGNvbnN0IGlucHV0ID0gJGJ1bGtJbnB1dHNCbG9ja1xuICAgICAgICAgICAgLmRhdGEoJ3Byb3RvdHlwZScpXG4gICAgICAgICAgICAucmVwbGFjZSgvX19uYW1lX18vZywgJGNoZWNrYm94LnZhbCgpKTtcblxuICAgICAgICAgIGNvbnN0ICRpbnB1dCA9ICQoJC5wYXJzZUhUTUwoaW5wdXQpWzBdKTtcbiAgICAgICAgICAkaW5wdXQudmFsKCRjaGVja2JveC52YWwoKSk7XG5cbiAgICAgICAgICAkZm9ybS5hcHBlbmQoJGlucHV0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgJGZvcm0uc3VibWl0KCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogRXh0ZW5kcyBncmlkIHdpdGggcHJldmlldyBmdW5jdGlvbmFsaXR5LlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcmV2aWV3RXh0ZW5zaW9uIHtcbiAgY29uc3RydWN0b3IocHJldmlld0N1c3RvbWl6YXRpb24pIHtcbiAgICB0aGlzLmxvY2tzID0gW107XG4gICAgdGhpcy5leHBhbmRTZWxlY3RvciA9ICcuanMtZXhwYW5kJztcbiAgICB0aGlzLmNvbGxhcHNlU2VsZWN0b3IgPSAnLmpzLWNvbGxhcHNlJztcbiAgICB0aGlzLnByZXZpZXdPcGVuQ2xhc3MgPSAncHJldmlldy1vcGVuJztcbiAgICB0aGlzLnByZXZpZXdUb2dnbGVTZWxlY3RvciA9ICcucHJldmlldy10b2dnbGUnO1xuICAgIHRoaXMucHJldmlld0N1c3RvbWl6YXRpb24gPSBwcmV2aWV3Q3VzdG9taXphdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRlbmRzIHByb3ZpZGVkIGdyaWQgd2l0aCBwcmV2aWV3IGZ1bmN0aW9uYWxpdHlcbiAgICpcbiAgICogQHBhcmFtIGdyaWRcbiAgICovXG4gIGV4dGVuZChncmlkKSB7XG4gICAgdGhpcy4kZ3JpZENvbnRhaW5lciA9ICQoZ3JpZC5nZXRDb250YWluZXIpO1xuXG4gICAgdGhpcy4kZ3JpZENvbnRhaW5lci5maW5kKCd0Ym9keSB0cicpLm9uKCdtb3VzZW92ZXIgbW91c2VsZWF2ZScsIChldmVudCkgPT4gdGhpcy5oYW5kbGVJY29uSG92ZXJpbmcoZXZlbnQpKTtcbiAgICB0aGlzLiRncmlkQ29udGFpbmVyLmZpbmQodGhpcy5wcmV2aWV3VG9nZ2xlU2VsZWN0b3IpLm9uKCdjbGljaycsIChldmVudCkgPT4gdGhpcy50b2dnbGVQcmV2aWV3KGV2ZW50KSk7XG4gIH1cblxuICAvKipcbiAgICogU2hvd3MvaGlkZXMgcHJldmlldyB0b2dnbGluZyBpY29uc1xuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGhhbmRsZUljb25Ib3ZlcmluZyhldmVudCkge1xuICAgIGNvbnN0ICRwcmV2aWV3VG9nZ2xlID0gJChldmVudC5jdXJyZW50VGFyZ2V0KS5maW5kKHRoaXMucHJldmlld1RvZ2dsZVNlbGVjdG9yKTtcblxuICAgIGlmIChldmVudC50eXBlID09PSAnbW91c2VvdmVyJyAmJiAhJChldmVudC5jdXJyZW50VGFyZ2V0KS5oYXNDbGFzcyh0aGlzLnByZXZpZXdPcGVuQ2xhc3MpKSB7XG4gICAgICB0aGlzLnNob3dFeHBhbmRJY29uKCRwcmV2aWV3VG9nZ2xlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oaWRlRXhwYW5kSWNvbigkcHJldmlld1RvZ2dsZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzL2hpZGVzIHByZXZpZXdcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICB0b2dnbGVQcmV2aWV3KGV2ZW50KSB7XG4gICAgY29uc3QgJHByZXZpZXdUb2dnbGUgPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgIGNvbnN0ICRjb2x1bW5Sb3cgPSAkcHJldmlld1RvZ2dsZS5jbG9zZXN0KCd0cicpO1xuXG4gICAgaWYgKCRjb2x1bW5Sb3cuaGFzQ2xhc3ModGhpcy5wcmV2aWV3T3BlbkNsYXNzKSkge1xuICAgICAgJGNvbHVtblJvdy5uZXh0KCcucHJldmlldy1yb3cnKS5yZW1vdmUoKTtcbiAgICAgICRjb2x1bW5Sb3cucmVtb3ZlQ2xhc3ModGhpcy5wcmV2aWV3T3BlbkNsYXNzKTtcbiAgICAgIHRoaXMuc2hvd0V4cGFuZEljb24oJGNvbHVtblJvdyk7XG4gICAgICB0aGlzLmhpZGVDb2xsYXBzZUljb24oJGNvbHVtblJvdyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNsb3NlT3BlbmVkUHJldmlld3MoKTtcblxuICAgIGNvbnN0IGRhdGFVcmwgPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpLmRhdGEoJ3ByZXZpZXctZGF0YS11cmwnKTtcblxuICAgIGlmICh0aGlzLmlzTG9ja2VkKGRhdGFVcmwpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUHJldmVudHMgbG9hZGluZyBwcmV2aWV3IG11bHRpcGxlIHRpbWVzLlxuICAgIC8vIFVzZXMgXCJkYXRhVXJsXCIgYXMgbG9jayBrZXkuXG4gICAgdGhpcy5sb2NrKGRhdGFVcmwpO1xuXG4gICAgJC5hamF4KHtcbiAgICAgIHVybDogZGF0YVVybCxcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICBkYXRhVHlwZTogJ2pzb24nLFxuICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgdGhpcy51bmxvY2soZGF0YVVybCk7XG4gICAgICB9LFxuICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLnJlbmRlclByZXZpZXdDb250ZW50KCRjb2x1bW5Sb3csIHJlc3BvbnNlLnByZXZpZXcpO1xuICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICB3aW5kb3cuc2hvd0Vycm9yTWVzc2FnZShlLnJlc3BvbnNlSlNPTi5tZXNzYWdlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHByZXZpZXcgY29udGVudFxuICAgKlxuICAgKiBAcGFyYW0gJGNvbHVtblJvd1xuICAgKiBAcGFyYW0gY29udGVudFxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcmVuZGVyUHJldmlld0NvbnRlbnQoJGNvbHVtblJvdywgY29udGVudCkge1xuICAgIGNvbnN0IHJvd0NvbHVtbkNvdW50ID0gJGNvbHVtblJvdy5maW5kKCd0ZCcpLmxlbmd0aDtcblxuICAgIGNvbnN0ICRwcmV2aWV3VGVtcGxhdGUgPSAkKGBcbiAgICAgICAgPHRyIGNsYXNzPVwicHJldmlldy1yb3dcIj5cbiAgICAgICAgICA8dGQgY29sc3Bhbj1cIiR7cm93Q29sdW1uQ291bnR9XCI+JHtjb250ZW50fTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICBgKTtcblxuICAgICRjb2x1bW5Sb3cuYWRkQ2xhc3ModGhpcy5wcmV2aWV3T3BlbkNsYXNzKTtcbiAgICB0aGlzLnNob3dDb2xsYXBzZUljb24oJGNvbHVtblJvdyk7XG4gICAgdGhpcy5oaWRlRXhwYW5kSWNvbigkY29sdW1uUm93KTtcblxuICAgIGlmICh0eXBlb2YgdGhpcy5wcmV2aWV3Q3VzdG9taXphdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5wcmV2aWV3Q3VzdG9taXphdGlvbigkcHJldmlld1RlbXBsYXRlKTtcbiAgICB9XG5cbiAgICAkY29sdW1uUm93LmFmdGVyKCRwcmV2aWV3VGVtcGxhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzIHByZXZpZXcgZXhwYW5kaW5nIGljb25cbiAgICpcbiAgICogQHBhcmFtIHBhcmVudFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc2hvd0V4cGFuZEljb24ocGFyZW50KSB7XG4gICAgcGFyZW50LmZpbmQodGhpcy5leHBhbmRTZWxlY3RvcikucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGVzIHByZXZpZXcgZXhwYW5kaW5nIGljb25cbiAgICpcbiAgICogQHBhcmFtIHBhcmVudFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgaGlkZUV4cGFuZEljb24ocGFyZW50KSB7XG4gICAgcGFyZW50LmZpbmQodGhpcy5leHBhbmRTZWxlY3RvcikuYWRkQ2xhc3MoJ2Qtbm9uZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzIHByZXZpZXcgY29sbGFwc2luZyBpY29uXG4gICAqXG4gICAqIEBwYXJhbSBwYXJlbnRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHNob3dDb2xsYXBzZUljb24ocGFyZW50KSB7XG4gICAgcGFyZW50LmZpbmQodGhpcy5jb2xsYXBzZVNlbGVjdG9yKS5yZW1vdmVDbGFzcygnZC1ub25lJyk7XG4gIH1cblxuICAvKipcbiAgICogSGlkZXMgcHJldmlldyBjb2xsYXBzaW5nIGljb25cbiAgICpcbiAgICogQHBhcmFtIHBhcmVudFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgaGlkZUNvbGxhcHNlSWNvbihwYXJlbnQpIHtcbiAgICBwYXJlbnQuZmluZCh0aGlzLmNvbGxhcHNlU2VsZWN0b3IpLmFkZENsYXNzKCdkLW5vbmUnKTtcbiAgfVxuXG4gIGlzTG9ja2VkKGtleSkge1xuICAgIHJldHVybiB0aGlzLmxvY2tzLmluZGV4T2Yoa2V5KSAhPT0gLTE7XG4gIH1cblxuICBsb2NrKGtleSkge1xuICAgIGlmICh0aGlzLmlzTG9ja2VkKGtleSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvY2tzLnB1c2goa2V5KTtcbiAgfVxuXG4gIHVubG9jayhrZXkpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMubG9ja3MuaW5kZXhPZihrZXkpO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9ja3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSBhbGwgcHJldmlld3MgdGhhdCBhcmUgb3Blbi5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNsb3NlT3BlbmVkUHJldmlld3MoKSB7XG4gICAgY29uc3QgJHJvd3MgPSB0aGlzLiRncmlkQ29udGFpbmVyLmZpbmQoJy5ncmlkLXRhYmxlIHRib2R5JykuZmluZCgndHI6bm90KC5wcmV2aWV3LXJvdyknKTtcblxuICAgICQuZWFjaCgkcm93cywgKGksIHJvdykgPT4ge1xuICAgICAgY29uc3QgJHJvdyA9ICQocm93KTtcblxuICAgICAgaWYgKCEkcm93Lmhhc0NsYXNzKHRoaXMucHJldmlld09wZW5DbGFzcykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCAkcHJldmlld1JvdyA9ICRyb3cubmV4dCgpO1xuXG4gICAgICBpZiAoISRwcmV2aWV3Um93Lmhhc0NsYXNzKCdwcmV2aWV3LXJvdycpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgJHByZXZpZXdSb3cucmVtb3ZlKCk7XG4gICAgICAkcm93LnJlbW92ZUNsYXNzKHRoaXMucHJldmlld09wZW5DbGFzcyk7XG4gICAgICB0aGlzLmhpZGVDb2xsYXBzZUljb24oJHJvdyk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuLyoqXG4gKiBDbGFzcyBSZWxvYWRMaXN0RXh0ZW5zaW9uIGV4dGVuZHMgZ3JpZCB3aXRoIFwiTGlzdCByZWxvYWRcIiBhY3Rpb25cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVsb2FkTGlzdEV4dGVuc2lvbiB7XG4gIC8qKlxuICAgKiBFeHRlbmQgZ3JpZFxuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICovXG4gIGV4dGVuZChncmlkKSB7XG4gICAgZ3JpZC5nZXRIZWFkZXJDb250YWluZXIoKS5vbignY2xpY2snLCAnLmpzLWNvbW1vbl9yZWZyZXNoX2xpc3QtZ3JpZC1hY3Rpb24nLCAoKSA9PiB7XG4gICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuaW1wb3J0IFRhYmxlU29ydGluZyBmcm9tICdAYXBwL3V0aWxzL3RhYmxlLXNvcnRpbmcnO1xuXG4vKipcbiAqIENsYXNzIFJlbG9hZExpc3RFeHRlbnNpb24gZXh0ZW5kcyBncmlkIHdpdGggXCJMaXN0IHJlbG9hZFwiIGFjdGlvblxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTb3J0aW5nRXh0ZW5zaW9uIHtcbiAgLyoqXG4gICAqIEV4dGVuZCBncmlkXG4gICAqXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKi9cbiAgZXh0ZW5kKGdyaWQpIHtcbiAgICBjb25zdCAkc29ydGFibGVUYWJsZSA9IGdyaWQuZ2V0Q29udGFpbmVyKCkuZmluZCgndGFibGUudGFibGUnKTtcblxuICAgIG5ldyBUYWJsZVNvcnRpbmcoJHNvcnRhYmxlVGFibGUpLmF0dGFjaCgpO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmltcG9ydCBDb25maXJtTW9kYWwgZnJvbSAnQGNvbXBvbmVudHMvbW9kYWwnO1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogSGFuZGxlcyBzdWJtaXQgb2YgZ3JpZCBhY3Rpb25zXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1Ym1pdEJ1bGtBY3Rpb25FeHRlbnNpb24ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXh0ZW5kOiAoZ3JpZCkgPT4gdGhpcy5leHRlbmQoZ3JpZCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRlbmQgZ3JpZCB3aXRoIGJ1bGsgYWN0aW9uIHN1Ym1pdHRpbmdcbiAgICpcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqL1xuICBleHRlbmQoZ3JpZCkge1xuICAgIGdyaWQuZ2V0Q29udGFpbmVyKCkub24oJ2NsaWNrJywgJy5qcy1idWxrLWFjdGlvbi1zdWJtaXQtYnRuJywgKGV2ZW50KSA9PiB7XG4gICAgICB0aGlzLnN1Ym1pdChldmVudCwgZ3JpZCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGJ1bGsgYWN0aW9uIHN1Ym1pdHRpbmdcbiAgICpcbiAgICogQHBhcmFtIHtFdmVudH0gZXZlbnRcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzdWJtaXQoZXZlbnQsIGdyaWQpIHtcbiAgICBjb25zdCAkc3VibWl0QnRuID0gJChldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICBjb25zdCBjb25maXJtTWVzc2FnZSA9ICRzdWJtaXRCdG4uZGF0YSgnY29uZmlybS1tZXNzYWdlJyk7XG4gICAgY29uc3QgY29uZmlybVRpdGxlID0gJHN1Ym1pdEJ0bi5kYXRhKCdjb25maXJtVGl0bGUnKTtcblxuICAgIGlmIChjb25maXJtTWVzc2FnZSAhPT0gdW5kZWZpbmVkICYmIGNvbmZpcm1NZXNzYWdlLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChjb25maXJtVGl0bGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNob3dDb25maXJtTW9kYWwoJHN1Ym1pdEJ0biwgZ3JpZCwgY29uZmlybU1lc3NhZ2UsIGNvbmZpcm1UaXRsZSk7XG4gICAgICB9IGVsc2UgaWYgKHdpbmRvdy5jb25maXJtKGNvbmZpcm1NZXNzYWdlKSkge1xuICAgICAgICB0aGlzLnBvc3RGb3JtKCRzdWJtaXRCdG4sIGdyaWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBvc3RGb3JtKCRzdWJtaXRCdG4sIGdyaWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2pRdWVyeX0gJHN1Ym1pdEJ0blxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbmZpcm1NZXNzYWdlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb25maXJtVGl0bGVcbiAgICovXG4gIHNob3dDb25maXJtTW9kYWwoJHN1Ym1pdEJ0biwgZ3JpZCwgY29uZmlybU1lc3NhZ2UsIGNvbmZpcm1UaXRsZSkge1xuICAgIGNvbnN0IGNvbmZpcm1CdXR0b25MYWJlbCA9ICRzdWJtaXRCdG4uZGF0YSgnY29uZmlybUJ1dHRvbkxhYmVsJyk7XG4gICAgY29uc3QgY2xvc2VCdXR0b25MYWJlbCA9ICRzdWJtaXRCdG4uZGF0YSgnY2xvc2VCdXR0b25MYWJlbCcpO1xuICAgIGNvbnN0IGNvbmZpcm1CdXR0b25DbGFzcyA9ICRzdWJtaXRCdG4uZGF0YSgnY29uZmlybUJ1dHRvbkNsYXNzJyk7XG5cbiAgICBjb25zdCBtb2RhbCA9IG5ldyBDb25maXJtTW9kYWwoe1xuICAgICAgaWQ6IGAke2dyaWQuZ2V0SWQoKX0tZ3JpZC1jb25maXJtLW1vZGFsYCxcbiAgICAgIGNvbmZpcm1UaXRsZSxcbiAgICAgIGNvbmZpcm1NZXNzYWdlLFxuICAgICAgY29uZmlybUJ1dHRvbkxhYmVsLFxuICAgICAgY2xvc2VCdXR0b25MYWJlbCxcbiAgICAgIGNvbmZpcm1CdXR0b25DbGFzcyxcbiAgICB9LCAoKSA9PiB0aGlzLnBvc3RGb3JtKCRzdWJtaXRCdG4sIGdyaWQpKTtcblxuICAgIG1vZGFsLnNob3coKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2pRdWVyeX0gJHN1Ym1pdEJ0blxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICovXG4gIHBvc3RGb3JtKCRzdWJtaXRCdG4sIGdyaWQpIHtcbiAgICBjb25zdCAkZm9ybSA9ICQoYCMke2dyaWQuZ2V0SWQoKX1fZmlsdGVyX2Zvcm1gKTtcblxuICAgICRmb3JtLmF0dHIoJ2FjdGlvbicsICRzdWJtaXRCdG4uZGF0YSgnZm9ybS11cmwnKSk7XG4gICAgJGZvcm0uYXR0cignbWV0aG9kJywgJHN1Ym1pdEJ0bi5kYXRhKCdmb3JtLW1ldGhvZCcpKTtcbiAgICAkZm9ybS5zdWJtaXQoKTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogQ2xhc3MgU3VibWl0R3JpZEFjdGlvbkV4dGVuc2lvbiBoYW5kbGVzIGdyaWQgYWN0aW9uIHN1Ym1pdHNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3VibWl0R3JpZEFjdGlvbkV4dGVuc2lvbiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHJldHVybiB7XG4gICAgICBleHRlbmQ6IChncmlkKSA9PiB0aGlzLmV4dGVuZChncmlkKSxcbiAgICB9O1xuICB9XG5cbiAgZXh0ZW5kKGdyaWQpIHtcbiAgICBncmlkLmdldEhlYWRlckNvbnRhaW5lcigpLm9uKCdjbGljaycsICcuanMtZ3JpZC1hY3Rpb24tc3VibWl0LWJ0bicsIChldmVudCkgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVTdWJtaXQoZXZlbnQsIGdyaWQpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBncmlkIGFjdGlvbiBzdWJtaXQuXG4gICAqIEl0IHVzZXMgZ3JpZCBmb3JtIHRvIHN1Ym1pdCBhY3Rpb25zLlxuICAgKlxuICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudFxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGhhbmRsZVN1Ym1pdChldmVudCwgZ3JpZCkge1xuICAgIGNvbnN0ICRzdWJtaXRCdG4gPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgIGNvbnN0IGNvbmZpcm1NZXNzYWdlID0gJHN1Ym1pdEJ0bi5kYXRhKCdjb25maXJtLW1lc3NhZ2UnKTtcblxuICAgIGlmICh0eXBlb2YgY29uZmlybU1lc3NhZ2UgIT09ICd1bmRlZmluZWQnICYmIGNvbmZpcm1NZXNzYWdlLmxlbmd0aCA+IDAgJiYgIXdpbmRvdy5jb25maXJtKGNvbmZpcm1NZXNzYWdlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0ICRmb3JtID0gJChgIyR7Z3JpZC5nZXRJZCgpfV9maWx0ZXJfZm9ybWApO1xuXG4gICAgJGZvcm0uYXR0cignYWN0aW9uJywgJHN1Ym1pdEJ0bi5kYXRhKCd1cmwnKSk7XG4gICAgJGZvcm0uYXR0cignbWV0aG9kJywgJHN1Ym1pdEJ0bi5kYXRhKCdtZXRob2QnKSk7XG4gICAgJGZvcm0uZmluZChgaW5wdXRbbmFtZT1cIiR7Z3JpZC5nZXRJZCgpfVtfdG9rZW5dXCJdYCkudmFsKCRzdWJtaXRCdG4uZGF0YSgnY3NyZicpKTtcbiAgICAkZm9ybS5zdWJtaXQoKTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogQ2xhc3MgaXMgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIEdyaWQgZXZlbnRzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdyaWQge1xuICAvKipcbiAgICogR3JpZCBpZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRcbiAgICovXG4gIGNvbnN0cnVjdG9yKGlkKSB7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuJGNvbnRhaW5lciA9ICQoYCMke3RoaXMuaWR9X2dyaWRgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZ3JpZCBpZFxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0SWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGdyaWQgY29udGFpbmVyXG4gICAqXG4gICAqIEByZXR1cm5zIHtqUXVlcnl9XG4gICAqL1xuICBnZXRDb250YWluZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuJGNvbnRhaW5lcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZ3JpZCBoZWFkZXIgY29udGFpbmVyXG4gICAqXG4gICAqIEByZXR1cm5zIHtqUXVlcnl9XG4gICAqL1xuICBnZXRIZWFkZXJDb250YWluZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuJGNvbnRhaW5lci5jbG9zZXN0KCcuanMtZ3JpZC1wYW5lbCcpLmZpbmQoJy5qcy1ncmlkLWhlYWRlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dGVuZCBncmlkIHdpdGggZXh0ZXJuYWwgZXh0ZW5zaW9uc1xuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZXh0ZW5zaW9uXG4gICAqL1xuICBhZGRFeHRlbnNpb24oZXh0ZW5zaW9uKSB7XG4gICAgZXh0ZW5zaW9uLmV4dGVuZCh0aGlzKTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogQ29uZmlybU1vZGFsIGNvbXBvbmVudFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZFxuICogQHBhcmFtIHtTdHJpbmd9IGNvbmZpcm1UaXRsZVxuICogQHBhcmFtIHtTdHJpbmd9IGNvbmZpcm1NZXNzYWdlXG4gKiBAcGFyYW0ge1N0cmluZ30gY2xvc2VCdXR0b25MYWJlbFxuICogQHBhcmFtIHtTdHJpbmd9IGNvbmZpcm1CdXR0b25MYWJlbFxuICogQHBhcmFtIHtTdHJpbmd9IGNvbmZpcm1CdXR0b25DbGFzc1xuICogQHBhcmFtIHtBcnJheX0gY3VzdG9tQnV0dG9uc1xuICogQHBhcmFtIHtCb29sZWFufSBjbG9zYWJsZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29uZmlybUNhbGxiYWNrXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYW5jZWxDYWxsYmFja1xuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ29uZmlybU1vZGFsKHBhcmFtcywgY29uZmlybUNhbGxiYWNrLCBjYW5jZWxDYWxsYmFjaykge1xuICAvLyBDb25zdHJ1Y3QgdGhlIG1vZGFsXG4gIGNvbnN0IHtpZCwgY2xvc2FibGV9ID0gcGFyYW1zO1xuICB0aGlzLm1vZGFsID0gTW9kYWwocGFyYW1zKTtcblxuICAvLyBqUXVlcnkgbW9kYWwgb2JqZWN0XG4gIHRoaXMuJG1vZGFsID0gJCh0aGlzLm1vZGFsLmNvbnRhaW5lcik7XG5cbiAgdGhpcy5zaG93ID0gKCkgPT4ge1xuICAgIHRoaXMuJG1vZGFsLm1vZGFsKCk7XG4gIH07XG5cbiAgdGhpcy5tb2RhbC5jb25maXJtQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY29uZmlybUNhbGxiYWNrKTtcblxuICB0aGlzLiRtb2RhbC5tb2RhbCh7XG4gICAgYmFja2Ryb3A6IGNsb3NhYmxlID8gdHJ1ZSA6ICdzdGF0aWMnLFxuICAgIGtleWJvYXJkOiBjbG9zYWJsZSAhPT0gdW5kZWZpbmVkID8gY2xvc2FibGUgOiB0cnVlLFxuICAgIGNsb3NhYmxlOiBjbG9zYWJsZSAhPT0gdW5kZWZpbmVkID8gY2xvc2FibGUgOiB0cnVlLFxuICAgIHNob3c6IGZhbHNlLFxuICB9KTtcblxuICB0aGlzLiRtb2RhbC5vbignaGlkZGVuLmJzLm1vZGFsJywgKCkgPT4ge1xuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke2lkfWApLnJlbW92ZSgpO1xuICAgIGlmIChjYW5jZWxDYWxsYmFjaykge1xuICAgICAgY2FuY2VsQ2FsbGJhY2soKTtcbiAgICB9XG4gIH0pO1xuXG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5tb2RhbC5jb250YWluZXIpO1xufVxuXG4vKipcbiAqIE1vZGFsIGNvbXBvbmVudCB0byBpbXByb3ZlIGxpc2liaWxpdHkgYnkgY29uc3RydWN0aW5nIHRoZSBtb2RhbCBvdXRzaWRlIHRoZSBtYWluIGZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHBhcmFtc1xuICpcbiAqL1xuZnVuY3Rpb24gTW9kYWwoe1xuICBpZCA9ICdjb25maXJtLW1vZGFsJyxcbiAgY29uZmlybVRpdGxlLFxuICBjb25maXJtTWVzc2FnZSA9ICcnLFxuICBjbG9zZUJ1dHRvbkxhYmVsID0gJ0Nsb3NlJyxcbiAgY29uZmlybUJ1dHRvbkxhYmVsID0gJ0FjY2VwdCcsXG4gIGNvbmZpcm1CdXR0b25DbGFzcyA9ICdidG4tcHJpbWFyeScsXG4gIGN1c3RvbUJ1dHRvbnMgPSBbXSxcbn0pIHtcbiAgY29uc3QgbW9kYWwgPSB7fTtcblxuICAvLyBNYWluIG1vZGFsIGVsZW1lbnRcbiAgbW9kYWwuY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIG1vZGFsLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdtb2RhbCcsICdmYWRlJyk7XG4gIG1vZGFsLmNvbnRhaW5lci5pZCA9IGlkO1xuXG4gIC8vIE1vZGFsIGRpYWxvZyBlbGVtZW50XG4gIG1vZGFsLmRpYWxvZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBtb2RhbC5kaWFsb2cuY2xhc3NMaXN0LmFkZCgnbW9kYWwtZGlhbG9nJyk7XG5cbiAgLy8gTW9kYWwgY29udGVudCBlbGVtZW50XG4gIG1vZGFsLmNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgbW9kYWwuY29udGVudC5jbGFzc0xpc3QuYWRkKCdtb2RhbC1jb250ZW50Jyk7XG5cbiAgLy8gTW9kYWwgaGVhZGVyIGVsZW1lbnRcbiAgbW9kYWwuaGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIG1vZGFsLmhlYWRlci5jbGFzc0xpc3QuYWRkKCdtb2RhbC1oZWFkZXInKTtcblxuICAvLyBNb2RhbCB0aXRsZSBlbGVtZW50XG4gIGlmIChjb25maXJtVGl0bGUpIHtcbiAgICBtb2RhbC50aXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2g0Jyk7XG4gICAgbW9kYWwudGl0bGUuY2xhc3NMaXN0LmFkZCgnbW9kYWwtdGl0bGUnKTtcbiAgICBtb2RhbC50aXRsZS5pbm5lckhUTUwgPSBjb25maXJtVGl0bGU7XG4gIH1cblxuICAvLyBNb2RhbCBjbG9zZSBidXR0b24gaWNvblxuICBtb2RhbC5jbG9zZUljb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcbiAgbW9kYWwuY2xvc2VJY29uLmNsYXNzTGlzdC5hZGQoJ2Nsb3NlJyk7XG4gIG1vZGFsLmNsb3NlSWNvbi5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnYnV0dG9uJyk7XG4gIG1vZGFsLmNsb3NlSWNvbi5kYXRhc2V0LmRpc21pc3MgPSAnbW9kYWwnO1xuICBtb2RhbC5jbG9zZUljb24uaW5uZXJIVE1MID0gJ8OXJztcblxuICAvLyBNb2RhbCBib2R5IGVsZW1lbnRcbiAgbW9kYWwuYm9keSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBtb2RhbC5ib2R5LmNsYXNzTGlzdC5hZGQoJ21vZGFsLWJvZHknLCAndGV4dC1sZWZ0JywgJ2ZvbnQtd2VpZ2h0LW5vcm1hbCcpO1xuXG4gIC8vIE1vZGFsIG1lc3NhZ2UgZWxlbWVudFxuICBtb2RhbC5tZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xuICBtb2RhbC5tZXNzYWdlLmNsYXNzTGlzdC5hZGQoJ2NvbmZpcm0tbWVzc2FnZScpO1xuICBtb2RhbC5tZXNzYWdlLmlubmVySFRNTCA9IGNvbmZpcm1NZXNzYWdlO1xuXG4gIC8vIE1vZGFsIGZvb3RlciBlbGVtZW50XG4gIG1vZGFsLmZvb3RlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBtb2RhbC5mb290ZXIuY2xhc3NMaXN0LmFkZCgnbW9kYWwtZm9vdGVyJyk7XG5cbiAgLy8gTW9kYWwgY2xvc2UgYnV0dG9uIGVsZW1lbnRcbiAgbW9kYWwuY2xvc2VCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcbiAgbW9kYWwuY2xvc2VCdXR0b24uc2V0QXR0cmlidXRlKCd0eXBlJywgJ2J1dHRvbicpO1xuICBtb2RhbC5jbG9zZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdidG4nLCAnYnRuLW91dGxpbmUtc2Vjb25kYXJ5JywgJ2J0bi1sZycpO1xuICBtb2RhbC5jbG9zZUJ1dHRvbi5kYXRhc2V0LmRpc21pc3MgPSAnbW9kYWwnO1xuICBtb2RhbC5jbG9zZUJ1dHRvbi5pbm5lckhUTUwgPSBjbG9zZUJ1dHRvbkxhYmVsO1xuXG4gIC8vIE1vZGFsIGNvbmZpcm0gYnV0dG9uIGVsZW1lbnRcbiAgbW9kYWwuY29uZmlybUJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuICBtb2RhbC5jb25maXJtQnV0dG9uLnNldEF0dHJpYnV0ZSgndHlwZScsICdidXR0b24nKTtcbiAgbW9kYWwuY29uZmlybUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdidG4nLCBjb25maXJtQnV0dG9uQ2xhc3MsICdidG4tbGcnLCAnYnRuLWNvbmZpcm0tc3VibWl0Jyk7XG4gIG1vZGFsLmNvbmZpcm1CdXR0b24uZGF0YXNldC5kaXNtaXNzID0gJ21vZGFsJztcbiAgbW9kYWwuY29uZmlybUJ1dHRvbi5pbm5lckhUTUwgPSBjb25maXJtQnV0dG9uTGFiZWw7XG5cbiAgLy8gQ29uc3RydWN0aW5nIHRoZSBtb2RhbFxuICBpZiAoY29uZmlybVRpdGxlKSB7XG4gICAgbW9kYWwuaGVhZGVyLmFwcGVuZChtb2RhbC50aXRsZSwgbW9kYWwuY2xvc2VJY29uKTtcbiAgfSBlbHNlIHtcbiAgICBtb2RhbC5oZWFkZXIuYXBwZW5kQ2hpbGQobW9kYWwuY2xvc2VJY29uKTtcbiAgfVxuXG4gIG1vZGFsLmJvZHkuYXBwZW5kQ2hpbGQobW9kYWwubWVzc2FnZSk7XG4gIG1vZGFsLmZvb3Rlci5hcHBlbmQobW9kYWwuY2xvc2VCdXR0b24sIC4uLmN1c3RvbUJ1dHRvbnMsIG1vZGFsLmNvbmZpcm1CdXR0b24pO1xuICBtb2RhbC5jb250ZW50LmFwcGVuZChtb2RhbC5oZWFkZXIsIG1vZGFsLmJvZHksIG1vZGFsLmZvb3Rlcik7XG4gIG1vZGFsLmRpYWxvZy5hcHBlbmRDaGlsZChtb2RhbC5jb250ZW50KTtcbiAgbW9kYWwuY29udGFpbmVyLmFwcGVuZENoaWxkKG1vZGFsLmRpYWxvZyk7XG5cbiAgcmV0dXJuIG1vZGFsO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5pbXBvcnQgUm91dGluZyBmcm9tICdmb3Mtcm91dGluZyc7XG5pbXBvcnQgcm91dGVzIGZyb20gJ0Bqcy9mb3NfanNfcm91dGVzLmpzb24nO1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogV3JhcHMgRk9TSnNSb3V0aW5nYnVuZGxlIHdpdGggZXhwb3NlZCByb3V0ZXMuXG4gKiBUbyBleHBvc2Ugcm91dGUgYWRkIG9wdGlvbiBgZXhwb3NlOiB0cnVlYCBpbiAueW1sIHJvdXRpbmcgY29uZmlnXG4gKlxuICogZS5nLlxuICpcbiAqIGBteV9yb3V0ZVxuICogICAgcGF0aDogL215LXBhdGhcbiAqICAgIG9wdGlvbnM6XG4gKiAgICAgIGV4cG9zZTogdHJ1ZVxuICogYFxuICogQW5kIHJ1biBgYmluL2NvbnNvbGUgZm9zOmpzLXJvdXRpbmc6ZHVtcCAtLWZvcm1hdD1qc29uIC0tdGFyZ2V0PWFkbWluLWRldi90aGVtZXMvbmV3LXRoZW1lL2pzL2Zvc19qc19yb3V0ZXMuanNvbmBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm91dGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKHdpbmRvdy5wcmVzdGFzaG9wICYmIHdpbmRvdy5wcmVzdGFzaG9wLmN1c3RvbVJvdXRlcykge1xuICAgICAgT2JqZWN0LmFzc2lnbihyb3V0ZXMucm91dGVzLCB3aW5kb3cucHJlc3Rhc2hvcC5jdXN0b21Sb3V0ZXMpO1xuICAgIH1cblxuICAgIFJvdXRpbmcuc2V0RGF0YShyb3V0ZXMpO1xuICAgIFJvdXRpbmcuc2V0QmFzZVVybChcbiAgICAgICQoZG9jdW1lbnQpXG4gICAgICAgIC5maW5kKCdib2R5JylcbiAgICAgICAgLmRhdGEoJ2Jhc2UtdXJsJyksXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29yYXRlZCBcImdlbmVyYXRlXCIgbWV0aG9kLCB3aXRoIHByZWRlZmluZWQgc2VjdXJpdHkgdG9rZW4gaW4gcGFyYW1zXG4gICAqXG4gICAqIEBwYXJhbSByb3V0ZVxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdHJpbmd9XG4gICAqL1xuICBnZW5lcmF0ZShyb3V0ZSwgcGFyYW1zID0ge30pIHtcbiAgICBjb25zdCB0b2tlbml6ZWRQYXJhbXMgPSBPYmplY3QuYXNzaWduKHBhcmFtcywge1xuICAgICAgX3Rva2VuOiAkKGRvY3VtZW50KVxuICAgICAgICAuZmluZCgnYm9keScpXG4gICAgICAgIC5kYXRhKCd0b2tlbicpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIFJvdXRpbmcuZ2VuZXJhdGUocm91dGUsIHRva2VuaXplZFBhcmFtcyk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG4vKipcbiAqIFRvZ2dsZXMgaGlkZGVuIHByb2R1Y3RzIGluIG9yZGVyIHByZXZpZXcgYmxvY2suXG4gKlxuICogQHBhcmFtIHtqUXVlcnl9ICRncmlkQ29udGFpbmVyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHByZXZpZXdQcm9kdWN0c1RvZ2dsZXIoJHJvdykge1xuICB0b2dnbGVTdG9ja0xvY2F0aW9uQ29sdW1uKCRyb3cpO1xuICAkcm93Lm9uKCdjbGljaycsICcuanMtcHJldmlldy1tb3JlLXByb2R1Y3RzLWJ0bicsIChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjb25zdCAkYnRuID0gJChldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICBjb25zdCAkaGlkZGVuUHJvZHVjdHMgPSAkYnRuLmNsb3Nlc3QoJ3Rib2R5JykuZmluZCgnLmpzLXByb2R1Y3QtcHJldmlldy1tb3JlJyk7XG5cbiAgICAkaGlkZGVuUHJvZHVjdHMucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpO1xuICAgICRidG4uY2xvc2VzdCgndHInKS5yZW1vdmUoKTtcbiAgICB0b2dnbGVTdG9ja0xvY2F0aW9uQ29sdW1uKCRyb3cpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdG9nZ2xlU3RvY2tMb2NhdGlvbkNvbHVtbigkY29udGFpbmVyKSB7XG4gIGxldCBzaG93Q29sdW1uID0gZmFsc2U7XG4gICQoJy5qcy1jZWxsLXByb2R1Y3Qtc3RvY2stbG9jYXRpb24nLCAkY29udGFpbmVyLmZpbmQoJ3RyOm5vdCguZC1ub25lKScpKS5maWx0ZXIoJ3RkJykuZWFjaCgoaW5kZXgsIGVsZW1lbnQpID0+IHtcbiAgICBpZiAoJChlbGVtZW50KS5odG1sKCkudHJpbSgpICE9PSAnJykge1xuICAgICAgc2hvd0NvbHVtbiA9IHRydWU7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbiAgJCgnLmpzLWNlbGwtcHJvZHVjdC1zdG9jay1sb2NhdGlvbicsICRjb250YWluZXIpLnRvZ2dsZShzaG93Q29sdW1uKTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9hcnJheS9mcm9tXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9hc3NpZ25cIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7XG4gIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbiAgfVxufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIik7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVmaW5lUHJvcGVydHkpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgICAgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgICBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICAgIGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICAgIHJldHVybiBDb25zdHJ1Y3RvcjtcbiAgfTtcbn0oKTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9mcm9tID0gcmVxdWlyZShcIi4uL2NvcmUtanMvYXJyYXkvZnJvbVwiKTtcblxudmFyIF9mcm9tMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Zyb20pO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhcnIyW2ldID0gYXJyW2ldO1xuICAgIH1cblxuICAgIHJldHVybiBhcnIyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAoMCwgX2Zyb20yLmRlZmF1bHQpKGFycik7XG4gIH1cbn07IiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5hcnJheS5mcm9tJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5BcnJheS5mcm9tO1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmFzc2lnbicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0LmFzc2lnbjtcbiIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHknKTtcbnZhciAkT2JqZWN0ID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdDtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYykge1xuICByZXR1cm4gJE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBkZXNjKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhbiBvYmplY3QhJyk7XG4gIHJldHVybiBpdDtcbn07XG4iLCIvLyBmYWxzZSAtPiBBcnJheSNpbmRleE9mXG4vLyB0cnVlICAtPiBBcnJheSNpbmNsdWRlc1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4vX3RvLWFic29sdXRlLWluZGV4Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChJU19JTkNMVURFUykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBlbCwgZnJvbUluZGV4KSB7XG4gICAgdmFyIE8gPSB0b0lPYmplY3QoJHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGZyb21JbmRleCwgbGVuZ3RoKTtcbiAgICB2YXIgdmFsdWU7XG4gICAgLy8gQXJyYXkjaW5jbHVkZXMgdXNlcyBTYW1lVmFsdWVaZXJvIGVxdWFsaXR5IGFsZ29yaXRobVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT0gZWwpIHdoaWxlIChsZW5ndGggPiBpbmRleCkge1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSNpbmRleE9mIGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSBpZiAoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTykge1xuICAgICAgaWYgKE9baW5kZXhdID09PSBlbCkgcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTtcbiIsIi8vIGdldHRpbmcgdGFnIGZyb20gMTkuMS4zLjYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZygpXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG4vLyBFUzMgd3JvbmcgaGVyZVxudmFyIEFSRyA9IGNvZihmdW5jdGlvbiAoKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT0gJ0FyZ3VtZW50cyc7XG5cbi8vIGZhbGxiYWNrIGZvciBJRTExIFNjcmlwdCBBY2Nlc3MgRGVuaWVkIGVycm9yXG52YXIgdHJ5R2V0ID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gaXRba2V5XTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgTywgVCwgQjtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnXG4gICAgLy8gQEB0b1N0cmluZ1RhZyBjYXNlXG4gICAgOiB0eXBlb2YgKFQgPSB0cnlHZXQoTyA9IE9iamVjdChpdCksIFRBRykpID09ICdzdHJpbmcnID8gVFxuICAgIC8vIGJ1aWx0aW5UYWcgY2FzZVxuICAgIDogQVJHID8gY29mKE8pXG4gICAgLy8gRVMzIGFyZ3VtZW50cyBmYWxsYmFja1xuICAgIDogKEIgPSBjb2YoTykpID09ICdPYmplY3QnICYmIHR5cGVvZiBPLmNhbGxlZSA9PSAnZnVuY3Rpb24nID8gJ0FyZ3VtZW50cycgOiBCO1xufTtcbiIsInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcbiIsInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjYuMTEnIH07XG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgaW5kZXgsIHZhbHVlKSB7XG4gIGlmIChpbmRleCBpbiBvYmplY3QpICRkZWZpbmVQcm9wZXJ0eS5mKG9iamVjdCwgaW5kZXgsIGNyZWF0ZURlc2MoMCwgdmFsdWUpKTtcbiAgZWxzZSBvYmplY3RbaW5kZXhdID0gdmFsdWU7XG59O1xuIiwiLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwiLy8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIGlzID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCIvLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkge1xuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRjtcbiAgdmFyIElTX0dMT0JBTCA9IHR5cGUgJiAkZXhwb3J0Lkc7XG4gIHZhciBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TO1xuICB2YXIgSVNfUFJPVE8gPSB0eXBlICYgJGV4cG9ydC5QO1xuICB2YXIgSVNfQklORCA9IHR5cGUgJiAkZXhwb3J0LkI7XG4gIHZhciBJU19XUkFQID0gdHlwZSAmICRleHBvcnQuVztcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdO1xuICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGtleSwgb3duLCBvdXQ7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKG93biAmJiBoYXMoZXhwb3J0cywga2V5KSkgY29udGludWU7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSBvd24gPyB0YXJnZXRba2V5XSA6IHNvdXJjZVtrZXldO1xuICAgIC8vIHByZXZlbnQgZ2xvYmFsIHBvbGx1dGlvbiBmb3IgbmFtZXNwYWNlc1xuICAgIGV4cG9ydHNba2V5XSA9IElTX0dMT0JBTCAmJiB0eXBlb2YgdGFyZ2V0W2tleV0gIT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZVtrZXldXG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICA6IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwgZ2xvYmFsKVxuICAgIC8vIHdyYXAgZ2xvYmFsIGNvbnN0cnVjdG9ycyBmb3IgcHJldmVudCBjaGFuZ2UgdGhlbSBpbiBsaWJyYXJ5XG4gICAgOiBJU19XUkFQICYmIHRhcmdldFtrZXldID09IG91dCA/IChmdW5jdGlvbiAoQykge1xuICAgICAgdmFyIEYgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEMpIHtcbiAgICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDKCk7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgQyhhKTtcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDKGEsIGIpO1xuICAgICAgICAgIH0gcmV0dXJuIG5ldyBDKGEsIGIsIGMpO1xuICAgICAgICB9IHJldHVybiBDLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgRltQUk9UT1RZUEVdID0gQ1tQUk9UT1RZUEVdO1xuICAgICAgcmV0dXJuIEY7XG4gICAgLy8gbWFrZSBzdGF0aWMgdmVyc2lvbnMgZm9yIHByb3RvdHlwZSBtZXRob2RzXG4gICAgfSkob3V0KSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5tZXRob2RzLiVOQU1FJVxuICAgIGlmIChJU19QUk9UTykge1xuICAgICAgKGV4cG9ydHMudmlydHVhbCB8fCAoZXhwb3J0cy52aXJ0dWFsID0ge30pKVtrZXldID0gb3V0O1xuICAgICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLnByb3RvdHlwZS4lTkFNRSVcbiAgICAgIGlmICh0eXBlICYgJGV4cG9ydC5SICYmIGV4cFByb3RvICYmICFleHBQcm90b1trZXldKSBoaWRlKGV4cFByb3RvLCBrZXksIG91dCk7XG4gICAgfVxuICB9XG59O1xuLy8gdHlwZSBiaXRtYXBcbiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkXG4kZXhwb3J0LkcgPSAyOyAgIC8vIGdsb2JhbFxuJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWNcbiRleHBvcnQuUCA9IDg7ICAgLy8gcHJvdG9cbiRleHBvcnQuQiA9IDE2OyAgLy8gYmluZFxuJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwXG4kZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmVcbiRleHBvcnQuUiA9IDEyODsgLy8gcmVhbCBwcm90byBtZXRob2QgZm9yIGBsaWJyYXJ5YFxubW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIiwidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcbiIsInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsInZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xubW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4iLCJtb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2RpdicpLCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIiwiLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xufTtcbiIsIi8vIGNoZWNrIG9uIGRlZmF1bHQgQXJyYXkgaXRlcmF0b3JcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAhPT0gdW5kZWZpbmVkICYmIChJdGVyYXRvcnMuQXJyYXkgPT09IGl0IHx8IEFycmF5UHJvdG9bSVRFUkFUT1JdID09PSBpdCk7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iLCIvLyBjYWxsIHNvbWV0aGluZyBvbiBpdGVyYXRvciBzdGVwIHdpdGggc2FmZSBjbG9zaW5nIG9uIGVycm9yXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdG9yLCBmbiwgdmFsdWUsIGVudHJpZXMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZW50cmllcyA/IGZuKGFuT2JqZWN0KHZhbHVlKVswXSwgdmFsdWVbMV0pIDogZm4odmFsdWUpO1xuICAvLyA3LjQuNiBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCBjb21wbGV0aW9uKVxuICB9IGNhdGNoIChlKSB7XG4gICAgdmFyIHJldCA9IGl0ZXJhdG9yWydyZXR1cm4nXTtcbiAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIGFuT2JqZWN0KHJldC5jYWxsKGl0ZXJhdG9yKSk7XG4gICAgdGhyb3cgZTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcblxuLy8gMjUuMS4yLjEuMSAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2hpZGUnKShJdGVyYXRvclByb3RvdHlwZSwgcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCkge1xuICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KSB9KTtcbiAgc2V0VG9TdHJpbmdUYWcoQ29uc3RydWN0b3IsIE5BTUUgKyAnIEl0ZXJhdG9yJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyICRpdGVyQ3JlYXRlID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAkbmF0aXZlIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiB0eXBlb2YgSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdICE9ICdmdW5jdGlvbicpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcbiIsInZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgcml0ZXIgPSBbN11bSVRFUkFUT1JdKCk7XG4gIHJpdGVyWydyZXR1cm4nXSA9IGZ1bmN0aW9uICgpIHsgU0FGRV9DTE9TSU5HID0gdHJ1ZTsgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgQXJyYXkuZnJvbShyaXRlciwgZnVuY3Rpb24gKCkgeyB0aHJvdyAyOyB9KTtcbn0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjLCBza2lwQ2xvc2luZykge1xuICBpZiAoIXNraXBDbG9zaW5nICYmICFTQUZFX0NMT1NJTkcpIHJldHVybiBmYWxzZTtcbiAgdmFyIHNhZmUgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICB2YXIgYXJyID0gWzddO1xuICAgIHZhciBpdGVyID0gYXJyW0lURVJBVE9SXSgpO1xuICAgIGl0ZXIubmV4dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHsgZG9uZTogc2FmZSA9IHRydWUgfTsgfTtcbiAgICBhcnJbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcjsgfTtcbiAgICBleGVjKGFycik7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gc2FmZTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB0cnVlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMTkuMS4yLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSwgLi4uKVxudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BTID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKTtcbnZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyICRhc3NpZ24gPSBPYmplY3QuYXNzaWduO1xuXG4vLyBzaG91bGQgd29yayB3aXRoIHN5bWJvbHMgYW5kIHNob3VsZCBoYXZlIGRldGVybWluaXN0aWMgcHJvcGVydHkgb3JkZXIgKFY4IGJ1Zylcbm1vZHVsZS5leHBvcnRzID0gISRhc3NpZ24gfHwgcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHZhciBBID0ge307XG4gIHZhciBCID0ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICB2YXIgUyA9IFN5bWJvbCgpO1xuICB2YXIgSyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdCc7XG4gIEFbU10gPSA3O1xuICBLLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7IEJba10gPSBrOyB9KTtcbiAgcmV0dXJuICRhc3NpZ24oe30sIEEpW1NdICE9IDcgfHwgT2JqZWN0LmtleXMoJGFzc2lnbih7fSwgQikpLmpvaW4oJycpICE9IEs7XG59KSA/IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIHNvdXJjZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHZhciBUID0gdG9PYmplY3QodGFyZ2V0KTtcbiAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAxO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgdmFyIGlzRW51bSA9IHBJRS5mO1xuICB3aGlsZSAoYUxlbiA+IGluZGV4KSB7XG4gICAgdmFyIFMgPSBJT2JqZWN0KGFyZ3VtZW50c1tpbmRleCsrXSk7XG4gICAgdmFyIGtleXMgPSBnZXRTeW1ib2xzID8gZ2V0S2V5cyhTKS5jb25jYXQoZ2V0U3ltYm9scyhTKSkgOiBnZXRLZXlzKFMpO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgaiA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaikge1xuICAgICAga2V5ID0ga2V5c1tqKytdO1xuICAgICAgaWYgKCFERVNDUklQVE9SUyB8fCBpc0VudW0uY2FsbChTLCBrZXkpKSBUW2tleV0gPSBTW2tleV07XG4gICAgfVxuICB9IHJldHVybiBUO1xufSA6ICRhc3NpZ247XG4iLCIvLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGRQcyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcHMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2lmcmFtZScpO1xuICB2YXIgaSA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgdmFyIGx0ID0gJzwnO1xuICB2YXIgZ3QgPSAnPic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIHJlcXVpcmUoJy4vX2h0bWwnKS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gJ2phdmFzY3JpcHQ6JzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zY3JpcHQtdXJsXG4gIC8vIGNyZWF0ZURpY3QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5PYmplY3Q7XG4gIC8vIGh0bWwucmVtb3ZlQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArICdzY3JpcHQnICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnL3NjcmlwdCcgKyBndCk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GO1xuICB3aGlsZSAoaS0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2ldXTtcbiAgcmV0dXJuIGNyZWF0ZURpY3QoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcbiAgICByZXN1bHQgPSBuZXcgRW1wdHkoKTtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkUHMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG4iLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4vX2llOC1kb20tZGVmaW5lJyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBkUCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZFAoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIScpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwidmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBrZXlzID0gZ2V0S2V5cyhQcm9wZXJ0aWVzKTtcbiAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICB2YXIgaSA9IDA7XG4gIHZhciBQO1xuICB3aGlsZSAobGVuZ3RoID4gaSkgZFAuZihPLCBQID0ga2V5c1tpKytdLCBQcm9wZXJ0aWVzW1BdKTtcbiAgcmV0dXJuIE87XG59O1xuIiwiZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbiIsIi8vIDE5LjEuMi45IC8gMTUuMi4zLjIgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBPYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmdldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIChPKSB7XG4gIE8gPSB0b09iamVjdChPKTtcbiAgaWYgKGhhcyhPLCBJRV9QUk9UTykpIHJldHVybiBPW0lFX1BST1RPXTtcbiAgaWYgKHR5cGVvZiBPLmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgTyBpbnN0YW5jZW9mIE8uY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gTy5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIH0gcmV0dXJuIE8gaW5zdGFuY2VvZiBPYmplY3QgPyBPYmplY3RQcm90byA6IG51bGw7XG59O1xuIiwidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIvLyAxOS4xLjIuMTQgLyAxNS4yLjMuMTQgT2JqZWN0LmtleXMoTylcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKSB7XG4gIHJldHVybiAka2V5cyhPLCBlbnVtQnVnS2V5cyk7XG59O1xuIiwiZXhwb3J0cy5mID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19oaWRlJyk7XG4iLCJ2YXIgZGVmID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIHRhZywgc3RhdCkge1xuICBpZiAoaXQgJiYgIWhhcyhpdCA9IHN0YXQgPyBpdCA6IGl0LnByb3RvdHlwZSwgVEFHKSkgZGVmKGl0LCBUQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogdGFnIH0pO1xufTtcbiIsInZhciBzaGFyZWQgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgna2V5cycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBzaGFyZWRba2V5XSB8fCAoc2hhcmVkW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwidmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiBjb3JlLnZlcnNpb24sXG4gIG1vZGU6IHJlcXVpcmUoJy4vX2xpYnJhcnknKSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE5IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJ1xufSk7XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG4vLyB0cnVlICAtPiBTdHJpbmcjYXRcbi8vIGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoVE9fU1RSSU5HKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhhdCwgcG9zKSB7XG4gICAgdmFyIHMgPSBTdHJpbmcoZGVmaW5lZCh0aGF0KSk7XG4gICAgdmFyIGkgPSB0b0ludGVnZXIocG9zKTtcbiAgICB2YXIgbCA9IHMubGVuZ3RoO1xuICAgIHZhciBhLCBiO1xuICAgIGlmIChpIDwgMCB8fCBpID49IGwpIHJldHVybiBUT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBhID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIHJldHVybiBhIDwgMHhkODAwIHx8IGEgPiAweGRiZmYgfHwgaSArIDEgPT09IGwgfHwgKGIgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBiID4gMHhkZmZmXG4gICAgICA/IFRPX1NUUklORyA/IHMuY2hhckF0KGkpIDogYVxuICAgICAgOiBUT19TVFJJTkcgPyBzLnNsaWNlKGksIGkgKyAyKSA6IChhIC0gMHhkODAwIDw8IDEwKSArIChiIC0gMHhkYzAwKSArIDB4MTAwMDA7XG4gIH07XG59O1xuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG4iLCIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcbiIsIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG4iLCIvLyA3LjEuMTUgVG9MZW5ndGhcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPiAwID8gbWluKHRvSW50ZWdlcihpdCksIDB4MWZmZmZmZmZmZmZmZmYpIDogMDsgLy8gcG93KDIsIDUzKSAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuIiwiLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFMpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwidmFyIGlkID0gMDtcbnZhciBweCA9IE1hdGgucmFuZG9tKCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJy5jb25jYXQoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSwgJylfJywgKCsraWQgKyBweCkudG9TdHJpbmcoMzYpKTtcbn07XG4iLCJ2YXIgc3RvcmUgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgnd2tzJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG52YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuU3ltYm9sO1xudmFyIFVTRV9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09ICdmdW5jdGlvbic7XG5cbnZhciAkZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9XG4gICAgVVNFX1NZTUJPTCAmJiBTeW1ib2xbbmFtZV0gfHwgKFVTRV9TWU1CT0wgPyBTeW1ib2wgOiB1aWQpKCdTeW1ib2wuJyArIG5hbWUpKTtcbn07XG5cbiRleHBvcnRzLnN0b3JlID0gc3RvcmU7XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb3JlJykuZ2V0SXRlcmF0b3JNZXRob2QgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ICE9IHVuZGVmaW5lZCkgcmV0dXJuIGl0W0lURVJBVE9SXVxuICAgIHx8IGl0WydAQGl0ZXJhdG9yJ11cbiAgICB8fCBJdGVyYXRvcnNbY2xhc3NvZihpdCldO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJyk7XG52YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2NyZWF0ZS1wcm9wZXJ0eScpO1xudmFyIGdldEl0ZXJGbiA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2l0ZXItZGV0ZWN0JykoZnVuY3Rpb24gKGl0ZXIpIHsgQXJyYXkuZnJvbShpdGVyKTsgfSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4yLjEgQXJyYXkuZnJvbShhcnJheUxpa2UsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICBmcm9tOiBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZSAvKiAsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkICovKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdChhcnJheUxpa2UpO1xuICAgIHZhciBDID0gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMgOiBBcnJheTtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIG1hcGZuID0gYUxlbiA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGl0ZXJGbiA9IGdldEl0ZXJGbihPKTtcbiAgICB2YXIgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICAgIGlmIChtYXBwaW5nKSBtYXBmbiA9IGN0eChtYXBmbiwgYUxlbiA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQsIDIpO1xuICAgIC8vIGlmIG9iamVjdCBpc24ndCBpdGVyYWJsZSBvciBpdCdzIGFycmF5IHdpdGggZGVmYXVsdCBpdGVyYXRvciAtIHVzZSBzaW1wbGUgY2FzZVxuICAgIGlmIChpdGVyRm4gIT0gdW5kZWZpbmVkICYmICEoQyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcihpdGVyRm4pKSkge1xuICAgICAgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKE8pLCByZXN1bHQgPSBuZXcgQygpOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7IGluZGV4KyspIHtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IGNhbGwoaXRlcmF0b3IsIG1hcGZuLCBbc3RlcC52YWx1ZSwgaW5kZXhdLCB0cnVlKSA6IHN0ZXAudmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgICBmb3IgKHJlc3VsdCA9IG5ldyBDKGxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmcgPyBtYXBmbihPW2luZGV4XSwgaW5kZXgpIDogT1tpbmRleF0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQubGVuZ3RoID0gaW5kZXg7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG4iLCIvLyAxOS4xLjMuMSBPYmplY3QuYXNzaWduKHRhcmdldCwgc291cmNlKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYsICdPYmplY3QnLCB7IGFzc2lnbjogcmVxdWlyZSgnLi9fb2JqZWN0LWFzc2lnbicpIH0pO1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi40IC8gMTUuMi4zLjYgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpLCAnT2JqZWN0JywgeyBkZWZpbmVQcm9wZXJ0eTogcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZiB9KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuLy8gMjEuMS4zLjI3IFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuLy8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBpbmRleCA9IHRoaXMuX2k7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IE8ubGVuZ3RoKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIHBvaW50ID0gJGF0KE8sIGluZGV4KTtcbiAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiB7IHZhbHVlOiBwb2ludCwgZG9uZTogZmFsc2UgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO3ZhciBfZXh0ZW5kcz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihhKXtmb3IodmFyIGIsYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspZm9yKHZhciBkIGluIGI9YXJndW1lbnRzW2NdLGIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsZCkmJihhW2RdPWJbZF0pO3JldHVybiBhfSxfdHlwZW9mPSdmdW5jdGlvbic9PXR5cGVvZiBTeW1ib2wmJidzeW1ib2wnPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgYX06ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJidmdW5jdGlvbic9PXR5cGVvZiBTeW1ib2wmJmEuY29uc3RydWN0b3I9PT1TeW1ib2wmJmEhPT1TeW1ib2wucHJvdG90eXBlPydzeW1ib2wnOnR5cGVvZiBhfTtmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soYSxiKXtpZighKGEgaW5zdGFuY2VvZiBiKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKX12YXIgUm91dGluZz1mdW5jdGlvbiBhKCl7dmFyIGI9dGhpcztfY2xhc3NDYWxsQ2hlY2sodGhpcyxhKSx0aGlzLnNldFJvdXRlcz1mdW5jdGlvbihhKXtiLnJvdXRlc1JvdXRpbmc9YXx8W119LHRoaXMuZ2V0Um91dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIGIucm91dGVzUm91dGluZ30sdGhpcy5zZXRCYXNlVXJsPWZ1bmN0aW9uKGEpe2IuY29udGV4dFJvdXRpbmcuYmFzZV91cmw9YX0sdGhpcy5nZXRCYXNlVXJsPWZ1bmN0aW9uKCl7cmV0dXJuIGIuY29udGV4dFJvdXRpbmcuYmFzZV91cmx9LHRoaXMuc2V0UHJlZml4PWZ1bmN0aW9uKGEpe2IuY29udGV4dFJvdXRpbmcucHJlZml4PWF9LHRoaXMuc2V0U2NoZW1lPWZ1bmN0aW9uKGEpe2IuY29udGV4dFJvdXRpbmcuc2NoZW1lPWF9LHRoaXMuZ2V0U2NoZW1lPWZ1bmN0aW9uKCl7cmV0dXJuIGIuY29udGV4dFJvdXRpbmcuc2NoZW1lfSx0aGlzLnNldEhvc3Q9ZnVuY3Rpb24oYSl7Yi5jb250ZXh0Um91dGluZy5ob3N0PWF9LHRoaXMuZ2V0SG9zdD1mdW5jdGlvbigpe3JldHVybiBiLmNvbnRleHRSb3V0aW5nLmhvc3R9LHRoaXMuYnVpbGRRdWVyeVBhcmFtcz1mdW5jdGlvbihhLGMsZCl7dmFyIGU9bmV3IFJlZ0V4cCgvXFxbXSQvKTtjIGluc3RhbmNlb2YgQXJyYXk/Yy5mb3JFYWNoKGZ1bmN0aW9uKGMsZil7ZS50ZXN0KGEpP2QoYSxjKTpiLmJ1aWxkUXVlcnlQYXJhbXMoYSsnWycrKCdvYmplY3QnPT09KCd1bmRlZmluZWQnPT10eXBlb2YgYz8ndW5kZWZpbmVkJzpfdHlwZW9mKGMpKT9mOicnKSsnXScsYyxkKX0pOidvYmplY3QnPT09KCd1bmRlZmluZWQnPT10eXBlb2YgYz8ndW5kZWZpbmVkJzpfdHlwZW9mKGMpKT9PYmplY3Qua2V5cyhjKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBiLmJ1aWxkUXVlcnlQYXJhbXMoYSsnWycrZSsnXScsY1tlXSxkKX0pOmQoYSxjKX0sdGhpcy5nZXRSb3V0ZT1mdW5jdGlvbihhKXt2YXIgYz1iLmNvbnRleHRSb3V0aW5nLnByZWZpeCthO2lmKCEhYi5yb3V0ZXNSb3V0aW5nW2NdKXJldHVybiBiLnJvdXRlc1JvdXRpbmdbY107ZWxzZSBpZighYi5yb3V0ZXNSb3V0aW5nW2FdKXRocm93IG5ldyBFcnJvcignVGhlIHJvdXRlIFwiJythKydcIiBkb2VzIG5vdCBleGlzdC4nKTtyZXR1cm4gYi5yb3V0ZXNSb3V0aW5nW2FdfSx0aGlzLmdlbmVyYXRlPWZ1bmN0aW9uKGEsYyxkKXt2YXIgZT1iLmdldFJvdXRlKGEpLGY9Y3x8e30sZz1fZXh0ZW5kcyh7fSxmKSxoPSdfc2NoZW1lJyxpPScnLGo9ITAsaz0nJztpZigoZS50b2tlbnN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2lmKCd0ZXh0Jz09PWJbMF0pcmV0dXJuIGk9YlsxXStpLHZvaWQoaj0hMSk7aWYoJ3ZhcmlhYmxlJz09PWJbMF0pe3ZhciBjPShlLmRlZmF1bHRzfHx7fSlbYlszXV07aWYoITE9PWp8fCFjfHwoZnx8e30pW2JbM11dJiZmW2JbM11dIT09ZS5kZWZhdWx0c1tiWzNdXSl7dmFyIGQ7aWYoKGZ8fHt9KVtiWzNdXSlkPWZbYlszXV0sZGVsZXRlIGdbYlszXV07ZWxzZSBpZihjKWQ9ZS5kZWZhdWx0c1tiWzNdXTtlbHNle2lmKGopcmV0dXJuO3Rocm93IG5ldyBFcnJvcignVGhlIHJvdXRlIFwiJythKydcIiByZXF1aXJlcyB0aGUgcGFyYW1ldGVyIFwiJytiWzNdKydcIi4nKX12YXIgaD0hMD09PWR8fCExPT09ZHx8Jyc9PT1kO2lmKCFofHwhail7dmFyIGs9ZW5jb2RlVVJJQ29tcG9uZW50KGQpLnJlcGxhY2UoLyUyRi9nLCcvJyk7J251bGwnPT09ayYmbnVsbD09PWQmJihrPScnKSxpPWJbMV0raytpfWo9ITF9ZWxzZSBjJiZkZWxldGUgZ1tiWzNdXTtyZXR1cm59dGhyb3cgbmV3IEVycm9yKCdUaGUgdG9rZW4gdHlwZSBcIicrYlswXSsnXCIgaXMgbm90IHN1cHBvcnRlZC4nKX0pLCcnPT1pJiYoaT0nLycpLChlLmhvc3R0b2tlbnN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybid0ZXh0Jz09PWFbMF0/dm9pZChrPWFbMV0rayk6dm9pZCgndmFyaWFibGUnPT09YVswXSYmKChmfHx7fSlbYVszXV0/KGI9ZlthWzNdXSxkZWxldGUgZ1thWzNdXSk6ZS5kZWZhdWx0c1thWzNdXSYmKGI9ZS5kZWZhdWx0c1thWzNdXSksaz1hWzFdK2IraykpfSksaT1iLmNvbnRleHRSb3V0aW5nLmJhc2VfdXJsK2ksZS5yZXF1aXJlbWVudHNbaF0mJmIuZ2V0U2NoZW1lKCkhPT1lLnJlcXVpcmVtZW50c1toXT9pPWUucmVxdWlyZW1lbnRzW2hdKyc6Ly8nKyhrfHxiLmdldEhvc3QoKSkraTprJiZiLmdldEhvc3QoKSE9PWs/aT1iLmdldFNjaGVtZSgpKyc6Ly8nK2sraTohMD09PWQmJihpPWIuZ2V0U2NoZW1lKCkrJzovLycrYi5nZXRIb3N0KCkraSksMDxPYmplY3Qua2V5cyhnKS5sZW5ndGgpe3ZhciBsPVtdLG09ZnVuY3Rpb24oYSxiKXt2YXIgYz1iO2M9J2Z1bmN0aW9uJz09dHlwZW9mIGM/YygpOmMsYz1udWxsPT09Yz8nJzpjLGwucHVzaChlbmNvZGVVUklDb21wb25lbnQoYSkrJz0nK2VuY29kZVVSSUNvbXBvbmVudChjKSl9O09iamVjdC5rZXlzKGcpLmZvckVhY2goZnVuY3Rpb24oYSl7cmV0dXJuIGIuYnVpbGRRdWVyeVBhcmFtcyhhLGdbYV0sbSl9KSxpPWkrJz8nK2wuam9pbignJicpLnJlcGxhY2UoLyUyMC9nLCcrJyl9cmV0dXJuIGl9LHRoaXMuc2V0RGF0YT1mdW5jdGlvbihhKXtiLnNldEJhc2VVcmwoYS5iYXNlX3VybCksYi5zZXRSb3V0ZXMoYS5yb3V0ZXMpLCdwcmVmaXgnaW4gYSYmYi5zZXRQcmVmaXgoYS5wcmVmaXgpLGIuc2V0SG9zdChhLmhvc3QpLGIuc2V0U2NoZW1lKGEuc2NoZW1lKX0sdGhpcy5jb250ZXh0Um91dGluZz17YmFzZV91cmw6JycscHJlZml4OicnLGhvc3Q6Jycsc2NoZW1lOicnfX07bW9kdWxlLmV4cG9ydHM9bmV3IFJvdXRpbmc7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuaW1wb3J0IEdyaWQgZnJvbSAnQGNvbXBvbmVudHMvZ3JpZC9ncmlkJztcbmltcG9ydCBGaWx0ZXJzUmVzZXRFeHRlbnNpb24gZnJvbSAnQGNvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vZmlsdGVycy1yZXNldC1leHRlbnNpb24nO1xuaW1wb3J0IFJlbG9hZExpc3RBY3Rpb25FeHRlbnNpb24gZnJvbSAnQGNvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vcmVsb2FkLWxpc3QtZXh0ZW5zaW9uJztcbmltcG9ydCBFeHBvcnRUb1NxbE1hbmFnZXJFeHRlbnNpb24gZnJvbSAnQGNvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vZXhwb3J0LXRvLXNxbC1tYW5hZ2VyLWV4dGVuc2lvbic7XG5pbXBvcnQgU29ydGluZ0V4dGVuc2lvbiBmcm9tICdAY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9zb3J0aW5nLWV4dGVuc2lvbic7XG5pbXBvcnQgTGlua1Jvd0FjdGlvbkV4dGVuc2lvbiBmcm9tICdAY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9saW5rLXJvdy1hY3Rpb24tZXh0ZW5zaW9uJztcbmltcG9ydCBTdWJtaXRHcmlkRXh0ZW5zaW9uIGZyb20gJ0Bjb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL3N1Ym1pdC1ncmlkLWFjdGlvbi1leHRlbnNpb24nO1xuaW1wb3J0IFN1Ym1pdEJ1bGtFeHRlbnNpb24gZnJvbSAnQGNvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vc3VibWl0LWJ1bGstYWN0aW9uLWV4dGVuc2lvbic7XG5pbXBvcnQgQnVsa0FjdGlvbkNoZWNrYm94RXh0ZW5zaW9uIGZyb20gJ0Bjb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL2J1bGstYWN0aW9uLWNoZWNrYm94LWV4dGVuc2lvbic7XG5pbXBvcnQgRmlsdGVyc1N1Ym1pdEJ1dHRvbkVuYWJsZXJFeHRlbnNpb25cbiAgZnJvbSAnQGNvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vZmlsdGVycy1zdWJtaXQtYnV0dG9uLWVuYWJsZXItZXh0ZW5zaW9uJztcbmltcG9ydCBDaG9pY2VFeHRlbnNpb24gZnJvbSAnQGNvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vY2hvaWNlLWV4dGVuc2lvbic7XG5pbXBvcnQgTW9kYWxGb3JtU3VibWl0RXh0ZW5zaW9uIGZyb20gJ0Bjb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL21vZGFsLWZvcm0tc3VibWl0LWV4dGVuc2lvbic7XG5pbXBvcnQgUHJldmlld0V4dGVuc2lvbiBmcm9tICdAY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9wcmV2aWV3LWV4dGVuc2lvbic7XG5pbXBvcnQgcHJldmlld1Byb2R1Y3RzVG9nZ2xlciBmcm9tICdAcGFnZXMvb3JkZXIvcHJldmlldy1wcm9kdWN0cy10b2dnbGVyJztcbmltcG9ydCBCdWxrT3BlblRhYnNFeHRlbnNpb24gZnJvbSAnQGNvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vYnVsay1vcGVuLXRhYnMtZXh0ZW5zaW9uJztcblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG4kKCgpID0+IHtcbiAgY29uc3Qgb3JkZXJHcmlkID0gbmV3IEdyaWQoJ29yZGVyJyk7XG4gIG9yZGVyR3JpZC5hZGRFeHRlbnNpb24obmV3IFJlbG9hZExpc3RBY3Rpb25FeHRlbnNpb24oKSk7XG4gIG9yZGVyR3JpZC5hZGRFeHRlbnNpb24obmV3IEV4cG9ydFRvU3FsTWFuYWdlckV4dGVuc2lvbigpKTtcbiAgb3JkZXJHcmlkLmFkZEV4dGVuc2lvbihuZXcgRmlsdGVyc1Jlc2V0RXh0ZW5zaW9uKCkpO1xuICBvcmRlckdyaWQuYWRkRXh0ZW5zaW9uKG5ldyBTb3J0aW5nRXh0ZW5zaW9uKCkpO1xuICBvcmRlckdyaWQuYWRkRXh0ZW5zaW9uKG5ldyBMaW5rUm93QWN0aW9uRXh0ZW5zaW9uKCkpO1xuICBvcmRlckdyaWQuYWRkRXh0ZW5zaW9uKG5ldyBTdWJtaXRHcmlkRXh0ZW5zaW9uKCkpO1xuICBvcmRlckdyaWQuYWRkRXh0ZW5zaW9uKG5ldyBTdWJtaXRCdWxrRXh0ZW5zaW9uKCkpO1xuICBvcmRlckdyaWQuYWRkRXh0ZW5zaW9uKG5ldyBCdWxrQWN0aW9uQ2hlY2tib3hFeHRlbnNpb24oKSk7XG4gIG9yZGVyR3JpZC5hZGRFeHRlbnNpb24obmV3IEZpbHRlcnNTdWJtaXRCdXR0b25FbmFibGVyRXh0ZW5zaW9uKCkpO1xuICBvcmRlckdyaWQuYWRkRXh0ZW5zaW9uKG5ldyBNb2RhbEZvcm1TdWJtaXRFeHRlbnNpb24oKSk7XG4gIG9yZGVyR3JpZC5hZGRFeHRlbnNpb24obmV3IENob2ljZUV4dGVuc2lvbigpKTtcbiAgb3JkZXJHcmlkLmFkZEV4dGVuc2lvbihuZXcgUHJldmlld0V4dGVuc2lvbihwcmV2aWV3UHJvZHVjdHNUb2dnbGVyKSk7XG4gIG9yZGVyR3JpZC5hZGRFeHRlbnNpb24obmV3IEJ1bGtPcGVuVGFic0V4dGVuc2lvbigpKTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==

Youez - 2016 - github.com/yon3zu
LinuXploit