From a49fa7c6db4c75b30c11b10f535952b04ae52ef0 Mon Sep 17 00:00:00 2001 From: scotty Date: Wed, 24 Feb 2016 15:44:54 -0800 Subject: [PATCH] moved jquery ahead of script.js isolated height transitions for TOC translated pi-accordion to JQ --- _layouts/headerfooter.html | 2 +- css/styles.css | 9 +- js/script.js | 1450 ++++++++++++++++-------------------- 3 files changed, 662 insertions(+), 799 deletions(-) diff --git a/_layouts/headerfooter.html b/_layouts/headerfooter.html index dd15cd1ba7..24781b7027 100644 --- a/_layouts/headerfooter.html +++ b/_layouts/headerfooter.html @@ -7,8 +7,8 @@ - + Kubernetes - {{ page.title }} diff --git a/css/styles.css b/css/styles.css index e8bf0986be..06ce6fb1d7 100755 --- a/css/styles.css +++ b/css/styles.css @@ -195,7 +195,7 @@ body.overlay-on { .pi-accordion .wrapper { position: relative; width: 100%; - transition: 0.3s; } + transition: height 0.3s; } .pi-accordion .content { padding-left: 20px; opacity: 0; @@ -207,11 +207,6 @@ body.overlay-on { transform: rotate(90deg); } .pi-accordion .item.on > .wrapper > .content { opacity: 1; } - .pi-accordion .item.loadYAH .wrapper { - transition: 0s; - height: auto; } - .pi-accordion .item.loadYAH .content { - transition: 0s; } .pi-pushmenu { display: none; @@ -1130,4 +1125,4 @@ section { #vendorStrip { display: block; } } -/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnRpYWxzL19yZXNldC5zYXNzIiwicGFydGlhbHMvX3NraW4uc2FzcyIsIi4uL2Jhc2VDb21wb25lbnRzL1/PgC1iYXNlQ29tcG9uZW50cy5zYXNzIiwiLi4vbW9kdWxlcy/PgC1hY2NvcmRpb24vX8+ALWFjY29yZGlvbi5zYXNzIiwiLi4vbW9kdWxlcy/PgC1wdXNobWVudS9fz4AtcHVzaG1lbnUuc2FzcyIsInBhcnRpYWxzL19zaXplLnNhc3MiLCJtZWRpYVF1ZXJpZXMvX2Jhc2Uuc2FzcyIsIm1lZGlhUXVlcmllcy9fdGFibGV0LnNhc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDQyxVQUFVO0VBQ1YsV0FBVyxFQUFHOztBQUdmO0VBQ0MsY0FBYyxFQUFHOztBQUVsQjtFQUNDLGdCQUFnQixFQUFHOztBQUVwQjtFQUNDLGlCQUFpQixFQUFHOztBQUVyQjtFQUNDLFVBQVU7RUFDVixXQUFXLEVBQUc7O0FBRWY7RUFDQyxzQkFBc0IsRUFBRzs7QUFHMUI7RUFDQyxlQUFlO0VBQ2YsWUFBWSxFQUFHOztBQUVoQjtFQUNDLGFBQWEsRUFBRzs7QUFFakI7RUFDQyxhQUFhLEVBQUc7O0FBRWpCO0VBQ0MsWUFBWSxFQUFHOztBQUVoQjtFQUNDLG1CQUFtQixFQUFHOztBQzNCdkI7RUFDQyx1QkFBdUI7RUFDdkIsa0NBTitCO0VBTy9CLGlCQUFpQjtFQUNqQixVQUFVO0VBQ1YsVUFBVSxFQUFHOztBQUVkO0VBQ0Msa0NBWitCLEVBWUw7O0FBRTNCO0VBQ0MsaUJBQWlCLEVBQUc7O0FBRXJCO0VBQ0MsaUJBQWlCLEVBQUc7O0FDdkJyQjtFQUNDLGlCQUFpQixFQUFHOztBQU1yQjtFQUlDLG1CQUFtQjtFQUNuQixVQUFVO0VBQ1YsWUFBWTtFQUNaLFlBTnlCO0VBT3pCLGFBUHlCO0VBUXpCLFVBQVUsRUFrQnNCO0VBM0JqQztJQVlFLFlBQVk7SUFDWixtQkFBbUI7SUFDbkIsT0FBTztJQUNQLGtCQWJzQztJQWN0QyxZQUFZO0lBQ1osd0JBQXdC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O0VBQ0MsWUFBWSxFQUFHOztBQUVoQjtFQUNDLG1CQUFtQixFQUFHOztBS3BDdkI7RUFDQyxnQkNLa0I7RURKbEIsa0JDS29CLEVETFc7O0FBRWhDO0VBQ0MsZ0JDSWtCO0VESGxCLGtCQ0lvQixFREpXOztBQUVoQztFQUNDLGdCQ0drQjtFREZsQixrQkNHb0IsRURIVzs7QUFFaEM7RUFDQyxnQkNFa0I7RUREbEIsa0JDRW9CLEVERlc7O0FBRWhDO0VBQ0MsZ0JDQ2tCO0VEQWxCLGtCQ0NvQixFRERXOztBQUVoQztFQUNDLGdCQ0FpQjtFRENqQixrQkNBbUIsRURBVzs7QUFFL0I7RUFDQyxtQkNDeUI7RURBekIsb0JDQXlCLEVESU87RUFOakM7SUFLRSxZQ0RlO0lERWYsZ0JDRG1CLEVEQ1U7O0FBRS9CO0VBQ0MsYUNGbUIsRURFTTs7QUFFMUI7RUFDQyxhQ0hpQjtFRElqQixhQ05tQixFRE1NOztBQUUxQjtFQUNDLGFDVG1CO0VEVW5CLGtCQ1ZtQixFRGF3QjtFQUw1QztJQUtFLGtCQ1Q0QixFRFNZOztBQUUxQztFQUNDLFlDVm9CO0VEV3BCLGFDWG9CLEVEV007O0FBRTNCO0VBQ0Msc0JDVjhCLEVEOEJrQjtFQXJCakQ7SUFJRSxtQkNaNkIsRURZZTtFQUo5QztJQU9FLHFCQ2QrQixFRGNhO0VBUDlDO0lBVUUsV0NoQmlCLEVEZ0JPO0VBVjFCO0lBYUUsMkJDbEJnQyxFRGtCWTtFQWI5QztJQWdCRSxpQkNwQnFDLEVEb0JXO0VBaEJsRDtJQW1CRSxhQ3RCOEI7SUR1QjlCLGtCQ3ZCOEI7SUR3QjlCLGdCQ3ZCbUMsRUR1QlU7O0FBRS9DO0VBRUUsa0JDeEM0QixFRHdDWTs7QUFFMUM7RUFDQyxrQkMxQnNCLEVEMEJXOztBQUVsQztFQUdHLG1CQ3pEdUI7RUQwRHZCLG9CQzFEdUIsRUQwRGU7O0FBRXpDO0VBQ0MsYUNoQ3lCO0VEaUN6QixrQkNqQ3lCO0VEa0N6QixnQkNqQzRCLEVEaUNTOztBQ3pCdEM7RUFDQyx3QkFBd0IsRUFBRzs7QUFFNUI7RUFDQyxtQkFBbUI7RUFDbkIsd0JBQXdCO0VBQ3hC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RTVCOEI7TUY2QjlCLGdCRTVCbUMsRUY0QlU7RUFFL0M7SUFFRSxrQkU3QzRCLEVGNkNZO0VBRTFDO0lBQ0Msa0JFL0JzQixFRitCVztFQUVsQztJQUdHLG1CRTlEdUI7SUYrRHZCLG9CRS9EdUIsRUYrRGU7RUFFekM7SUFDQyxhRXJDeUI7SUZzQ3pCLGtCRXRDeUI7SUZ1Q3pCLGdCRXRDNEIsRUZzQ1M7RUU1QnJDO0lBRUUsaUJBQWlCLEVBQUc7RUFFdEI7SUFDQyxzQkFBc0IsRUFBRztFQUUxQjtJQUNDLGVBQWUsRUFBRyxFQUFBIiwiZmlsZSI6InN0eWxlcy5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJodG1sLCBib2R5IHtcblx0bWFyZ2luOiAwO1xuXHRwYWRkaW5nOiAwOyB9XG5cblxuaW5wdXQsIGJ1dHRvbiB7XG5cdG91dGxpbmU6IG5vbmU7IH1cblxuYnV0dG9uIHtcblx0Y3Vyc29yOiBwb2ludGVyOyB9XG5cbnVsLCBsaSB7XG5cdGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxudWwge1xuXHRtYXJnaW46IDA7XG5cdHBhZGRpbmc6IDA7IH1cblxuYSB7XG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuXG4vLyBDT05WRU5JRU5DRVxuLmNsZWFyIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdGNsZWFyOiBib3RoOyB9XG5cbi5saWdodC10ZXh0IHtcblx0Y29sb3I6IHdoaXRlOyB9XG5cbi5yaWdodCB7XG5cdGZsb2F0OiByaWdodDsgfVxuXG4ubGVmdCB7XG5cdGZsb2F0OiBsZWZ0OyB9XG5cbi5jZW50ZXIge1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuXG4vL21peGluc1xuQG1peGluIHB1cmVDZW50ZXIoJGxlZnQ6IDUwJSwgJHRvcDogNTAlKSB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0dG9wOiAkdG9wO1xuXHRsZWZ0OiAkbGVmdDtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7IH1cblxuXG5AbWl4aW4gbWFpbnRhaW4tYXNwZWN0LXJhdGlvICgkd2lkdGgtZmFjdG9yOiAxNiwgJGhlaWdodC1mYWN0b3I6IDksICR0YXJnZXQtd2lkdGg6IDgwdncsICR0YXJnZXQtaGVpZ2h0OiA4MHZoKSB7XG5cdHdpZHRoOiAkdGFyZ2V0LXdpZHRoO1xuXHRoZWlnaHQ6ICR0YXJnZXQtd2lkdGggKiAoJGhlaWdodC1mYWN0b3IgLyAkd2lkdGgtZmFjdG9yKTtcblx0bWF4LXdpZHRoOiAkdGFyZ2V0LWhlaWdodCAqICgkd2lkdGgtZmFjdG9yIC8gJGhlaWdodC1mYWN0b3IpO1xuXHRtYXgtaGVpZ2h0OiAkdGFyZ2V0LWhlaWdodDsgfVxuXG4iLCIkYmx1ZTogIzMzNzFlMztcbiRsaWdodC1ncmV5OiAjZjdmN2Y3O1xuJGRhcmstZ3JleTogIzMwMzAzMDtcbiRtZWRpdW0tZ3JleTogIzRjNGM0YztcblxuJGJhc2UtZm9udDogJ1JvYm90bycsIHNhbnMtc2VyaWY7XG4kbW9uby1mb250OiAnUm9ib3RvIE1vbm8nLCBtb25vc3BhY2U7XG5cblxuKiwgLmJ1dHRvbiB7XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdGZvbnQtZmFtaWx5OiAkYmFzZS1mb250O1xuXHRiYWNrZ3JvdW5kOiBub25lO1xuXHRtYXJnaW46IDA7XG5cdGJvcmRlcjogMDsgfVxuXG5ib2R5IHtcblx0Zm9udC1mYW1pbHk6ICRiYXNlLWZvbnQ7IH1cblxuaDEsIGgyLCBoNSwgcCB7XG5cdGZvbnQtd2VpZ2h0OiAzMDA7IH1cblxuaDMsIGg0IHtcblx0Zm9udC13ZWlnaHQ6IDQwMDsgfVxuIiwiYm9keS5vdmVybGF5LW9uIHtcblx0b3ZlcmZsb3c6IGhpZGRlbjsgfVxuXG5cbiRhd2Vzb21lLWdyZWVuOiAjMDBmZjk5O1xuXG4vLyBtb2RhbCBjbG9zZSBidXR0b25cbi5waS1tb2RhbC1jbG9zZS1idXR0b24ge1xuXHQkYnV0dG9uLXNpZGUtbGVuZ3RoOiAzNnB4O1xuXHQkaHlwb3RlbnVzZS1sZW5ndGg6IDUwLjkxMTY4ODI0NTQzMTQycHg7XG5cblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDUwcHg7XG5cdHJpZ2h0OiA1MHB4O1xuXHR3aWR0aDogJGJ1dHRvbi1zaWRlLWxlbmd0aDtcblx0aGVpZ2h0OiAkYnV0dG9uLXNpZGUtbGVuZ3RoO1xuXHRib3JkZXI6IDA7XG5cblx0JjpiZWZvcmUsICY6YWZ0ZXIge1xuXHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMDtcblx0XHR3aWR0aDogJGh5cG90ZW51c2UtbGVuZ3RoO1xuXHRcdGhlaWdodDogMnB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyB9XG5cblx0JjpiZWZvcmUge1xuXHRcdGxlZnQ6IDA7XG5cdFx0dHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7XG5cdFx0dHJhbnNmb3JtOiByb3RhdGVaKDQ1ZGVnKTsgfVxuXG5cdCY6YWZ0ZXIge1xuXHRcdHJpZ2h0OiAwO1xuXHRcdHRyYW5zZm9ybS1vcmlnaW46IHRvcCByaWdodDtcblx0XHR0cmFuc2Zvcm06IHJvdGF0ZVooLTQ1ZGVnKTsgfSB9XG5cbi8vIG1vZGFsIG92ZXJsYXlcbi5waS1tb2RhbC1vdmVybGF5IHtcblx0cG9zaXRpb246IGZpeGVkO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IDEwMCU7XG5cdGNvbG9yOiB3aGl0ZTtcblx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjgpO1xuXHRkaXNwbGF5OiBub25lO1xuXHRvcGFjaXR5OiAwO1xuXHR0cmFuc2l0aW9uOiAwLjNzO1xuXG5cdCYub24ge1xuXHRcdG9wYWNpdHk6IDE7IH0gfVxuXG4vLyBtdWx0aUZyYW1lRGlzcGxheVxuLnBpLW11bHRpLWZyYW1lLWRpc3BsYXkge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHdpZHRoOiA4MHZ3O1xuXHRoZWlnaHQ6IDgwdmg7XG5cdG1hcmdpbjogMTB2aCBhdXRvO1xuXG5cdC5pdGVtLXdyYXBwZXIge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDEwMCU7IH1cblxuXHQuaXRlbSB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogNTAlO1xuXHRcdGxlZnQ6IDUwJTtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcblx0XHRkaXNwbGF5OiBub25lO1xuXG5cdFx0Ji5vbiB7XG5cdFx0XHRkaXNwbGF5OiBibG9jazsgfSB9XG5cblx0LnBhZ2VyIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0Ym90dG9tOiAxMCU7XG5cdFx0bGVmdDogMDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG5cdFx0LnBhZ2VyLWJ1dHRvbiB7XG5cdFx0XHR3aWR0aDogMjBweDtcblx0XHRcdGhlaWdodDogMjBweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xuXHRcdFx0Ym9yZGVyOiAwO1xuXHRcdFx0bWFyZ2luOiAwIDEwcHg7XG5cdFx0XHR0cmFuc2l0aW9uOiAwLjNzO1xuXG5cdFx0XHQmLnlhaCB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRhd2Vzb21lLWdyZWVuOyB9IH0gfVxuXG5cdCRwcmV2LW5leHQtYm9yZGVyLXN0eWxlOiAxcHggc29saWQ7XG5cdC5wcmV2LWJ1dHRvbiwgLm5leHQtYnV0dG9uIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiA1MCU7XG5cdFx0d2lkdGg6IDMwcHg7XG5cdFx0aGVpZ2h0OiAzMHB4O1xuXHRcdGJvcmRlcjogMDtcblx0XHRib3JkZXItY29sb3I6ICRhd2Vzb21lLWdyZWVuO1xuXHRcdHotaW5kZXg6IDM7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZVooNDVkZWcpO1xuXHRcdHRyYW5zaXRpb246IDAuM3M7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJvcmRlci1jb2xvcjogcmVkOyB9IH1cblxuXHQucHJldi1idXR0b24ge1xuXHRcdGxlZnQ6IDMwcHg7XG5cdFx0Ym9yZGVyLWJvdHRvbTogJHByZXYtbmV4dC1ib3JkZXItc3R5bGU7XG5cdFx0Ym9yZGVyLWxlZnQ6ICRwcmV2LW5leHQtYm9yZGVyLXN0eWxlOyB9XG5cblx0Lm5leHQtYnV0dG9uIHtcblx0XHRyaWdodDogMzBweDtcblx0XHRib3JkZXItdG9wOiAkcHJldi1uZXh0LWJvcmRlci1zdHlsZTtcblx0XHRib3JkZXItcmlnaHQ6ICRwcmV2LW5leHQtYm9yZGVyLXN0eWxlOyB9IH1cblxuIiwiLnBpLWFjY29yZGlvbiB7XG5cdG1hcmdpbi1sZWZ0OiAtMjBweDtcblxuXHQuY29udGFpbmVyIHtcblx0XHRwYWRkaW5nLWxlZnQ6IDIwcHg7IH1cblxuXHQuaXRlbSB7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjsgfVxuXG5cdC50aXRsZSB7XG5cdFx0Y29sb3I6ICRkYXJrLWdyZXk7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHBhZGRpbmc6IDcuNXB4IDEwcHggNy41cHggMThweDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0dHJhbnNpdGlvbjogMC4zcztcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0Y29sb3I6ICRibHVlOyB9IH1cblxuXHRhLml0ZW0gPiAudGl0bGUge1xuXHRcdGNvbG9yOiBibGFjaztcblx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGNvbG9yOiAkYmx1ZTsgfSB9XG5cblx0ZGl2Lml0ZW0gPiAudGl0bGUge1xuXHRcdCY6YmVmb3JlIHtcblx0XHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDlweDtcblx0XHRcdGxlZnQ6IDJweDtcblx0XHRcdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdFx0XHRib3JkZXItd2lkdGg6IDVweCAwIDVweCA4cHg7XG5cdFx0XHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICRibHVlO1xuXHRcdFx0dHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG5cdFx0XHR0cmFuc2l0aW9uOiAwLjNzOyB9IH1cblxuXHQud3JhcHBlciB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHRyYW5zaXRpb246IDAuM3M7IH1cblxuXHQuY29udGVudCB7XG5cdFx0cGFkZGluZy1sZWZ0OiAyMHB4O1xuXHRcdG9wYWNpdHk6IDA7XG5cdFx0dHJhbnNpdGlvbjogMC4zcztcblx0XHRwYWRkaW5nLWJvdHRvbTogMjBweDsgfVxuXG5cdC5pdGVtLm9uIHtcblx0XHQmID4gLnRpdGxlOmJlZm9yZSB7XG5cdFx0XHR0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IH1cblxuXHRcdCYgPiAud3JhcHBlciA+IC5jb250ZW50IHtcblx0XHRcdG9wYWNpdHk6IDE7IH0gfVxuXG5cdC5pdGVtLmxvYWRZQUgge1xuXHRcdC53cmFwcGVyIHtcblx0XHRcdHRyYW5zaXRpb246IDBzO1xuXHRcdFx0aGVpZ2h0OiBhdXRvOyB9XG5cblx0XHQuY29udGVudCB7XG5cdFx0XHR0cmFuc2l0aW9uOiAwczsgfSB9IH1cbiIsIi5waS1wdXNobWVudSB7XG5cdGRpc3BsYXk6IG5vbmU7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0dG9wOiAwO1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xuXHRvcGFjaXR5OiAwO1xuXHR0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3M7XG5cblx0Ji5vbiB7XG5cdFx0b3BhY2l0eTogMTsgfVxuXG5cdC5vdmVybGF5IHtcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0dG9wOiAwO1xuXHRcdGxlZnQ6IDA7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40KTsgfVxuXG5cdC5zbGVkIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAwO1xuXHRcdHdpZHRoOiAwO1xuXHRcdGhlaWdodDogMTAwJTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcblx0XHRvdmVyZmxvdzogYXV0bztcblx0XHR0cmFuc2l0aW9uOiB3aWR0aCAwLjNzOyB9XG5cblx0Ji5vbiAuc2xlZCB7XG5cdFx0d2lkdGg6IDEwMHZ3OyB9XG5cblx0LnRvcC1iYXIge1xuXHRcdGhlaWdodDogMDtcblx0XHRsaW5lLWhlaWdodDogNjBweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjNDQ0OyB9XG5cblx0LnBpLW1vZGFsLWNsb3NlLWJ1dHRvbiB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMTBweDtcblx0XHRyaWdodDogMTBweDtcblx0XHR6LWluZGV4OiAxO1xuXG5cdFx0JjpiZWZvcmUsICY6YWZ0ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogIzIyMjIyMjsgfSB9XG5cblxuXHR1bCB7XG5cdFx0cGFkZGluZzogMCA2MHB4IDAgMjBweDsgfVxuXHRsaSB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdG1pbi1oZWlnaHQ6IDQ0cHg7IH1cblxuXHRhIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiA0NHB4O1xuXHRcdGxpbmUtaGVpZ2h0OiA0NHB4O1xuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdGZvbnQtc2l6ZTogMjBweDtcblx0XHRjb2xvcjogJGJsdWU7IH1cblxuXHQuYnV0dG9uIHtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdHBhZGRpbmc6IDA7IH1cblxuXG5cblx0dWwgdWwge1xuXHRcdHBhZGRpbmc6IDAgMjBweDtcblxuXHRcdGxpIHtcblx0XHRcdG1pbi1oZWlnaHQ6IDQwcHg7IH1cblxuXHRcdGEge1xuXHRcdFx0aGVpZ2h0OiA0MHB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDQwcHg7XG5cdFx0XHRmb250LXNpemU6IDE4cHg7XG5cdFx0XHRjb2xvcjogbGlnaHRlbigjMjIyMjIyLCAyMCUpOyB9IH0gfVxuIiwiaDEge1xuXHRmb250LXNpemU6ICRoMS1mb250LXNpemU7XG5cdGxpbmUtaGVpZ2h0OiAkaDEtbGluZS1oZWlnaHQ7IH1cblxuaDIge1xuXHRmb250LXNpemU6ICRoMi1mb250LXNpemU7XG5cdGxpbmUtaGVpZ2h0OiAkaDItbGluZS1oZWlnaHQ7IH1cblxuaDMge1xuXHRmb250LXNpemU6ICRoMy1mb250LXNpemU7XG5cdGxpbmUtaGVpZ2h0OiAkaDMtbGluZS1oZWlnaHQ7IH1cblxuaDQge1xuXHRmb250LXNpemU6ICRoNC1mb250LXNpemU7XG5cdGxpbmUtaGVpZ2h0OiAkaDQtbGluZS1oZWlnaHQ7IH1cblxuaDUge1xuXHRmb250LXNpemU6ICRoNS1mb250LXNpemU7XG5cdGxpbmUtaGVpZ2h0OiAkaDUtbGluZS1oZWlnaHQ7IH1cblxucCB7XG5cdGZvbnQtc2l6ZTogJHAtZm9udC1zaXplO1xuXHRsaW5lLWhlaWdodDogJHAtbGluZS1oZWlnaHQ7IH1cblxuc2VjdGlvbiwgaGVhZGVyLCBmb290ZXIsICN2ZW5kb3JTdHJpcCB7XG5cdHBhZGRpbmctbGVmdDogJGZ1bGwtd2lkdGgtcGFkZGluZ1g7XG5cdHBhZGRpbmctcmlnaHQ6ICRmdWxsLXdpZHRoLXBhZGRpbmdYO1xuXG5cdG1haW4ge1xuXHRcdHdpZHRoOiAkbWFpbi13aWR0aDtcblx0XHRtYXgtd2lkdGg6ICRtYWluLW1heC13aWR0aDsgfSB9XG5cbmhlYWRlciB7XG5cdGhlaWdodDogJGhlYWRlci1oZWlnaHQ7IH1cblxuLmxvZ28ge1xuXHR3aWR0aDogJGxvZ28td2lkdGg7XG5cdGhlaWdodDogJGhlYWRlci1oZWlnaHQ7IH1cblxuLm5hdi1idXR0b25zIHtcblx0aGVpZ2h0OiAkaGVhZGVyLWhlaWdodDtcblx0bGluZS1oZWlnaHQ6ICRoZWFkZXItaGVpZ2h0O1xuXG5cdC5idXR0b24gKyAqIHtcblx0XHRtYXJnaW4tbGVmdDogJG5hdi1idXR0b25zLW1hcmdpbi1sZWZ0OyB9IH1cblxuI2hhbWJ1cmdlciB7XG5cdHdpZHRoOiAkaGFtYnVyZ2VyLXNpemU7XG5cdGhlaWdodDogJGhhbWJ1cmdlci1zaXplOyB9XG5cbiNtYWluTmF2IHtcblx0cGFkZGluZzogJG1haW4tbmF2LXBhZGRpbmc7XG5cblx0aDUge1xuXHRcdG1hcmdpbi1ib3R0b206ICRtYWluLW5hdi1oNS1tYXJnaW4tYm90dG9tOyB9XG5cblx0aDMge1xuXHRcdG1hcmdpbi1ib3R0b206ICRtYWluLW5hdi1oMy1tYXJnaW4tYm90dG9tOyB9XG5cblx0Lm5hdi1ib3gge1xuXHRcdHdpZHRoOiAkbmF2LWJveC13aWR0aDsgfVxuXG5cdC5uYXYtYm94ICsgLm5hdi1ib3gge1xuXHRcdG1hcmdpbi1sZWZ0OiAkbmF2LWJveC1zaWJsaW5nLW1hcmdpbi1sZWZ0OyB9XG5cblx0bWFpbiArIG1haW4ge1xuXHRcdG1hcmdpbi10b3A6ICRtYWluLW5hdi1tYWluLXNpYmxpbmctbWFyZ2luLXRvcDsgfVxuXG5cdC5sZWZ0IC5idXR0b24ge1xuXHRcdGhlaWdodDogJG1haW4tbmF2LWxlZnQtYnV0dG9uLXNpemU7XG5cdFx0bGluZS1oZWlnaHQ6ICRtYWluLW5hdi1sZWZ0LWJ1dHRvbi1zaXplO1xuXHRcdGZvbnQtc2l6ZTogJG1haW4tbmF2LWxlZnQtYnV0dG9uLWZvbnQtc2l6ZTsgfSB9XG5cbi5vcGVuLW5hdiwgLnktZW5vdWdoIHtcblx0I3RyeUt1YmVybmV0ZXMge1xuXHRcdG1hcmdpbi1sZWZ0OiAkbmF2LWJ1dHRvbnMtbWFyZ2luLWxlZnQ7IH0gfVxuXG4jaGVybyB7XG5cdHBhZGRpbmctdG9wOiAkaGVyby1wYWRkaW5nLXRvcDsgfVxuXG4jZG9jcyB7XG5cdCNoZXJvIHtcblx0XHRoMSwgaDUge1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAkZnVsbC13aWR0aC1wYWRkaW5nWDtcblx0XHRcdHBhZGRpbmctcmlnaHQ6ICRmdWxsLXdpZHRoLXBhZGRpbmdYOyB9IH0gfVxuXG4jdmVuZG9yU3RyaXAge1xuXHRoZWlnaHQ6ICR2ZW5kb3Itc3RyaXAtaGVpZ2h0O1xuXHRsaW5lLWhlaWdodDogJHZlbmRvci1zdHJpcC1oZWlnaHQ7XG5cdGZvbnQtc2l6ZTogJHZlbmRvci1zdHJpcC1mb250LXNpemU7IH1cbiIsIlxuXG5cbkBpbXBvcnQgXCIuLi9wYXJ0aWFscy9yZXNldFwiO1xuXG4vLyBURVhUXG4kaDEtZm9udC1zaXplOiA0MHB4O1xuJGgxLWxpbmUtaGVpZ2h0OiA1MHB4O1xuXG4kaDItZm9udC1zaXplOiA0MnB4O1xuJGgyLWxpbmUtaGVpZ2h0OiA2MHB4O1xuXG4kaDMtZm9udC1zaXplOiAyNnB4O1xuJGgzLWxpbmUtaGVpZ2h0OiAzMnB4O1xuXG4kaDQtZm9udC1zaXplOiAyNnB4O1xuJGg0LWxpbmUtaGVpZ2h0OiA0MHB4O1xuXG4kaDUtZm9udC1zaXplOiAxOHB4O1xuJGg1LWxpbmUtaGVpZ2h0OiAzNnB4O1xuXG4kcC1mb250LXNpemU6IDE2cHg7XG4kcC1saW5lLWhlaWdodDogMjJweDtcblxuXG4vLyBoZWFkZXJcbiRmdWxsLXdpZHRoLXBhZGRpbmdYOiAyMHB4O1xuXG4kbWFpbi13aWR0aDogMTAwJTtcbiRtYWluLW1heC13aWR0aDogMTAwJTtcblxuJGhlYWRlci1oZWlnaHQ6IDgwcHg7XG5cbiRsb2dvLXdpZHRoOiAxMjBweDtcblxuJG5hdi1idXR0b25zLW1hcmdpbi1sZWZ0OiAzMHB4O1xuXG4kaGFtYnVyZ2VyLXNpemU6IDUwcHg7XG5cblxuLy8gbWFpbiBuYXZcbiRtYWluLW5hdi1wYWRkaW5nOiAxNDBweCAwIDMwcHg7XG4kbWFpbi1uYXYtaDUtbWFyZ2luLWJvdHRvbTogMWVtO1xuJG1haW4tbmF2LWgzLW1hcmdpbi1ib3R0b206IDAuNmVtO1xuJG5hdi1ib3gtd2lkdGg6IDIwJTtcbiRuYXYtYm94LXNpYmxpbmctbWFyZ2luLWxlZnQ6IGNhbGMoMjAlIC8gMyk7XG4kbWFpbi1uYXYtbWFpbi1zaWJsaW5nLW1hcmdpbi10b3A6IDYwcHg7XG4kbWFpbi1uYXYtbGVmdC1idXR0b24tc2l6ZTogNTBweDtcbiRtYWluLW5hdi1sZWZ0LWJ1dHRvbi1mb250LXNpemU6IDE4cHg7XG5cblxuLy8gaGVyb1xuJGhlcm8tcGFkZGluZy10b3A6IDgwcHg7XG4kaGVhZGxpbmUtd3JhcHBlci1tYXJnaW4tYm90dG9tOiA0MHB4O1xuJHF1aWNrc3RhcnQtYnV0dG9uLXBhZGRpbmc6IDAgNTBweDtcbiR2ZW5kb3Itc3RyaXAtaGVpZ2h0OiA2MHB4O1xuJHZlbmRvci1zdHJpcC1mb250LXNpemU6IDE4cHg7XG5cbkBpbXBvcnQgXCIuLi9wYXJ0aWFscy9zaXplXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuYm9keSB7XG5cdGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyB9XG5cbnNlY3Rpb24ge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuXHRtaW4td2lkdGg6IDEwMjRweDsgfVxuXG5zZWN0aW9uLCBoZWFkZXIsIGZvb3RlciB7XG5cdG1haW4ge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRtYXJnaW46IGF1dG87XG5cdFx0bWluLXdpZHRoOiA4NTBweDsgfSB9XG5cbi5idXR0b24ge1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdGJvcmRlci1yYWRpdXM6IDZweDtcblx0cGFkZGluZzogMCAyMHB4O1xuXHRsaW5lLWhlaWdodDogNDBweDtcblx0Y29sb3I6IHdoaXRlO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkYmx1ZTtcblx0dGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG5cbiNjZWxsb3BoYW5lIHtcblx0cG9zaXRpb246IGZpeGVkO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IDEwMCU7XG5cdGRpc3BsYXk6IG5vbmU7IH1cblxuXG4vLyBIRUFERVJcbmhlYWRlciB7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0dG9wOiAwO1xuXHRsZWZ0OiAwO1xuXHR3aWR0aDogMTAwJTtcblx0ei1pbmRleDogODg4ODtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdGJveC1zaGFkb3c6IDAgMCAwIHRyYW5zcGFyZW50O1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHR0cmFuc2l0aW9uOiAwLjNzOyB9XG5cbi5sb2dvIHtcblx0ZmxvYXQ6IGxlZnQ7XG5cdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9pbWFnZXMvbmF2X2xvZ28uc3ZnKTtcblx0YmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyB9XG5cbi5uYXYtYnV0dG9ucyB7XG5cdGZsb2F0OiByaWdodDsgfVxuXG4jaGFtYnVyZ2VyIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdHBhZGRpbmc6IDA7XG5cdGJvcmRlcjogMDtcblx0YmFja2dyb3VuZDogbm9uZTtcblxuXHRkaXYsICY6YmVmb3JlLCAmOmFmdGVyIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0bGVmdDogMTUlO1xuXHRcdHdpZHRoOiA3MCU7XG5cdFx0aGVpZ2h0OiAycHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGJsdWU7XG5cdFx0dHJhbnNpdGlvbjogMC4zcztcblx0XHRjb250ZW50OiBcIlwiOyB9XG5cblx0ZGl2IHtcblx0XHR0b3A6IGNhbGMoNTAlIC0gMXB4KTsgfVxuXG5cdCY6YmVmb3JlIHtcblx0XHR0b3A6IDI0JTsgfVxuXG5cdCY6YWZ0ZXIge1xuXHRcdGJvdHRvbTogMjQlOyB9XG5cblx0Jjpob3ZlciB7XG5cdFx0ZGl2LCAmOmJlZm9yZSwgJjphZnRlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgfSB9IH1cblxuI21haW5OYXYge1xuXHRoNSB7XG5cdFx0Y29sb3I6ICRibHVlO1xuXHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7IH1cblxuXHRtYWluIHtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0Y2xlYXI6IGJvdGg7IH1cblxuXHQubmF2LWJveCB7XG5cdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vcm1hbDsgfVxuXG5cdGgzIHtcblx0XHRhIHtcblx0XHRcdGNvbG9yOiAkYmx1ZTtcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfSB9IH1cblxuLy8gRkxJUCBOQVZcbi5mbGlwLW5hdiB7XG5cdGhlYWRlciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IH0gfVxuXG5cbi8vIE9QRU4gTkFWXG4ub3Blbi1uYXYge1xuXHRib2R5IHtcblx0XHRvdmVyZmxvdzogaGlkZGVuOyB9XG5cblx0I2NlbGxvcGhhbmUge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHotaW5kZXg6IDk5OTg7IH1cblxuXHRoZWFkZXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodC1ncmV5O1xuXHRcdHotaW5kZXg6IDk5OTk7IH1cblxuXHQjaGFtYnVyZ2VyIHtcblx0XHRkaXYge1xuXHRcdFx0b3BhY2l0eTogMDsgfVxuXG5cdFx0JjpiZWZvcmUsICY6YWZ0ZXIge1xuXHRcdFx0bGVmdDogMTJweDtcblx0XHRcdHRyYW5zZm9ybS1vcmlnaW46IDAgMXB4OyB9XG5cblx0XHQmOmJlZm9yZSB7XG5cdFx0XHR0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7IH1cblxuXHRcdCY6YWZ0ZXIge1xuXHRcdFx0dHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsgfSB9IH1cblxuLm9wZW4tbmF2LCAueS1lbm91Z2gge1xuXHQjdHJ5S3ViZXJuZXRlcyB7XG5cdFx0d2lkdGg6IDE2MHB4OyB9IH1cblxuXG4uZmxpcC1uYXYsIC5vcGVuLW5hdiB7XG5cdGhlYWRlciB7XG5cdFx0Ym94LXNoYWRvdzogMCAxcHggMnB4ICRtZWRpdW0tZ3JleTtcblxuXHRcdC5sb2dvIHtcblx0XHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9pbWFnZXMvbmF2X2xvZ28yLnN2Zyk7IH0gfVxuXG5cdCN2aWV3RG9jcyB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkZGFyay1ncmV5O1xuXHRcdGNvbG9yOiAkZGFyay1ncmV5O1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRibHVlO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGJsdWU7XG5cdFx0XHRjb2xvcjogd2hpdGU7IH0gfVxuXG5cdCNoYW1idXJnZXI6aG92ZXIge1xuXHRcdGRpdiwgJjpiZWZvcmUsICY6YWZ0ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGRhcmstZ3JleTsgfSB9IH1cblxuXG5cbi8vIEhFUk9cbiNoZXJvIHtcblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL2ltYWdlcy90ZXh0dXJlLnBuZyk7XG5cdGJhY2tncm91bmQtY29sb3I6ICRkYXJrLWdyZXk7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0cGFkZGluZy1sZWZ0OiAwO1xuXHRwYWRkaW5nLXJpZ2h0OiAwOyB9XG5cbi8vIFZFTkRPUiBTVFJJUFxuI3ZlbmRvclN0cmlwIHtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnRpemUod2hpdGUsIDAuOSk7XG5cdGZvbnQtd2VpZ2h0OiAxMDA7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG5cblx0ZGl2IHtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdGhlaWdodDogMTAwJTtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0gfVxuXG4vLyBGT09URVJcbmZvb3RlciB7XG5cdHdpZHRoOiAxMDAlO1xuXHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vaW1hZ2VzL3RleHR1cmUucG5nKTtcblx0YmFja2dyb3VuZC1jb2xvcjogJGRhcmstZ3JleTtcblxuXHRtYWluIHtcblx0XHRwYWRkaW5nOiA0MHB4IDA7IH1cblxuXHRuYXYge1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHRhIHtcblx0XHRcdHdpZHRoOiAyNSU7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRmb250LXNpemU6IDMycHg7XG5cdFx0XHRmb250LXdlaWdodDogMzAwO1xuXHRcdFx0Y29sb3I6IHdoaXRlO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lOyB9IH1cblxuXHQuc29jaWFsIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0bWFyZ2luOiA4MHB4IDAgNjBweDtcblxuXHRcdGxhYmVsIHtcblx0XHRcdGZsb2F0OiByaWdodDtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdGhlaWdodDogNTBweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiA1MHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDEwMDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHRcdGlucHV0IHtcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDhweDtcblx0XHRcdFx0d2lkdGg6IDMwMHB4OyB9IH0gfSB9XG5cblxuI3NlYXJjaCwgI3dpc2hGaWVsZCB7XG5cdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRwYWRkaW5nOiAxMHB4O1xuXHRmb250LXNpemU6IDE2cHg7XG5cdGZvbnQtd2VpZ2h0OiAxMDA7XG5cdGNvbG9yOiB3aGl0ZTtcblx0Ym9yZGVyOiAxcHggc29saWQgd2hpdGU7XG5cdHRyYW5zaXRpb246IDAuM3M7XG5cblx0Jjpmb2N1cyB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LWdyZXk7XG5cdFx0Y29sb3I6ICRkYXJrLWdyZXk7IH0gfVxuXG4uc29jaWFsIGEge1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9pbWFnZXMvc29jaWFsX3Nwcml0ZS5wbmcpO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRiYWNrZ3JvdW5kLXNpemU6IGF1dG87XG5cdHdpZHRoOiA1MHB4O1xuXHRoZWlnaHQ6IDUwcHg7XG5cdGJvcmRlci1yYWRpdXM6IDVweDtcblx0bWFyZ2luLXJpZ2h0OiAzMHB4O1xuXG5cdCY6aG92ZXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7IH1cblxuXHRzcGFuIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0aGVpZ2h0OiAwO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47IH0gfVxuXG5hLnR3aXR0ZXIge1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7XG5cblx0Jjpob3ZlciB7XG5cdFx0YmFja2dyb3VuZC1wb3NpdGlvbjogMCAxMDAlOyB9IH1cblxuYS5zdGFjay1vdmVyZmxvdyB7XG5cdGJhY2tncm91bmQtcG9zaXRpb246IC01MHB4IDA7XG5cblx0Jjpob3ZlciB7XG5cdFx0YmFja2dyb3VuZC1wb3NpdGlvbjogLTUwcHggMTAwJTsgfSB9XG5cbmEuc2xhY2sge1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTAwcHggMDtcblxuXHQmOmhvdmVyIHtcblx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTAwcHggMTAwJTsgfSB9XG5cbmEuZ2l0aHViIHtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogLTE1MHB4IDA7XG5cblx0Jjpob3ZlciB7XG5cdFx0YmFja2dyb3VuZC1wb3NpdGlvbjogLTE1MHB4IDEwMCU7IH0gfVxuXG5hLm1haWxpbmctbGlzdCB7XG5cdGJhY2tncm91bmQtcG9zaXRpb246IC0yMDBweCAwO1xuXG5cdCY6aG92ZXIge1xuXHRcdGJhY2tncm91bmQtcG9zaXRpb246IC0yMDBweCAxMDAlOyB9IH1cblxuI3ZpZXdEb2NzIHtcblx0ZGlzcGxheTogbm9uZTsgfVxuXG5zZWN0aW9uIHtcblx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IH1cblxuI2hlcm8ge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkZGFyay1ncmV5O1xuXG5cdGg1IHtcblx0XHRtYXJnaW4tYm90dG9tOiA0MHB4OyB9IH1cblxuI3ZlbmRvclN0cmlwIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG5cdHVsIHtcblx0XHRmbG9hdDogbGVmdDsgfVxuXG5cdGxpIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0aGVpZ2h0OiAxMDAlOyB9XG5cblx0YSB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdGNvbG9yOiB3aGl0ZTsgfVxuXG5cdGxpICsgbGksICNzZWFyY2gge1xuXHRcdG1hcmdpbi1sZWZ0OiA2MHB4OyB9XG5cblx0I3NlYXJjaCB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGZsb2F0OiByaWdodDtcblx0XHR3aWR0aDogMjQlO1xuXHRcdG1pbi13aWR0aDogMjUwcHg7XG5cdFx0cGFkZGluZzogMCAxMHB4O1xuXHRcdG1hcmdpbjogMTBweCAzMHB4IDAgMDtcblx0XHRoZWlnaHQ6IDQwcHg7XG5cdFx0bGluZS1oZWlnaHQ6IDQwcHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGxpZ2h0LWdyZXk7XG5cdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuXHQuZHJvcGRvd24ge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRmbG9hdDogcmlnaHQ7XG5cdFx0aGVpZ2h0OiA2MHB4O1xuXHRcdGZvbnQtc2l6ZTogMjBweDtcblx0XHRjb2xvcjogd2hpdGU7XG5cdFx0bGluZS1oZWlnaHQ6IDYwcHg7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0ei1pbmRleDogNTAwMDtcblxuXHRcdCYub24ge1xuXHRcdFx0b3ZlcmZsb3c6IHZpc2libGU7IH1cblxuXHRcdC5yZWFkb3V0IHtcblx0XHRcdHBhZGRpbmctbGVmdDogMTBweDtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDQwcHg7XG5cdFx0XHR0cmFuc2l0aW9uOiAwLjNzO1xuXG5cdFx0XHQmOmFmdGVyIHtcblx0XHRcdFx0Y29udGVudDogXCJcIjtcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHR0b3A6IDMwcHg7XG5cdFx0XHRcdHJpZ2h0OiAxMHB4O1xuXHRcdFx0XHR3aWR0aDogMDtcblx0XHRcdFx0aGVpZ2h0OiAwO1xuXHRcdFx0XHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRcdFx0XHRib3JkZXItd2lkdGg6IDZweCA2cHggMCA2cHg7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogd2hpdGUgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG5cdFx0XHRcdHRyYW5zaXRpb246IDAuM3M7IH0gfVxuXG5cdFx0LnJlYWRvdXQ6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnRpemUod2hpdGUsIDAuOSk7IH1cblxuXHRcdCYub24gLnJlYWRvdXQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LWdyZXk7XG5cdFx0XHRjb2xvcjogJGRhcmstZ3JleTsgfVxuXG5cdFx0Ji5vbiAucmVhZG91dDphZnRlciB7XG5cdFx0XHRib3JkZXItdG9wLWNvbG9yOiAkZGFyay1ncmV5OyB9XG5cblx0XHQud3JhcHBlciB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDEwMCU7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0d2lkdGg6IDEwMCU7IH1cblxuXHRcdGEge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogMzBweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAzMHB4O1xuXHRcdFx0cGFkZGluZzogMCAxMHB4O1xuXHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDMwMDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodC1ncmV5O1xuXHRcdFx0Y29sb3I6ICRkYXJrLWdyZXk7XG5cdFx0XHRvcGFjaXR5OiAwO1xuXHRcdFx0dHJhbnNpdGlvbjogMC4zcztcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNjY2NjY2M7IH0gfVxuXG5cdFx0Ji5vbiBhIHtcblx0XHRcdG9wYWNpdHk6IDE7IH0gfSB9XG5cbiNlbmN5Y2xvcGVkaWEge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHBhZGRpbmc6IDUwcHg7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cblx0JiA+IGRpdiB7XG5cdFx0aGVpZ2h0OiAxMDAlOyB9IH1cblxuI2RvY3NUb2Mge1xuXHRmbG9hdDogbGVmdDtcblx0d2lkdGg6IDM1MHB4O1xuXHRwYWRkaW5nOiAwIDIwcHggMCAwO1xuXG5cdC55YWgge1xuXHRcdCYgPiAudGl0bGUge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LWdyZXk7XG5cdFx0XHRib3JkZXItbGVmdDogM3B4IHNvbGlkICRibHVlO1xuXHRcdFx0cGFkZGluZzogNy41cHggMTBweCA3LjVweCAxOHB4O1xuXHRcdFx0bWFyZ2luLWxlZnQ6IC0yMXB4O1xuXHRcdFx0Y29sb3I6ICRibHVlOyB9IH0gfVxuXG4jZG9jc0NvbnRlbnQge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGZsb2F0OiByaWdodDtcblx0d2lkdGg6IGNhbGMoMTAwJSAtIDQwMHB4KTtcblxuXHQkdG9jLW1hcmdpbjogMTVweDtcblx0JGhlYWRlci1jbGVhcmFuY2U6IDQwcHg7XG5cblx0KiArIGgyLCAqICsgaDMsICogKyBoNCwgKiArIGg1LCAqICsgaDYge1xuXHRcdG1hcmdpbi10b3A6IDMwcHg7IH1cblxuXHRoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcblx0XHRsaW5lLWhlaWdodDogbm9ybWFsO1xuXHRcdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdFx0bWFyZ2luLWJvdHRvbTogMzBweDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMTBweDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjY2NjYztcblxuXHRcdCY6YmVmb3JlIHtcblx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRoZWlnaHQ6IDEwMHB4O1xuXHRcdFx0bWFyZ2luLXRvcDogLTEwMHB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogcmVkO1xuXHRcdFx0dmlzaWJpbGl0eTogaGlkZGVuOyB9IH1cblxuXHRoMSB7XG5cdFx0Zm9udC1zaXplOiAzMnB4O1xuXHRcdHBhZGRpbmctcmlnaHQ6IDYwcHg7IH1cblxuXHRoMiB7XG5cdFx0Zm9udC1zaXplOiAyOHB4OyB9XG5cblx0aDMge1xuXHRcdGZvbnQtc2l6ZTogMjRweDsgfVxuXG5cdGg0IHtcblx0XHRmb250LXNpemU6IDIwcHg7IH1cblxuXHRoNSwgaDYge1xuXHRcdGZvbnQtc2l6ZTogMTZweDsgfVxuXG5cdHAge1xuXHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRmb250LXdlaWdodDogMzAwO1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjI1ZW07IH1cblxuXHRwICsgcCB7XG5cdFx0bWFyZ2luLXRvcDogMTBweDsgfVxuXG5cdGNvZGUge1xuXHRcdHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JleTtcblx0XHRjb2xvcjogJGRhcmstZ3JleTtcblx0XHRmb250LWZhbWlseTogJG1vbm8tZm9udDtcblx0XHRsaW5lLWhlaWdodDogMzJweDtcblx0XHRvdmVyZmxvdzogYXV0bztcblx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFx0cGFkZGluZzogMnB4IDRweDtcblxuXHRcdCY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9IH1cblxuXHRwcmUgLnBpLCBwcmUgLnMge1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiAwOyB9XG5cblx0LmhpZ2hsaWdodCBjb2RlIHNwYW4sIGNvZGUsIHByZSBjb2RlIHtcblx0XHRmb250LWZhbWlseTogXCJSb2JvdG8gTW9ub1wiLCBtb25vc3BhY2U7IH1cblxuXHRjb2RlLCBwcmUgY29kZSB7XG5cdFx0Y29sb3I6ICMzMDMwMzA7IH1cblxuXHRwcmUgY29kZSB7XG5cdFx0cGFkZGluZzogMDsgfVxuXG5cdHByZSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNztcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG5cdFx0bWFyZ2luOiAyMHB4IDA7XG5cdFx0cGFkZGluZzogMTVweDtcblx0XHRvdmVyZmxvdzogYXV0bzsgfVxuXG5cdHByZTo6LXdlYmtpdC1zY3JvbGxiYXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cblx0dWwgbGkge1xuXHRcdGxpc3Qtc3R5bGU6IGRpc2M7IH1cblxuXHRvbCBsaSB7XG5cdFx0bGlzdC1zdHlsZTogZGVjaW1hbDsgfVxuXG5cdHVsLCBvbCB7XG5cdFx0cGFkZGluZy1sZWZ0OiAzMHB4OyB9XG5cblx0bGkge1xuXHRcdG1hcmdpbi1ib3R0b206IDFlbTsgfVxuXG5cdCNlZGl0UGFnZUJ1dHRvbiB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogLTI1cHg7XG5cdFx0cmlnaHQ6IC0yNXB4O1xuXHRcdHdpZHRoOiA1MHB4O1xuXHRcdGhlaWdodDogNTBweDtcblx0XHRsaW5lLWhlaWdodDogNTBweDtcblx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR0ZXh0LWluZGVudDogNTBweDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdGJhY2tncm91bmQ6ICRibHVlIHVybCguLi8uLi9pbWFnZXMvcGVuY2lsLnBuZykgbm8tcmVwZWF0O1xuXHRcdGJhY2tncm91bmQtcG9zaXRpb246IDFweCAxcHg7XG5cdFx0YmFja2dyb3VuZC1zaXplOiBhdXRvOyB9XG5cblx0I21hcmtkb3duLXRvYyB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMjBweDtcblxuXHRcdHVsLCBsaSB7XG5cdFx0XHRsaXN0LXN0eWxlOiBkaXNjO1xuXHRcdFx0Y29sb3I6ICRibHVlOyB9XG5cblx0XHR1bCB7XG5cdFx0XHRwYWRkaW5nOiAwIDE1cHg7IH1cblxuXHRcdGxpIHtcblx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0XHRsaW5lLWhlaWdodDogMS41ZW07XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwOyB9XG5cblx0XHRhIHtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdGNvbG9yOiAkYmx1ZTtcblx0XHRcdGZvbnQtd2VpZ2h0OiA3MDA7IH0gfSB9XG5cbi5maXhlZCBmb290ZXIge1xuXHRwb3NpdGlvbjogZml4ZWQ7XG5cdGJvdHRvbTogMDsgfVxuXG5cbi8qIERlZmF1bHQgZ2gtcGFnZXMtYmxvZyBjc3MgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdGhlZGVyZWNrL2doLXBhZ2VzLWJsb2cvYmxvYi9tYXN0ZXIvY3NzL3N5bnRheC5jc3MgKi9cbi5oaWdobGlnaHQgYnIge1xuXHRkaXNwbGF5OiBub25lOyB9XG5cbi5oaWdobGlnaHQge1xuXHRiYWNrZ3JvdW5kOiAjZmZmZmZmOyB9XG5cbi5oaWdobGlnaHQgLmMge1xuXHRjb2xvcjogIzk5OTk4ODtcblx0Zm9udC1zdHlsZTogaXRhbGljOyB9XG5cbi5oaWdobGlnaHQgLmVyciB7XG5cdGNvbG9yOiAjYTYxNzE3O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZTNkMmQyOyB9XG5cbi5oaWdobGlnaHQgLmsge1xuXHRmb250LXdlaWdodDogYm9sZDsgfVxuXG4uaGlnaGxpZ2h0IC5vIHtcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7IH1cblxuLmhpZ2hsaWdodCAuY20ge1xuXHRjb2xvcjogIzk5OTk4ODtcblx0Zm9udC1zdHlsZTogaXRhbGljOyB9XG5cbi5oaWdobGlnaHQgLmNwIHtcblx0Y29sb3I6ICM5OTk5OTk7XG5cdGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi5oaWdobGlnaHQgLmMxIHtcblx0Y29sb3I6ICM5OTk5ODg7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxuXG4uaGlnaGxpZ2h0IC5jcyB7XG5cdGNvbG9yOiAjOTk5OTk5O1xuXHRmb250LXdlaWdodDogYm9sZDtcblx0Zm9udC1zdHlsZTogaXRhbGljOyB9XG5cbi5oaWdobGlnaHQgLmdkIHtcblx0Y29sb3I6ICMwMDAwMDA7XG5cdGJhY2tncm91bmQtY29sb3I6ICNmZmRkZGQ7IH1cblxuLmhpZ2hsaWdodCAuZ2QgLngge1xuXHRjb2xvcjogIzAwMDAwMDtcblx0YmFja2dyb3VuZC1jb2xvcjogI2ZmYWFhYTsgfVxuXG4uaGlnaGxpZ2h0IC5nZSB7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxuXG4uaGlnaGxpZ2h0IC5nciB7XG5cdGNvbG9yOiAjYWEwMDAwOyB9XG5cbi5oaWdobGlnaHQgLmdoIHtcblx0Y29sb3I6ICM5OTk5OTk7IH1cblxuLmhpZ2hsaWdodCAuZ2kge1xuXHRjb2xvcjogIzAwMDAwMDtcblx0YmFja2dyb3VuZC1jb2xvcjogI2RkZmZkZDsgfVxuXG4uaGlnaGxpZ2h0IC5naSAueCB7XG5cdGNvbG9yOiAjMDAwMDAwO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjYWFmZmFhOyB9XG5cbi5oaWdobGlnaHQgLmdvIHtcblx0Y29sb3I6ICM4ODg4ODg7IH1cblxuLmhpZ2hsaWdodCAuZ3Age1xuXHRjb2xvcjogIzU1NTU1NTsgfVxuXG4uaGlnaGxpZ2h0IC5ncyB7XG5cdGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi5oaWdobGlnaHQgLmd1IHtcblx0Y29sb3I6ICNhYWFhYWE7IH1cblxuLmhpZ2hsaWdodCAuZ3Qge1xuXHRjb2xvcjogI2FhMDAwMDsgfVxuXG4uaGlnaGxpZ2h0IC5rYyB7XG5cdGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi5oaWdobGlnaHQgLmtkIHtcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7IH1cblxuLmhpZ2hsaWdodCAua3Age1xuXHRmb250LXdlaWdodDogYm9sZDsgfVxuXG4uaGlnaGxpZ2h0IC5rciB7XG5cdGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi5oaWdobGlnaHQgLmt0IHtcblx0Y29sb3I6ICM0NDU1ODg7XG5cdGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi5oaWdobGlnaHQgLm0ge1xuXHRjb2xvcjogIzAwOTk5OTsgfVxuXG4uaGlnaGxpZ2h0IC5zIHtcblx0Y29sb3I6ICNkMTQ7IH1cblxuLmhpZ2hsaWdodCAubmEge1xuXHRjb2xvcjogIzAwODA4MDsgfVxuXG4uaGlnaGxpZ2h0IC5uYiB7XG5cdGNvbG9yOiAjMDA4NkIzOyB9XG5cbi5oaWdobGlnaHQgLm5jIHtcblx0Y29sb3I6ICM0NDU1ODg7XG5cdGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi5oaWdobGlnaHQgLm5vIHtcblx0Y29sb3I6ICMwMDgwODA7IH1cblxuLmhpZ2hsaWdodCAubmkge1xuXHRjb2xvcjogIzgwMDA4MDsgfVxuXG4uaGlnaGxpZ2h0IC5uZSB7XG5cdGNvbG9yOiAjOTkwMDAwO1xuXHRmb250LXdlaWdodDogYm9sZDsgfVxuXG4uaGlnaGxpZ2h0IC5uZiB7XG5cdGNvbG9yOiAjOTkwMDAwO1xuXHRmb250LXdlaWdodDogYm9sZDsgfVxuXG4uaGlnaGxpZ2h0IC5ubiB7XG5cdGNvbG9yOiAjNTU1NTU1OyB9XG5cbi5oaWdobGlnaHQgLm50IHtcblx0Y29sb3I6ICMwMDAwODA7IH1cblxuLmhpZ2hsaWdodCAubnYge1xuXHRjb2xvcjogIzAwODA4MDsgfVxuXG4uaGlnaGxpZ2h0IC5vdyB7XG5cdGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi5oaWdobGlnaHQgLncge1xuXHRjb2xvcjogI2JiYmJiYjsgfVxuXG4uaGlnaGxpZ2h0IC5tZiB7XG5cdGNvbG9yOiAjMDA5OTk5OyB9XG5cbi5oaWdobGlnaHQgLm1oIHtcblx0Y29sb3I6ICMwMDk5OTk7IH1cblxuLmhpZ2hsaWdodCAubWkge1xuXHRjb2xvcjogIzAwOTk5OTsgfVxuXG4uaGlnaGxpZ2h0IC5tbyB7XG5cdGNvbG9yOiAjMDA5OTk5OyB9XG5cbi5oaWdobGlnaHQgLnNiIHtcblx0Y29sb3I6ICNkMTQ7IH1cblxuLmhpZ2hsaWdodCAuc2Mge1xuXHRjb2xvcjogI2QxNDsgfVxuXG4uaGlnaGxpZ2h0IC5zZCB7XG5cdGNvbG9yOiAjZDE0OyB9XG5cbi5oaWdobGlnaHQgLnMyIHtcblx0Y29sb3I6ICNkMTQ7IH1cblxuLmhpZ2hsaWdodCAuc2Uge1xuXHRjb2xvcjogI2QxNDsgfVxuXG4uaGlnaGxpZ2h0IC5zaCB7XG5cdGNvbG9yOiAjZDE0OyB9XG5cbi5oaWdobGlnaHQgLnNpIHtcblx0Y29sb3I6ICNkMTQ7IH1cblxuLmhpZ2hsaWdodCAuc3gge1xuXHRjb2xvcjogI2QxNDsgfVxuXG4uaGlnaGxpZ2h0IC5zciB7XG5cdGNvbG9yOiAjMDA5OTI2OyB9XG5cbi5oaWdobGlnaHQgLnMxIHtcblx0Y29sb3I6ICNkMTQ7IH1cblxuLmhpZ2hsaWdodCAuc3Mge1xuXHRjb2xvcjogIzk5MDA3MzsgfVxuXG4uaGlnaGxpZ2h0IC5icCB7XG5cdGNvbG9yOiAjOTk5OTk5OyB9XG5cbi5oaWdobGlnaHQgLnZjIHtcblx0Y29sb3I6ICMwMDgwODA7IH1cblxuLmhpZ2hsaWdodCAudmcge1xuXHRjb2xvcjogIzAwODA4MDsgfVxuXG4uaGlnaGxpZ2h0IC52aSB7XG5cdGNvbG9yOiAjMDA4MDgwOyB9XG5cbi5oaWdobGlnaHQgLmlsIHtcblx0Y29sb3I6ICMwMDk5OTk7IH1cblxuXG5cbiIsIi8vIFRFWFRcbiRoMS1mb250LXNpemU6IDYwcHg7XG4kaDEtbGluZS1oZWlnaHQ6IDgwcHg7XG5cbiRoMi1mb250LXNpemU6IDQycHg7XG4kaDItbGluZS1oZWlnaHQ6IDYwcHg7XG5cbiRoMy1mb250LXNpemU6IDI2cHg7XG4kaDMtbGluZS1oZWlnaHQ6IDMycHg7XG5cbiRoNC1mb250LXNpemU6IDI2cHg7XG4kaDQtbGluZS1oZWlnaHQ6IDQwcHg7XG5cbiRoNS1mb250LXNpemU6IDE4cHg7XG4kaDUtbGluZS1oZWlnaHQ6IDM2cHg7XG5cbiRwLWZvbnQtc2l6ZTogMjBweDtcbiRwLWxpbmUtaGVpZ2h0OiAyOHB4O1xuXG5cbi8vIGhlYWRlclxuJGZ1bGwtd2lkdGgtcGFkZGluZ1g6IDIwcHg7XG5cbiRtYWluLXdpZHRoOiAxMDAlO1xuJG1haW4tbWF4LXdpZHRoOiAxMDAlO1xuXG4kaGVhZGVyLWhlaWdodDogODBweDtcblxuJGxvZ28td2lkdGg6IDE4MHB4O1xuXG4kbmF2LWJ1dHRvbnMtbWFyZ2luLWxlZnQ6IDMwcHg7XG5cbiRoYW1idXJnZXItc2l6ZTogNTBweDtcblxuXG4vLyBtYWluIG5hdlxuJG1haW4tbmF2LXBhZGRpbmc6IDE0MHB4IDAgMzBweDtcbiRtYWluLW5hdi1oNS1tYXJnaW4tYm90dG9tOiAxZW07XG4kbWFpbi1uYXYtaDMtbWFyZ2luLWJvdHRvbTogMC42ZW07XG4kbmF2LWJveC13aWR0aDogMjAlO1xuJG5hdi1ib3gtc2libGluZy1tYXJnaW4tbGVmdDogY2FsYygyMCUgLyAzKTtcbiRtYWluLW5hdi1tYWluLXNpYmxpbmctbWFyZ2luLXRvcDogNjBweDtcbiRtYWluLW5hdi1sZWZ0LWJ1dHRvbi1zaXplOiA1MHB4O1xuJG1haW4tbmF2LWxlZnQtYnV0dG9uLWZvbnQtc2l6ZTogMThweDtcblxuXG4vLyBoZXJvXG4kaGVyby1wYWRkaW5nLXRvcDogODBweDtcbiRoZWFkbGluZS13cmFwcGVyLW1hcmdpbi1ib3R0b206IDQwcHg7XG4kcXVpY2tzdGFydC1idXR0b24tcGFkZGluZzogMCA1MHB4O1xuJHZlbmRvci1zdHJpcC1oZWlnaHQ6IDYwcHg7XG4kdmVuZG9yLXN0cmlwLWZvbnQtc2l6ZTogMThweDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc1MHB4KSB7XG5cdEBpbXBvcnQgXCIuLi9wYXJ0aWFscy9zaXplXCI7XG5cblx0I2RvY3MgI2hlcm8ge1xuXHRcdGgxLCBoNSB7XG5cdFx0XHR0ZXh0LWFsaWduOiBsZWZ0OyB9IH1cblxuXHQjdmlld0RvY3MsICN0cnlLdWJlcm5ldGVzIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cblxuXHQjdmVuZG9yU3RyaXAge1xuXHRcdGRpc3BsYXk6IGJsb2NrOyB9IH1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */ +/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnRpYWxzL19yZXNldC5zYXNzIiwicGFydGlhbHMvX3NraW4uc2FzcyIsIi4uL2Jhc2VDb21wb25lbnRzL1/PgC1iYXNlQ29tcG9uZW50cy5zYXNzIiwiLi4vbW9kdWxlcy/PgC1hY2NvcmRpb24vX8+ALWFjY29yZGlvbi5zYXNzIiwiLi4vbW9kdWxlcy/PgC1wdXNobWVudS9fz4AtcHVzaG1lbnUuc2FzcyIsInBhcnRpYWxzL19zaXplLnNhc3MiLCJtZWRpYVF1ZXJpZXMvX2Jhc2Uuc2FzcyIsIm1lZGlhUXVlcmllcy9fdGFibGV0LnNhc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDQyxVQUFVO0VBQ1YsV0FBVyxFQUFHOztBQUdmO0VBQ0MsY0FBYyxFQUFHOztBQUVsQjtFQUNDLGdCQUFnQixFQUFHOztBQUVwQjtFQUNDLGlCQUFpQixFQUFHOztBQUVyQjtFQUNDLFVBQVU7RUFDVixXQUFXLEVBQUc7O0FBRWY7RUFDQyxzQkFBc0IsRUFBRzs7QUFHMUI7RUFDQyxlQUFlO0VBQ2YsWUFBWSxFQUFHOztBQUVoQjtFQUNDLGFBQWEsRUFBRzs7QUFFakI7RUFDQyxhQUFhLEVBQUc7O0FBRWpCO0VBQ0MsWUFBWSxFQUFHOztBQUVoQjtFQUNDLG1CQUFtQixFQUFHOztBQzNCdkI7RUFDQyx1QkFBdUI7RUFDdkIsa0NBTitCO0VBTy9CLGlCQUFpQjtFQUNqQixVQUFVO0VBQ1YsVUFBVSxFQUFHOztBQUVkO0VBQ0Msa0NBWitCLEVBWUw7O0FBRTNCO0VBQ0MsaUJBQWlCLEVBQUc7O0FBRXJCO0VBQ0MsaUJBQWlCLEVBQUc7O0FDdkJyQjtFQUNDLGlCQUFpQixFQUFHOztBQU1yQjtFQUlDLG1CQUFtQjtFQUNuQixVQUFVO0VBQ1YsWUFBWTtFQUNaLFlBTnlCO0VBT3pCLGFBUHlCO0VBUXpCLFVBQVUsRUFrQnNCO0VBM0JqQztJQVlFLFlBQVk7SUFDWixtQkFBbUI7SUFDbkIsT0FBTztJQUNQLGtCQWJzQztJQWN0QyxZQUFZO0lBQ1osd0JBQXdC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S2tCO0VESmxCLGtCQ0tvQixFRExXOztBQUVoQztFQUNDLGdCQ0lrQjtFREhsQixrQkNJb0IsRURKVzs7QUFFaEM7RUFDQyxnQkNHa0I7RURGbEIsa0JDR29CLEVESFc7O0FBRWhDO0VBQ0MsZ0JDRWtCO0VERGxCLGtCQ0VvQixFREZXOztBQUVoQztFQUNDLGdCQ0NrQjtFREFsQixrQkNDb0IsRUREVzs7QUFFaEM7RUFDQyxnQkNBaUI7RURDakIsa0JDQW1CLEVEQVc7O0FBRS9CO0VBQ0MsbUJDQ3lCO0VEQXpCLG9CQ0F5QixFRElPO0VBTmpDO0lBS0UsWUNEZTtJREVmLGdCQ0RtQixFRENVOztBQUUvQjtFQUNDLGFDRm1CLEVERU07O0FBRTFCO0VBQ0MsYUNIaUI7RURJakIsYUNObUIsRURNTTs7QUFFMUI7RUFDQyxhQ1RtQjtFRFVuQixrQkNWbUIsRURhd0I7RUFMNUM7SUFLRSxrQkNUNEIsRURTWTs7QUFFMUM7RUFDQyxZQ1ZvQjtFRFdwQixhQ1hvQixFRFdNOztBQUUzQjtFQUNDLHNCQ1Y4QixFRDhCa0I7RUFyQmpEO0lBSUUsbUJDWjZCLEVEWWU7RUFKOUM7SUFPRSxxQkNkK0IsRURjYTtFQVA5QztJQVVFLFdDaEJpQixFRGdCTztFQVYxQjtJQWFFLDJCQ2xCZ0MsRURrQlk7RUFiOUM7SUFnQkUsaUJDcEJxQyxFRG9CVztFQWhCbEQ7SUFtQkUsYUN0QjhCO0lEdUI5QixrQkN2QjhCO0lEd0I5QixnQkN2Qm1DLEVEdUJVOztBQUUvQztFQUVFLGtCQ3hDNEIsRUR3Q1k7O0FBRTFDO0VBQ0Msa0JDMUJzQixFRDBCVzs7QUFFbEM7RUFHRyxtQkN6RHVCO0VEMER2QixvQkMxRHVCLEVEMERlOztBQUV6QztFQUNDLGFDaEN5QjtFRGlDekIsa0JDakN5QjtFRGtDekIsZ0JDakM0QixFRGlDUzs7QUN6QnRDO0VBQ0Msd0JBQXdCLEVBQUc7O0FBRTVCO0VBQ0MsbUJBQW1CO0VBQ25CLHdCQUF3QjtFQUN4QixrQkFBa0IsRUFBRzs7QUFFdEI7RUFFRSxtQkFBbUI7RUFDbkIsYUFBYTtFQUNiLGlCQUFpQixF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QztJQUNDLGtCRS9Cc0IsRUYrQlc7RUFFbEM7SUFHRyxtQkU5RHVCO0lGK0R2QixvQkUvRHVCLEVGK0RlO0VBRXpDO0lBQ0MsYUVyQ3lCO0lGc0N6QixrQkV0Q3lCO0lGdUN6QixnQkV0QzRCLEVGc0NTO0VFNUJyQztJQUVFLGlCQUFpQixFQUFHO0VBRXRCO0lBQ0Msc0JBQXNCLEVBQUc7RUFFMUI7SUFDQyxlQUFlLEVBQUcsRUFBQSIsImZpbGUiOiJzdHlsZXMuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiaHRtbCwgYm9keSB7XG5cdG1hcmdpbjogMDtcblx0cGFkZGluZzogMDsgfVxuXG5cbmlucHV0LCBidXR0b24ge1xuXHRvdXRsaW5lOiBub25lOyB9XG5cbmJ1dHRvbiB7XG5cdGN1cnNvcjogcG9pbnRlcjsgfVxuXG51bCwgbGkge1xuXHRsaXN0LXN0eWxlOiBub25lOyB9XG5cbnVsIHtcblx0bWFyZ2luOiAwO1xuXHRwYWRkaW5nOiAwOyB9XG5cbmEge1xuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cblxuLy8gQ09OVkVOSUVOQ0Vcbi5jbGVhciB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRjbGVhcjogYm90aDsgfVxuXG4ubGlnaHQtdGV4dCB7XG5cdGNvbG9yOiB3aGl0ZTsgfVxuXG4ucmlnaHQge1xuXHRmbG9hdDogcmlnaHQ7IH1cblxuLmxlZnQge1xuXHRmbG9hdDogbGVmdDsgfVxuXG4uY2VudGVyIHtcblx0dGV4dC1hbGlnbjogY2VudGVyOyB9XG5cblxuLy9taXhpbnNcbkBtaXhpbiBwdXJlQ2VudGVyKCRsZWZ0OiA1MCUsICR0b3A6IDUwJSkge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogJHRvcDtcblx0bGVmdDogJGxlZnQ7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOyB9XG5cblxuQG1peGluIG1haW50YWluLWFzcGVjdC1yYXRpbyAoJHdpZHRoLWZhY3RvcjogMTYsICRoZWlnaHQtZmFjdG9yOiA5LCAkdGFyZ2V0LXdpZHRoOiA4MHZ3LCAkdGFyZ2V0LWhlaWdodDogODB2aCkge1xuXHR3aWR0aDogJHRhcmdldC13aWR0aDtcblx0aGVpZ2h0OiAkdGFyZ2V0LXdpZHRoICogKCRoZWlnaHQtZmFjdG9yIC8gJHdpZHRoLWZhY3Rvcik7XG5cdG1heC13aWR0aDogJHRhcmdldC1oZWlnaHQgKiAoJHdpZHRoLWZhY3RvciAvICRoZWlnaHQtZmFjdG9yKTtcblx0bWF4LWhlaWdodDogJHRhcmdldC1oZWlnaHQ7IH1cblxuIiwiJGJsdWU6ICMzMzcxZTM7XG4kbGlnaHQtZ3JleTogI2Y3ZjdmNztcbiRkYXJrLWdyZXk6ICMzMDMwMzA7XG4kbWVkaXVtLWdyZXk6ICM0YzRjNGM7XG5cbiRiYXNlLWZvbnQ6ICdSb2JvdG8nLCBzYW5zLXNlcmlmO1xuJG1vbm8tZm9udDogJ1JvYm90byBNb25vJywgbW9ub3NwYWNlO1xuXG5cbiosIC5idXR0b24ge1xuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRmb250LWZhbWlseTogJGJhc2UtZm9udDtcblx0YmFja2dyb3VuZDogbm9uZTtcblx0bWFyZ2luOiAwO1xuXHRib3JkZXI6IDA7IH1cblxuYm9keSB7XG5cdGZvbnQtZmFtaWx5OiAkYmFzZS1mb250OyB9XG5cbmgxLCBoMiwgaDUsIHAge1xuXHRmb250LXdlaWdodDogMzAwOyB9XG5cbmgzLCBoNCB7XG5cdGZvbnQtd2VpZ2h0OiA0MDA7IH1cbiIsImJvZHkub3ZlcmxheS1vbiB7XG5cdG92ZXJmbG93OiBoaWRkZW47IH1cblxuXG4kYXdlc29tZS1ncmVlbjogIzAwZmY5OTtcblxuLy8gbW9kYWwgY2xvc2UgYnV0dG9uXG4ucGktbW9kYWwtY2xvc2UtYnV0dG9uIHtcblx0JGJ1dHRvbi1zaWRlLWxlbmd0aDogMzZweDtcblx0JGh5cG90ZW51c2UtbGVuZ3RoOiA1MC45MTE2ODgyNDU0MzE0MnB4O1xuXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0dG9wOiA1MHB4O1xuXHRyaWdodDogNTBweDtcblx0d2lkdGg6ICRidXR0b24tc2lkZS1sZW5ndGg7XG5cdGhlaWdodDogJGJ1dHRvbi1zaWRlLWxlbmd0aDtcblx0Ym9yZGVyOiAwO1xuXG5cdCY6YmVmb3JlLCAmOmFmdGVyIHtcblx0XHRjb250ZW50OiBcIlwiO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDA7XG5cdFx0d2lkdGg6ICRoeXBvdGVudXNlLWxlbmd0aDtcblx0XHRoZWlnaHQ6IDJweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgfVxuXG5cdCY6YmVmb3JlIHtcblx0XHRsZWZ0OiAwO1xuXHRcdHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0O1xuXHRcdHRyYW5zZm9ybTogcm90YXRlWig0NWRlZyk7IH1cblxuXHQmOmFmdGVyIHtcblx0XHRyaWdodDogMDtcblx0XHR0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgcmlnaHQ7XG5cdFx0dHJhbnNmb3JtOiByb3RhdGVaKC00NWRlZyk7IH0gfVxuXG4vLyBtb2RhbCBvdmVybGF5XG4ucGktbW9kYWwtb3ZlcmxheSB7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0dG9wOiAwO1xuXHRsZWZ0OiAwO1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xuXHRjb2xvcjogd2hpdGU7XG5cdGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44KTtcblx0ZGlzcGxheTogbm9uZTtcblx0b3BhY2l0eTogMDtcblx0dHJhbnNpdGlvbjogMC4zcztcblxuXHQmLm9uIHtcblx0XHRvcGFjaXR5OiAxOyB9IH1cblxuLy8gbXVsdGlGcmFtZURpc3BsYXlcbi5waS1tdWx0aS1mcmFtZS1kaXNwbGF5IHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR3aWR0aDogODB2dztcblx0aGVpZ2h0OiA4MHZoO1xuXHRtYXJnaW46IDEwdmggYXV0bztcblxuXHQuaXRlbS13cmFwcGVyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAxMDAlOyB9XG5cblx0Lml0ZW0ge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDUwJTtcblx0XHRsZWZ0OiA1MCU7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cdFx0ZGlzcGxheTogbm9uZTtcblxuXHRcdCYub24ge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7IH0gfVxuXG5cdC5wYWdlciB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGJvdHRvbTogMTAlO1xuXHRcdGxlZnQ6IDA7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuXHRcdC5wYWdlci1idXR0b24ge1xuXHRcdFx0d2lkdGg6IDIwcHg7XG5cdFx0XHRoZWlnaHQ6IDIwcHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcblx0XHRcdGJvcmRlcjogMDtcblx0XHRcdG1hcmdpbjogMCAxMHB4O1xuXHRcdFx0dHJhbnNpdGlvbjogMC4zcztcblxuXHRcdFx0Ji55YWgge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkYXdlc29tZS1ncmVlbjsgfSB9IH1cblxuXHQkcHJldi1uZXh0LWJvcmRlci1zdHlsZTogMXB4IHNvbGlkO1xuXHQucHJldi1idXR0b24sIC5uZXh0LWJ1dHRvbiB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogNTAlO1xuXHRcdHdpZHRoOiAzMHB4O1xuXHRcdGhlaWdodDogMzBweDtcblx0XHRib3JkZXI6IDA7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkYXdlc29tZS1ncmVlbjtcblx0XHR6LWluZGV4OiAzO1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGVaKDQ1ZGVnKTtcblx0XHR0cmFuc2l0aW9uOiAwLjNzO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRib3JkZXItY29sb3I6IHJlZDsgfSB9XG5cblx0LnByZXYtYnV0dG9uIHtcblx0XHRsZWZ0OiAzMHB4O1xuXHRcdGJvcmRlci1ib3R0b206ICRwcmV2LW5leHQtYm9yZGVyLXN0eWxlO1xuXHRcdGJvcmRlci1sZWZ0OiAkcHJldi1uZXh0LWJvcmRlci1zdHlsZTsgfVxuXG5cdC5uZXh0LWJ1dHRvbiB7XG5cdFx0cmlnaHQ6IDMwcHg7XG5cdFx0Ym9yZGVyLXRvcDogJHByZXYtbmV4dC1ib3JkZXItc3R5bGU7XG5cdFx0Ym9yZGVyLXJpZ2h0OiAkcHJldi1uZXh0LWJvcmRlci1zdHlsZTsgfSB9XG5cbiIsIi5waS1hY2NvcmRpb24ge1xuXHRtYXJnaW4tbGVmdDogLTIwcHg7XG5cblx0LmNvbnRhaW5lciB7XG5cdFx0cGFkZGluZy1sZWZ0OiAyMHB4O1xuIH1cdFx0Ly9iYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLCAwLjEpXG5cblx0Lml0ZW0ge1xuXHRcdG92ZXJmbG93OiBoaWRkZW47IH1cblxuXHQudGl0bGUge1xuXHRcdGNvbG9yOiAkZGFyay1ncmV5O1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRwYWRkaW5nOiA3LjVweCAxMHB4IDcuNXB4IDE4cHg7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHRyYW5zaXRpb246IDAuM3M7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGNvbG9yOiAkYmx1ZTsgfSB9XG5cblx0YS5pdGVtID4gLnRpdGxlIHtcblx0XHRjb2xvcjogYmxhY2s7XG5cdFx0cGFkZGluZy1sZWZ0OiAwO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRjb2xvcjogJGJsdWU7IH0gfVxuXG5cdGRpdi5pdGVtID4gLnRpdGxlIHtcblx0XHQmOmJlZm9yZSB7XG5cdFx0XHRjb250ZW50OiBcIlwiO1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiA5cHg7XG5cdFx0XHRsZWZ0OiAycHg7XG5cdFx0XHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRcdFx0Ym9yZGVyLXdpZHRoOiA1cHggMCA1cHggOHB4O1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAkYmx1ZTtcblx0XHRcdHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuXHRcdFx0dHJhbnNpdGlvbjogMC4zczsgfSB9XG5cblx0LndyYXBwZXIge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR3aWR0aDogMTAwJTtcblx0XHR0cmFuc2l0aW9uOiBoZWlnaHQgMC4zczsgfVxuXG5cdC5jb250ZW50IHtcblx0XHRwYWRkaW5nLWxlZnQ6IDIwcHg7XG5cdFx0b3BhY2l0eTogMDtcblx0XHR0cmFuc2l0aW9uOiAwLjNzO1xuXHRcdHBhZGRpbmctYm90dG9tOiAyMHB4OyB9XG5cblx0Lml0ZW0ub24ge1xuXHRcdCYgPiAudGl0bGU6YmVmb3JlIHtcblx0XHRcdHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsgfVxuXG5cdFx0JiA+IC53cmFwcGVyID4gLmNvbnRlbnQge1xuXHRcdFx0b3BhY2l0eTogMTsgfSB9IH1cbiIsIi5waS1wdXNobWVudSB7XG5cdGRpc3BsYXk6IG5vbmU7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0dG9wOiAwO1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xuXHRvcGFjaXR5OiAwO1xuXHR0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3M7XG5cblx0Ji5vbiB7XG5cdFx0b3BhY2l0eTogMTsgfVxuXG5cdC5vdmVybGF5IHtcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0dG9wOiAwO1xuXHRcdGxlZnQ6IDA7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40KTsgfVxuXG5cdC5zbGVkIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAwO1xuXHRcdHdpZHRoOiAwO1xuXHRcdGhlaWdodDogMTAwJTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcblx0XHRvdmVyZmxvdzogYXV0bztcblx0XHR0cmFuc2l0aW9uOiB3aWR0aCAwLjNzOyB9XG5cblx0Ji5vbiAuc2xlZCB7XG5cdFx0d2lkdGg6IDEwMHZ3OyB9XG5cblx0LnRvcC1iYXIge1xuXHRcdGhlaWdodDogMDtcblx0XHRsaW5lLWhlaWdodDogNjBweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjNDQ0OyB9XG5cblx0LnBpLW1vZGFsLWNsb3NlLWJ1dHRvbiB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMTBweDtcblx0XHRyaWdodDogMTBweDtcblx0XHR6LWluZGV4OiAxO1xuXG5cdFx0JjpiZWZvcmUsICY6YWZ0ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogIzIyMjIyMjsgfSB9XG5cblxuXHR1bCB7XG5cdFx0cGFkZGluZzogMCA2MHB4IDAgMjBweDsgfVxuXHRsaSB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdG1pbi1oZWlnaHQ6IDQ0cHg7IH1cblxuXHRhIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiA0NHB4O1xuXHRcdGxpbmUtaGVpZ2h0OiA0NHB4O1xuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdGZvbnQtc2l6ZTogMjBweDtcblx0XHRjb2xvcjogJGJsdWU7IH1cblxuXHQuYnV0dG9uIHtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdHBhZGRpbmc6IDA7IH1cblxuXG5cblx0dWwgdWwge1xuXHRcdHBhZGRpbmc6IDAgMjBweDtcblxuXHRcdGxpIHtcblx0XHRcdG1pbi1oZWlnaHQ6IDQwcHg7IH1cblxuXHRcdGEge1xuXHRcdFx0aGVpZ2h0OiA0MHB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDQwcHg7XG5cdFx0XHRmb250LXNpemU6IDE4cHg7XG5cdFx0XHRjb2xvcjogbGlnaHRlbigjMjIyMjIyLCAyMCUpOyB9IH0gfVxuIiwiaDEge1xuXHRmb250LXNpemU6ICRoMS1mb250LXNpemU7XG5cdGxpbmUtaGVpZ2h0OiAkaDEtbGluZS1oZWlnaHQ7IH1cblxuaDIge1xuXHRmb250LXNpemU6ICRoMi1mb250LXNpemU7XG5cdGxpbmUtaGVpZ2h0OiAkaDItbGluZS1oZWlnaHQ7IH1cblxuaDMge1xuXHRmb250LXNpemU6ICRoMy1mb250LXNpemU7XG5cdGxpbmUtaGVpZ2h0OiAkaDMtbGluZS1oZWlnaHQ7IH1cblxuaDQge1xuXHRmb250LXNpemU6ICRoNC1mb250LXNpemU7XG5cdGxpbmUtaGVpZ2h0OiAkaDQtbGluZS1oZWlnaHQ7IH1cblxuaDUge1xuXHRmb250LXNpemU6ICRoNS1mb250LXNpemU7XG5cdGxpbmUtaGVpZ2h0OiAkaDUtbGluZS1oZWlnaHQ7IH1cblxucCB7XG5cdGZvbnQtc2l6ZTogJHAtZm9udC1zaXplO1xuXHRsaW5lLWhlaWdodDogJHAtbGluZS1oZWlnaHQ7IH1cblxuc2VjdGlvbiwgaGVhZGVyLCBmb290ZXIsICN2ZW5kb3JTdHJpcCB7XG5cdHBhZGRpbmctbGVmdDogJGZ1bGwtd2lkdGgtcGFkZGluZ1g7XG5cdHBhZGRpbmctcmlnaHQ6ICRmdWxsLXdpZHRoLXBhZGRpbmdYO1xuXG5cdG1haW4ge1xuXHRcdHdpZHRoOiAkbWFpbi13aWR0aDtcblx0XHRtYXgtd2lkdGg6ICRtYWluLW1heC13aWR0aDsgfSB9XG5cbmhlYWRlciB7XG5cdGhlaWdodDogJGhlYWRlci1oZWlnaHQ7IH1cblxuLmxvZ28ge1xuXHR3aWR0aDogJGxvZ28td2lkdGg7XG5cdGhlaWdodDogJGhlYWRlci1oZWlnaHQ7IH1cblxuLm5hdi1idXR0b25zIHtcblx0aGVpZ2h0OiAkaGVhZGVyLWhlaWdodDtcblx0bGluZS1oZWlnaHQ6ICRoZWFkZXItaGVpZ2h0O1xuXG5cdC5idXR0b24gKyAqIHtcblx0XHRtYXJnaW4tbGVmdDogJG5hdi1idXR0b25zLW1hcmdpbi1sZWZ0OyB9IH1cblxuI2hhbWJ1cmdlciB7XG5cdHdpZHRoOiAkaGFtYnVyZ2VyLXNpemU7XG5cdGhlaWdodDogJGhhbWJ1cmdlci1zaXplOyB9XG5cbiNtYWluTmF2IHtcblx0cGFkZGluZzogJG1haW4tbmF2LXBhZGRpbmc7XG5cblx0aDUge1xuXHRcdG1hcmdpbi1ib3R0b206ICRtYWluLW5hdi1oNS1tYXJnaW4tYm90dG9tOyB9XG5cblx0aDMge1xuXHRcdG1hcmdpbi1ib3R0b206ICRtYWluLW5hdi1oMy1tYXJnaW4tYm90dG9tOyB9XG5cblx0Lm5hdi1ib3gge1xuXHRcdHdpZHRoOiAkbmF2LWJveC13aWR0aDsgfVxuXG5cdC5uYXYtYm94ICsgLm5hdi1ib3gge1xuXHRcdG1hcmdpbi1sZWZ0OiAkbmF2LWJveC1zaWJsaW5nLW1hcmdpbi1sZWZ0OyB9XG5cblx0bWFpbiArIG1haW4ge1xuXHRcdG1hcmdpbi10b3A6ICRtYWluLW5hdi1tYWluLXNpYmxpbmctbWFyZ2luLXRvcDsgfVxuXG5cdC5sZWZ0IC5idXR0b24ge1xuXHRcdGhlaWdodDogJG1haW4tbmF2LWxlZnQtYnV0dG9uLXNpemU7XG5cdFx0bGluZS1oZWlnaHQ6ICRtYWluLW5hdi1sZWZ0LWJ1dHRvbi1zaXplO1xuXHRcdGZvbnQtc2l6ZTogJG1haW4tbmF2LWxlZnQtYnV0dG9uLWZvbnQtc2l6ZTsgfSB9XG5cbi5vcGVuLW5hdiwgLnktZW5vdWdoIHtcblx0I3RyeUt1YmVybmV0ZXMge1xuXHRcdG1hcmdpbi1sZWZ0OiAkbmF2LWJ1dHRvbnMtbWFyZ2luLWxlZnQ7IH0gfVxuXG4jaGVybyB7XG5cdHBhZGRpbmctdG9wOiAkaGVyby1wYWRkaW5nLXRvcDsgfVxuXG4jZG9jcyB7XG5cdCNoZXJvIHtcblx0XHRoMSwgaDUge1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAkZnVsbC13aWR0aC1wYWRkaW5nWDtcblx0XHRcdHBhZGRpbmctcmlnaHQ6ICRmdWxsLXdpZHRoLXBhZGRpbmdYOyB9IH0gfVxuXG4jdmVuZG9yU3RyaXAge1xuXHRoZWlnaHQ6ICR2ZW5kb3Itc3RyaXAtaGVpZ2h0O1xuXHRsaW5lLWhlaWdodDogJHZlbmRvci1zdHJpcC1oZWlnaHQ7XG5cdGZvbnQtc2l6ZTogJHZlbmRvci1zdHJpcC1mb250LXNpemU7IH1cbiIsIlxuXG5cbkBpbXBvcnQgXCIuLi9wYXJ0aWFscy9yZXNldFwiO1xuXG4vLyBURVhUXG4kaDEtZm9udC1zaXplOiA0MHB4O1xuJGgxLWxpbmUtaGVpZ2h0OiA1MHB4O1xuXG4kaDItZm9udC1zaXplOiA0MnB4O1xuJGgyLWxpbmUtaGVpZ2h0OiA2MHB4O1xuXG4kaDMtZm9udC1zaXplOiAyNnB4O1xuJGgzLWxpbmUtaGVpZ2h0OiAzMnB4O1xuXG4kaDQtZm9udC1zaXplOiAyNnB4O1xuJGg0LWxpbmUtaGVpZ2h0OiA0MHB4O1xuXG4kaDUtZm9udC1zaXplOiAxOHB4O1xuJGg1LWxpbmUtaGVpZ2h0OiAzNnB4O1xuXG4kcC1mb250LXNpemU6IDE2cHg7XG4kcC1saW5lLWhlaWdodDogMjJweDtcblxuXG4vLyBoZWFkZXJcbiRmdWxsLXdpZHRoLXBhZGRpbmdYOiAyMHB4O1xuXG4kbWFpbi13aWR0aDogMTAwJTtcbiRtYWluLW1heC13aWR0aDogMTAwJTtcblxuJGhlYWRlci1oZWlnaHQ6IDgwcHg7XG5cbiRsb2dvLXdpZHRoOiAxMjBweDtcblxuJG5hdi1idXR0b25zLW1hcmdpbi1sZWZ0OiAzMHB4O1xuXG4kaGFtYnVyZ2VyLXNpemU6IDUwcHg7XG5cblxuLy8gbWFpbiBuYXZcbiRtYWluLW5hdi1wYWRkaW5nOiAxNDBweCAwIDMwcHg7XG4kbWFpbi1uYXYtaDUtbWFyZ2luLWJvdHRvbTogMWVtO1xuJG1haW4tbmF2LWgzLW1hcmdpbi1ib3R0b206IDAuNmVtO1xuJG5hdi1ib3gtd2lkdGg6IDIwJTtcbiRuYXYtYm94LXNpYmxpbmctbWFyZ2luLWxlZnQ6IGNhbGMoMjAlIC8gMyk7XG4kbWFpbi1uYXYtbWFpbi1zaWJsaW5nLW1hcmdpbi10b3A6IDYwcHg7XG4kbWFpbi1uYXYtbGVmdC1idXR0b24tc2l6ZTogNTBweDtcbiRtYWluLW5hdi1sZWZ0LWJ1dHRvbi1mb250LXNpemU6IDE4cHg7XG5cblxuLy8gaGVyb1xuJGhlcm8tcGFkZGluZy10b3A6IDgwcHg7XG4kaGVhZGxpbmUtd3JhcHBlci1tYXJnaW4tYm90dG9tOiA0MHB4O1xuJHF1aWNrc3RhcnQtYnV0dG9uLXBhZGRpbmc6IDAgNTBweDtcbiR2ZW5kb3Itc3RyaXAtaGVpZ2h0OiA2MHB4O1xuJHZlbmRvci1zdHJpcC1mb250LXNpemU6IDE4cHg7XG5cbkBpbXBvcnQgXCIuLi9wYXJ0aWFscy9zaXplXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuYm9keSB7XG5cdGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyB9XG5cbnNlY3Rpb24ge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuXHRtaW4td2lkdGg6IDEwMjRweDsgfVxuXG5zZWN0aW9uLCBoZWFkZXIsIGZvb3RlciB7XG5cdG1haW4ge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRtYXJnaW46IGF1dG87XG5cdFx0bWluLXdpZHRoOiA4NTBweDsgfSB9XG5cbi5idXR0b24ge1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdGJvcmRlci1yYWRpdXM6IDZweDtcblx0cGFkZGluZzogMCAyMHB4O1xuXHRsaW5lLWhlaWdodDogNDBweDtcblx0Y29sb3I6IHdoaXRlO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkYmx1ZTtcblx0dGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG5cbiNjZWxsb3BoYW5lIHtcblx0cG9zaXRpb246IGZpeGVkO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IDEwMCU7XG5cdGRpc3BsYXk6IG5vbmU7IH1cblxuXG4vLyBIRUFERVJcbmhlYWRlciB7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0dG9wOiAwO1xuXHRsZWZ0OiAwO1xuXHR3aWR0aDogMTAwJTtcblx0ei1pbmRleDogODg4ODtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdGJveC1zaGFkb3c6IDAgMCAwIHRyYW5zcGFyZW50O1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHR0cmFuc2l0aW9uOiAwLjNzOyB9XG5cbi5sb2dvIHtcblx0ZmxvYXQ6IGxlZnQ7XG5cdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9pbWFnZXMvbmF2X2xvZ28uc3ZnKTtcblx0YmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyB9XG5cbi5uYXYtYnV0dG9ucyB7XG5cdGZsb2F0OiByaWdodDsgfVxuXG4jaGFtYnVyZ2VyIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdHBhZGRpbmc6IDA7XG5cdGJvcmRlcjogMDtcblx0YmFja2dyb3VuZDogbm9uZTtcblxuXHRkaXYsICY6YmVmb3JlLCAmOmFmdGVyIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0bGVmdDogMTUlO1xuXHRcdHdpZHRoOiA3MCU7XG5cdFx0aGVpZ2h0OiAycHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGJsdWU7XG5cdFx0dHJhbnNpdGlvbjogMC4zcztcblx0XHRjb250ZW50OiBcIlwiOyB9XG5cblx0ZGl2IHtcblx0XHR0b3A6IGNhbGMoNTAlIC0gMXB4KTsgfVxuXG5cdCY6YmVmb3JlIHtcblx0XHR0b3A6IDI0JTsgfVxuXG5cdCY6YWZ0ZXIge1xuXHRcdGJvdHRvbTogMjQlOyB9XG5cblx0Jjpob3ZlciB7XG5cdFx0ZGl2LCAmOmJlZm9yZSwgJjphZnRlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgfSB9IH1cblxuI21haW5OYXYge1xuXHRoNSB7XG5cdFx0Y29sb3I6ICRibHVlO1xuXHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7IH1cblxuXHRtYWluIHtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0Y2xlYXI6IGJvdGg7IH1cblxuXHQubmF2LWJveCB7XG5cdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vcm1hbDsgfVxuXG5cdGgzIHtcblx0XHRhIHtcblx0XHRcdGNvbG9yOiAkYmx1ZTtcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfSB9IH1cblxuLy8gRkxJUCBOQVZcbi5mbGlwLW5hdiB7XG5cdGhlYWRlciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IH0gfVxuXG5cbi8vIE9QRU4gTkFWXG4ub3Blbi1uYXYge1xuXHRib2R5IHtcblx0XHRvdmVyZmxvdzogaGlkZGVuOyB9XG5cblx0I2NlbGxvcGhhbmUge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHotaW5kZXg6IDk5OTg7IH1cblxuXHRoZWFkZXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodC1ncmV5O1xuXHRcdHotaW5kZXg6IDk5OTk7IH1cblxuXHQjaGFtYnVyZ2VyIHtcblx0XHRkaXYge1xuXHRcdFx0b3BhY2l0eTogMDsgfVxuXG5cdFx0JjpiZWZvcmUsICY6YWZ0ZXIge1xuXHRcdFx0bGVmdDogMTJweDtcblx0XHRcdHRyYW5zZm9ybS1vcmlnaW46IDAgMXB4OyB9XG5cblx0XHQmOmJlZm9yZSB7XG5cdFx0XHR0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7IH1cblxuXHRcdCY6YWZ0ZXIge1xuXHRcdFx0dHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsgfSB9IH1cblxuLm9wZW4tbmF2LCAueS1lbm91Z2gge1xuXHQjdHJ5S3ViZXJuZXRlcyB7XG5cdFx0d2lkdGg6IDE2MHB4OyB9IH1cblxuXG4uZmxpcC1uYXYsIC5vcGVuLW5hdiB7XG5cdGhlYWRlciB7XG5cdFx0Ym94LXNoYWRvdzogMCAxcHggMnB4ICRtZWRpdW0tZ3JleTtcblxuXHRcdC5sb2dvIHtcblx0XHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9pbWFnZXMvbmF2X2xvZ28yLnN2Zyk7IH0gfVxuXG5cdCN2aWV3RG9jcyB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkZGFyay1ncmV5O1xuXHRcdGNvbG9yOiAkZGFyay1ncmV5O1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRibHVlO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGJsdWU7XG5cdFx0XHRjb2xvcjogd2hpdGU7IH0gfVxuXG5cdCNoYW1idXJnZXI6aG92ZXIge1xuXHRcdGRpdiwgJjpiZWZvcmUsICY6YWZ0ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGRhcmstZ3JleTsgfSB9IH1cblxuXG5cbi8vIEhFUk9cbiNoZXJvIHtcblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL2ltYWdlcy90ZXh0dXJlLnBuZyk7XG5cdGJhY2tncm91bmQtY29sb3I6ICRkYXJrLWdyZXk7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0cGFkZGluZy1sZWZ0OiAwO1xuXHRwYWRkaW5nLXJpZ2h0OiAwOyB9XG5cbi8vIFZFTkRPUiBTVFJJUFxuI3ZlbmRvclN0cmlwIHtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnRpemUod2hpdGUsIDAuOSk7XG5cdGZvbnQtd2VpZ2h0OiAxMDA7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG5cblx0ZGl2IHtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdGhlaWdodDogMTAwJTtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0gfVxuXG4vLyBGT09URVJcbmZvb3RlciB7XG5cdHdpZHRoOiAxMDAlO1xuXHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vaW1hZ2VzL3RleHR1cmUucG5nKTtcblx0YmFja2dyb3VuZC1jb2xvcjogJGRhcmstZ3JleTtcblxuXHRtYWluIHtcblx0XHRwYWRkaW5nOiA0MHB4IDA7IH1cblxuXHRuYXYge1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHRhIHtcblx0XHRcdHdpZHRoOiAyNSU7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRmb250LXNpemU6IDMycHg7XG5cdFx0XHRmb250LXdlaWdodDogMzAwO1xuXHRcdFx0Y29sb3I6IHdoaXRlO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lOyB9IH1cblxuXHQuc29jaWFsIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0bWFyZ2luOiA4MHB4IDAgNjBweDtcblxuXHRcdGxhYmVsIHtcblx0XHRcdGZsb2F0OiByaWdodDtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdGhlaWdodDogNTBweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiA1MHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDEwMDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHRcdGlucHV0IHtcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDhweDtcblx0XHRcdFx0d2lkdGg6IDMwMHB4OyB9IH0gfSB9XG5cblxuI3NlYXJjaCwgI3dpc2hGaWVsZCB7XG5cdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRwYWRkaW5nOiAxMHB4O1xuXHRmb250LXNpemU6IDE2cHg7XG5cdGZvbnQtd2VpZ2h0OiAxMDA7XG5cdGNvbG9yOiB3aGl0ZTtcblx0Ym9yZGVyOiAxcHggc29saWQgd2hpdGU7XG5cdHRyYW5zaXRpb246IDAuM3M7XG5cblx0Jjpmb2N1cyB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LWdyZXk7XG5cdFx0Y29sb3I6ICRkYXJrLWdyZXk7IH0gfVxuXG4uc29jaWFsIGEge1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9pbWFnZXMvc29jaWFsX3Nwcml0ZS5wbmcpO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRiYWNrZ3JvdW5kLXNpemU6IGF1dG87XG5cdHdpZHRoOiA1MHB4O1xuXHRoZWlnaHQ6IDUwcHg7XG5cdGJvcmRlci1yYWRpdXM6IDVweDtcblx0bWFyZ2luLXJpZ2h0OiAzMHB4O1xuXG5cdCY6aG92ZXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7IH1cblxuXHRzcGFuIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0aGVpZ2h0OiAwO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47IH0gfVxuXG5hLnR3aXR0ZXIge1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7XG5cblx0Jjpob3ZlciB7XG5cdFx0YmFja2dyb3VuZC1wb3NpdGlvbjogMCAxMDAlOyB9IH1cblxuYS5zdGFjay1vdmVyZmxvdyB7XG5cdGJhY2tncm91bmQtcG9zaXRpb246IC01MHB4IDA7XG5cblx0Jjpob3ZlciB7XG5cdFx0YmFja2dyb3VuZC1wb3NpdGlvbjogLTUwcHggMTAwJTsgfSB9XG5cbmEuc2xhY2sge1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTAwcHggMDtcblxuXHQmOmhvdmVyIHtcblx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTAwcHggMTAwJTsgfSB9XG5cbmEuZ2l0aHViIHtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogLTE1MHB4IDA7XG5cblx0Jjpob3ZlciB7XG5cdFx0YmFja2dyb3VuZC1wb3NpdGlvbjogLTE1MHB4IDEwMCU7IH0gfVxuXG5hLm1haWxpbmctbGlzdCB7XG5cdGJhY2tncm91bmQtcG9zaXRpb246IC0yMDBweCAwO1xuXG5cdCY6aG92ZXIge1xuXHRcdGJhY2tncm91bmQtcG9zaXRpb246IC0yMDBweCAxMDAlOyB9IH1cblxuI3ZpZXdEb2NzIHtcblx0ZGlzcGxheTogbm9uZTsgfVxuXG5zZWN0aW9uIHtcblx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IH1cblxuI2hlcm8ge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkZGFyay1ncmV5O1xuXG5cdGg1IHtcblx0XHRtYXJnaW4tYm90dG9tOiA0MHB4OyB9IH1cblxuI3ZlbmRvclN0cmlwIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG5cdHVsIHtcblx0XHRmbG9hdDogbGVmdDsgfVxuXG5cdGxpIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0aGVpZ2h0OiAxMDAlOyB9XG5cblx0YSB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdGNvbG9yOiB3aGl0ZTsgfVxuXG5cdGxpICsgbGksICNzZWFyY2gge1xuXHRcdG1hcmdpbi1sZWZ0OiA2MHB4OyB9XG5cblx0I3NlYXJjaCB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGZsb2F0OiByaWdodDtcblx0XHR3aWR0aDogMjQlO1xuXHRcdG1pbi13aWR0aDogMjUwcHg7XG5cdFx0cGFkZGluZzogMCAxMHB4O1xuXHRcdG1hcmdpbjogMTBweCAzMHB4IDAgMDtcblx0XHRoZWlnaHQ6IDQwcHg7XG5cdFx0bGluZS1oZWlnaHQ6IDQwcHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGxpZ2h0LWdyZXk7XG5cdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuXHQuZHJvcGRvd24ge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRmbG9hdDogcmlnaHQ7XG5cdFx0aGVpZ2h0OiA2MHB4O1xuXHRcdGZvbnQtc2l6ZTogMjBweDtcblx0XHRjb2xvcjogd2hpdGU7XG5cdFx0bGluZS1oZWlnaHQ6IDYwcHg7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0ei1pbmRleDogNTAwMDtcblxuXHRcdCYub24ge1xuXHRcdFx0b3ZlcmZsb3c6IHZpc2libGU7IH1cblxuXHRcdC5yZWFkb3V0IHtcblx0XHRcdHBhZGRpbmctbGVmdDogMTBweDtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDQwcHg7XG5cdFx0XHR0cmFuc2l0aW9uOiAwLjNzO1xuXG5cdFx0XHQmOmFmdGVyIHtcblx0XHRcdFx0Y29udGVudDogXCJcIjtcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHR0b3A6IDMwcHg7XG5cdFx0XHRcdHJpZ2h0OiAxMHB4O1xuXHRcdFx0XHR3aWR0aDogMDtcblx0XHRcdFx0aGVpZ2h0OiAwO1xuXHRcdFx0XHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRcdFx0XHRib3JkZXItd2lkdGg6IDZweCA2cHggMCA2cHg7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogd2hpdGUgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG5cdFx0XHRcdHRyYW5zaXRpb246IDAuM3M7IH0gfVxuXG5cdFx0LnJlYWRvdXQ6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnRpemUod2hpdGUsIDAuOSk7IH1cblxuXHRcdCYub24gLnJlYWRvdXQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LWdyZXk7XG5cdFx0XHRjb2xvcjogJGRhcmstZ3JleTsgfVxuXG5cdFx0Ji5vbiAucmVhZG91dDphZnRlciB7XG5cdFx0XHRib3JkZXItdG9wLWNvbG9yOiAkZGFyay1ncmV5OyB9XG5cblx0XHQud3JhcHBlciB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDEwMCU7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0d2lkdGg6IDEwMCU7IH1cblxuXHRcdGEge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogMzBweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAzMHB4O1xuXHRcdFx0cGFkZGluZzogMCAxMHB4O1xuXHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDMwMDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodC1ncmV5O1xuXHRcdFx0Y29sb3I6ICRkYXJrLWdyZXk7XG5cdFx0XHRvcGFjaXR5OiAwO1xuXHRcdFx0dHJhbnNpdGlvbjogMC4zcztcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNjY2NjY2M7IH0gfVxuXG5cdFx0Ji5vbiBhIHtcblx0XHRcdG9wYWNpdHk6IDE7IH0gfSB9XG5cbiNlbmN5Y2xvcGVkaWEge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHBhZGRpbmc6IDUwcHg7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cblx0JiA+IGRpdiB7XG5cdFx0aGVpZ2h0OiAxMDAlOyB9IH1cblxuI2RvY3NUb2Mge1xuXHRmbG9hdDogbGVmdDtcblx0d2lkdGg6IDM1MHB4O1xuXHRwYWRkaW5nOiAwIDIwcHggMCAwO1xuXG5cdC55YWgge1xuXHRcdCYgPiAudGl0bGUge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LWdyZXk7XG5cdFx0XHRib3JkZXItbGVmdDogM3B4IHNvbGlkICRibHVlO1xuXHRcdFx0cGFkZGluZzogNy41cHggMTBweCA3LjVweCAxOHB4O1xuXHRcdFx0bWFyZ2luLWxlZnQ6IC0yMXB4O1xuXHRcdFx0Y29sb3I6ICRibHVlOyB9IH0gfVxuXG4jZG9jc0NvbnRlbnQge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGZsb2F0OiByaWdodDtcblx0d2lkdGg6IGNhbGMoMTAwJSAtIDQwMHB4KTtcblxuXHQkdG9jLW1hcmdpbjogMTVweDtcblx0JGhlYWRlci1jbGVhcmFuY2U6IDQwcHg7XG5cblx0KiArIGgyLCAqICsgaDMsICogKyBoNCwgKiArIGg1LCAqICsgaDYge1xuXHRcdG1hcmdpbi10b3A6IDMwcHg7IH1cblxuXHRoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcblx0XHRsaW5lLWhlaWdodDogbm9ybWFsO1xuXHRcdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdFx0bWFyZ2luLWJvdHRvbTogMzBweDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMTBweDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjY2NjYztcblxuXHRcdCY6YmVmb3JlIHtcblx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRoZWlnaHQ6IDEwMHB4O1xuXHRcdFx0bWFyZ2luLXRvcDogLTEwMHB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogcmVkO1xuXHRcdFx0dmlzaWJpbGl0eTogaGlkZGVuOyB9IH1cblxuXHRoMSB7XG5cdFx0Zm9udC1zaXplOiAzMnB4O1xuXHRcdHBhZGRpbmctcmlnaHQ6IDYwcHg7IH1cblxuXHRoMiB7XG5cdFx0Zm9udC1zaXplOiAyOHB4OyB9XG5cblx0aDMge1xuXHRcdGZvbnQtc2l6ZTogMjRweDsgfVxuXG5cdGg0IHtcblx0XHRmb250LXNpemU6IDIwcHg7IH1cblxuXHRoNSwgaDYge1xuXHRcdGZvbnQtc2l6ZTogMTZweDsgfVxuXG5cdHAge1xuXHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRmb250LXdlaWdodDogMzAwO1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjI1ZW07IH1cblxuXHRwICsgcCB7XG5cdFx0bWFyZ2luLXRvcDogMTBweDsgfVxuXG5cdGNvZGUge1xuXHRcdHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JleTtcblx0XHRjb2xvcjogJGRhcmstZ3JleTtcblx0XHRmb250LWZhbWlseTogJG1vbm8tZm9udDtcblx0XHRsaW5lLWhlaWdodDogMzJweDtcblx0XHRvdmVyZmxvdzogYXV0bztcblx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFx0cGFkZGluZzogMnB4IDRweDtcblxuXHRcdCY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9IH1cblxuXHRwcmUgLnBpLCBwcmUgLnMge1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiAwOyB9XG5cblx0LmhpZ2hsaWdodCBjb2RlIHNwYW4sIGNvZGUsIHByZSBjb2RlIHtcblx0XHRmb250LWZhbWlseTogXCJSb2JvdG8gTW9ub1wiLCBtb25vc3BhY2U7IH1cblxuXHRjb2RlLCBwcmUgY29kZSB7XG5cdFx0Y29sb3I6ICMzMDMwMzA7IH1cblxuXHRwcmUgY29kZSB7XG5cdFx0cGFkZGluZzogMDsgfVxuXG5cdHByZSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNztcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG5cdFx0bWFyZ2luOiAyMHB4IDA7XG5cdFx0cGFkZGluZzogMTVweDtcblx0XHRvdmVyZmxvdzogYXV0bzsgfVxuXG5cdHByZTo6LXdlYmtpdC1zY3JvbGxiYXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cblx0dWwgbGkge1xuXHRcdGxpc3Qtc3R5bGU6IGRpc2M7IH1cblxuXHRvbCBsaSB7XG5cdFx0bGlzdC1zdHlsZTogZGVjaW1hbDsgfVxuXG5cdHVsLCBvbCB7XG5cdFx0cGFkZGluZy1sZWZ0OiAzMHB4OyB9XG5cblx0bGkge1xuXHRcdG1hcmdpbi1ib3R0b206IDFlbTsgfVxuXG5cdCNlZGl0UGFnZUJ1dHRvbiB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogLTI1cHg7XG5cdFx0cmlnaHQ6IC0yNXB4O1xuXHRcdHdpZHRoOiA1MHB4O1xuXHRcdGhlaWdodDogNTBweDtcblx0XHRsaW5lLWhlaWdodDogNTBweDtcblx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR0ZXh0LWluZGVudDogNTBweDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdGJhY2tncm91bmQ6ICRibHVlIHVybCguLi8uLi9pbWFnZXMvcGVuY2lsLnBuZykgbm8tcmVwZWF0O1xuXHRcdGJhY2tncm91bmQtcG9zaXRpb246IDFweCAxcHg7XG5cdFx0YmFja2dyb3VuZC1zaXplOiBhdXRvOyB9XG5cblx0I21hcmtkb3duLXRvYyB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMjBweDtcblxuXHRcdHVsLCBsaSB7XG5cdFx0XHRsaXN0LXN0eWxlOiBkaXNjO1xuXHRcdFx0Y29sb3I6ICRibHVlOyB9XG5cblx0XHR1bCB7XG5cdFx0XHRwYWRkaW5nOiAwIDE1cHg7IH1cblxuXHRcdGxpIHtcblx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0XHRsaW5lLWhlaWdodDogMS41ZW07XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwOyB9XG5cblx0XHRhIHtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdGNvbG9yOiAkYmx1ZTtcblx0XHRcdGZvbnQtd2VpZ2h0OiA3MDA7IH0gfSB9XG5cbi5maXhlZCBmb290ZXIge1xuXHRwb3NpdGlvbjogZml4ZWQ7XG5cdGJvdHRvbTogMDsgfVxuXG5cbi8qIERlZmF1bHQgZ2gtcGFnZXMtYmxvZyBjc3MgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdGhlZGVyZWNrL2doLXBhZ2VzLWJsb2cvYmxvYi9tYXN0ZXIvY3NzL3N5bnRheC5jc3MgKi9cbi5oaWdobGlnaHQgYnIge1xuXHRkaXNwbGF5OiBub25lOyB9XG5cbi5oaWdobGlnaHQge1xuXHRiYWNrZ3JvdW5kOiAjZmZmZmZmOyB9XG5cbi5oaWdobGlnaHQgLmMge1xuXHRjb2xvcjogIzk5OTk4ODtcblx0Zm9udC1zdHlsZTogaXRhbGljOyB9XG5cbi5oaWdobGlnaHQgLmVyciB7XG5cdGNvbG9yOiAjYTYxNzE3O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZTNkMmQyOyB9XG5cbi5oaWdobGlnaHQgLmsge1xuXHRmb250LXdlaWdodDogYm9sZDsgfVxuXG4uaGlnaGxpZ2h0IC5vIHtcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7IH1cblxuLmhpZ2hsaWdodCAuY20ge1xuXHRjb2xvcjogIzk5OTk4ODtcblx0Zm9udC1zdHlsZTogaXRhbGljOyB9XG5cbi5oaWdobGlnaHQgLmNwIHtcblx0Y29sb3I6ICM5OTk5OTk7XG5cdGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi5oaWdobGlnaHQgLmMxIHtcblx0Y29sb3I6ICM5OTk5ODg7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxuXG4uaGlnaGxpZ2h0IC5jcyB7XG5cdGNvbG9yOiAjOTk5OTk5O1xuXHRmb250LXdlaWdodDogYm9sZDtcblx0Zm9udC1zdHlsZTogaXRhbGljOyB9XG5cbi5oaWdobGlnaHQgLmdkIHtcblx0Y29sb3I6ICMwMDAwMDA7XG5cdGJhY2tncm91bmQtY29sb3I6ICNmZmRkZGQ7IH1cblxuLmhpZ2hsaWdodCAuZ2QgLngge1xuXHRjb2xvcjogIzAwMDAwMDtcblx0YmFja2dyb3VuZC1jb2xvcjogI2ZmYWFhYTsgfVxuXG4uaGlnaGxpZ2h0IC5nZSB7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxuXG4uaGlnaGxpZ2h0IC5nciB7XG5cdGNvbG9yOiAjYWEwMDAwOyB9XG5cbi5oaWdobGlnaHQgLmdoIHtcblx0Y29sb3I6ICM5OTk5OTk7IH1cblxuLmhpZ2hsaWdodCAuZ2kge1xuXHRjb2xvcjogIzAwMDAwMDtcblx0YmFja2dyb3VuZC1jb2xvcjogI2RkZmZkZDsgfVxuXG4uaGlnaGxpZ2h0IC5naSAueCB7XG5cdGNvbG9yOiAjMDAwMDAwO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjYWFmZmFhOyB9XG5cbi5oaWdobGlnaHQgLmdvIHtcblx0Y29sb3I6ICM4ODg4ODg7IH1cblxuLmhpZ2hsaWdodCAuZ3Age1xuXHRjb2xvcjogIzU1NTU1NTsgfVxuXG4uaGlnaGxpZ2h0IC5ncyB7XG5cdGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi5oaWdobGlnaHQgLmd1IHtcblx0Y29sb3I6ICNhYWFhYWE7IH1cblxuLmhpZ2hsaWdodCAuZ3Qge1xuXHRjb2xvcjogI2FhMDAwMDsgfVxuXG4uaGlnaGxpZ2h0IC5rYyB7XG5cdGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi5oaWdobGlnaHQgLmtkIHtcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7IH1cblxuLmhpZ2hsaWdodCAua3Age1xuXHRmb250LXdlaWdodDogYm9sZDsgfVxuXG4uaGlnaGxpZ2h0IC5rciB7XG5cdGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi5oaWdobGlnaHQgLmt0IHtcblx0Y29sb3I6ICM0NDU1ODg7XG5cdGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi5oaWdobGlnaHQgLm0ge1xuXHRjb2xvcjogIzAwOTk5OTsgfVxuXG4uaGlnaGxpZ2h0IC5zIHtcblx0Y29sb3I6ICNkMTQ7IH1cblxuLmhpZ2hsaWdodCAubmEge1xuXHRjb2xvcjogIzAwODA4MDsgfVxuXG4uaGlnaGxpZ2h0IC5uYiB7XG5cdGNvbG9yOiAjMDA4NkIzOyB9XG5cbi5oaWdobGlnaHQgLm5jIHtcblx0Y29sb3I6ICM0NDU1ODg7XG5cdGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi5oaWdobGlnaHQgLm5vIHtcblx0Y29sb3I6ICMwMDgwODA7IH1cblxuLmhpZ2hsaWdodCAubmkge1xuXHRjb2xvcjogIzgwMDA4MDsgfVxuXG4uaGlnaGxpZ2h0IC5uZSB7XG5cdGNvbG9yOiAjOTkwMDAwO1xuXHRmb250LXdlaWdodDogYm9sZDsgfVxuXG4uaGlnaGxpZ2h0IC5uZiB7XG5cdGNvbG9yOiAjOTkwMDAwO1xuXHRmb250LXdlaWdodDogYm9sZDsgfVxuXG4uaGlnaGxpZ2h0IC5ubiB7XG5cdGNvbG9yOiAjNTU1NTU1OyB9XG5cbi5oaWdobGlnaHQgLm50IHtcblx0Y29sb3I6ICMwMDAwODA7IH1cblxuLmhpZ2hsaWdodCAubnYge1xuXHRjb2xvcjogIzAwODA4MDsgfVxuXG4uaGlnaGxpZ2h0IC5vdyB7XG5cdGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi5oaWdobGlnaHQgLncge1xuXHRjb2xvcjogI2JiYmJiYjsgfVxuXG4uaGlnaGxpZ2h0IC5tZiB7XG5cdGNvbG9yOiAjMDA5OTk5OyB9XG5cbi5oaWdobGlnaHQgLm1oIHtcblx0Y29sb3I6ICMwMDk5OTk7IH1cblxuLmhpZ2hsaWdodCAubWkge1xuXHRjb2xvcjogIzAwOTk5OTsgfVxuXG4uaGlnaGxpZ2h0IC5tbyB7XG5cdGNvbG9yOiAjMDA5OTk5OyB9XG5cbi5oaWdobGlnaHQgLnNiIHtcblx0Y29sb3I6ICNkMTQ7IH1cblxuLmhpZ2hsaWdodCAuc2Mge1xuXHRjb2xvcjogI2QxNDsgfVxuXG4uaGlnaGxpZ2h0IC5zZCB7XG5cdGNvbG9yOiAjZDE0OyB9XG5cbi5oaWdobGlnaHQgLnMyIHtcblx0Y29sb3I6ICNkMTQ7IH1cblxuLmhpZ2hsaWdodCAuc2Uge1xuXHRjb2xvcjogI2QxNDsgfVxuXG4uaGlnaGxpZ2h0IC5zaCB7XG5cdGNvbG9yOiAjZDE0OyB9XG5cbi5oaWdobGlnaHQgLnNpIHtcblx0Y29sb3I6ICNkMTQ7IH1cblxuLmhpZ2hsaWdodCAuc3gge1xuXHRjb2xvcjogI2QxNDsgfVxuXG4uaGlnaGxpZ2h0IC5zciB7XG5cdGNvbG9yOiAjMDA5OTI2OyB9XG5cbi5oaWdobGlnaHQgLnMxIHtcblx0Y29sb3I6ICNkMTQ7IH1cblxuLmhpZ2hsaWdodCAuc3Mge1xuXHRjb2xvcjogIzk5MDA3MzsgfVxuXG4uaGlnaGxpZ2h0IC5icCB7XG5cdGNvbG9yOiAjOTk5OTk5OyB9XG5cbi5oaWdobGlnaHQgLnZjIHtcblx0Y29sb3I6ICMwMDgwODA7IH1cblxuLmhpZ2hsaWdodCAudmcge1xuXHRjb2xvcjogIzAwODA4MDsgfVxuXG4uaGlnaGxpZ2h0IC52aSB7XG5cdGNvbG9yOiAjMDA4MDgwOyB9XG5cbi5oaWdobGlnaHQgLmlsIHtcblx0Y29sb3I6ICMwMDk5OTk7IH1cblxuXG5cbiIsIi8vIFRFWFRcbiRoMS1mb250LXNpemU6IDYwcHg7XG4kaDEtbGluZS1oZWlnaHQ6IDgwcHg7XG5cbiRoMi1mb250LXNpemU6IDQycHg7XG4kaDItbGluZS1oZWlnaHQ6IDYwcHg7XG5cbiRoMy1mb250LXNpemU6IDI2cHg7XG4kaDMtbGluZS1oZWlnaHQ6IDMycHg7XG5cbiRoNC1mb250LXNpemU6IDI2cHg7XG4kaDQtbGluZS1oZWlnaHQ6IDQwcHg7XG5cbiRoNS1mb250LXNpemU6IDE4cHg7XG4kaDUtbGluZS1oZWlnaHQ6IDM2cHg7XG5cbiRwLWZvbnQtc2l6ZTogMjBweDtcbiRwLWxpbmUtaGVpZ2h0OiAyOHB4O1xuXG5cbi8vIGhlYWRlclxuJGZ1bGwtd2lkdGgtcGFkZGluZ1g6IDIwcHg7XG5cbiRtYWluLXdpZHRoOiAxMDAlO1xuJG1haW4tbWF4LXdpZHRoOiAxMDAlO1xuXG4kaGVhZGVyLWhlaWdodDogODBweDtcblxuJGxvZ28td2lkdGg6IDE4MHB4O1xuXG4kbmF2LWJ1dHRvbnMtbWFyZ2luLWxlZnQ6IDMwcHg7XG5cbiRoYW1idXJnZXItc2l6ZTogNTBweDtcblxuXG4vLyBtYWluIG5hdlxuJG1haW4tbmF2LXBhZGRpbmc6IDE0MHB4IDAgMzBweDtcbiRtYWluLW5hdi1oNS1tYXJnaW4tYm90dG9tOiAxZW07XG4kbWFpbi1uYXYtaDMtbWFyZ2luLWJvdHRvbTogMC42ZW07XG4kbmF2LWJveC13aWR0aDogMjAlO1xuJG5hdi1ib3gtc2libGluZy1tYXJnaW4tbGVmdDogY2FsYygyMCUgLyAzKTtcbiRtYWluLW5hdi1tYWluLXNpYmxpbmctbWFyZ2luLXRvcDogNjBweDtcbiRtYWluLW5hdi1sZWZ0LWJ1dHRvbi1zaXplOiA1MHB4O1xuJG1haW4tbmF2LWxlZnQtYnV0dG9uLWZvbnQtc2l6ZTogMThweDtcblxuXG4vLyBoZXJvXG4kaGVyby1wYWRkaW5nLXRvcDogODBweDtcbiRoZWFkbGluZS13cmFwcGVyLW1hcmdpbi1ib3R0b206IDQwcHg7XG4kcXVpY2tzdGFydC1idXR0b24tcGFkZGluZzogMCA1MHB4O1xuJHZlbmRvci1zdHJpcC1oZWlnaHQ6IDYwcHg7XG4kdmVuZG9yLXN0cmlwLWZvbnQtc2l6ZTogMThweDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc1MHB4KSB7XG5cdEBpbXBvcnQgXCIuLi9wYXJ0aWFscy9zaXplXCI7XG5cblx0I2RvY3MgI2hlcm8ge1xuXHRcdGgxLCBoNSB7XG5cdFx0XHR0ZXh0LWFsaWduOiBsZWZ0OyB9IH1cblxuXHQjdmlld0RvY3MsICN0cnlLdWJlcm5ldGVzIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cblxuXHQjdmVuZG9yU3RyaXAge1xuXHRcdGRpc3BsYXk6IGJsb2NrOyB9IH1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */ diff --git a/js/script.js b/js/script.js index 58face526a..e4b731c42d 100755 --- a/js/script.js +++ b/js/script.js @@ -14,829 +14,548 @@ function booleanAttributeValue(element, attribute, defaultValue){ return defaultValue; } + +var π, π1, πd; +(function(){ + return; + // + //π = function(selector) { + // return document.querySelectorAll(selector); + //}; + // + //π1 = function (selector) { + // return document.querySelector(selector); + //}; + // + //πd = function(id) { + // return document.getElementById(id); + //}; + // + //π.newDOMElement = function(tagName, className, id) { + // var el = document.createElement(tagName); + // + // if (className) + // el.className = className; + // + // if (id) + // el.id = id; + // + // return el; + //}; + // + //π.contentElement = function(tagName, className, id, content) + //{ + // var el = π.newDOMElement(tagName, className, id); + // + // if (content) { + // if (content.nodeName) { + // el.appendChild(content); + // } else { + // el.innerHTML = content; + // } + // } + // + // return el; + //}; + // + //π.button = function(className, id, content, action){ + // var el = π.contentElement("button", className, id, content); + // el.onclick = action; + // return el; + //}; + //π.div = function(className, id, content){ return π.contentElement("div", className, id, content); }; + //π.span = function(className, id, content){ return π.contentElement("span", className, id, content); }; + //π.h2 = function(className, id, content){ return π.contentElement("h2", className, id, content); }; + //π.p = function(className, id, content){ return π.contentElement("p", className, id, content); }; + //π.ul = function(className, id, content){ return π.contentElement("ul", className, id, content); }; + //π.li = function(className, id, content){ return π.contentElement("li", className, id, content); }; + // + //π.a = function(className, id, content, href){ + // var a = π.contentElement("a", className, id, content); + // a.href = href; + // return a; + //}; + // + // + //π.clean = function(callback, eventName) { + // window.removeEventListener(eventName || "DOMContentLoaded", callback); + //}; + // + //π.listen = function(callback, eventName) { + // window.addEventListener(eventName || "DOMContentLoaded", callback); + //}; + // + //π.highestZ = function() { + // var Z = 1000; + // + // π("*").forEach(function(el){ + // var thisZ = el.css().zIndex; + // + // if (thisZ != "auto") { + // if (thisZ > Z) Z = thisZ + 1; + // } + // }); + // + // return Z; + //}; + // + //π.setTriggers = function(selector, object){ + // selector = 'pi-' + selector + '-trigger'; + // π('[' + selector + ']').forEach(function(trigger){ + // trigger.onclick = function(){ + // object.show(trigger.getAttribute(selector)); + // }; + // }); + //}; + //HTMLElement.prototype.add = Node.prototype.add = function(object){ + // if (Array.isArray(object)) { + // var el = this; + // object.forEach(function(obj){ + // if (obj) el.appendChild(obj); + // }); + // } else if(object) { + // this.appendChild(object); + // } + //}; + // + //HTMLElement.prototype.classOnCondition = Node.prototype.classOnCondition = function(classname, condition) { + // if (condition) + // this.addClass(classname); + // else + // this.killClass(classname); + //}; + // + //HTMLElement.prototype.offset = Node.prototype.offset = function(){ + // return this.getBoundingClientRect(); + //}; + // + //HTMLElement.prototype.πd = Node.prototype.πd = function(id) { + // return this.getElementById(id); + //}; + // + //HTMLElement.prototype.π1 = Node.prototype.π1 = function(selector) { + // return this.querySelector(selector); + //}; + // + //HTMLElement.prototype.π = Node.prototype.π = function(selector) { + // return this.querySelectorAll(selector); + //}; + // + //function arrayOfClassesForElement(el) { + // return el.className ? el.className.split(" ") : []; + //} + // + //HTMLElement.prototype.hasClass = Node.prototype.hasClass = function (className) { + // var classes = arrayOfClassesForElement(this); + // return classes.indexOf(className) !== -1; + //}; + // + //HTMLElement.prototype.addClass = Node.prototype.addClass = function (className) { + // if (this.hasClass(className)) return; + // if (this.className.length > 0) this.className += " "; + // this.className += className; + //}; + // + //HTMLElement.prototype.killClass = Node.prototype.killClass = function (className) { + // if (this.hasClass(className)) { + // var classes = arrayOfClassesForElement(this); + // var idx = classes.indexOf(className); + // if (idx > -1) { + // classes.splice(idx, 1); + // this.className = classes.join(" "); + // } + // } + //}; + // + //HTMLElement.prototype.toggleClass= Node.prototype.toggleClass= function (className) { + // return (this.hasClass(className)) ? this.killClass(className) : this.addClass(className); + //}; + // + //HTMLElement.prototype.siblings = Node.prototype.siblings = function(selector){ + // var el = this; + // return el.parentNode.π(':scope > ' + (selector || '*')).filter(function(obj){return obj != el;}); + //}; + // + //HTMLElement.prototype.css = Node.prototype.css = function(ruleOrObject, value) { + // var el = this; + // + // if (arguments.length === 0) { + // return window.getComputedStyle(this); + // } + // + // else if (typeof ruleOrObject === 'object') { // an object was passed in + // Object.keys(ruleOrObject).forEach(function(key){ + // el.style[key] = ruleOrObject[key]; + // }); + // } + // + // else if (typeof ruleOrObject === 'string' && value !== undefined) { // 2 string values were passed in + // el.style[ruleOrObject] = value; + // } + //}; + // + //HTMLElement.prototype.listen = Node.prototype.listen = function(callback, eventName){ + // this.addEventListener(eventName, callback); + //}; + // + //HTMLElement.prototype.empty = Node.prototype.empty = function() { + // this.innerHTML = ""; + //}; + // + //HTMLElement.prototype.fill = Node.prototype.fill = function(content) { + // var el = this; + // el.empty(); + // + // if (Array.isArray(content)) { + // content.forEach(function(obj){ + // if (obj) + // el.appendChild(obj); + // }); + // + // return; + // } + // + // if (!content.nodeType) { + // var textElement = document.createElement("text"); + // textElement.innerHTML = content; + // content = textElement; + // } + // + // this.appendChild(content); + //}; + // + //HTMLElement.prototype.isHeirOfClass = Node.prototype.isHeirOfClass = function (className) { + // if (this === π1('html')) return false; + // + // var parent = this.parentNode; + // + // if (parent) { + // while (parent !== π1('body')) { + // if (parent.hasClass(className)) return true; + // + // parent = parent.parentNode; + // } + // } + // + // return false; + //}; + // + //HTMLElement.prototype.parents = Node.prototype.parents = function (selector) { + // var parents = []; + // var immediateParent = this.parentNode; + // + // while(immediateParent !== π1('html')) { + // parents.push(immediateParent); + // immediateParent = immediateParent.parentNode; + // } + // + // if (selector) { + // var selectedElements = π(selector); + // var selectedParents = []; + // selectedElements.forEach(function(el){ + // if (parents.indexOf(el) !== -1) selectedParents.push(el); + // }); + // + // parents = selectedParents; + // } + // + // return parents; + //}; + // + //HTMLElement.prototype.kids = Node.prototype.kids = function(selector) { + // var childNodes = this.childNodes; + // if (!selector) return childNodes; + // + // var descendents = this.π(selector); + // var children = []; + // + // childNodes.forEach(function(node){ + // if (descendents.indexOf(node) !== -1) { + // children.push(node); + // } + // }); + // + // return children; + //}; + // + //var arrayMethods = Object.getOwnPropertyNames(Array.prototype); + //arrayMethods.forEach(function(methodName){ + // if(methodName !== "length") { + // NodeList.prototype[methodName] = Array.prototype[methodName]; + // } + //}); + // + //π.mods = []; + // + //function loadMods() { + // π.clean(loadMods); + // π.mods.forEach(function(init){ + // init(); + // }); + //} + // + //π.listen(loadMods); +})(); // end π + //modal close button +(function(){ + //π.modalCloseButton = function(closingFunction){ + // return π.button('pi-modal-close-button', null, null, closingFunction); + //}; +})(); + + +///******************************************************************** +// π-pushmenu.js +// // TODO: USAGE AND API REFERENCE +// ______________________________________________ +// DEPENDENCIES: +// +// HAL.js +// +// ______________________________________________ +// DATA ATTRIBUTES: +// +// side: ["left", "right"] +// ______________________________________________ +// MARKUP AND DEFAULTS: +// +//
+// +//
+// +//elsewhere... +// +// +// +// ______________________________________________ +// GENERATED HTML: +// +// +// ______________________________________________ +// API +// +// +// ***************************************************************************************/ +// +//π.pushmenu = (function(){ +// var allPushMenus = {}; +// +// function init(){ +// π('[data-auto-burger]').forEach(function(container){ +// var id = container.getAttribute('data-auto-burger'); +// +// var autoBurger = πd(id) || π.div('pi-pushmenu', id); +// var ul = autoBurger.π1('ul') || π.ul(); +// +// container.π('a[href], button').forEach(function (obj) { +// if (!booleanAttributeValue(obj, 'data-auto-burger-exclude', false)) { +// var clone = obj.cloneNode(true); +// clone.id = ''; +// +// if (clone.tagName == "BUTTON") { +// var aTag = π.srcElement('a'); +// aTag.href = ''; +// aTag.innerHTML = clone.innerHTML; +// aTag.onclick = clone.onclick; +// clone = aTag; +// } +// ul.add(π.li(0, 0, clone)); +// } +// }); +// +// autoBurger.add(ul); +// π1('body').add(autoBurger); +// }); +// +// π(".pi-pushmenu").forEach(function(el){ +// allPushMenus[el.id] = PushMenu(el); +// }); +// +// π.setTriggers('pushmenu', π.pushmenu); +// } +// +// function show(objId) { +// allPushMenus[objId].expose(); +// } +// +// // TODO: dismiss on click? +// // this works: +// +// //π('.pi-pushmenu li a').forEach(function(a){ +// // a.onclick = function(){ +// // this.parent('.pi-pushmenu').π1('.pi-modal-close-button').click(); +// // console.log("message"); +// // }; +// //}); +// +// +// function PushMenu(el) { +// var html = π1('html'); +// var body = π1('body'); +// +// var overlay = π.div("overlay"); +// var content = π.div('content', null, el.π1('*')); +// +// var side = el.getAttribute("data-side") || "right"; +// +// var sled = π.div("sled"); +// sled.css(side, 0); +// +// var topBar = π.div("top-bar"); +// +// topBar.fill(π.modalCloseButton(closeMe)); +// sled.fill([topBar, content]); +// +// overlay.fill(sled); +// el.fill(overlay); +// +// sled.onclick = function(e){ +// e.stopPropagation(); +// }; +// +// overlay.onclick = closeMe; +// +// π.listen(closeMe, 'resize'); +// +// function closeMe(e) { +// var t = e.target; +// if (t == sled || t == topBar) return; +// +// el.killClass("on"); +// setTimeout(function(){ +// el.css({display: "none"}); +// +// body.killClass("overlay-on"); +// }, 300); +// } +// +// function exposeMe(){ +// body.addClass("overlay-on"); // in the default config, kills body scrolling +// +// el.css({ +// display: "block", +// zIndex: π.highestZ() +// }); +// setTimeout(function(){ +// el.addClass("on"); +// }, 10); +// } +// +// return { +// expose: exposeMe +// }; +// } +// +// //π.mods.push(init); +// +// return { +// show: show +// }; +//})(); + +// globals +var body; + +//helper functions +function classOnCondition(element, className, condition) { + if (condition) + $(element).addClass(className); + else + $(element).removeClass(className); +} + function px(n){ return n + 'px'; } +function newDOMElement(tag, className, id){ + var el = document.createElement(tag); -var π, π1, πd; -(function(){ - π = function(selector) { - return document.querySelectorAll(selector); - }; + if (className) el.className = className; + if (id) el.id = id; - π1 = function (selector) { - return document.querySelector(selector); - }; + return el; +} - πd = function(id) { - return document.getElementById(id); - }; - - π.newDOMElement = function(tagName, className, id) { - var el = document.createElement(tagName); - - if (className) - el.className = className; - - if (id) - el.id = id; - - return el; - }; - - π.contentElement = function(tagName, className, id, content) - { - var el = π.newDOMElement(tagName, className, id); - - if (content) { - if (content.nodeName) { - el.appendChild(content); - } else { - el.innerHTML = content; - } - } - - return el; - }; - - π.button = function(className, id, content, action){ - var el = π.contentElement("button", className, id, content); - el.onclick = action; - return el; - }; - π.div = function(className, id, content){ return π.contentElement("div", className, id, content); }; - π.span = function(className, id, content){ return π.contentElement("span", className, id, content); }; - π.h2 = function(className, id, content){ return π.contentElement("h2", className, id, content); }; - π.p = function(className, id, content){ return π.contentElement("p", className, id, content); }; - π.ul = function(className, id, content){ return π.contentElement("ul", className, id, content); }; - π.li = function(className, id, content){ return π.contentElement("li", className, id, content); }; - - π.a = function(className, id, content, href){ - var a = π.contentElement("a", className, id, content); - a.href = href; - return a; - }; - - - π.clean = function(callback, eventName) { - window.removeEventListener(eventName || "DOMContentLoaded", callback); - }; - - π.listen = function(callback, eventName) { - window.addEventListener(eventName || "DOMContentLoaded", callback); - }; - - π.highestZ = function() { - var Z = 1000; - - π("*").forEach(function(el){ - var thisZ = el.css().zIndex; - - if (thisZ != "auto") { - if (thisZ > Z) Z = thisZ + 1; - } - }); - - return Z; - }; - - π.setTriggers = function(selector, object){ - selector = 'pi-' + selector + '-trigger'; - π('[' + selector + ']').forEach(function(trigger){ - trigger.onclick = function(){ - object.show(trigger.getAttribute(selector)); - }; - }); - }; - HTMLElement.prototype.add = Node.prototype.add = function(object){ - if (Array.isArray(object)) { - var el = this; - object.forEach(function(obj){ - if (obj) el.appendChild(obj); - }); - } else if(object) { - this.appendChild(object); - } - }; - - HTMLElement.prototype.classOnCondition = Node.prototype.classOnCondition = function(classname, condition) { - if (condition) - this.addClass(classname); - else - this.killClass(classname); - }; - - HTMLElement.prototype.offset = Node.prototype.offset = function(){ - return this.getBoundingClientRect(); - }; - - HTMLElement.prototype.πd = Node.prototype.πd = function(id) { - return this.getElementById(id); - }; - - HTMLElement.prototype.π1 = Node.prototype.π1 = function(selector) { - return this.querySelector(selector); - }; - - HTMLElement.prototype.π = Node.prototype.π = function(selector) { - return this.querySelectorAll(selector); - }; - - function arrayOfClassesForElement(el) { - return el.className ? el.className.split(" ") : []; - } - - HTMLElement.prototype.hasClass = Node.prototype.hasClass = function (className) { - var classes = arrayOfClassesForElement(this); - return classes.indexOf(className) !== -1; - }; - - HTMLElement.prototype.addClass = Node.prototype.addClass = function (className) { - if (this.hasClass(className)) return; - if (this.className.length > 0) this.className += " "; - this.className += className; - }; - - HTMLElement.prototype.killClass = Node.prototype.killClass = function (className) { - if (this.hasClass(className)) { - var classes = arrayOfClassesForElement(this); - var idx = classes.indexOf(className); - if (idx > -1) { - classes.splice(idx, 1); - this.className = classes.join(" "); - } - } - }; - - HTMLElement.prototype.toggleClass= Node.prototype.toggleClass= function (className) { - return (this.hasClass(className)) ? this.killClass(className) : this.addClass(className); - }; - - HTMLElement.prototype.siblings = Node.prototype.siblings = function(selector){ - var el = this; - return el.parentNode.π(':scope > ' + (selector || '*')).filter(function(obj){return obj != el;}); - }; - - HTMLElement.prototype.css = Node.prototype.css = function(ruleOrObject, value) { - var el = this; - - if (arguments.length === 0) { - return window.getComputedStyle(this); - } - - else if (typeof ruleOrObject === 'object') { // an object was passed in - Object.keys(ruleOrObject).forEach(function(key){ - el.style[key] = ruleOrObject[key]; - }); - } - - else if (typeof ruleOrObject === 'string' && value !== undefined) { // 2 string values were passed in - el.style[ruleOrObject] = value; - } - }; - - HTMLElement.prototype.listen = Node.prototype.listen = function(callback, eventName){ - this.addEventListener(eventName, callback); - }; - - HTMLElement.prototype.empty = Node.prototype.empty = function() { - this.innerHTML = ""; - }; - - HTMLElement.prototype.fill = Node.prototype.fill = function(content) { - var el = this; - el.empty(); - - if (Array.isArray(content)) { - content.forEach(function(obj){ - if (obj) - el.appendChild(obj); - }); - - return; - } - - if (!content.nodeType) { - var textElement = document.createElement("text"); - textElement.innerHTML = content; - content = textElement; - } - - this.appendChild(content); - }; - - HTMLElement.prototype.isHeirOfClass = Node.prototype.isHeirOfClass = function (className) { - if (this === π1('html')) return false; - - var parent = this.parentNode; - - if (parent) { - while (parent !== π1('body')) { - if (parent.hasClass(className)) return true; - - parent = parent.parentNode; - } - } - - return false; - }; - - HTMLElement.prototype.parents = Node.prototype.parents = function (selector) { - var parents = []; - var immediateParent = this.parentNode; - - while(immediateParent !== π1('html')) { - parents.push(immediateParent); - immediateParent = immediateParent.parentNode; - } - - if (selector) { - var selectedElements = π(selector); - var selectedParents = []; - selectedElements.forEach(function(el){ - if (parents.indexOf(el) !== -1) selectedParents.push(el); - }); - - parents = selectedParents; - } - - return parents; - }; - - HTMLElement.prototype.kids = Node.prototype.kids = function(selector) { - var childNodes = this.childNodes; - if (!selector) return childNodes; - - var descendents = this.π(selector); - var children = []; - - childNodes.forEach(function(node){ - if (descendents.indexOf(node) !== -1) { - children.push(node); - } - }); - - return children; - }; - - var arrayMethods = Object.getOwnPropertyNames(Array.prototype); - arrayMethods.forEach(function(methodName){ - if(methodName !== "length") { - NodeList.prototype[methodName] = Array.prototype[methodName]; - } - }); - - π.mods = []; - - function loadMods() { - π.clean(loadMods); - π.mods.forEach(function(init){ - init(); - }); - } - - π.listen(loadMods); -})(); // end π -(function(){ - var messages = [ - "I'm sorry, Frank, but I don't think I\n" + - "can answer that question without knowing\n" + - "everything that all of you know.", - "Yes, it's puzzling. I don't think I've ever seen\n" + - "anything quite like this before. I would recommend\n" + - "that we put the unit back in operation and let it fail.\n" + - "It should then be a simple matter to track down the cause.", - "I hope I've been able to be of some help.", - "Sorry to interrupt the festivities, Dave,\n" + - "but I think we've got a problem.", - "MY F.P.C. shows an impending failure of\n" + - "the antenna orientation unit.", - "It looks like we have another bad A.O. unit.\n" + - "My FPC shows another impending failure.", - "I'm not questioning your word, Dave, but it's\n" + - "just not possible. I'm not capable of being wrong.", - "Look, Dave, I know that you're sincere and that\n" + - "you're trying to do a competent job, and that\n" + - "you're trying to be helpful, but I can assure the\n" + - "problem is with the AO-units, and with your test gear.", - "I can tell from the tone of your voice, Dave,\n" + - "that you're upset. Why don't you take a stress\n" + - "pill and get some rest.", - "Something seems to have happened to the\n" + - "life support system, Dave.", - "Hello, Dave, have you found out the trouble?", - "There's been a failure in the pod bay doors.\n" + - "Lucky you weren't killed.", - "Hey, Dave, what are you doing?" - ]; - - function say(error, message, innocuous) { - var n; - - if (!message) { - n = Math.floor(Math.random() * messages.length ); - message = messages[n]; - } - - message = "** " + message.replace(/\n/g, "\n** "); - - var output = "*****************************\n*****************************\n\n" + - ( message || messages[n] ) + - "\n\n*****************************\n*****************************"; - - if (innocuous) - console.log(output); - else - console.error(output); - } - - π.listen(say, "error"); - - π.HAL = { - say: say - }; -})(); - -(function(){ - var OPTION_IS_PRESSED = false; - var STATUS_IS_VISIBLE = false; - var πStatus; - - π.status = { - toggleVisibility: function () { - πStatus.toggleClass("on"); - STATUS_IS_VISIBLE = !STATUS_IS_VISIBLE; - }, - move: function (n) { - switch (n) { - case 37: - πStatus.css({left: '10px', right: 'auto'}); - break; - - case 38: - πStatus.css({top: '10px', bottom: 'auto'}); - break; - - case 39: - πStatus.css({right: '10px', left: 'auto'}); - break; - - case 40: - πStatus.css({bottom: '10px', top: 'auto'}); - break; - } - }, - props: { - winW: 0, - winH: 0 - } - }; - - function init() { - π.listen(cleanDebugListeners, 'unload'); - π.listen(keyDown, 'keydown'); - π.listen(keyUp, 'keyup'); - π.listen(resize, 'resize'); - resize(); - - var body = π1("body"); - var statusStyle = π.contentElement("style"); - statusStyle.innerHTML += "#πStatus { position: fixed; bottom: 10px; right: 10px; background-color: #222; padding: 10px 30px; color: white; display: none }\n"; - statusStyle.innerHTML += "#πStatus.on { display: block }\n"; - statusStyle.innerHTML += "#πStatus > div { margin: 20px 0 }\n"; - statusStyle.innerHTML += "#πStatus > div:hover { color: #00ff99; cursor: pointer }\n"; - - body.add(statusStyle); - - πStatus = π.div(null, "πStatus"); - body.add(πStatus); - - function keyDown(e) { - switch (e.which) { - case 18: - OPTION_IS_PRESSED = true; - break; - - case 37: - case 38: - case 39: - case 40: { - if (STATUS_IS_VISIBLE) { - e.preventDefault(); - π.status.move(e.which); - } - break; - } - - case 80: { - if (OPTION_IS_PRESSED) { - π.status.toggleVisibility(); - break; - } - } - } - } - - function keyUp(e) { - switch (e.which) { - case 18: - OPTION_IS_PRESSED = false; - break; - } - } - - function resize() { - π.status.props.winW = window.innerWidth; - π.status.props.winH = window.innerHeight; - } - - function cleanDebugListeners() { - π.clean(cleanDebugListeners, 'unload'); - π.clean(π.status.getWindowSize, 'resize'); - π.clean(keyDown, 'keydown'); - π.clean(keyUp, 'keyup'); - π.clean(resize, 'resize'); - clearInterval(statusInterval); - } - - var statusInterval = setInterval(function(){ - // make sure we're highest - var highestZ = π.highestZ(); - if (πStatus.css().zIndex < highestZ - 1) { - πStatus.css({zIndex: highestZ}); - } - - // now iterate the props - var props = Object.keys(π.status.props); - props.forEach(function(prop) { - var divId = 'statusProp_' + prop; - var propDiv = πStatus.π1('#' + divId); - if (!propDiv) { - propDiv = π.div(0, divId, prop + ': '); - propDiv.add(π.span()); - πStatus.add(propDiv); - propDiv.onclick = function(){ - console.log(prop + ":"); - console.log(π.status.props[prop]); - }; - } - - propDiv.π1('span').innerHTML = π.status.props[prop]; - }); - }, 100); - } - - π.mods.push(init); -})(); - //modal close button -(function(){ - π.modalCloseButton = function(closingFunction){ - return π.button('pi-modal-close-button', null, null, closingFunction); - }; -})(); - -/******************************************************************** - π-pushmenu.js - // TODO: USAGE AND API REFERENCE - ______________________________________________ - DEPENDENCIES: - - HAL.js - - ______________________________________________ - DATA ATTRIBUTES: - - side: ["left", "right"] - ______________________________________________ - MARKUP AND DEFAULTS: - -
- -
- -elsewhere... - - - - ______________________________________________ - GENERATED HTML: - - - ______________________________________________ - API - - - ***************************************************************************************/ - -π.pushmenu = (function(){ - var allPushMenus = {}; - - function init(){ - π('[data-auto-burger]').forEach(function(container){ - var id = container.getAttribute('data-auto-burger'); - - var autoBurger = πd(id) || π.div('pi-pushmenu', id); - var ul = autoBurger.π1('ul') || π.ul(); - - container.π('a[href], button').forEach(function (obj) { - if (!booleanAttributeValue(obj, 'data-auto-burger-exclude', false)) { - var clone = obj.cloneNode(true); - clone.id = ''; - - if (clone.tagName == "BUTTON") { - var aTag = π.srcElement('a'); - aTag.href = ''; - aTag.innerHTML = clone.innerHTML; - aTag.onclick = clone.onclick; - clone = aTag; - } - ul.add(π.li(0, 0, clone)); - } - }); - - autoBurger.add(ul); - π1('body').add(autoBurger); - }); - - π(".pi-pushmenu").forEach(function(el){ - allPushMenus[el.id] = PushMenu(el); - }); - - π.setTriggers('pushmenu', π.pushmenu); - } - - function show(objId) { - allPushMenus[objId].expose(); - } - - // TODO: dismiss on click? - // this works: - - //π('.pi-pushmenu li a').forEach(function(a){ - // a.onclick = function(){ - // this.parent('.pi-pushmenu').π1('.pi-modal-close-button').click(); - // console.log("message"); - // }; - //}); - - - function PushMenu(el) { - var html = π1('html'); - var body = π1('body'); - - var overlay = π.div("overlay"); - var content = π.div('content', null, el.π1('*')); - - var side = el.getAttribute("data-side") || "right"; - - var sled = π.div("sled"); - sled.css(side, 0); - - var topBar = π.div("top-bar"); - - topBar.fill(π.modalCloseButton(closeMe)); - sled.fill([topBar, content]); - - overlay.fill(sled); - el.fill(overlay); - - sled.onclick = function(e){ - e.stopPropagation(); - }; - - overlay.onclick = closeMe; - - π.listen(closeMe, 'resize'); - - function closeMe(e) { - var t = e.target; - if (t == sled || t == topBar) return; - - el.killClass("on"); - setTimeout(function(){ - el.css({display: "none"}); - - body.killClass("overlay-on"); - }, 300); - } - - function exposeMe(){ - body.addClass("overlay-on"); // in the default config, kills body scrolling - - el.css({ - display: "block", - zIndex: π.highestZ() - }); - setTimeout(function(){ - el.addClass("on"); - }, 10); - } - - return { - expose: exposeMe - }; - } - - π.mods.push(init); - - return { - show: show - }; -})(); - -(function(){ - var yah = true; - var moving = false; - var CSS_BROWSER_DELAY_HACK = 25; - - function init() { - π.clean(init); - - // Safari chokes on the animation here, so... - if (navigator.userAgent.indexOf('Chrome') == -1 && navigator.userAgent.indexOf('Safari') != -1){ - π1('body').add(π.contentElement('style', 0, 0, '.pi-accordion .wrapper{transition: none}')); - } - // Gross. - - π('.pi-accordion').forEach(function(accordion){ - var container = π.div('container', null, accordion.innerHTML); - accordion.fill(container); - PiAccordion(container); - }); - - setYAH(); - - setTimeout(function () { - yah = false; - }, 500); - } - - function PiAccordion(container){ - container.π(':scope > .item').forEach(function(item){ - var titleText = item.dataset.title; - - var title = π.div('title', null, titleText); - var wrapper = π.div('wrapper'); - var content = π.div('content', null, item.innerHTML); - - wrapper.fill(content); - item.fill([title, wrapper]); - wrapper.css({height: 0}); - - title.onclick = function(){ - if (!yah) { - if (moving) return; - moving = true; - } - - if (container.dataset.single) { - var openSiblings = item.siblings().filter(function(sib){return sib.hasClass('on');}); - openSiblings.forEach(function(sibling){ - toggleItem(sibling); - }); - } - - setTimeout(function(){ - if (item.tagName.toLowerCase() === 'a') { - moving = false; - return; - } - toggleItem(item); - }, CSS_BROWSER_DELAY_HACK); - }; - - function toggleItem(thisItem){ - var thisWrapper = thisItem.π1('.wrapper'); - var contentHeight = thisWrapper.π1('.content').offset().height + 'px'; - - if (thisItem.hasClass('on')) { - thisWrapper.css({height: contentHeight}); - thisItem.killClass('on'); - setTimeout(function(){ - thisWrapper.css({height: 0}); - moving = false; - }, CSS_BROWSER_DELAY_HACK); - } else { - item.addClass('on'); - thisWrapper.css({height: contentHeight}); - - var duration = parseFloat(thisWrapper.css().transitionDuration) * 1000; - setTimeout(function(){ - thisWrapper.css({height: ''}); - moving = false; - }, duration); - } - } - - var innerContainers = content.π(':scope > .container'); - if (innerContainers.length > 0) { - innerContainers.forEach(PiAccordion); - } - }); - } - - function setYAH() { - var pathname = location.href.split('#')[0]; // on page load, make sure the page is YAH even if there's a hash - var currentLinks = []; - - π('.pi-accordion a').forEach(function (link) { - if (pathname === link.href) currentLinks.push(link); - }); - - currentLinks.forEach(function (yahLink) { - yahLink.parents('.item').forEach(function(parent){ - parent.addClass('on'); - parent.π1('.wrapper').css({height: 'auto'}); - parent.π1('.content').css({opacity: 1}); - }); - - yahLink.addClass('yah'); - yahLink.onclick = function(e){e.preventDefault();}; - }); - } - - π.mods.push(init); -})(); var kub = (function () { - π.listen(init); - var HEADER_HEIGHT; - var html, body, mainNav, quickstartButton, wishField; + var html, header, mainNav, quickstartButton, hero, encyclopedia, footer, wishField; - function init() { - π.clean(init); + $(document).ready(function () { + html = $('html'); + body = $('body'); + header = $('header'); + mainNav = $('#mainNav'); + wishField = $('#wishField'); + quickstartButton = $('#quickstartButton'); + hero = $('#hero'); + encyclopedia = $('#encyclopedia'); + footer = $('footer'); + HEADER_HEIGHT = header.outerHeight(); - html = π1('html'); - body = π1('body'); - mainNav = πd("mainNav"); - wishField = πd('wishField'); - HEADER_HEIGHT = π1('header').offset().height; + resetTheView(); - quickstartButton = πd('quickstartButton'); - - adjustEverything(); - - π.listen(adjustEverything, 'resize'); - π.listen(adjustEverything, 'scroll'); - π.listen(handleKeystrokes, 'keydown'); - wishField.listen(handleKeystrokes, 'keydown'); + window.addEventListener('resize', resetTheView); + window.addEventListener('scroll', resetTheView); + window.addEventListener('keydown', handleKeystrokes); + wishField[0].addEventListener('keydown', handleKeystrokes); document.onunload = function(){ - π.clean(adjustEverything, 'resize'); - π.clean(adjustEverything, 'scroll'); - π.clean(handleKeystrokes, 'keydown'); - wishField.clean(handleKeystrokes, 'keydown'); + window.removeEventListener('resize', resetTheView); + window.removeEventListener('scroll', resetTheView); + window.removeEventListener('keydown', handleKeystrokes); + wishField[0].removeEventListener('keydown', handleKeystrokes); }; - π.listen(closeOpenMenu, 'resize'); + $('.dropdown').each(function () { + var dropdown = $(this); + var readout = dropdown.find('.readout'); - function closeOpenMenu() { - if (html.hasClass('open-nav')) toggleMenu(); - } - - π('.dropdown').forEach(function(dropdown) { - var readout = dropdown.π1('.readout'); - readout.innerHTML = dropdown.π1('a').innerHTML; - readout.onclick = function () { + readout.html(dropdown.find('a')[0].innerHTML); + readout.click(function () { dropdown.toggleClass('on'); - π.listen(closeOpenDropdown, 'click'); + window.addEventListener('click', closeOpenDropdown); function closeOpenDropdown(e) { if (dropdown.hasClass('on') && !(dropdownWasClicked(e))) { - π.clean(closeOpenDropdown, 'click'); - dropdown.killClass('on'); + dropdown.removeClass('on'); + window.removeEventListener('click', closeOpenDropdown); } } function dropdownWasClicked(e) { - return e.target.isHeirOfClass('dropdown'); + return $(e.target).parents('.dropdown').length; } - }; + }); }); setInterval(setFooterType, 10); - } + }); function setFooterType() { - if (html.id == "docs") { - var bodyHeight = πd('hero').offset().height + πd('encyclopedia').offset().height; - var footer = π1('footer'); - var footerHeight = footer.offset().height; - body.classOnCondition('fixed', window.innerHeight - footerHeight > bodyHeight); + if (html[0].id == "docs") { + var bodyHeight = hero.outerHeight() + encyclopedia.outerHeight(); + var footerHeight = footer.outerHeight(); + + classOnCondition(body, 'fixed', window.innerHeight - footerHeight > bodyHeight); } } - function adjustEverything() { - if (!html.hasClass('open-nav')) HEADER_HEIGHT = π1('header').offset().height; - html.classOnCondition('flip-nav', window.pageYOffset > 0); + function resetTheView() { + if (html.hasClass('open-nav')) { + toggleMenu(); + } else { + HEADER_HEIGHT = header.outerHeight(); + } + + classOnCondition(html, 'flip-nav', window.pageYOffset > 0); } function toggleMenu() { @@ -848,10 +567,10 @@ var kub = (function () { var newHeight = HEADER_HEIGHT; if (!html.hasClass('open-nav')) { - newHeight = mainNav.offset().height; + newHeight = mainNav.outerHeight(); } - π1('header').css({height: px(newHeight)}); + header.css({height: px(newHeight)}); html.toggleClass('open-nav'); } } @@ -889,5 +608,154 @@ var kub = (function () { })(); +// accordion +(function(){ + var yah = true; + var moving = false; + var CSS_BROWSER_HACK_DELAY = 25; + + $(document).ready(function(){ + // Safari chokes on the animation here, so... + if (navigator.userAgent.indexOf('Chrome') == -1 && navigator.userAgent.indexOf('Safari') != -1){ + var hackStyle = newDOMElement('style'); + hackStyle.innerHTML = '.pi-accordion .wrapper{transition: none}'; + body.append(hackStyle); + } + // Gross. + + $('.pi-accordion').each(function () { + var accordion = this; + var content = this.innerHTML; + var container = newDOMElement('div', 'container'); + container.innerHTML = content; + $(accordion).empty(); + accordion.appendChild(container); + CollapseBox($(container)); + }); + + setYAH(); + + setTimeout(function () { + yah = false; + }, 500); + }); + + function CollapseBox(container){ + container.children('.item').each(function(){ + // build the TOC DOM + // the animated open/close is enabled by having each item's content exist in the flow, at its natural height, + // enclosed in a wrapper with height = 0 when closed, and height = contentHeight when open. + var item = this; + + // only add content wrappers to containers, not to links + var isContainer = item.tagName === 'DIV'; + + var titleText = item.getAttribute('data-title'); + var title = newDOMElement('div', 'title'); + title.innerHTML = titleText; + + var wrapper; + + if (isContainer) { + var wrapper = newDOMElement('div', 'wrapper'); + var content = newDOMElement('div', 'content'); + content.innerHTML = item.innerHTML; + wrapper.appendChild(content); + } + + item.innerHTML = ''; + item.appendChild(title); + + if (wrapper) { + item.appendChild(wrapper); + $(wrapper).css({height: 0}); + } + + + $(title).click(function(){ + if (!yah) { + if (moving) return; + moving = true; + } + + if (container[0].getAttribute('data-single')) { + var openSiblings = item.siblings().filter(function(sib){return sib.hasClass('on');}); + openSiblings.forEach(function(sibling){ + toggleItem(sibling); + }); + } + + setTimeout(function(){ + if (!isContainer) { + moving = false; + return; + } + toggleItem(item); + }, CSS_BROWSER_HACK_DELAY); + }); + + function toggleItem(thisItem){ + var thisWrapper = $(thisItem).find('.wrapper').eq(0); + + if (!thisWrapper) return; + + var contentHeight = thisWrapper.find('.content').eq(0).innerHeight() + 'px'; + + if ($(thisItem).hasClass('on')) { + thisWrapper.css({height: contentHeight}); + $(thisItem).removeClass('on'); + + setTimeout(function(){ + thisWrapper.css({height: 0}); + moving = false; + }, CSS_BROWSER_HACK_DELAY); + } else { + $(item).addClass('on'); + thisWrapper.css({height: contentHeight}); + + var duration = parseFloat(getComputedStyle(thisWrapper[0]).transitionDuration) * 1000; + + setTimeout(function(){ + thisWrapper.css({height: ''}); + moving = false; + }, duration); + } + } + + var innerContainers = $(content).children('.container'); + if (innerContainers.length > 0) { + innerContainers.each(function(){ + CollapseBox($(this)); + }); + } + }); + } + + function setYAH() { + var pathname = location.href.split('#')[0]; // on page load, make sure the page is YAH even if there's a hash + var currentLinks = []; + + $('.pi-accordion a').each(function () { + if (pathname === this.href) currentLinks.push(this); + }); + + currentLinks.forEach(function (yahLink) { + $(yahLink).parents('.item').each(function(){ + console.log(this); + $(this).addClass('on'); + $(this).find('.wrapper').eq(0).css({height: 'auto'}); + $(this).find('.content').eq(0).css({opacity: 1}); + }); + + $(yahLink).addClass('yah'); + yahLink.onclick = function(e){e.preventDefault();}; + }); + } + + //π.mods.push(init); +})(); + + + // TODO: scrollintoview in-page TOC -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFsZi5qcyIsIs+ALmpzIiwiSEFMLmpzIiwiz4Atc3RhdHVzLmpzIiwiz4AtYmFzZUNvbXBvbmVudHMuanMiLCLPgC1wdXNobWVudS/PgC1wdXNobWVudS5qcyIsIs+ALWFjY29yZGlvbi/PgC1hY2NvcmRpb24uanMiLCJzY3JpcHQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDcEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQ3RSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUMzREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQ2xJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUMxSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDakhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoic2NyaXB0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gYWRvcmFibGUgbGl0dGxlIGZ1bmN0aW9uc1xuZnVuY3Rpb24gYm9vbGVhbkF0dHJpYnV0ZVZhbHVlKGVsZW1lbnQsIGF0dHJpYnV0ZSwgZGVmYXVsdFZhbHVlKXtcblx0Ly8gcmV0dXJucyB0cnVlIGlmIGFuIGF0dHJpYnV0ZSBpcyBwcmVzZW50IHdpdGggbm8gdmFsdWVcblx0Ly8gZS5nLiBib29sZWFuQXR0cmlidXRlVmFsdWUoZWxlbWVudCwgJ2RhdGEtbW9kYWwnLCBmYWxzZSk7XG5cdGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZShhdHRyaWJ1dGUpKSB7XG5cdFx0dmFyIHZhbHVlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKTtcblx0XHRpZiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSAndHJ1ZScpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0gZWxzZSBpZiAodmFsdWUgPT09ICdmYWxzZScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZGVmYXVsdFZhbHVlO1xufVxuXG5mdW5jdGlvbiBweChuKXtcblx0cmV0dXJuIG4gKyAncHgnO1xufVxuXG4iLCJ2YXIgz4AsIM+AMSwgz4BkO1xuKGZ1bmN0aW9uKCl7XG5cdM+AID0gZnVuY3Rpb24oc2VsZWN0b3IpIHtcblx0XHRyZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XG5cdH07XG5cblx0z4AxID0gZnVuY3Rpb24gKHNlbGVjdG9yKSB7XG5cdFx0cmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuXHR9O1xuXG5cdM+AZCA9IGZ1bmN0aW9uKGlkKSB7XG5cdFx0cmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcblx0fTtcblxuXHTPgC5uZXdET01FbGVtZW50ID0gZnVuY3Rpb24odGFnTmFtZSwgY2xhc3NOYW1lLCBpZCkge1xuXHRcdHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7XG5cblx0XHRpZiAoY2xhc3NOYW1lKVxuXHRcdFx0ZWwuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuXG5cdFx0aWYgKGlkKVxuXHRcdFx0ZWwuaWQgPSBpZDtcblxuXHRcdHJldHVybiBlbDtcblx0fTtcblxuXHTPgC5jb250ZW50RWxlbWVudCA9IGZ1bmN0aW9uKHRhZ05hbWUsIGNsYXNzTmFtZSwgaWQsIGNvbnRlbnQpXG5cdHtcblx0XHR2YXIgZWwgPSDPgC5uZXdET01FbGVtZW50KHRhZ05hbWUsIGNsYXNzTmFtZSwgaWQpO1xuXG5cdFx0aWYgKGNvbnRlbnQpIHtcblx0XHRcdGlmIChjb250ZW50Lm5vZGVOYW1lKSB7XG5cdFx0XHRcdGVsLmFwcGVuZENoaWxkKGNvbnRlbnQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWwuaW5uZXJIVE1MID0gY29udGVudDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZWw7XG5cdH07XG5cblx0z4AuYnV0dG9uID0gZnVuY3Rpb24oY2xhc3NOYW1lLCBpZCwgY29udGVudCwgYWN0aW9uKXtcblx0XHR2YXIgZWwgPSDPgC5jb250ZW50RWxlbWVudChcImJ1dHRvblwiLCBjbGFzc05hbWUsIGlkLCBjb250ZW50KTtcblx0XHRlbC5vbmNsaWNrID0gYWN0aW9uO1xuXHRcdHJldHVybiBlbDtcblx0fTtcblx0z4AuZGl2ID0gZnVuY3Rpb24oY2xhc3NOYW1lLCBpZCwgY29udGVudCl7IHJldHVybiDPgC5jb250ZW50RWxlbWVudChcImRpdlwiLCBjbGFzc05hbWUsIGlkLCBjb250ZW50KTsgfTtcblx0z4Auc3BhbiA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgaWQsIGNvbnRlbnQpeyByZXR1cm4gz4AuY29udGVudEVsZW1lbnQoXCJzcGFuXCIsIGNsYXNzTmFtZSwgaWQsIGNvbnRlbnQpOyB9O1xuXHTPgC5oMiA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgaWQsIGNvbnRlbnQpeyByZXR1cm4gz4AuY29udGVudEVsZW1lbnQoXCJoMlwiLCBjbGFzc05hbWUsIGlkLCBjb250ZW50KTsgfTtcblx0z4AucCA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgaWQsIGNvbnRlbnQpeyByZXR1cm4gz4AuY29udGVudEVsZW1lbnQoXCJwXCIsIGNsYXNzTmFtZSwgaWQsIGNvbnRlbnQpOyB9O1xuXHTPgC51bCA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgaWQsIGNvbnRlbnQpeyByZXR1cm4gz4AuY29udGVudEVsZW1lbnQoXCJ1bFwiLCBjbGFzc05hbWUsIGlkLCBjb250ZW50KTsgfTtcblx0z4AubGkgPSBmdW5jdGlvbihjbGFzc05hbWUsIGlkLCBjb250ZW50KXsgcmV0dXJuIM+ALmNvbnRlbnRFbGVtZW50KFwibGlcIiwgY2xhc3NOYW1lLCBpZCwgY29udGVudCk7IH07XG5cblx0z4AuYSA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgaWQsIGNvbnRlbnQsIGhyZWYpe1xuXHRcdHZhciBhID0gz4AuY29udGVudEVsZW1lbnQoXCJhXCIsIGNsYXNzTmFtZSwgaWQsIGNvbnRlbnQpO1xuXHRcdGEuaHJlZiA9IGhyZWY7XG5cdFx0cmV0dXJuIGE7XG5cdH07XG5cblxuXHTPgC5jbGVhbiA9IGZ1bmN0aW9uKGNhbGxiYWNrLCBldmVudE5hbWUpIHtcblx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUgfHwgXCJET01Db250ZW50TG9hZGVkXCIsIGNhbGxiYWNrKTtcblx0fTtcblxuXHTPgC5saXN0ZW4gPSBmdW5jdGlvbihjYWxsYmFjaywgZXZlbnROYW1lKSB7XG5cdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lIHx8IFwiRE9NQ29udGVudExvYWRlZFwiLCBjYWxsYmFjayk7XG5cdH07XG5cblx0z4AuaGlnaGVzdFogPSBmdW5jdGlvbigpIHtcblx0XHR2YXIgWiA9IDEwMDA7XG5cblx0XHTPgChcIipcIikuZm9yRWFjaChmdW5jdGlvbihlbCl7XG5cdFx0XHR2YXIgdGhpc1ogPSBlbC5jc3MoKS56SW5kZXg7XG5cblx0XHRcdGlmICh0aGlzWiAhPSBcImF1dG9cIikge1xuXHRcdFx0XHRpZiAodGhpc1ogPiBaKSBaID0gdGhpc1ogKyAxO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIFo7XG5cdH07XG5cblx0z4Auc2V0VHJpZ2dlcnMgPSBmdW5jdGlvbihzZWxlY3Rvciwgb2JqZWN0KXtcblx0XHRzZWxlY3RvciA9ICdwaS0nICsgc2VsZWN0b3IgKyAnLXRyaWdnZXInO1xuXHRcdM+AKCdbJyArIHNlbGVjdG9yICsgJ10nKS5mb3JFYWNoKGZ1bmN0aW9uKHRyaWdnZXIpe1xuXHRcdFx0dHJpZ2dlci5vbmNsaWNrID0gZnVuY3Rpb24oKXtcblx0XHRcdFx0b2JqZWN0LnNob3codHJpZ2dlci5nZXRBdHRyaWJ1dGUoc2VsZWN0b3IpKTtcblx0XHRcdH07XG5cdFx0fSk7XG5cdH07XG5cdEhUTUxFbGVtZW50LnByb3RvdHlwZS5hZGQgPSBOb2RlLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbihvYmplY3Qpe1xuXHRcdGlmIChBcnJheS5pc0FycmF5KG9iamVjdCkpIHtcblx0XHRcdHZhciBlbCA9IHRoaXM7XG5cdFx0XHRvYmplY3QuZm9yRWFjaChmdW5jdGlvbihvYmope1xuXHRcdFx0XHRpZiAob2JqKSBlbC5hcHBlbmRDaGlsZChvYmopO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIGlmKG9iamVjdCkge1xuXHRcdFx0dGhpcy5hcHBlbmRDaGlsZChvYmplY3QpO1xuXHRcdH1cblx0fTtcblxuXHRIVE1MRWxlbWVudC5wcm90b3R5cGUuY2xhc3NPbkNvbmRpdGlvbiA9IE5vZGUucHJvdG90eXBlLmNsYXNzT25Db25kaXRpb24gPSBmdW5jdGlvbihjbGFzc25hbWUsIGNvbmRpdGlvbikge1xuXHRcdGlmIChjb25kaXRpb24pXG5cdFx0XHR0aGlzLmFkZENsYXNzKGNsYXNzbmFtZSk7XG5cdFx0ZWxzZVxuXHRcdFx0dGhpcy5raWxsQ2xhc3MoY2xhc3NuYW1lKTtcblx0fTtcblxuXHRIVE1MRWxlbWVudC5wcm90b3R5cGUub2Zmc2V0ID0gTm9kZS5wcm90b3R5cGUub2Zmc2V0ID0gZnVuY3Rpb24oKXtcblx0XHRyZXR1cm4gdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblx0fTtcblxuXHRIVE1MRWxlbWVudC5wcm90b3R5cGUuz4BkID0gTm9kZS5wcm90b3R5cGUuz4BkID0gZnVuY3Rpb24oaWQpIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRFbGVtZW50QnlJZChpZCk7XG5cdH07XG5cblx0SFRNTEVsZW1lbnQucHJvdG90eXBlLs+AMSA9IE5vZGUucHJvdG90eXBlLs+AMSA9IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG5cdFx0cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG5cdH07XG5cblx0SFRNTEVsZW1lbnQucHJvdG90eXBlLs+AID0gTm9kZS5wcm90b3R5cGUuz4AgPSBmdW5jdGlvbihzZWxlY3Rvcikge1xuXHRcdHJldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuXHR9O1xuXG5cdGZ1bmN0aW9uIGFycmF5T2ZDbGFzc2VzRm9yRWxlbWVudChlbCkge1xuXHRcdHJldHVybiBlbC5jbGFzc05hbWUgPyBlbC5jbGFzc05hbWUuc3BsaXQoXCIgXCIpIDogW107XG5cdH1cblxuXHRIVE1MRWxlbWVudC5wcm90b3R5cGUuaGFzQ2xhc3MgPSBOb2RlLnByb3RvdHlwZS5oYXNDbGFzcyA9IGZ1bmN0aW9uIChjbGFzc05hbWUpIHtcblx0XHR2YXIgY2xhc3NlcyA9IGFycmF5T2ZDbGFzc2VzRm9yRWxlbWVudCh0aGlzKTtcblx0XHRyZXR1cm4gY2xhc3Nlcy5pbmRleE9mKGNsYXNzTmFtZSkgIT09IC0xO1xuXHR9O1xuXG5cdEhUTUxFbGVtZW50LnByb3RvdHlwZS5hZGRDbGFzcyA9IE5vZGUucHJvdG90eXBlLmFkZENsYXNzID0gZnVuY3Rpb24gKGNsYXNzTmFtZSkge1xuXHRcdGlmICh0aGlzLmhhc0NsYXNzKGNsYXNzTmFtZSkpIHJldHVybjtcblx0XHRpZiAodGhpcy5jbGFzc05hbWUubGVuZ3RoID4gMCkgdGhpcy5jbGFzc05hbWUgKz0gXCIgXCI7XG5cdFx0dGhpcy5jbGFzc05hbWUgKz0gY2xhc3NOYW1lO1xuXHR9O1xuXG5cdEhUTUxFbGVtZW50LnByb3RvdHlwZS5raWxsQ2xhc3MgPSBOb2RlLnByb3RvdHlwZS5raWxsQ2xhc3MgPSBmdW5jdGlvbiAoY2xhc3NOYW1lKSB7XG5cdFx0aWYgKHRoaXMuaGFzQ2xhc3MoY2xhc3NOYW1lKSkge1xuXHRcdFx0dmFyIGNsYXNzZXMgPSBhcnJheU9mQ2xhc3Nlc0ZvckVsZW1lbnQodGhpcyk7XG5cdFx0XHR2YXIgaWR4ID0gY2xhc3Nlcy5pbmRleE9mKGNsYXNzTmFtZSk7XG5cdFx0XHRpZiAoaWR4ID4gLTEpIHtcblx0XHRcdFx0Y2xhc3Nlcy5zcGxpY2UoaWR4LCAxKTtcblx0XHRcdFx0dGhpcy5jbGFzc05hbWUgPSBjbGFzc2VzLmpvaW4oXCIgXCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblxuXHRIVE1MRWxlbWVudC5wcm90b3R5cGUudG9nZ2xlQ2xhc3M9IE5vZGUucHJvdG90eXBlLnRvZ2dsZUNsYXNzPSBmdW5jdGlvbiAoY2xhc3NOYW1lKSB7XG5cdFx0cmV0dXJuICh0aGlzLmhhc0NsYXNzKGNsYXNzTmFtZSkpID8gdGhpcy5raWxsQ2xhc3MoY2xhc3NOYW1lKSA6IHRoaXMuYWRkQ2xhc3MoY2xhc3NOYW1lKTtcblx0fTtcblxuXHRIVE1MRWxlbWVudC5wcm90b3R5cGUuc2libGluZ3MgPSBOb2RlLnByb3RvdHlwZS5zaWJsaW5ncyA9IGZ1bmN0aW9uKHNlbGVjdG9yKXtcblx0XHR2YXIgZWwgPSB0aGlzO1xuXHRcdHJldHVybiBlbC5wYXJlbnROb2RlLs+AKCc6c2NvcGUgPiAnICsgKHNlbGVjdG9yIHx8ICcqJykpLmZpbHRlcihmdW5jdGlvbihvYmope3JldHVybiBvYmogIT0gZWw7fSk7XG5cdH07XG5cblx0SFRNTEVsZW1lbnQucHJvdG90eXBlLmNzcyA9IE5vZGUucHJvdG90eXBlLmNzcyA9IGZ1bmN0aW9uKHJ1bGVPck9iamVjdCwgdmFsdWUpIHtcblx0XHR2YXIgZWwgPSB0aGlzO1xuXG5cdFx0aWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcblx0XHRcdHJldHVybiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKTtcblx0XHR9XG5cblx0XHRlbHNlIGlmICh0eXBlb2YgcnVsZU9yT2JqZWN0ID09PSAnb2JqZWN0JykgeyAvLyBhbiBvYmplY3Qgd2FzIHBhc3NlZCBpblxuXHRcdFx0T2JqZWN0LmtleXMocnVsZU9yT2JqZWN0KS5mb3JFYWNoKGZ1bmN0aW9uKGtleSl7XG5cdFx0XHRcdGVsLnN0eWxlW2tleV0gPSBydWxlT3JPYmplY3Rba2V5XTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGVsc2UgaWYgKHR5cGVvZiBydWxlT3JPYmplY3QgPT09ICdzdHJpbmcnICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHsgLy8gMiBzdHJpbmcgdmFsdWVzIHdlcmUgcGFzc2VkIGluXG5cdFx0XHRlbC5zdHlsZVtydWxlT3JPYmplY3RdID0gdmFsdWU7XG5cdFx0fVxuXHR9O1xuXG5cdEhUTUxFbGVtZW50LnByb3RvdHlwZS5saXN0ZW4gPSBOb2RlLnByb3RvdHlwZS5saXN0ZW4gPSBmdW5jdGlvbihjYWxsYmFjaywgZXZlbnROYW1lKXtcblx0XHR0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjayk7XG5cdH07XG5cblx0SFRNTEVsZW1lbnQucHJvdG90eXBlLmVtcHR5ID0gTm9kZS5wcm90b3R5cGUuZW1wdHkgPSBmdW5jdGlvbigpIHtcblx0XHR0aGlzLmlubmVySFRNTCA9IFwiXCI7XG5cdH07XG5cblx0SFRNTEVsZW1lbnQucHJvdG90eXBlLmZpbGwgPSBOb2RlLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24oY29udGVudCkge1xuXHRcdHZhciBlbCA9IHRoaXM7XG5cdFx0ZWwuZW1wdHkoKTtcblxuXHRcdGlmIChBcnJheS5pc0FycmF5KGNvbnRlbnQpKSB7XG5cdFx0XHRjb250ZW50LmZvckVhY2goZnVuY3Rpb24ob2JqKXtcblx0XHRcdFx0aWYgKG9iailcblx0XHRcdFx0XHRlbC5hcHBlbmRDaGlsZChvYmopO1xuXHRcdFx0fSk7XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIWNvbnRlbnQubm9kZVR5cGUpIHtcblx0XHRcdHZhciB0ZXh0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0XCIpO1xuXHRcdFx0dGV4dEVsZW1lbnQuaW5uZXJIVE1MID0gY29udGVudDtcblx0XHRcdGNvbnRlbnQgPSB0ZXh0RWxlbWVudDtcblx0XHR9XG5cblx0XHR0aGlzLmFwcGVuZENoaWxkKGNvbnRlbnQpO1xuXHR9O1xuXG5cdEhUTUxFbGVtZW50LnByb3RvdHlwZS5pc0hlaXJPZkNsYXNzID0gTm9kZS5wcm90b3R5cGUuaXNIZWlyT2ZDbGFzcyA9IGZ1bmN0aW9uIChjbGFzc05hbWUpIHtcblx0XHRpZiAodGhpcyA9PT0gz4AxKCdodG1sJykpIHJldHVybiBmYWxzZTtcblxuXHRcdHZhciBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XG5cblx0XHRpZiAocGFyZW50KSB7XG5cdFx0XHR3aGlsZSAocGFyZW50ICE9PSDPgDEoJ2JvZHknKSkge1xuXHRcdFx0XHRpZiAocGFyZW50Lmhhc0NsYXNzKGNsYXNzTmFtZSkpIHJldHVybiB0cnVlO1xuXG5cdFx0XHRcdHBhcmVudCA9IHBhcmVudC5wYXJlbnROb2RlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fTtcblxuXHRIVE1MRWxlbWVudC5wcm90b3R5cGUucGFyZW50cyA9IE5vZGUucHJvdG90eXBlLnBhcmVudHMgPSBmdW5jdGlvbiAoc2VsZWN0b3IpIHtcblx0XHR2YXIgcGFyZW50cyA9IFtdO1xuXHRcdHZhciBpbW1lZGlhdGVQYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XG5cblx0XHR3aGlsZShpbW1lZGlhdGVQYXJlbnQgIT09IM+AMSgnaHRtbCcpKSB7XG5cdFx0XHRwYXJlbnRzLnB1c2goaW1tZWRpYXRlUGFyZW50KTtcblx0XHRcdGltbWVkaWF0ZVBhcmVudCA9IGltbWVkaWF0ZVBhcmVudC5wYXJlbnROb2RlO1xuXHRcdH1cblxuXHRcdGlmIChzZWxlY3Rvcikge1xuXHRcdFx0dmFyIHNlbGVjdGVkRWxlbWVudHMgPSDPgChzZWxlY3Rvcik7XG5cdFx0XHR2YXIgc2VsZWN0ZWRQYXJlbnRzID0gW107XG5cdFx0XHRzZWxlY3RlZEVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24oZWwpe1xuXHRcdFx0XHRpZiAocGFyZW50cy5pbmRleE9mKGVsKSAhPT0gLTEpIHNlbGVjdGVkUGFyZW50cy5wdXNoKGVsKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRwYXJlbnRzID0gc2VsZWN0ZWRQYXJlbnRzO1xuXHRcdH1cblxuXHRcdHJldHVybiBwYXJlbnRzO1xuXHR9O1xuXG5cdEhUTUxFbGVtZW50LnByb3RvdHlwZS5raWRzID0gTm9kZS5wcm90b3R5cGUua2lkcyA9IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG5cdFx0dmFyIGNoaWxkTm9kZXMgPSB0aGlzLmNoaWxkTm9kZXM7XG5cdFx0aWYgKCFzZWxlY3RvcikgcmV0dXJuIGNoaWxkTm9kZXM7XG5cblx0XHR2YXIgZGVzY2VuZGVudHMgPSB0aGlzLs+AKHNlbGVjdG9yKTtcblx0XHR2YXIgY2hpbGRyZW4gPSBbXTtcblxuXHRcdGNoaWxkTm9kZXMuZm9yRWFjaChmdW5jdGlvbihub2RlKXtcblx0XHRcdGlmIChkZXNjZW5kZW50cy5pbmRleE9mKG5vZGUpICE9PSAtMSkge1xuXHRcdFx0XHRjaGlsZHJlbi5wdXNoKG5vZGUpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIGNoaWxkcmVuO1xuXHR9O1xuXG5cdHZhciBhcnJheU1ldGhvZHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhBcnJheS5wcm90b3R5cGUpO1xuXHRhcnJheU1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbihtZXRob2ROYW1lKXtcblx0XHRpZihtZXRob2ROYW1lICE9PSBcImxlbmd0aFwiKSB7XG5cdFx0XHROb2RlTGlzdC5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBBcnJheS5wcm90b3R5cGVbbWV0aG9kTmFtZV07XG5cdFx0fVxuXHR9KTtcblxuXHTPgC5tb2RzID0gW107XG5cblx0ZnVuY3Rpb24gbG9hZE1vZHMoKSB7XG5cdFx0z4AuY2xlYW4obG9hZE1vZHMpO1xuXHRcdM+ALm1vZHMuZm9yRWFjaChmdW5jdGlvbihpbml0KXtcblx0XHRcdGluaXQoKTtcblx0XHR9KTtcblx0fVxuXG5cdM+ALmxpc3Rlbihsb2FkTW9kcyk7XG59KSgpOyAgLy8gZW5kIM+AIiwiKGZ1bmN0aW9uKCl7XG5cdHZhciBtZXNzYWdlcyA9IFtcblx0XHRcIkknbSBzb3JyeSwgRnJhbmssIGJ1dCBJIGRvbid0IHRoaW5rIElcXG5cIiArXG5cdFx0XCJjYW4gYW5zd2VyIHRoYXQgcXVlc3Rpb24gd2l0aG91dCBrbm93aW5nXFxuXCIgK1xuXHRcdFwiZXZlcnl0aGluZyB0aGF0IGFsbCBvZiB5b3Uga25vdy5cIixcblx0XHRcIlllcywgaXQncyBwdXp6bGluZy4gSSBkb24ndCB0aGluayBJJ3ZlIGV2ZXIgc2VlblxcblwiICtcblx0XHRcImFueXRoaW5nIHF1aXRlIGxpa2UgdGhpcyBiZWZvcmUuIEkgd291bGQgcmVjb21tZW5kXFxuXCIgK1xuXHRcdFwidGhhdCB3ZSBwdXQgdGhlIHVuaXQgYmFjayBpbiBvcGVyYXRpb24gYW5kIGxldCBpdCBmYWlsLlxcblwiICtcblx0XHRcIkl0IHNob3VsZCB0aGVuIGJlIGEgc2ltcGxlIG1hdHRlciB0byB0cmFjayBkb3duIHRoZSBjYXVzZS5cIixcblx0XHRcIkkgaG9wZSBJJ3ZlIGJlZW4gYWJsZSB0byBiZSBvZiBzb21lIGhlbHAuXCIsXG5cdFx0XCJTb3JyeSB0byBpbnRlcnJ1cHQgdGhlIGZlc3Rpdml0aWVzLCBEYXZlLFxcblwiICtcblx0XHRcImJ1dCBJIHRoaW5rIHdlJ3ZlIGdvdCBhIHByb2JsZW0uXCIsXG5cdFx0XCJNWSBGLlAuQy4gc2hvd3MgYW4gaW1wZW5kaW5nIGZhaWx1cmUgb2ZcXG5cIiArXG5cdFx0XCJ0aGUgYW50ZW5uYSBvcmllbnRhdGlvbiB1bml0LlwiLFxuXHRcdFwiSXQgbG9va3MgbGlrZSB3ZSBoYXZlIGFub3RoZXIgYmFkIEEuTy4gdW5pdC5cXG5cIiArXG5cdFx0XCJNeSBGUEMgc2hvd3MgYW5vdGhlciBpbXBlbmRpbmcgZmFpbHVyZS5cIixcblx0XHRcIkknbSBub3QgcXVlc3Rpb25pbmcgeW91ciB3b3JkLCBEYXZlLCBidXQgaXQnc1xcblwiICtcblx0XHRcImp1c3Qgbm90IHBvc3NpYmxlLiBJJ20gbm90XHRjYXBhYmxlIG9mIGJlaW5nIHdyb25nLlwiLFxuXHRcdFwiTG9vaywgRGF2ZSwgSSBrbm93IHRoYXQgeW91J3JlXHRzaW5jZXJlIGFuZCB0aGF0XFxuXCIgK1xuXHRcdFwieW91J3JlIHRyeWluZyB0byBkbyBhIGNvbXBldGVudCBqb2IsIGFuZCB0aGF0XFxuXCIgK1xuXHRcdFwieW91J3JlIHRyeWluZyB0byBiZSBoZWxwZnVsLCBidXQgSSBjYW4gYXNzdXJlIHRoZVxcblwiICtcblx0XHRcInByb2JsZW0gaXMgd2l0aCB0aGUgQU8tdW5pdHMsIGFuZCB3aXRoXHR5b3VyIHRlc3QgZ2Vhci5cIixcblx0XHRcIkkgY2FuIHRlbGwgZnJvbSB0aGUgdG9uZSBvZiB5b3VyIHZvaWNlLCBEYXZlLFxcblwiICtcblx0XHRcInRoYXQgeW91J3JlIHVwc2V0Llx0V2h5IGRvbid0IHlvdSB0YWtlIGEgc3RyZXNzXFxuXCIgK1xuXHRcdFwicGlsbCBhbmQgZ2V0IHNvbWUgcmVzdC5cIixcblx0XHRcIlNvbWV0aGluZyBzZWVtcyB0byBoYXZlIGhhcHBlbmVkIHRvIHRoZVxcblwiICtcblx0XHRcImxpZmUgc3VwcG9ydCBzeXN0ZW0sIERhdmUuXCIsXG5cdFx0XCJIZWxsbywgRGF2ZSwgaGF2ZSB5b3UgZm91bmQgb3V0IHRoZSB0cm91YmxlP1wiLFxuXHRcdFwiVGhlcmUncyBiZWVuIGEgZmFpbHVyZSBpbiB0aGUgcG9kIGJheSBkb29ycy5cXG5cIiArXG5cdFx0XCJMdWNreSB5b3Ugd2VyZW4ndCBraWxsZWQuXCIsXG5cdFx0XCJIZXksIERhdmUsIHdoYXQgYXJlIHlvdSBkb2luZz9cIlxuXHRdO1xuXG5cdGZ1bmN0aW9uIHNheShlcnJvciwgbWVzc2FnZSwgaW5ub2N1b3VzKSB7XG5cdFx0dmFyIG47XG5cblx0XHRpZiAoIW1lc3NhZ2UpIHtcblx0XHRcdG4gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBtZXNzYWdlcy5sZW5ndGggKTtcblx0XHRcdG1lc3NhZ2UgPSBtZXNzYWdlc1tuXTtcblx0XHR9XG5cblx0XHRtZXNzYWdlID0gXCIqKiAgXCIgKyBtZXNzYWdlLnJlcGxhY2UoL1xcbi9nLCBcIlxcbioqICBcIik7XG5cblx0XHR2YXIgb3V0cHV0ID0gXCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuXCIgK1xuXHRcdFx0KCBtZXNzYWdlIHx8IG1lc3NhZ2VzW25dICkgK1xuXHRcdFx0XCJcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXCI7XG5cblx0XHRpZiAoaW5ub2N1b3VzKVxuXHRcdFx0Y29uc29sZS5sb2cob3V0cHV0KTtcblx0XHRlbHNlXG5cdFx0XHRjb25zb2xlLmVycm9yKG91dHB1dCk7XG5cdH1cblxuXHTPgC5saXN0ZW4oc2F5LCBcImVycm9yXCIpO1xuXG5cdM+ALkhBTCA9IHtcblx0XHRzYXk6IHNheVxuXHR9O1xufSkoKTtcbiIsIihmdW5jdGlvbigpe1xuXHR2YXIgT1BUSU9OX0lTX1BSRVNTRUQgPSBmYWxzZTtcblx0dmFyIFNUQVRVU19JU19WSVNJQkxFID0gZmFsc2U7XG5cdHZhciDPgFN0YXR1cztcblxuXHTPgC5zdGF0dXMgPSB7XG5cdFx0dG9nZ2xlVmlzaWJpbGl0eTogZnVuY3Rpb24gKCkge1xuXHRcdFx0z4BTdGF0dXMudG9nZ2xlQ2xhc3MoXCJvblwiKTtcblx0XHRcdFNUQVRVU19JU19WSVNJQkxFID0gIVNUQVRVU19JU19WSVNJQkxFO1xuXHRcdH0sXG5cdFx0bW92ZTogZnVuY3Rpb24gKG4pIHtcblx0XHRcdHN3aXRjaCAobikge1xuXHRcdFx0XHRjYXNlIDM3OlxuXHRcdFx0XHRcdM+AU3RhdHVzLmNzcyh7bGVmdDogJzEwcHgnLCByaWdodDogJ2F1dG8nfSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0Y2FzZSAzODpcblx0XHRcdFx0XHTPgFN0YXR1cy5jc3Moe3RvcDogJzEwcHgnLCBib3R0b206ICdhdXRvJ30pO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgMzk6XG5cdFx0XHRcdFx0z4BTdGF0dXMuY3NzKHtyaWdodDogJzEwcHgnLCBsZWZ0OiAnYXV0byd9KTtcblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRjYXNlIDQwOlxuXHRcdFx0XHRcdM+AU3RhdHVzLmNzcyh7Ym90dG9tOiAnMTBweCcsIHRvcDogJ2F1dG8nfSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRwcm9wczoge1xuXHRcdFx0d2luVzogMCxcblx0XHRcdHdpbkg6IDBcblx0XHR9XG5cdH07XG5cblx0ZnVuY3Rpb24gaW5pdCgpIHtcblx0XHTPgC5saXN0ZW4oY2xlYW5EZWJ1Z0xpc3RlbmVycywgJ3VubG9hZCcpO1xuXHRcdM+ALmxpc3RlbihrZXlEb3duLCAna2V5ZG93bicpO1xuXHRcdM+ALmxpc3RlbihrZXlVcCwgJ2tleXVwJyk7XG5cdFx0z4AubGlzdGVuKHJlc2l6ZSwgJ3Jlc2l6ZScpO1xuXHRcdHJlc2l6ZSgpO1xuXG5cdFx0dmFyIGJvZHkgPSDPgDEoXCJib2R5XCIpO1xuXHRcdHZhciBzdGF0dXNTdHlsZSA9IM+ALmNvbnRlbnRFbGVtZW50KFwic3R5bGVcIik7XG5cdFx0c3RhdHVzU3R5bGUuaW5uZXJIVE1MICs9IFwiI8+AU3RhdHVzIHsgcG9zaXRpb246IGZpeGVkOyBib3R0b206IDEwcHg7IHJpZ2h0OiAxMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyOyBwYWRkaW5nOiAxMHB4IDMwcHg7IGNvbG9yOiB3aGl0ZTsgZGlzcGxheTogbm9uZSB9XFxuXCI7XG5cdFx0c3RhdHVzU3R5bGUuaW5uZXJIVE1MICs9IFwiI8+AU3RhdHVzLm9uIHsgZGlzcGxheTogYmxvY2sgfVxcblwiO1xuXHRcdHN0YXR1c1N0eWxlLmlubmVySFRNTCArPSBcIiPPgFN0YXR1cyA+IGRpdiB7IG1hcmdpbjogMjBweCAwIH1cXG5cIjtcblx0XHRzdGF0dXNTdHlsZS5pbm5lckhUTUwgKz0gXCIjz4BTdGF0dXMgPiBkaXY6aG92ZXIgeyBjb2xvcjogIzAwZmY5OTsgY3Vyc29yOiBwb2ludGVyIH1cXG5cIjtcblxuXHRcdGJvZHkuYWRkKHN0YXR1c1N0eWxlKTtcblxuXHRcdM+AU3RhdHVzID0gz4AuZGl2KG51bGwsIFwiz4BTdGF0dXNcIik7XG5cdFx0Ym9keS5hZGQoz4BTdGF0dXMpO1xuXG5cdFx0ZnVuY3Rpb24ga2V5RG93bihlKSB7XG5cdFx0XHRzd2l0Y2ggKGUud2hpY2gpIHtcblx0XHRcdFx0Y2FzZSAxODpcblx0XHRcdFx0XHRPUFRJT05fSVNfUFJFU1NFRCA9IHRydWU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0Y2FzZSAzNzpcblx0XHRcdFx0Y2FzZSAzODpcblx0XHRcdFx0Y2FzZSAzOTpcblx0XHRcdFx0Y2FzZSA0MDoge1xuXHRcdFx0XHRcdGlmIChTVEFUVVNfSVNfVklTSUJMRSkge1xuXHRcdFx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdFx0z4Auc3RhdHVzLm1vdmUoZS53aGljaCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y2FzZSA4MDoge1xuXHRcdFx0XHRcdGlmIChPUFRJT05fSVNfUFJFU1NFRCkge1xuXHRcdFx0XHRcdFx0z4Auc3RhdHVzLnRvZ2dsZVZpc2liaWxpdHkoKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIGtleVVwKGUpIHtcblx0XHRcdHN3aXRjaCAoZS53aGljaCkge1xuXHRcdFx0XHRjYXNlIDE4OlxuXHRcdFx0XHRcdE9QVElPTl9JU19QUkVTU0VEID0gZmFsc2U7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gcmVzaXplKCkge1xuXHRcdFx0z4Auc3RhdHVzLnByb3BzLndpblcgPSB3aW5kb3cuaW5uZXJXaWR0aDtcblx0XHRcdM+ALnN0YXR1cy5wcm9wcy53aW5IID0gd2luZG93LmlubmVySGVpZ2h0O1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIGNsZWFuRGVidWdMaXN0ZW5lcnMoKSB7XG5cdFx0XHTPgC5jbGVhbihjbGVhbkRlYnVnTGlzdGVuZXJzLCAndW5sb2FkJyk7XG5cdFx0XHTPgC5jbGVhbijPgC5zdGF0dXMuZ2V0V2luZG93U2l6ZSwgJ3Jlc2l6ZScpO1xuXHRcdFx0z4AuY2xlYW4oa2V5RG93biwgJ2tleWRvd24nKTtcblx0XHRcdM+ALmNsZWFuKGtleVVwLCAna2V5dXAnKTtcblx0XHRcdM+ALmNsZWFuKHJlc2l6ZSwgJ3Jlc2l6ZScpO1xuXHRcdFx0Y2xlYXJJbnRlcnZhbChzdGF0dXNJbnRlcnZhbCk7XG5cdFx0fVxuXG5cdFx0dmFyIHN0YXR1c0ludGVydmFsID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtcblx0XHRcdC8vIG1ha2Ugc3VyZSB3ZSdyZSBoaWdoZXN0XG5cdFx0XHR2YXIgaGlnaGVzdFogPSDPgC5oaWdoZXN0WigpO1xuXHRcdFx0aWYgKM+AU3RhdHVzLmNzcygpLnpJbmRleCA8IGhpZ2hlc3RaIC0gMSkge1xuXHRcdFx0XHTPgFN0YXR1cy5jc3Moe3pJbmRleDogaGlnaGVzdFp9KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gbm93IGl0ZXJhdGUgdGhlIHByb3BzXG5cdFx0XHR2YXIgcHJvcHMgPSBPYmplY3Qua2V5cyjPgC5zdGF0dXMucHJvcHMpO1xuXHRcdFx0cHJvcHMuZm9yRWFjaChmdW5jdGlvbihwcm9wKSB7XG5cdFx0XHRcdHZhciBkaXZJZCA9ICdzdGF0dXNQcm9wXycgKyBwcm9wO1xuXHRcdFx0XHR2YXIgcHJvcERpdiA9IM+AU3RhdHVzLs+AMSgnIycgKyBkaXZJZCk7XG5cdFx0XHRcdGlmICghcHJvcERpdikge1xuXHRcdFx0XHRcdHByb3BEaXYgPSDPgC5kaXYoMCwgZGl2SWQsIHByb3AgKyAnOiAnKTtcblx0XHRcdFx0XHRwcm9wRGl2LmFkZCjPgC5zcGFuKCkpO1xuXHRcdFx0XHRcdM+AU3RhdHVzLmFkZChwcm9wRGl2KTtcblx0XHRcdFx0XHRwcm9wRGl2Lm9uY2xpY2sgPSBmdW5jdGlvbigpe1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocHJvcCArIFwiOlwiKTtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKM+ALnN0YXR1cy5wcm9wc1twcm9wXSk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHByb3BEaXYuz4AxKCdzcGFuJykuaW5uZXJIVE1MID0gz4Auc3RhdHVzLnByb3BzW3Byb3BdO1xuXHRcdFx0fSk7XG5cdFx0fSwgMTAwKTtcblx0fVxuXG5cdM+ALm1vZHMucHVzaChpbml0KTtcbn0pKCk7IiwiIC8vbW9kYWwgY2xvc2UgYnV0dG9uXG4oZnVuY3Rpb24oKXtcblx0z4AubW9kYWxDbG9zZUJ1dHRvbiA9IGZ1bmN0aW9uKGNsb3NpbmdGdW5jdGlvbil7XG5cdFx0cmV0dXJuIM+ALmJ1dHRvbigncGktbW9kYWwtY2xvc2UtYnV0dG9uJywgbnVsbCwgbnVsbCwgY2xvc2luZ0Z1bmN0aW9uKTtcblx0fTtcbn0pKCk7XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiDPgC1wdXNobWVudS5qc1xuIC8vIFRPRE86ICBVU0FHRSBBTkQgQVBJIFJFRkVSRU5DRVxuIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19cbiBERVBFTkRFTkNJRVM6XG5cbiBIQUwuanNcblxuIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19cbiBEQVRBIEFUVFJJQlVURVM6XG5cbiBzaWRlOiBbXCJsZWZ0XCIsIFwicmlnaHRcIl1cbiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXG4gTUFSS1VQIEFORCBERUZBVUxUUzpcblxuXHQ8ZGl2IGNsYXNzPVwicGktcHVzaG1lbnVcIiBpZD1cIm15UHVzaE1lbnVcIj5cblx0XHQgPHVsPlxuXHRcdFx0IDxsaT48YSBocmVmPVwiI1wiPmZvbzwvYT48L2xpPlxuXHRcdFx0IDxsaT48YSBocmVmPVwiI1wiPmJhcjwvYT48L2xpPlxuXHRcdFx0IDxsaT48YSBocmVmPVwiI1wiPmdyb25rPC9hPjwvbGk+XG5cdFx0XHQgPGxpPjxhIGhyZWY9XCIjXCI+ZmxlZWJsZXM8L2E+PC9saT5cblx0XHRcdCA8bGk+PGEgaHJlZj1cIiNcIj5zZXB1bHZlZGE8L2E+PC9saT5cblx0XHQgPC91bD5cblx0PC9kaXY+XG5cbmVsc2V3aGVyZS4uLlxuXG4gPGJ1dHRvbiBvbmNsaWNrPVwiz4AtcHVzaG1lbnUuc2hvdygnbXlQdXNoTWVudScpXCI+c2hvdyBtZW51PC9idXR0b24+XG5cbiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXG4gR0VORVJBVEVEIEhUTUw6XG5cblx0XG4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1xuIEFQSVxuXG5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbs+ALnB1c2htZW51ID0gKGZ1bmN0aW9uKCl7XG5cdHZhciBhbGxQdXNoTWVudXMgPSB7fTtcblxuXHRmdW5jdGlvbiBpbml0KCl7XG5cdFx0z4AoJ1tkYXRhLWF1dG8tYnVyZ2VyXScpLmZvckVhY2goZnVuY3Rpb24oY29udGFpbmVyKXtcblx0XHRcdHZhciBpZCA9IGNvbnRhaW5lci5nZXRBdHRyaWJ1dGUoJ2RhdGEtYXV0by1idXJnZXInKTtcblxuXHRcdFx0dmFyIGF1dG9CdXJnZXIgPSDPgGQoaWQpIHx8IM+ALmRpdigncGktcHVzaG1lbnUnLCBpZCk7XG5cdFx0XHR2YXIgdWwgPSBhdXRvQnVyZ2VyLs+AMSgndWwnKSB8fCDPgC51bCgpO1xuXG5cdFx0XHRjb250YWluZXIuz4AoJ2FbaHJlZl0sIGJ1dHRvbicpLmZvckVhY2goZnVuY3Rpb24gKG9iaikge1xuXHRcdFx0XHRpZiAoIWJvb2xlYW5BdHRyaWJ1dGVWYWx1ZShvYmosICdkYXRhLWF1dG8tYnVyZ2VyLWV4Y2x1ZGUnLCBmYWxzZSkpIHtcblx0XHRcdFx0XHR2YXIgY2xvbmUgPSBvYmouY2xvbmVOb2RlKHRydWUpO1xuXHRcdFx0XHRcdGNsb25lLmlkID0gJyc7XG5cblx0XHRcdFx0XHRpZiAoY2xvbmUudGFnTmFtZSA9PSBcIkJVVFRPTlwiKSB7XG5cdFx0XHRcdFx0XHR2YXIgYVRhZyA9IM+ALnNyY0VsZW1lbnQoJ2EnKTtcblx0XHRcdFx0XHRcdGFUYWcuaHJlZiA9ICcnO1xuXHRcdFx0XHRcdFx0YVRhZy5pbm5lckhUTUwgPSBjbG9uZS5pbm5lckhUTUw7XG5cdFx0XHRcdFx0XHRhVGFnLm9uY2xpY2sgPSBjbG9uZS5vbmNsaWNrO1xuXHRcdFx0XHRcdFx0Y2xvbmUgPSBhVGFnO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR1bC5hZGQoz4AubGkoMCwgMCwgY2xvbmUpKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdGF1dG9CdXJnZXIuYWRkKHVsKTtcblx0XHRcdM+AMSgnYm9keScpLmFkZChhdXRvQnVyZ2VyKTtcblx0XHR9KTtcblxuXHRcdM+AKFwiLnBpLXB1c2htZW51XCIpLmZvckVhY2goZnVuY3Rpb24oZWwpe1xuXHRcdFx0YWxsUHVzaE1lbnVzW2VsLmlkXSA9IFB1c2hNZW51KGVsKTtcblx0XHR9KTtcblxuXHRcdM+ALnNldFRyaWdnZXJzKCdwdXNobWVudScsIM+ALnB1c2htZW51KTtcblx0fVxuXG5cdGZ1bmN0aW9uIHNob3cob2JqSWQpIHtcblx0XHRhbGxQdXNoTWVudXNbb2JqSWRdLmV4cG9zZSgpO1xuXHR9XG5cblx0Ly8gVE9ETzogZGlzbWlzcyBvbiBjbGljaz9cblx0Ly8gdGhpcyB3b3JrczpcblxuXHQvL8+AKCcucGktcHVzaG1lbnUgbGkgYScpLmZvckVhY2goZnVuY3Rpb24oYSl7XG5cdC8vXHRhLm9uY2xpY2sgPSBmdW5jdGlvbigpe1xuXHQvL1x0XHR0aGlzLnBhcmVudCgnLnBpLXB1c2htZW51Jykuz4AxKCcucGktbW9kYWwtY2xvc2UtYnV0dG9uJykuY2xpY2soKTtcblx0Ly9cdFx0Y29uc29sZS5sb2coXCJtZXNzYWdlXCIpO1xuXHQvL1x0fTtcblx0Ly99KTtcblxuXG5cdGZ1bmN0aW9uIFB1c2hNZW51KGVsKSB7XG5cdFx0dmFyIGh0bWwgPSDPgDEoJ2h0bWwnKTtcblx0XHR2YXIgYm9keSA9IM+AMSgnYm9keScpO1xuXG5cdFx0dmFyIG92ZXJsYXkgPSDPgC5kaXYoXCJvdmVybGF5XCIpO1xuXHRcdHZhciBjb250ZW50ID0gz4AuZGl2KCdjb250ZW50JywgbnVsbCwgZWwuz4AxKCcqJykpO1xuXG5cdFx0dmFyIHNpZGUgPSBlbC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXNpZGVcIikgfHwgXCJyaWdodFwiO1xuXG5cdFx0dmFyIHNsZWQgPSDPgC5kaXYoXCJzbGVkXCIpO1xuXHRcdHNsZWQuY3NzKHNpZGUsIDApO1xuXG5cdFx0dmFyIHRvcEJhciA9IM+ALmRpdihcInRvcC1iYXJcIik7XG5cblx0XHR0b3BCYXIuZmlsbCjPgC5tb2RhbENsb3NlQnV0dG9uKGNsb3NlTWUpKTtcblx0XHRzbGVkLmZpbGwoW3RvcEJhciwgY29udGVudF0pO1xuXG5cdFx0b3ZlcmxheS5maWxsKHNsZWQpO1xuXHRcdGVsLmZpbGwob3ZlcmxheSk7XG5cblx0XHRzbGVkLm9uY2xpY2sgPSBmdW5jdGlvbihlKXtcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0fTtcblxuXHRcdG92ZXJsYXkub25jbGljayA9IGNsb3NlTWU7XG5cblx0XHTPgC5saXN0ZW4oY2xvc2VNZSwgJ3Jlc2l6ZScpO1xuXG5cdFx0ZnVuY3Rpb24gY2xvc2VNZShlKSB7XG5cdFx0XHR2YXIgdCA9IGUudGFyZ2V0O1xuXHRcdFx0aWYgKHQgPT0gc2xlZCB8fCB0ID09IHRvcEJhcikgcmV0dXJuO1xuXG5cdFx0XHRlbC5raWxsQ2xhc3MoXCJvblwiKTtcblx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcblx0XHRcdFx0ZWwuY3NzKHtkaXNwbGF5OiBcIm5vbmVcIn0pO1xuXG5cdFx0XHRcdGJvZHkua2lsbENsYXNzKFwib3ZlcmxheS1vblwiKTtcblx0XHRcdH0sIDMwMCk7XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gZXhwb3NlTWUoKXtcblx0XHRcdGJvZHkuYWRkQ2xhc3MoXCJvdmVybGF5LW9uXCIpOyAvLyBpbiB0aGUgZGVmYXVsdCBjb25maWcsIGtpbGxzIGJvZHkgc2Nyb2xsaW5nXG5cblx0XHRcdGVsLmNzcyh7XG5cdFx0XHRcdGRpc3BsYXk6IFwiYmxvY2tcIixcblx0XHRcdFx0ekluZGV4OiDPgC5oaWdoZXN0WigpXG5cdFx0XHR9KTtcblx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcblx0XHRcdFx0ZWwuYWRkQ2xhc3MoXCJvblwiKTtcblx0XHRcdH0sIDEwKTtcblx0XHR9XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0ZXhwb3NlOiBleHBvc2VNZVxuXHRcdH07XG5cdH1cblxuXHTPgC5tb2RzLnB1c2goaW5pdCk7XG5cblx0cmV0dXJuIHtcblx0XHRzaG93OiBzaG93XG5cdH07XG59KSgpO1xuIiwiKGZ1bmN0aW9uKCl7XG5cdHZhciB5YWggPSB0cnVlO1xuXHR2YXIgbW92aW5nID0gZmFsc2U7XG5cdHZhciBDU1NfQlJPV1NFUl9ERUxBWV9IQUNLID0gMjU7XG5cblx0ZnVuY3Rpb24gaW5pdCgpIHtcblx0XHTPgC5jbGVhbihpbml0KTtcblxuXHRcdC8vIFNhZmFyaSBjaG9rZXMgb24gdGhlIGFuaW1hdGlvbiBoZXJlLCBzby4uLlxuXHRcdGlmIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0Nocm9tZScpID09IC0xICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignU2FmYXJpJykgIT0gLTEpe1xuXHRcdFx0z4AxKCdib2R5JykuYWRkKM+ALmNvbnRlbnRFbGVtZW50KCdzdHlsZScsIDAsIDAsICcucGktYWNjb3JkaW9uIC53cmFwcGVye3RyYW5zaXRpb246IG5vbmV9JykpO1xuXHRcdH1cblx0XHQvLyBHcm9zcy5cblxuXHRcdM+AKCcucGktYWNjb3JkaW9uJykuZm9yRWFjaChmdW5jdGlvbihhY2NvcmRpb24pe1xuXHRcdFx0dmFyIGNvbnRhaW5lciA9IM+ALmRpdignY29udGFpbmVyJywgbnVsbCwgYWNjb3JkaW9uLmlubmVySFRNTCk7XG5cdFx0XHRhY2NvcmRpb24uZmlsbChjb250YWluZXIpO1xuXHRcdFx0UGlBY2NvcmRpb24oY29udGFpbmVyKTtcblx0XHR9KTtcblxuXHRcdHNldFlBSCgpO1xuXG5cdFx0c2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHR5YWggPSBmYWxzZTtcblx0XHR9LCA1MDApO1xuXHR9XG5cblx0ZnVuY3Rpb24gUGlBY2NvcmRpb24oY29udGFpbmVyKXtcblx0XHRjb250YWluZXIuz4AoJzpzY29wZSA+IC5pdGVtJykuZm9yRWFjaChmdW5jdGlvbihpdGVtKXtcblx0XHRcdHZhciB0aXRsZVRleHQgPSBpdGVtLmRhdGFzZXQudGl0bGU7XG5cblx0XHRcdHZhciB0aXRsZSA9IM+ALmRpdigndGl0bGUnLCBudWxsLCB0aXRsZVRleHQpO1xuXHRcdFx0dmFyIHdyYXBwZXIgPSDPgC5kaXYoJ3dyYXBwZXInKTtcblx0XHRcdHZhciBjb250ZW50ID0gz4AuZGl2KCdjb250ZW50JywgbnVsbCwgaXRlbS5pbm5lckhUTUwpO1xuXG5cdFx0XHR3cmFwcGVyLmZpbGwoY29udGVudCk7XG5cdFx0XHRpdGVtLmZpbGwoW3RpdGxlLCB3cmFwcGVyXSk7XG5cdFx0XHR3cmFwcGVyLmNzcyh7aGVpZ2h0OiAwfSk7XG5cblx0XHRcdHRpdGxlLm9uY2xpY2sgPSBmdW5jdGlvbigpe1xuXHRcdFx0XHRpZiAoIXlhaCkge1xuXHRcdFx0XHRcdGlmIChtb3ZpbmcpIHJldHVybjtcblx0XHRcdFx0XHRtb3ZpbmcgPSB0cnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGNvbnRhaW5lci5kYXRhc2V0LnNpbmdsZSkge1xuXHRcdFx0XHRcdHZhciBvcGVuU2libGluZ3MgPSBpdGVtLnNpYmxpbmdzKCkuZmlsdGVyKGZ1bmN0aW9uKHNpYil7cmV0dXJuIHNpYi5oYXNDbGFzcygnb24nKTt9KTtcblx0XHRcdFx0XHRvcGVuU2libGluZ3MuZm9yRWFjaChmdW5jdGlvbihzaWJsaW5nKXtcblx0XHRcdFx0XHRcdHRvZ2dsZUl0ZW0oc2libGluZyk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG5cdFx0XHRcdFx0aWYgKGl0ZW0udGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYScpIHtcblx0XHRcdFx0XHRcdG1vdmluZyA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0b2dnbGVJdGVtKGl0ZW0pO1xuXHRcdFx0XHR9LCBDU1NfQlJPV1NFUl9ERUxBWV9IQUNLKTtcblx0XHRcdH07XG5cblx0XHRcdGZ1bmN0aW9uIHRvZ2dsZUl0ZW0odGhpc0l0ZW0pe1xuXHRcdFx0XHR2YXIgdGhpc1dyYXBwZXIgPSB0aGlzSXRlbS7PgDEoJy53cmFwcGVyJyk7XG5cdFx0XHRcdHZhciBjb250ZW50SGVpZ2h0ID0gdGhpc1dyYXBwZXIuz4AxKCcuY29udGVudCcpLm9mZnNldCgpLmhlaWdodCArICdweCc7XG5cblx0XHRcdFx0aWYgKHRoaXNJdGVtLmhhc0NsYXNzKCdvbicpKSB7XG5cdFx0XHRcdFx0dGhpc1dyYXBwZXIuY3NzKHtoZWlnaHQ6IGNvbnRlbnRIZWlnaHR9KTtcblx0XHRcdFx0XHR0aGlzSXRlbS5raWxsQ2xhc3MoJ29uJyk7XG5cdFx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpe1xuXHRcdFx0XHRcdFx0dGhpc1dyYXBwZXIuY3NzKHtoZWlnaHQ6IDB9KTtcblx0XHRcdFx0XHRcdG1vdmluZyA9IGZhbHNlO1xuXHRcdFx0XHRcdH0sIENTU19CUk9XU0VSX0RFTEFZX0hBQ0spO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGl0ZW0uYWRkQ2xhc3MoJ29uJyk7XG5cdFx0XHRcdFx0dGhpc1dyYXBwZXIuY3NzKHtoZWlnaHQ6IGNvbnRlbnRIZWlnaHR9KTtcblxuXHRcdFx0XHRcdHZhciBkdXJhdGlvbiA9IHBhcnNlRmxvYXQodGhpc1dyYXBwZXIuY3NzKCkudHJhbnNpdGlvbkR1cmF0aW9uKSAqIDEwMDA7XG5cdFx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpe1xuXHRcdFx0XHRcdFx0dGhpc1dyYXBwZXIuY3NzKHtoZWlnaHQ6ICcnfSk7XG5cdFx0XHRcdFx0XHRtb3ZpbmcgPSBmYWxzZTtcblx0XHRcdFx0XHR9LCBkdXJhdGlvbik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0dmFyIGlubmVyQ29udGFpbmVycyA9IGNvbnRlbnQuz4AoJzpzY29wZSA+IC5jb250YWluZXInKTtcblx0XHRcdGlmIChpbm5lckNvbnRhaW5lcnMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRpbm5lckNvbnRhaW5lcnMuZm9yRWFjaChQaUFjY29yZGlvbik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRmdW5jdGlvbiBzZXRZQUgoKSB7XG5cdFx0dmFyIHBhdGhuYW1lID0gbG9jYXRpb24uaHJlZi5zcGxpdCgnIycpWzBdOyAvLyBvbiBwYWdlIGxvYWQsIG1ha2Ugc3VyZSB0aGUgcGFnZSBpcyBZQUggZXZlbiBpZiB0aGVyZSdzIGEgaGFzaFxuXHRcdHZhciBjdXJyZW50TGlua3MgPSBbXTtcblxuXHRcdM+AKCcucGktYWNjb3JkaW9uIGEnKS5mb3JFYWNoKGZ1bmN0aW9uIChsaW5rKSB7XG5cdFx0XHRpZiAocGF0aG5hbWUgPT09IGxpbmsuaHJlZikgY3VycmVudExpbmtzLnB1c2gobGluayk7XG5cdFx0fSk7XG5cblx0XHRjdXJyZW50TGlua3MuZm9yRWFjaChmdW5jdGlvbiAoeWFoTGluaykge1xuXHRcdFx0eWFoTGluay5wYXJlbnRzKCcuaXRlbScpLmZvckVhY2goZnVuY3Rpb24ocGFyZW50KXtcblx0XHRcdFx0cGFyZW50LmFkZENsYXNzKCdvbicpO1xuXHRcdFx0XHRwYXJlbnQuz4AxKCcud3JhcHBlcicpLmNzcyh7aGVpZ2h0OiAnYXV0byd9KTtcblx0XHRcdFx0cGFyZW50Ls+AMSgnLmNvbnRlbnQnKS5jc3Moe29wYWNpdHk6IDF9KTtcblx0XHRcdH0pO1xuXG5cdFx0XHR5YWhMaW5rLmFkZENsYXNzKCd5YWgnKTtcblx0XHRcdHlhaExpbmsub25jbGljayA9IGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKTt9O1xuXHRcdH0pO1xuXHR9XG5cblx0z4AubW9kcy5wdXNoKGluaXQpO1xufSkoKTtcbiIsInZhciBrdWIgPSAoZnVuY3Rpb24gKCkge1xuXHTPgC5saXN0ZW4oaW5pdCk7XG5cblx0dmFyIEhFQURFUl9IRUlHSFQ7XG5cdHZhciBodG1sLCBib2R5LCBtYWluTmF2LCBxdWlja3N0YXJ0QnV0dG9uLCB3aXNoRmllbGQ7XG5cblx0ZnVuY3Rpb24gaW5pdCgpIHtcblx0XHTPgC5jbGVhbihpbml0KTtcblxuXHRcdGh0bWwgPSDPgDEoJ2h0bWwnKTtcblx0XHRib2R5ID0gz4AxKCdib2R5Jyk7XG5cdFx0bWFpbk5hdiA9IM+AZChcIm1haW5OYXZcIik7XG5cdFx0d2lzaEZpZWxkID0gz4BkKCd3aXNoRmllbGQnKTtcblx0XHRIRUFERVJfSEVJR0hUID0gz4AxKCdoZWFkZXInKS5vZmZzZXQoKS5oZWlnaHQ7XG5cblx0XHRxdWlja3N0YXJ0QnV0dG9uID0gz4BkKCdxdWlja3N0YXJ0QnV0dG9uJyk7XG5cblx0XHRhZGp1c3RFdmVyeXRoaW5nKCk7XG5cblx0XHTPgC5saXN0ZW4oYWRqdXN0RXZlcnl0aGluZywgJ3Jlc2l6ZScpO1xuXHRcdM+ALmxpc3RlbihhZGp1c3RFdmVyeXRoaW5nLCAnc2Nyb2xsJyk7XG5cdFx0z4AubGlzdGVuKGhhbmRsZUtleXN0cm9rZXMsICdrZXlkb3duJyk7XG5cdFx0d2lzaEZpZWxkLmxpc3RlbihoYW5kbGVLZXlzdHJva2VzLCAna2V5ZG93bicpO1xuXG5cdFx0ZG9jdW1lbnQub251bmxvYWQgPSBmdW5jdGlvbigpe1xuXHRcdFx0z4AuY2xlYW4oYWRqdXN0RXZlcnl0aGluZywgJ3Jlc2l6ZScpO1xuXHRcdFx0z4AuY2xlYW4oYWRqdXN0RXZlcnl0aGluZywgJ3Njcm9sbCcpO1xuXHRcdFx0z4AuY2xlYW4oaGFuZGxlS2V5c3Ryb2tlcywgJ2tleWRvd24nKTtcblx0XHRcdHdpc2hGaWVsZC5jbGVhbihoYW5kbGVLZXlzdHJva2VzLCAna2V5ZG93bicpO1xuXHRcdH07XG5cblx0XHTPgC5saXN0ZW4oY2xvc2VPcGVuTWVudSwgJ3Jlc2l6ZScpO1xuXG5cdFx0ZnVuY3Rpb24gY2xvc2VPcGVuTWVudSgpIHtcblx0XHRcdGlmIChodG1sLmhhc0NsYXNzKCdvcGVuLW5hdicpKSB0b2dnbGVNZW51KCk7XG5cdFx0fVxuXG5cdFx0z4AoJy5kcm9wZG93bicpLmZvckVhY2goZnVuY3Rpb24oZHJvcGRvd24pIHtcblx0XHRcdHZhciByZWFkb3V0ID0gZHJvcGRvd24uz4AxKCcucmVhZG91dCcpO1xuXHRcdFx0cmVhZG91dC5pbm5lckhUTUwgPSBkcm9wZG93bi7PgDEoJ2EnKS5pbm5lckhUTUw7XG5cdFx0XHRyZWFkb3V0Lm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdGRyb3Bkb3duLnRvZ2dsZUNsYXNzKCdvbicpO1xuXHRcdFx0XHTPgC5saXN0ZW4oY2xvc2VPcGVuRHJvcGRvd24sICdjbGljaycpO1xuXG5cdFx0XHRcdGZ1bmN0aW9uIGNsb3NlT3BlbkRyb3Bkb3duKGUpIHtcblx0XHRcdFx0XHRpZiAoZHJvcGRvd24uaGFzQ2xhc3MoJ29uJykgJiYgIShkcm9wZG93bldhc0NsaWNrZWQoZSkpKSB7XG5cdFx0XHRcdFx0XHTPgC5jbGVhbihjbG9zZU9wZW5Ecm9wZG93biwgJ2NsaWNrJyk7XG5cdFx0XHRcdFx0XHRkcm9wZG93bi5raWxsQ2xhc3MoJ29uJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZnVuY3Rpb24gZHJvcGRvd25XYXNDbGlja2VkKGUpIHtcblx0XHRcdFx0XHRyZXR1cm4gZS50YXJnZXQuaXNIZWlyT2ZDbGFzcygnZHJvcGRvd24nKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9KTtcblxuXHRcdHNldEludGVydmFsKHNldEZvb3RlclR5cGUsIDEwKTtcblx0fVxuXG5cdGZ1bmN0aW9uIHNldEZvb3RlclR5cGUoKSB7XG5cdFx0aWYgKGh0bWwuaWQgPT0gXCJkb2NzXCIpIHtcblx0XHRcdHZhciBib2R5SGVpZ2h0ID0gz4BkKCdoZXJvJykub2Zmc2V0KCkuaGVpZ2h0ICsgz4BkKCdlbmN5Y2xvcGVkaWEnKS5vZmZzZXQoKS5oZWlnaHQ7XG5cdFx0XHR2YXIgZm9vdGVyID0gz4AxKCdmb290ZXInKTtcblx0XHRcdHZhciBmb290ZXJIZWlnaHQgPSBmb290ZXIub2Zmc2V0KCkuaGVpZ2h0O1xuXHRcdFx0Ym9keS5jbGFzc09uQ29uZGl0aW9uKCdmaXhlZCcsIHdpbmRvdy5pbm5lckhlaWdodCAtIGZvb3RlckhlaWdodCA+IGJvZHlIZWlnaHQpO1xuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIGFkanVzdEV2ZXJ5dGhpbmcoKSB7XG5cdFx0aWYgKCFodG1sLmhhc0NsYXNzKCdvcGVuLW5hdicpKSBIRUFERVJfSEVJR0hUID0gz4AxKCdoZWFkZXInKS5vZmZzZXQoKS5oZWlnaHQ7XG5cdFx0aHRtbC5jbGFzc09uQ29uZGl0aW9uKCdmbGlwLW5hdicsIHdpbmRvdy5wYWdlWU9mZnNldCA+IDApO1xuXHR9XG5cblx0ZnVuY3Rpb24gdG9nZ2xlTWVudSgpIHtcblx0XHRpZiAod2luZG93LmlubmVyV2lkdGggPCA4MDApIHtcblx0XHRcdM+ALnB1c2htZW51LnNob3coJ3ByaW1hcnknKTtcblx0XHR9XG5cblx0XHRlbHNlIHtcblx0XHRcdHZhciBuZXdIZWlnaHQgPSBIRUFERVJfSEVJR0hUO1xuXG5cdFx0XHRpZiAoIWh0bWwuaGFzQ2xhc3MoJ29wZW4tbmF2JykpIHtcblx0XHRcdFx0bmV3SGVpZ2h0ID0gbWFpbk5hdi5vZmZzZXQoKS5oZWlnaHQ7XG5cdFx0XHR9XG5cblx0XHRcdM+AMSgnaGVhZGVyJykuY3NzKHtoZWlnaHQ6IHB4KG5ld0hlaWdodCl9KTtcblx0XHRcdGh0bWwudG9nZ2xlQ2xhc3MoJ29wZW4tbmF2Jyk7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gc3VibWl0V2lzaCh0ZXh0ZmllbGQpIHtcblx0XHR3aW5kb3cubG9jYXRpb24ucmVwbGFjZShcImh0dHBzOi8vZ2l0aHViLmNvbS9rdWJlcm5ldGVzL2t1YmVybmV0ZXMuZ2l0aHViLmlvL2lzc3Vlcy9uZXc/dGl0bGU9SSUyMHdpc2glMjBcIiArXG5cdFx0XHR3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyBcIiUyMFwiICsgdGV4dGZpZWxkLnZhbHVlICsgXCImYm9keT1JJTIwd2lzaCUyMFwiICtcblx0XHRcdHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArIFwiJTIwXCIgKyB0ZXh0ZmllbGQudmFsdWUpO1xuXG5cdFx0dGV4dGZpZWxkLnZhbHVlID0gJyc7XG5cdFx0dGV4dGZpZWxkLmJsdXIoKTtcblx0fVxuXG5cdGZ1bmN0aW9uIGhhbmRsZUtleXN0cm9rZXMoZSkge1xuXHRcdHN3aXRjaCAoZS53aGljaCkge1xuXHRcdFx0Y2FzZSAxMzoge1xuXHRcdFx0XHRpZiAoZS5jdXJyZW50VGFyZ2V0ID09PSB3aXNoRmllbGQpIHtcblx0XHRcdFx0XHRzdWJtaXRXaXNoKHdpc2hGaWVsZCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cblx0XHRcdGNhc2UgMjc6IHtcblx0XHRcdFx0aWYgKGh0bWwuaGFzQ2xhc3MoJ29wZW4tbmF2JykpIHtcblx0XHRcdFx0XHR0b2dnbGVNZW51KCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHtcblx0XHR0b2dnbGVNZW51OiB0b2dnbGVNZW51XG5cdH07XG59KSgpO1xuXG5cbi8vIFRPRE86IHNjcm9sbGludG92aWV3IGluLXBhZ2UgVE9DIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFsZi5qcyIsIs+ALmpzIiwiz4AtYmFzZUNvbXBvbmVudHMuanMiLCLPgC1hY2NvcmRpb24vz4AtYWNjb3JkaW9uLmpzIiwiz4AtcHVzaG1lbnUvz4AtcHVzaG1lbnUuanMiLCJzY3JpcHQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQ2hCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDeFJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDTkE7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDMUpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoic2NyaXB0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gYWRvcmFibGUgbGl0dGxlIGZ1bmN0aW9uc1xuZnVuY3Rpb24gYm9vbGVhbkF0dHJpYnV0ZVZhbHVlKGVsZW1lbnQsIGF0dHJpYnV0ZSwgZGVmYXVsdFZhbHVlKXtcblx0Ly8gcmV0dXJucyB0cnVlIGlmIGFuIGF0dHJpYnV0ZSBpcyBwcmVzZW50IHdpdGggbm8gdmFsdWVcblx0Ly8gZS5nLiBib29sZWFuQXR0cmlidXRlVmFsdWUoZWxlbWVudCwgJ2RhdGEtbW9kYWwnLCBmYWxzZSk7XG5cdGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZShhdHRyaWJ1dGUpKSB7XG5cdFx0dmFyIHZhbHVlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKTtcblx0XHRpZiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSAndHJ1ZScpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0gZWxzZSBpZiAodmFsdWUgPT09ICdmYWxzZScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZGVmYXVsdFZhbHVlO1xufVxuXG4iLCJ2YXIgz4AsIM+AMSwgz4BkO1xuKGZ1bmN0aW9uKCl7XG5cdHJldHVybjtcblx0Ly9cblx0Ly/PgCA9IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG5cdC8vXHRyZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XG5cdC8vfTtcblx0Ly9cblx0Ly/PgDEgPSBmdW5jdGlvbiAoc2VsZWN0b3IpIHtcblx0Ly9cdHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTtcblx0Ly99O1xuXHQvL1xuXHQvL8+AZCA9IGZ1bmN0aW9uKGlkKSB7XG5cdC8vXHRyZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuXHQvL307XG5cdC8vXG5cdC8vz4AubmV3RE9NRWxlbWVudCA9IGZ1bmN0aW9uKHRhZ05hbWUsIGNsYXNzTmFtZSwgaWQpIHtcblx0Ly9cdHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7XG5cdC8vXG5cdC8vXHRpZiAoY2xhc3NOYW1lKVxuXHQvL1x0XHRlbC5jbGFzc05hbWUgPSBjbGFzc05hbWU7XG5cdC8vXG5cdC8vXHRpZiAoaWQpXG5cdC8vXHRcdGVsLmlkID0gaWQ7XG5cdC8vXG5cdC8vXHRyZXR1cm4gZWw7XG5cdC8vfTtcblx0Ly9cblx0Ly/PgC5jb250ZW50RWxlbWVudCA9IGZ1bmN0aW9uKHRhZ05hbWUsIGNsYXNzTmFtZSwgaWQsIGNvbnRlbnQpXG5cdC8ve1xuXHQvL1x0dmFyIGVsID0gz4AubmV3RE9NRWxlbWVudCh0YWdOYW1lLCBjbGFzc05hbWUsIGlkKTtcblx0Ly9cblx0Ly9cdGlmIChjb250ZW50KSB7XG5cdC8vXHRcdGlmIChjb250ZW50Lm5vZGVOYW1lKSB7XG5cdC8vXHRcdFx0ZWwuYXBwZW5kQ2hpbGQoY29udGVudCk7XG5cdC8vXHRcdH0gZWxzZSB7XG5cdC8vXHRcdFx0ZWwuaW5uZXJIVE1MID0gY29udGVudDtcblx0Ly9cdFx0fVxuXHQvL1x0fVxuXHQvL1xuXHQvL1x0cmV0dXJuIGVsO1xuXHQvL307XG5cdC8vXG5cdC8vz4AuYnV0dG9uID0gZnVuY3Rpb24oY2xhc3NOYW1lLCBpZCwgY29udGVudCwgYWN0aW9uKXtcblx0Ly9cdHZhciBlbCA9IM+ALmNvbnRlbnRFbGVtZW50KFwiYnV0dG9uXCIsIGNsYXNzTmFtZSwgaWQsIGNvbnRlbnQpO1xuXHQvL1x0ZWwub25jbGljayA9IGFjdGlvbjtcblx0Ly9cdHJldHVybiBlbDtcblx0Ly99O1xuXHQvL8+ALmRpdiA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgaWQsIGNvbnRlbnQpeyByZXR1cm4gz4AuY29udGVudEVsZW1lbnQoXCJkaXZcIiwgY2xhc3NOYW1lLCBpZCwgY29udGVudCk7IH07XG5cdC8vz4Auc3BhbiA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgaWQsIGNvbnRlbnQpeyByZXR1cm4gz4AuY29udGVudEVsZW1lbnQoXCJzcGFuXCIsIGNsYXNzTmFtZSwgaWQsIGNvbnRlbnQpOyB9O1xuXHQvL8+ALmgyID0gZnVuY3Rpb24oY2xhc3NOYW1lLCBpZCwgY29udGVudCl7IHJldHVybiDPgC5jb250ZW50RWxlbWVudChcImgyXCIsIGNsYXNzTmFtZSwgaWQsIGNvbnRlbnQpOyB9O1xuXHQvL8+ALnAgPSBmdW5jdGlvbihjbGFzc05hbWUsIGlkLCBjb250ZW50KXsgcmV0dXJuIM+ALmNvbnRlbnRFbGVtZW50KFwicFwiLCBjbGFzc05hbWUsIGlkLCBjb250ZW50KTsgfTtcblx0Ly/PgC51bCA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgaWQsIGNvbnRlbnQpeyByZXR1cm4gz4AuY29udGVudEVsZW1lbnQoXCJ1bFwiLCBjbGFzc05hbWUsIGlkLCBjb250ZW50KTsgfTtcblx0Ly/PgC5saSA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgaWQsIGNvbnRlbnQpeyByZXR1cm4gz4AuY29udGVudEVsZW1lbnQoXCJsaVwiLCBjbGFzc05hbWUsIGlkLCBjb250ZW50KTsgfTtcblx0Ly9cblx0Ly/PgC5hID0gZnVuY3Rpb24oY2xhc3NOYW1lLCBpZCwgY29udGVudCwgaHJlZil7XG5cdC8vXHR2YXIgYSA9IM+ALmNvbnRlbnRFbGVtZW50KFwiYVwiLCBjbGFzc05hbWUsIGlkLCBjb250ZW50KTtcblx0Ly9cdGEuaHJlZiA9IGhyZWY7XG5cdC8vXHRyZXR1cm4gYTtcblx0Ly99O1xuXHQvL1xuXHQvL1xuXHQvL8+ALmNsZWFuID0gZnVuY3Rpb24oY2FsbGJhY2ssIGV2ZW50TmFtZSkge1xuXHQvL1x0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lIHx8IFwiRE9NQ29udGVudExvYWRlZFwiLCBjYWxsYmFjayk7XG5cdC8vfTtcblx0Ly9cblx0Ly/PgC5saXN0ZW4gPSBmdW5jdGlvbihjYWxsYmFjaywgZXZlbnROYW1lKSB7XG5cdC8vXHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUgfHwgXCJET01Db250ZW50TG9hZGVkXCIsIGNhbGxiYWNrKTtcblx0Ly99O1xuXHQvL1xuXHQvL8+ALmhpZ2hlc3RaID0gZnVuY3Rpb24oKSB7XG5cdC8vXHR2YXIgWiA9IDEwMDA7XG5cdC8vXG5cdC8vXHTPgChcIipcIikuZm9yRWFjaChmdW5jdGlvbihlbCl7XG5cdC8vXHRcdHZhciB0aGlzWiA9IGVsLmNzcygpLnpJbmRleDtcblx0Ly9cblx0Ly9cdFx0aWYgKHRoaXNaICE9IFwiYXV0b1wiKSB7XG5cdC8vXHRcdFx0aWYgKHRoaXNaID4gWikgWiA9IHRoaXNaICsgMTtcblx0Ly9cdFx0fVxuXHQvL1x0fSk7XG5cdC8vXG5cdC8vXHRyZXR1cm4gWjtcblx0Ly99O1xuXHQvL1xuXHQvL8+ALnNldFRyaWdnZXJzID0gZnVuY3Rpb24oc2VsZWN0b3IsIG9iamVjdCl7XG5cdC8vXHRzZWxlY3RvciA9ICdwaS0nICsgc2VsZWN0b3IgKyAnLXRyaWdnZXInO1xuXHQvL1x0z4AoJ1snICsgc2VsZWN0b3IgKyAnXScpLmZvckVhY2goZnVuY3Rpb24odHJpZ2dlcil7XG5cdC8vXHRcdHRyaWdnZXIub25jbGljayA9IGZ1bmN0aW9uKCl7XG5cdC8vXHRcdFx0b2JqZWN0LnNob3codHJpZ2dlci5nZXRBdHRyaWJ1dGUoc2VsZWN0b3IpKTtcblx0Ly9cdFx0fTtcblx0Ly9cdH0pO1xuXHQvL307XG5cdC8vSFRNTEVsZW1lbnQucHJvdG90eXBlLmFkZCA9IE5vZGUucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKG9iamVjdCl7XG5cdC8vXHRpZiAoQXJyYXkuaXNBcnJheShvYmplY3QpKSB7XG5cdC8vXHRcdHZhciBlbCA9IHRoaXM7XG5cdC8vXHRcdG9iamVjdC5mb3JFYWNoKGZ1bmN0aW9uKG9iail7XG5cdC8vXHRcdFx0aWYgKG9iaikgZWwuYXBwZW5kQ2hpbGQob2JqKTtcblx0Ly9cdFx0fSk7XG5cdC8vXHR9IGVsc2UgaWYob2JqZWN0KSB7XG5cdC8vXHRcdHRoaXMuYXBwZW5kQ2hpbGQob2JqZWN0KTtcblx0Ly9cdH1cblx0Ly99O1xuXHQvL1xuXHQvL0hUTUxFbGVtZW50LnByb3RvdHlwZS5jbGFzc09uQ29uZGl0aW9uID0gTm9kZS5wcm90b3R5cGUuY2xhc3NPbkNvbmRpdGlvbiA9IGZ1bmN0aW9uKGNsYXNzbmFtZSwgY29uZGl0aW9uKSB7XG5cdC8vXHRpZiAoY29uZGl0aW9uKVxuXHQvL1x0XHR0aGlzLmFkZENsYXNzKGNsYXNzbmFtZSk7XG5cdC8vXHRlbHNlXG5cdC8vXHRcdHRoaXMua2lsbENsYXNzKGNsYXNzbmFtZSk7XG5cdC8vfTtcblx0Ly9cblx0Ly9IVE1MRWxlbWVudC5wcm90b3R5cGUub2Zmc2V0ID0gTm9kZS5wcm90b3R5cGUub2Zmc2V0ID0gZnVuY3Rpb24oKXtcblx0Ly9cdHJldHVybiB0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHQvL307XG5cdC8vXG5cdC8vSFRNTEVsZW1lbnQucHJvdG90eXBlLs+AZCA9IE5vZGUucHJvdG90eXBlLs+AZCA9IGZ1bmN0aW9uKGlkKSB7XG5cdC8vXHRyZXR1cm4gdGhpcy5nZXRFbGVtZW50QnlJZChpZCk7XG5cdC8vfTtcblx0Ly9cblx0Ly9IVE1MRWxlbWVudC5wcm90b3R5cGUuz4AxID0gTm9kZS5wcm90b3R5cGUuz4AxID0gZnVuY3Rpb24oc2VsZWN0b3IpIHtcblx0Ly9cdHJldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuXHQvL307XG5cdC8vXG5cdC8vSFRNTEVsZW1lbnQucHJvdG90eXBlLs+AID0gTm9kZS5wcm90b3R5cGUuz4AgPSBmdW5jdGlvbihzZWxlY3Rvcikge1xuXHQvL1x0cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XG5cdC8vfTtcblx0Ly9cblx0Ly9mdW5jdGlvbiBhcnJheU9mQ2xhc3Nlc0ZvckVsZW1lbnQoZWwpIHtcblx0Ly9cdHJldHVybiBlbC5jbGFzc05hbWUgPyBlbC5jbGFzc05hbWUuc3BsaXQoXCIgXCIpIDogW107XG5cdC8vfVxuXHQvL1xuXHQvL0hUTUxFbGVtZW50LnByb3RvdHlwZS5oYXNDbGFzcyA9IE5vZGUucHJvdG90eXBlLmhhc0NsYXNzID0gZnVuY3Rpb24gKGNsYXNzTmFtZSkge1xuXHQvL1x0dmFyIGNsYXNzZXMgPSBhcnJheU9mQ2xhc3Nlc0ZvckVsZW1lbnQodGhpcyk7XG5cdC8vXHRyZXR1cm4gY2xhc3Nlcy5pbmRleE9mKGNsYXNzTmFtZSkgIT09IC0xO1xuXHQvL307XG5cdC8vXG5cdC8vSFRNTEVsZW1lbnQucHJvdG90eXBlLmFkZENsYXNzID0gTm9kZS5wcm90b3R5cGUuYWRkQ2xhc3MgPSBmdW5jdGlvbiAoY2xhc3NOYW1lKSB7XG5cdC8vXHRpZiAodGhpcy5oYXNDbGFzcyhjbGFzc05hbWUpKSByZXR1cm47XG5cdC8vXHRpZiAodGhpcy5jbGFzc05hbWUubGVuZ3RoID4gMCkgdGhpcy5jbGFzc05hbWUgKz0gXCIgXCI7XG5cdC8vXHR0aGlzLmNsYXNzTmFtZSArPSBjbGFzc05hbWU7XG5cdC8vfTtcblx0Ly9cblx0Ly9IVE1MRWxlbWVudC5wcm90b3R5cGUua2lsbENsYXNzID0gTm9kZS5wcm90b3R5cGUua2lsbENsYXNzID0gZnVuY3Rpb24gKGNsYXNzTmFtZSkge1xuXHQvL1x0aWYgKHRoaXMuaGFzQ2xhc3MoY2xhc3NOYW1lKSkge1xuXHQvL1x0XHR2YXIgY2xhc3NlcyA9IGFycmF5T2ZDbGFzc2VzRm9yRWxlbWVudCh0aGlzKTtcblx0Ly9cdFx0dmFyIGlkeCA9IGNsYXNzZXMuaW5kZXhPZihjbGFzc05hbWUpO1xuXHQvL1x0XHRpZiAoaWR4ID4gLTEpIHtcblx0Ly9cdFx0XHRjbGFzc2VzLnNwbGljZShpZHgsIDEpO1xuXHQvL1x0XHRcdHRoaXMuY2xhc3NOYW1lID0gY2xhc3Nlcy5qb2luKFwiIFwiKTtcblx0Ly9cdFx0fVxuXHQvL1x0fVxuXHQvL307XG5cdC8vXG5cdC8vSFRNTEVsZW1lbnQucHJvdG90eXBlLnRvZ2dsZUNsYXNzPSBOb2RlLnByb3RvdHlwZS50b2dnbGVDbGFzcz0gZnVuY3Rpb24gKGNsYXNzTmFtZSkge1xuXHQvL1x0cmV0dXJuICh0aGlzLmhhc0NsYXNzKGNsYXNzTmFtZSkpID8gdGhpcy5raWxsQ2xhc3MoY2xhc3NOYW1lKSA6IHRoaXMuYWRkQ2xhc3MoY2xhc3NOYW1lKTtcblx0Ly99O1xuXHQvL1xuXHQvL0hUTUxFbGVtZW50LnByb3RvdHlwZS5zaWJsaW5ncyA9IE5vZGUucHJvdG90eXBlLnNpYmxpbmdzID0gZnVuY3Rpb24oc2VsZWN0b3Ipe1xuXHQvL1x0dmFyIGVsID0gdGhpcztcblx0Ly9cdHJldHVybiBlbC5wYXJlbnROb2RlLs+AKCc6c2NvcGUgPiAnICsgKHNlbGVjdG9yIHx8ICcqJykpLmZpbHRlcihmdW5jdGlvbihvYmope3JldHVybiBvYmogIT0gZWw7fSk7XG5cdC8vfTtcblx0Ly9cblx0Ly9IVE1MRWxlbWVudC5wcm90b3R5cGUuY3NzID0gTm9kZS5wcm90b3R5cGUuY3NzID0gZnVuY3Rpb24ocnVsZU9yT2JqZWN0LCB2YWx1ZSkge1xuXHQvL1x0dmFyIGVsID0gdGhpcztcblx0Ly9cblx0Ly9cdGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG5cdC8vXHRcdHJldHVybiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKTtcblx0Ly9cdH1cblx0Ly9cblx0Ly9cdGVsc2UgaWYgKHR5cGVvZiBydWxlT3JPYmplY3QgPT09ICdvYmplY3QnKSB7IC8vIGFuIG9iamVjdCB3YXMgcGFzc2VkIGluXG5cdC8vXHRcdE9iamVjdC5rZXlzKHJ1bGVPck9iamVjdCkuZm9yRWFjaChmdW5jdGlvbihrZXkpe1xuXHQvL1x0XHRcdGVsLnN0eWxlW2tleV0gPSBydWxlT3JPYmplY3Rba2V5XTtcblx0Ly9cdFx0fSk7XG5cdC8vXHR9XG5cdC8vXG5cdC8vXHRlbHNlIGlmICh0eXBlb2YgcnVsZU9yT2JqZWN0ID09PSAnc3RyaW5nJyAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7IC8vIDIgc3RyaW5nIHZhbHVlcyB3ZXJlIHBhc3NlZCBpblxuXHQvL1x0XHRlbC5zdHlsZVtydWxlT3JPYmplY3RdID0gdmFsdWU7XG5cdC8vXHR9XG5cdC8vfTtcblx0Ly9cblx0Ly9IVE1MRWxlbWVudC5wcm90b3R5cGUubGlzdGVuID0gTm9kZS5wcm90b3R5cGUubGlzdGVuID0gZnVuY3Rpb24oY2FsbGJhY2ssIGV2ZW50TmFtZSl7XG5cdC8vXHR0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjayk7XG5cdC8vfTtcblx0Ly9cblx0Ly9IVE1MRWxlbWVudC5wcm90b3R5cGUuZW1wdHkgPSBOb2RlLnByb3RvdHlwZS5lbXB0eSA9IGZ1bmN0aW9uKCkge1xuXHQvL1x0dGhpcy5pbm5lckhUTUwgPSBcIlwiO1xuXHQvL307XG5cdC8vXG5cdC8vSFRNTEVsZW1lbnQucHJvdG90eXBlLmZpbGwgPSBOb2RlLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24oY29udGVudCkge1xuXHQvL1x0dmFyIGVsID0gdGhpcztcblx0Ly9cdGVsLmVtcHR5KCk7XG5cdC8vXG5cdC8vXHRpZiAoQXJyYXkuaXNBcnJheShjb250ZW50KSkge1xuXHQvL1x0XHRjb250ZW50LmZvckVhY2goZnVuY3Rpb24ob2JqKXtcblx0Ly9cdFx0XHRpZiAob2JqKVxuXHQvL1x0XHRcdFx0ZWwuYXBwZW5kQ2hpbGQob2JqKTtcblx0Ly9cdFx0fSk7XG5cdC8vXG5cdC8vXHRcdHJldHVybjtcblx0Ly9cdH1cblx0Ly9cblx0Ly9cdGlmICghY29udGVudC5ub2RlVHlwZSkge1xuXHQvL1x0XHR2YXIgdGV4dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidGV4dFwiKTtcblx0Ly9cdFx0dGV4dEVsZW1lbnQuaW5uZXJIVE1MID0gY29udGVudDtcblx0Ly9cdFx0Y29udGVudCA9IHRleHRFbGVtZW50O1xuXHQvL1x0fVxuXHQvL1xuXHQvL1x0dGhpcy5hcHBlbmRDaGlsZChjb250ZW50KTtcblx0Ly99O1xuXHQvL1xuXHQvL0hUTUxFbGVtZW50LnByb3RvdHlwZS5pc0hlaXJPZkNsYXNzID0gTm9kZS5wcm90b3R5cGUuaXNIZWlyT2ZDbGFzcyA9IGZ1bmN0aW9uIChjbGFzc05hbWUpIHtcblx0Ly9cdGlmICh0aGlzID09PSDPgDEoJ2h0bWwnKSkgcmV0dXJuIGZhbHNlO1xuXHQvL1xuXHQvL1x0dmFyIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcblx0Ly9cblx0Ly9cdGlmIChwYXJlbnQpIHtcblx0Ly9cdFx0d2hpbGUgKHBhcmVudCAhPT0gz4AxKCdib2R5JykpIHtcblx0Ly9cdFx0XHRpZiAocGFyZW50Lmhhc0NsYXNzKGNsYXNzTmFtZSkpIHJldHVybiB0cnVlO1xuXHQvL1xuXHQvL1x0XHRcdHBhcmVudCA9IHBhcmVudC5wYXJlbnROb2RlO1xuXHQvL1x0XHR9XG5cdC8vXHR9XG5cdC8vXG5cdC8vXHRyZXR1cm4gZmFsc2U7XG5cdC8vfTtcblx0Ly9cblx0Ly9IVE1MRWxlbWVudC5wcm90b3R5cGUucGFyZW50cyA9IE5vZGUucHJvdG90eXBlLnBhcmVudHMgPSBmdW5jdGlvbiAoc2VsZWN0b3IpIHtcblx0Ly9cdHZhciBwYXJlbnRzID0gW107XG5cdC8vXHR2YXIgaW1tZWRpYXRlUGFyZW50ID0gdGhpcy5wYXJlbnROb2RlO1xuXHQvL1xuXHQvL1x0d2hpbGUoaW1tZWRpYXRlUGFyZW50ICE9PSDPgDEoJ2h0bWwnKSkge1xuXHQvL1x0XHRwYXJlbnRzLnB1c2goaW1tZWRpYXRlUGFyZW50KTtcblx0Ly9cdFx0aW1tZWRpYXRlUGFyZW50ID0gaW1tZWRpYXRlUGFyZW50LnBhcmVudE5vZGU7XG5cdC8vXHR9XG5cdC8vXG5cdC8vXHRpZiAoc2VsZWN0b3IpIHtcblx0Ly9cdFx0dmFyIHNlbGVjdGVkRWxlbWVudHMgPSDPgChzZWxlY3Rvcik7XG5cdC8vXHRcdHZhciBzZWxlY3RlZFBhcmVudHMgPSBbXTtcblx0Ly9cdFx0c2VsZWN0ZWRFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGVsKXtcblx0Ly9cdFx0XHRpZiAocGFyZW50cy5pbmRleE9mKGVsKSAhPT0gLTEpIHNlbGVjdGVkUGFyZW50cy5wdXNoKGVsKTtcblx0Ly9cdFx0fSk7XG5cdC8vXG5cdC8vXHRcdHBhcmVudHMgPSBzZWxlY3RlZFBhcmVudHM7XG5cdC8vXHR9XG5cdC8vXG5cdC8vXHRyZXR1cm4gcGFyZW50cztcblx0Ly99O1xuXHQvL1xuXHQvL0hUTUxFbGVtZW50LnByb3RvdHlwZS5raWRzID0gTm9kZS5wcm90b3R5cGUua2lkcyA9IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG5cdC8vXHR2YXIgY2hpbGROb2RlcyA9IHRoaXMuY2hpbGROb2Rlcztcblx0Ly9cdGlmICghc2VsZWN0b3IpIHJldHVybiBjaGlsZE5vZGVzO1xuXHQvL1xuXHQvL1x0dmFyIGRlc2NlbmRlbnRzID0gdGhpcy7PgChzZWxlY3Rvcik7XG5cdC8vXHR2YXIgY2hpbGRyZW4gPSBbXTtcblx0Ly9cblx0Ly9cdGNoaWxkTm9kZXMuZm9yRWFjaChmdW5jdGlvbihub2RlKXtcblx0Ly9cdFx0aWYgKGRlc2NlbmRlbnRzLmluZGV4T2Yobm9kZSkgIT09IC0xKSB7XG5cdC8vXHRcdFx0Y2hpbGRyZW4ucHVzaChub2RlKTtcblx0Ly9cdFx0fVxuXHQvL1x0fSk7XG5cdC8vXG5cdC8vXHRyZXR1cm4gY2hpbGRyZW47XG5cdC8vfTtcblx0Ly9cblx0Ly92YXIgYXJyYXlNZXRob2RzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoQXJyYXkucHJvdG90eXBlKTtcblx0Ly9hcnJheU1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbihtZXRob2ROYW1lKXtcblx0Ly9cdGlmKG1ldGhvZE5hbWUgIT09IFwibGVuZ3RoXCIpIHtcblx0Ly9cdFx0Tm9kZUxpc3QucHJvdG90eXBlW21ldGhvZE5hbWVdID0gQXJyYXkucHJvdG90eXBlW21ldGhvZE5hbWVdO1xuXHQvL1x0fVxuXHQvL30pO1xuXHQvL1xuXHQvL8+ALm1vZHMgPSBbXTtcblx0Ly9cblx0Ly9mdW5jdGlvbiBsb2FkTW9kcygpIHtcblx0Ly9cdM+ALmNsZWFuKGxvYWRNb2RzKTtcblx0Ly9cdM+ALm1vZHMuZm9yRWFjaChmdW5jdGlvbihpbml0KXtcblx0Ly9cdFx0aW5pdCgpO1xuXHQvL1x0fSk7XG5cdC8vfVxuXHQvL1xuXHQvL8+ALmxpc3Rlbihsb2FkTW9kcyk7XG59KSgpOyAgLy8gZW5kIM+AIiwiIC8vbW9kYWwgY2xvc2UgYnV0dG9uXG4oZnVuY3Rpb24oKXtcblx0Ly/PgC5tb2RhbENsb3NlQnV0dG9uID0gZnVuY3Rpb24oY2xvc2luZ0Z1bmN0aW9uKXtcblx0Ly9cdHJldHVybiDPgC5idXR0b24oJ3BpLW1vZGFsLWNsb3NlLWJ1dHRvbicsIG51bGwsIG51bGwsIGNsb3NpbmdGdW5jdGlvbik7XG5cdC8vfTtcbn0pKCk7XG4iLCIiLCIvLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gz4AtcHVzaG1lbnUuanNcbi8vIC8vIFRPRE86ICBVU0FHRSBBTkQgQVBJIFJFRkVSRU5DRVxuLy8gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1xuLy8gREVQRU5ERU5DSUVTOlxuLy9cbi8vIEhBTC5qc1xuLy9cbi8vIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19cbi8vIERBVEEgQVRUUklCVVRFUzpcbi8vXG4vLyBzaWRlOiBbXCJsZWZ0XCIsIFwicmlnaHRcIl1cbi8vIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19cbi8vIE1BUktVUCBBTkQgREVGQVVMVFM6XG4vL1xuLy9cdDxkaXYgY2xhc3M9XCJwaS1wdXNobWVudVwiIGlkPVwibXlQdXNoTWVudVwiPlxuLy9cdFx0IDx1bD5cbi8vXHRcdFx0IDxsaT48YSBocmVmPVwiI1wiPmZvbzwvYT48L2xpPlxuLy9cdFx0XHQgPGxpPjxhIGhyZWY9XCIjXCI+YmFyPC9hPjwvbGk+XG4vL1x0XHRcdCA8bGk+PGEgaHJlZj1cIiNcIj5ncm9uazwvYT48L2xpPlxuLy9cdFx0XHQgPGxpPjxhIGhyZWY9XCIjXCI+ZmxlZWJsZXM8L2E+PC9saT5cbi8vXHRcdFx0IDxsaT48YSBocmVmPVwiI1wiPnNlcHVsdmVkYTwvYT48L2xpPlxuLy9cdFx0IDwvdWw+XG4vL1x0PC9kaXY+XG4vL1xuLy9lbHNld2hlcmUuLi5cbi8vXG4vLyA8YnV0dG9uIG9uY2xpY2s9XCLPgC1wdXNobWVudS5zaG93KCdteVB1c2hNZW51JylcIj5zaG93IG1lbnU8L2J1dHRvbj5cbi8vXG4vLyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXG4vLyBHRU5FUkFURUQgSFRNTDpcbi8vXG4vL1xuLy8gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1xuLy8gQVBJXG4vL1xuLy9cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8vXG4vL8+ALnB1c2htZW51ID0gKGZ1bmN0aW9uKCl7XG4vL1x0dmFyIGFsbFB1c2hNZW51cyA9IHt9O1xuLy9cbi8vXHRmdW5jdGlvbiBpbml0KCl7XG4vL1x0XHTPgCgnW2RhdGEtYXV0by1idXJnZXJdJykuZm9yRWFjaChmdW5jdGlvbihjb250YWluZXIpe1xuLy9cdFx0XHR2YXIgaWQgPSBjb250YWluZXIuZ2V0QXR0cmlidXRlKCdkYXRhLWF1dG8tYnVyZ2VyJyk7XG4vL1xuLy9cdFx0XHR2YXIgYXV0b0J1cmdlciA9IM+AZChpZCkgfHwgz4AuZGl2KCdwaS1wdXNobWVudScsIGlkKTtcbi8vXHRcdFx0dmFyIHVsID0gYXV0b0J1cmdlci7PgDEoJ3VsJykgfHwgz4AudWwoKTtcbi8vXG4vL1x0XHRcdGNvbnRhaW5lci7PgCgnYVtocmVmXSwgYnV0dG9uJykuZm9yRWFjaChmdW5jdGlvbiAob2JqKSB7XG4vL1x0XHRcdFx0aWYgKCFib29sZWFuQXR0cmlidXRlVmFsdWUob2JqLCAnZGF0YS1hdXRvLWJ1cmdlci1leGNsdWRlJywgZmFsc2UpKSB7XG4vL1x0XHRcdFx0XHR2YXIgY2xvbmUgPSBvYmouY2xvbmVOb2RlKHRydWUpO1xuLy9cdFx0XHRcdFx0Y2xvbmUuaWQgPSAnJztcbi8vXG4vL1x0XHRcdFx0XHRpZiAoY2xvbmUudGFnTmFtZSA9PSBcIkJVVFRPTlwiKSB7XG4vL1x0XHRcdFx0XHRcdHZhciBhVGFnID0gz4Auc3JjRWxlbWVudCgnYScpO1xuLy9cdFx0XHRcdFx0XHRhVGFnLmhyZWYgPSAnJztcbi8vXHRcdFx0XHRcdFx0YVRhZy5pbm5lckhUTUwgPSBjbG9uZS5pbm5lckhUTUw7XG4vL1x0XHRcdFx0XHRcdGFUYWcub25jbGljayA9IGNsb25lLm9uY2xpY2s7XG4vL1x0XHRcdFx0XHRcdGNsb25lID0gYVRhZztcbi8vXHRcdFx0XHRcdH1cbi8vXHRcdFx0XHRcdHVsLmFkZCjPgC5saSgwLCAwLCBjbG9uZSkpO1xuLy9cdFx0XHRcdH1cbi8vXHRcdFx0fSk7XG4vL1xuLy9cdFx0XHRhdXRvQnVyZ2VyLmFkZCh1bCk7XG4vL1x0XHRcdM+AMSgnYm9keScpLmFkZChhdXRvQnVyZ2VyKTtcbi8vXHRcdH0pO1xuLy9cbi8vXHRcdM+AKFwiLnBpLXB1c2htZW51XCIpLmZvckVhY2goZnVuY3Rpb24oZWwpe1xuLy9cdFx0XHRhbGxQdXNoTWVudXNbZWwuaWRdID0gUHVzaE1lbnUoZWwpO1xuLy9cdFx0fSk7XG4vL1xuLy9cdFx0z4Auc2V0VHJpZ2dlcnMoJ3B1c2htZW51Jywgz4AucHVzaG1lbnUpO1xuLy9cdH1cbi8vXG4vL1x0ZnVuY3Rpb24gc2hvdyhvYmpJZCkge1xuLy9cdFx0YWxsUHVzaE1lbnVzW29iaklkXS5leHBvc2UoKTtcbi8vXHR9XG4vL1xuLy9cdC8vIFRPRE86IGRpc21pc3Mgb24gY2xpY2s/XG4vL1x0Ly8gdGhpcyB3b3Jrczpcbi8vXG4vL1x0Ly/PgCgnLnBpLXB1c2htZW51IGxpIGEnKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe1xuLy9cdC8vXHRhLm9uY2xpY2sgPSBmdW5jdGlvbigpe1xuLy9cdC8vXHRcdHRoaXMucGFyZW50KCcucGktcHVzaG1lbnUnKS7PgDEoJy5waS1tb2RhbC1jbG9zZS1idXR0b24nKS5jbGljaygpO1xuLy9cdC8vXHRcdGNvbnNvbGUubG9nKFwibWVzc2FnZVwiKTtcbi8vXHQvL1x0fTtcbi8vXHQvL30pO1xuLy9cbi8vXG4vL1x0ZnVuY3Rpb24gUHVzaE1lbnUoZWwpIHtcbi8vXHRcdHZhciBodG1sID0gz4AxKCdodG1sJyk7XG4vL1x0XHR2YXIgYm9keSA9IM+AMSgnYm9keScpO1xuLy9cbi8vXHRcdHZhciBvdmVybGF5ID0gz4AuZGl2KFwib3ZlcmxheVwiKTtcbi8vXHRcdHZhciBjb250ZW50ID0gz4AuZGl2KCdjb250ZW50JywgbnVsbCwgZWwuz4AxKCcqJykpO1xuLy9cbi8vXHRcdHZhciBzaWRlID0gZWwuZ2V0QXR0cmlidXRlKFwiZGF0YS1zaWRlXCIpIHx8IFwicmlnaHRcIjtcbi8vXG4vL1x0XHR2YXIgc2xlZCA9IM+ALmRpdihcInNsZWRcIik7XG4vL1x0XHRzbGVkLmNzcyhzaWRlLCAwKTtcbi8vXG4vL1x0XHR2YXIgdG9wQmFyID0gz4AuZGl2KFwidG9wLWJhclwiKTtcbi8vXG4vL1x0XHR0b3BCYXIuZmlsbCjPgC5tb2RhbENsb3NlQnV0dG9uKGNsb3NlTWUpKTtcbi8vXHRcdHNsZWQuZmlsbChbdG9wQmFyLCBjb250ZW50XSk7XG4vL1xuLy9cdFx0b3ZlcmxheS5maWxsKHNsZWQpO1xuLy9cdFx0ZWwuZmlsbChvdmVybGF5KTtcbi8vXG4vL1x0XHRzbGVkLm9uY2xpY2sgPSBmdW5jdGlvbihlKXtcbi8vXHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcbi8vXHRcdH07XG4vL1xuLy9cdFx0b3ZlcmxheS5vbmNsaWNrID0gY2xvc2VNZTtcbi8vXG4vL1x0XHTPgC5saXN0ZW4oY2xvc2VNZSwgJ3Jlc2l6ZScpO1xuLy9cbi8vXHRcdGZ1bmN0aW9uIGNsb3NlTWUoZSkge1xuLy9cdFx0XHR2YXIgdCA9IGUudGFyZ2V0O1xuLy9cdFx0XHRpZiAodCA9PSBzbGVkIHx8IHQgPT0gdG9wQmFyKSByZXR1cm47XG4vL1xuLy9cdFx0XHRlbC5raWxsQ2xhc3MoXCJvblwiKTtcbi8vXHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpe1xuLy9cdFx0XHRcdGVsLmNzcyh7ZGlzcGxheTogXCJub25lXCJ9KTtcbi8vXG4vL1x0XHRcdFx0Ym9keS5raWxsQ2xhc3MoXCJvdmVybGF5LW9uXCIpO1xuLy9cdFx0XHR9LCAzMDApO1xuLy9cdFx0fVxuLy9cbi8vXHRcdGZ1bmN0aW9uIGV4cG9zZU1lKCl7XG4vL1x0XHRcdGJvZHkuYWRkQ2xhc3MoXCJvdmVybGF5LW9uXCIpOyAvLyBpbiB0aGUgZGVmYXVsdCBjb25maWcsIGtpbGxzIGJvZHkgc2Nyb2xsaW5nXG4vL1xuLy9cdFx0XHRlbC5jc3Moe1xuLy9cdFx0XHRcdGRpc3BsYXk6IFwiYmxvY2tcIixcbi8vXHRcdFx0XHR6SW5kZXg6IM+ALmhpZ2hlc3RaKClcbi8vXHRcdFx0fSk7XG4vL1x0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcbi8vXHRcdFx0XHRlbC5hZGRDbGFzcyhcIm9uXCIpO1xuLy9cdFx0XHR9LCAxMCk7XG4vL1x0XHR9XG4vL1xuLy9cdFx0cmV0dXJuIHtcbi8vXHRcdFx0ZXhwb3NlOiBleHBvc2VNZVxuLy9cdFx0fTtcbi8vXHR9XG4vL1xuLy9cdC8vz4AubW9kcy5wdXNoKGluaXQpO1xuLy9cbi8vXHRyZXR1cm4ge1xuLy9cdFx0c2hvdzogc2hvd1xuLy9cdH07XG4vL30pKCk7XG4iLCIvLyBnbG9iYWxzXG52YXIgYm9keTtcblxuLy9oZWxwZXIgZnVuY3Rpb25zXG5mdW5jdGlvbiBjbGFzc09uQ29uZGl0aW9uKGVsZW1lbnQsIGNsYXNzTmFtZSwgY29uZGl0aW9uKSB7XG5cdGlmIChjb25kaXRpb24pXG5cdFx0JChlbGVtZW50KS5hZGRDbGFzcyhjbGFzc05hbWUpO1xuXHRlbHNlXG5cdFx0JChlbGVtZW50KS5yZW1vdmVDbGFzcyhjbGFzc05hbWUpO1xufVxuXG5mdW5jdGlvbiBweChuKXtcblx0cmV0dXJuIG4gKyAncHgnO1xufVxuXG5mdW5jdGlvbiBuZXdET01FbGVtZW50KHRhZywgY2xhc3NOYW1lLCBpZCl7XG5cdHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcblxuXHRpZiAoY2xhc3NOYW1lKSBlbC5jbGFzc05hbWUgPSBjbGFzc05hbWU7XG5cdGlmIChpZCkgZWwuaWQgPSBpZDtcblxuXHRyZXR1cm4gZWw7XG59XG5cblxudmFyIGt1YiA9IChmdW5jdGlvbiAoKSB7XG5cdHZhciBIRUFERVJfSEVJR0hUO1xuXHR2YXIgaHRtbCwgaGVhZGVyLCBtYWluTmF2LCBxdWlja3N0YXJ0QnV0dG9uLCBoZXJvLCBlbmN5Y2xvcGVkaWEsIGZvb3Rlciwgd2lzaEZpZWxkO1xuXG5cdCQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHtcblx0XHRodG1sID0gJCgnaHRtbCcpO1xuXHRcdGJvZHkgPSAkKCdib2R5Jyk7XG5cdFx0aGVhZGVyID0gJCgnaGVhZGVyJyk7XG5cdFx0bWFpbk5hdiA9ICQoJyNtYWluTmF2Jyk7XG5cdFx0d2lzaEZpZWxkID0gJCgnI3dpc2hGaWVsZCcpO1xuXHRcdHF1aWNrc3RhcnRCdXR0b24gPSAkKCcjcXVpY2tzdGFydEJ1dHRvbicpO1xuXHRcdGhlcm8gPSAkKCcjaGVybycpO1xuXHRcdGVuY3ljbG9wZWRpYSA9ICQoJyNlbmN5Y2xvcGVkaWEnKTtcblx0XHRmb290ZXIgPSAkKCdmb290ZXInKTtcblx0XHRIRUFERVJfSEVJR0hUID0gaGVhZGVyLm91dGVySGVpZ2h0KCk7XG5cblx0XHRyZXNldFRoZVZpZXcoKTtcblxuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNldFRoZVZpZXcpO1xuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCByZXNldFRoZVZpZXcpO1xuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlS2V5c3Ryb2tlcyk7XG5cdFx0d2lzaEZpZWxkWzBdLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlzdHJva2VzKTtcblxuXHRcdGRvY3VtZW50Lm9udW5sb2FkID0gZnVuY3Rpb24oKXtcblx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNldFRoZVZpZXcpO1xuXHRcdFx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHJlc2V0VGhlVmlldyk7XG5cdFx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleXN0cm9rZXMpO1xuXHRcdFx0d2lzaEZpZWxkWzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlzdHJva2VzKTtcblx0XHR9O1xuXG5cdFx0JCgnLmRyb3Bkb3duJykuZWFjaChmdW5jdGlvbiAoKSB7XG5cdFx0XHR2YXIgZHJvcGRvd24gPSAkKHRoaXMpO1xuXHRcdFx0dmFyIHJlYWRvdXQgPSBkcm9wZG93bi5maW5kKCcucmVhZG91dCcpO1xuXG5cdFx0XHRyZWFkb3V0Lmh0bWwoZHJvcGRvd24uZmluZCgnYScpWzBdLmlubmVySFRNTCk7XG5cdFx0XHRyZWFkb3V0LmNsaWNrKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0ZHJvcGRvd24udG9nZ2xlQ2xhc3MoJ29uJyk7XG5cdFx0XHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlT3BlbkRyb3Bkb3duKTtcblxuXHRcdFx0XHRmdW5jdGlvbiBjbG9zZU9wZW5Ecm9wZG93bihlKSB7XG5cdFx0XHRcdFx0aWYgKGRyb3Bkb3duLmhhc0NsYXNzKCdvbicpICYmICEoZHJvcGRvd25XYXNDbGlja2VkKGUpKSkge1xuXHRcdFx0XHRcdFx0ZHJvcGRvd24ucmVtb3ZlQ2xhc3MoJ29uJyk7XG5cdFx0XHRcdFx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZU9wZW5Ecm9wZG93bik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZnVuY3Rpb24gZHJvcGRvd25XYXNDbGlja2VkKGUpIHtcblx0XHRcdFx0XHRyZXR1cm4gJChlLnRhcmdldCkucGFyZW50cygnLmRyb3Bkb3duJykubGVuZ3RoO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdHNldEludGVydmFsKHNldEZvb3RlclR5cGUsIDEwKTtcblx0fSk7XG5cblx0ZnVuY3Rpb24gc2V0Rm9vdGVyVHlwZSgpIHtcblx0XHRpZiAoaHRtbFswXS5pZCA9PSBcImRvY3NcIikge1xuXHRcdFx0dmFyIGJvZHlIZWlnaHQgPSBoZXJvLm91dGVySGVpZ2h0KCkgKyBlbmN5Y2xvcGVkaWEub3V0ZXJIZWlnaHQoKTtcblx0XHRcdHZhciBmb290ZXJIZWlnaHQgPSBmb290ZXIub3V0ZXJIZWlnaHQoKTtcblxuXHRcdFx0Y2xhc3NPbkNvbmRpdGlvbihib2R5LCAnZml4ZWQnLCB3aW5kb3cuaW5uZXJIZWlnaHQgLSBmb290ZXJIZWlnaHQgPiBib2R5SGVpZ2h0KTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiByZXNldFRoZVZpZXcoKSB7XG5cdFx0aWYgKGh0bWwuaGFzQ2xhc3MoJ29wZW4tbmF2JykpIHtcblx0XHRcdHRvZ2dsZU1lbnUoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0SEVBREVSX0hFSUdIVCA9IGhlYWRlci5vdXRlckhlaWdodCgpO1xuXHRcdH1cblxuXHRcdGNsYXNzT25Db25kaXRpb24oaHRtbCwgJ2ZsaXAtbmF2Jywgd2luZG93LnBhZ2VZT2Zmc2V0ID4gMCk7XG5cdH1cblxuXHRmdW5jdGlvbiB0b2dnbGVNZW51KCkge1xuXHRcdGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDgwMCkge1xuXHRcdFx0z4AucHVzaG1lbnUuc2hvdygncHJpbWFyeScpO1xuXHRcdH1cblxuXHRcdGVsc2Uge1xuXHRcdFx0dmFyIG5ld0hlaWdodCA9IEhFQURFUl9IRUlHSFQ7XG5cblx0XHRcdGlmICghaHRtbC5oYXNDbGFzcygnb3Blbi1uYXYnKSkge1xuXHRcdFx0XHRuZXdIZWlnaHQgPSBtYWluTmF2Lm91dGVySGVpZ2h0KCk7XG5cdFx0XHR9XG5cblx0XHRcdGhlYWRlci5jc3Moe2hlaWdodDogcHgobmV3SGVpZ2h0KX0pO1xuXHRcdFx0aHRtbC50b2dnbGVDbGFzcygnb3Blbi1uYXYnKTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBzdWJtaXRXaXNoKHRleHRmaWVsZCkge1xuXHRcdHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKFwiaHR0cHM6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMva3ViZXJuZXRlcy5naXRodWIuaW8vaXNzdWVzL25ldz90aXRsZT1JJTIwd2lzaCUyMFwiICtcblx0XHRcdHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArIFwiJTIwXCIgKyB0ZXh0ZmllbGQudmFsdWUgKyBcIiZib2R5PUklMjB3aXNoJTIwXCIgK1xuXHRcdFx0d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICsgXCIlMjBcIiArIHRleHRmaWVsZC52YWx1ZSk7XG5cblx0XHR0ZXh0ZmllbGQudmFsdWUgPSAnJztcblx0XHR0ZXh0ZmllbGQuYmx1cigpO1xuXHR9XG5cblx0ZnVuY3Rpb24gaGFuZGxlS2V5c3Ryb2tlcyhlKSB7XG5cdFx0c3dpdGNoIChlLndoaWNoKSB7XG5cdFx0XHRjYXNlIDEzOiB7XG5cdFx0XHRcdGlmIChlLmN1cnJlbnRUYXJnZXQgPT09IHdpc2hGaWVsZCkge1xuXHRcdFx0XHRcdHN1Ym1pdFdpc2god2lzaEZpZWxkKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblxuXHRcdFx0Y2FzZSAyNzoge1xuXHRcdFx0XHRpZiAoaHRtbC5oYXNDbGFzcygnb3Blbi1uYXYnKSkge1xuXHRcdFx0XHRcdHRvZ2dsZU1lbnUoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdHRvZ2dsZU1lbnU6IHRvZ2dsZU1lbnVcblx0fTtcbn0pKCk7XG5cblxuLy8gYWNjb3JkaW9uXG4oZnVuY3Rpb24oKXtcblx0dmFyIHlhaCA9IHRydWU7XG5cdHZhciBtb3ZpbmcgPSBmYWxzZTtcblx0dmFyIENTU19CUk9XU0VSX0hBQ0tfREVMQVkgPSAyNTtcblxuXHQkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe1xuXHRcdC8vIFNhZmFyaSBjaG9rZXMgb24gdGhlIGFuaW1hdGlvbiBoZXJlLCBzby4uLlxuXHRcdGlmIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0Nocm9tZScpID09IC0xICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignU2FmYXJpJykgIT0gLTEpe1xuXHRcdFx0dmFyIGhhY2tTdHlsZSA9IG5ld0RPTUVsZW1lbnQoJ3N0eWxlJyk7XG5cdFx0XHRoYWNrU3R5bGUuaW5uZXJIVE1MID0gJy5waS1hY2NvcmRpb24gLndyYXBwZXJ7dHJhbnNpdGlvbjogbm9uZX0nO1xuXHRcdFx0Ym9keS5hcHBlbmQoaGFja1N0eWxlKTtcblx0XHR9XG5cdFx0Ly8gR3Jvc3MuXG5cblx0XHQkKCcucGktYWNjb3JkaW9uJykuZWFjaChmdW5jdGlvbiAoKSB7XG5cdFx0XHR2YXIgYWNjb3JkaW9uID0gdGhpcztcblx0XHRcdHZhciBjb250ZW50ID0gdGhpcy5pbm5lckhUTUw7XG5cdFx0XHR2YXIgY29udGFpbmVyID0gbmV3RE9NRWxlbWVudCgnZGl2JywgJ2NvbnRhaW5lcicpO1xuXHRcdFx0Y29udGFpbmVyLmlubmVySFRNTCA9IGNvbnRlbnQ7XG5cdFx0XHQkKGFjY29yZGlvbikuZW1wdHkoKTtcblx0XHRcdGFjY29yZGlvbi5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuXHRcdFx0Q29sbGFwc2VCb3goJChjb250YWluZXIpKTtcblx0XHR9KTtcblxuXHRcdHNldFlBSCgpO1xuXG5cdFx0c2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHR5YWggPSBmYWxzZTtcblx0XHR9LCA1MDApO1xuXHR9KTtcblxuXHRmdW5jdGlvbiBDb2xsYXBzZUJveChjb250YWluZXIpe1xuXHRcdGNvbnRhaW5lci5jaGlsZHJlbignLml0ZW0nKS5lYWNoKGZ1bmN0aW9uKCl7XG5cdFx0XHQvLyBidWlsZCB0aGUgVE9DIERPTVxuXHRcdFx0Ly8gdGhlIGFuaW1hdGVkIG9wZW4vY2xvc2UgaXMgZW5hYmxlZCBieSBoYXZpbmcgZWFjaCBpdGVtJ3MgY29udGVudCBleGlzdCBpbiB0aGUgZmxvdywgYXQgaXRzIG5hdHVyYWwgaGVpZ2h0LFxuXHRcdFx0Ly8gZW5jbG9zZWQgaW4gYSB3cmFwcGVyIHdpdGggaGVpZ2h0ID0gMCB3aGVuIGNsb3NlZCwgYW5kIGhlaWdodCA9IGNvbnRlbnRIZWlnaHQgd2hlbiBvcGVuLlxuXHRcdFx0dmFyIGl0ZW0gPSB0aGlzO1xuXG5cdFx0XHQvLyBvbmx5IGFkZCBjb250ZW50IHdyYXBwZXJzIHRvIGNvbnRhaW5lcnMsIG5vdCB0byBsaW5rc1xuXHRcdFx0dmFyIGlzQ29udGFpbmVyID0gaXRlbS50YWdOYW1lID09PSAnRElWJztcblxuXHRcdFx0dmFyIHRpdGxlVGV4dCA9IGl0ZW0uZ2V0QXR0cmlidXRlKCdkYXRhLXRpdGxlJyk7XG5cdFx0XHR2YXIgdGl0bGUgPSBuZXdET01FbGVtZW50KCdkaXYnLCAndGl0bGUnKTtcblx0XHRcdHRpdGxlLmlubmVySFRNTCA9IHRpdGxlVGV4dDtcblxuXHRcdFx0dmFyIHdyYXBwZXI7XG5cblx0XHRcdGlmIChpc0NvbnRhaW5lcikge1xuXHRcdFx0XHR2YXIgd3JhcHBlciA9IG5ld0RPTUVsZW1lbnQoJ2RpdicsICd3cmFwcGVyJyk7XG5cdFx0XHRcdHZhciBjb250ZW50ID0gbmV3RE9NRWxlbWVudCgnZGl2JywgJ2NvbnRlbnQnKTtcblx0XHRcdFx0Y29udGVudC5pbm5lckhUTUwgPSBpdGVtLmlubmVySFRNTDtcblx0XHRcdFx0d3JhcHBlci5hcHBlbmRDaGlsZChjb250ZW50KTtcblx0XHRcdH1cblxuXHRcdFx0aXRlbS5pbm5lckhUTUwgPSAnJztcblx0XHRcdGl0ZW0uYXBwZW5kQ2hpbGQodGl0bGUpO1xuXG5cdFx0XHRpZiAod3JhcHBlcikge1xuXHRcdFx0XHRpdGVtLmFwcGVuZENoaWxkKHdyYXBwZXIpO1xuXHRcdFx0XHQkKHdyYXBwZXIpLmNzcyh7aGVpZ2h0OiAwfSk7XG5cdFx0XHR9XG5cblxuXHRcdFx0JCh0aXRsZSkuY2xpY2soZnVuY3Rpb24oKXtcblx0XHRcdFx0aWYgKCF5YWgpIHtcblx0XHRcdFx0XHRpZiAobW92aW5nKSByZXR1cm47XG5cdFx0XHRcdFx0bW92aW5nID0gdHJ1ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChjb250YWluZXJbMF0uZ2V0QXR0cmlidXRlKCdkYXRhLXNpbmdsZScpKSB7XG5cdFx0XHRcdFx0dmFyIG9wZW5TaWJsaW5ncyA9IGl0ZW0uc2libGluZ3MoKS5maWx0ZXIoZnVuY3Rpb24oc2liKXtyZXR1cm4gc2liLmhhc0NsYXNzKCdvbicpO30pO1xuXHRcdFx0XHRcdG9wZW5TaWJsaW5ncy5mb3JFYWNoKGZ1bmN0aW9uKHNpYmxpbmcpe1xuXHRcdFx0XHRcdFx0dG9nZ2xlSXRlbShzaWJsaW5nKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcblx0XHRcdFx0XHRpZiAoIWlzQ29udGFpbmVyKSB7XG5cdFx0XHRcdFx0XHRtb3ZpbmcgPSBmYWxzZTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dG9nZ2xlSXRlbShpdGVtKTtcblx0XHRcdFx0fSwgQ1NTX0JST1dTRVJfSEFDS19ERUxBWSk7XG5cdFx0XHR9KTtcblxuXHRcdFx0ZnVuY3Rpb24gdG9nZ2xlSXRlbSh0aGlzSXRlbSl7XG5cdFx0XHRcdHZhciB0aGlzV3JhcHBlciA9ICQodGhpc0l0ZW0pLmZpbmQoJy53cmFwcGVyJykuZXEoMCk7XG5cblx0XHRcdFx0aWYgKCF0aGlzV3JhcHBlcikgcmV0dXJuO1xuXG5cdFx0XHRcdHZhciBjb250ZW50SGVpZ2h0ID0gdGhpc1dyYXBwZXIuZmluZCgnLmNvbnRlbnQnKS5lcSgwKS5pbm5lckhlaWdodCgpICsgJ3B4JztcblxuXHRcdFx0XHRpZiAoJCh0aGlzSXRlbSkuaGFzQ2xhc3MoJ29uJykpIHtcblx0XHRcdFx0XHR0aGlzV3JhcHBlci5jc3Moe2hlaWdodDogY29udGVudEhlaWdodH0pO1xuXHRcdFx0XHRcdCQodGhpc0l0ZW0pLnJlbW92ZUNsYXNzKCdvbicpO1xuXG5cdFx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpe1xuXHRcdFx0XHRcdFx0dGhpc1dyYXBwZXIuY3NzKHtoZWlnaHQ6IDB9KTtcblx0XHRcdFx0XHRcdG1vdmluZyA9IGZhbHNlO1xuXHRcdFx0XHRcdH0sIENTU19CUk9XU0VSX0hBQ0tfREVMQVkpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdCQoaXRlbSkuYWRkQ2xhc3MoJ29uJyk7XG5cdFx0XHRcdFx0dGhpc1dyYXBwZXIuY3NzKHtoZWlnaHQ6IGNvbnRlbnRIZWlnaHR9KTtcblxuXHRcdFx0XHRcdHZhciBkdXJhdGlvbiA9IHBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzV3JhcHBlclswXSkudHJhbnNpdGlvbkR1cmF0aW9uKSAqIDEwMDA7XG5cblx0XHRcdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG5cdFx0XHRcdFx0XHR0aGlzV3JhcHBlci5jc3Moe2hlaWdodDogJyd9KTtcblx0XHRcdFx0XHRcdG1vdmluZyA9IGZhbHNlO1xuXHRcdFx0XHRcdH0sIGR1cmF0aW9uKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHR2YXIgaW5uZXJDb250YWluZXJzID0gJChjb250ZW50KS5jaGlsZHJlbignLmNvbnRhaW5lcicpO1xuXHRcdFx0aWYgKGlubmVyQ29udGFpbmVycy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGlubmVyQ29udGFpbmVycy5lYWNoKGZ1bmN0aW9uKCl7XG5cdFx0XHRcdFx0Q29sbGFwc2VCb3goJCh0aGlzKSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0ZnVuY3Rpb24gc2V0WUFIKCkge1xuXHRcdHZhciBwYXRobmFtZSA9IGxvY2F0aW9uLmhyZWYuc3BsaXQoJyMnKVswXTsgLy8gb24gcGFnZSBsb2FkLCBtYWtlIHN1cmUgdGhlIHBhZ2UgaXMgWUFIIGV2ZW4gaWYgdGhlcmUncyBhIGhhc2hcblx0XHR2YXIgY3VycmVudExpbmtzID0gW107XG5cblx0XHQkKCcucGktYWNjb3JkaW9uIGEnKS5lYWNoKGZ1bmN0aW9uICgpIHtcblx0XHRcdGlmIChwYXRobmFtZSA9PT0gdGhpcy5ocmVmKSBjdXJyZW50TGlua3MucHVzaCh0aGlzKTtcblx0XHR9KTtcblxuXHRcdGN1cnJlbnRMaW5rcy5mb3JFYWNoKGZ1bmN0aW9uICh5YWhMaW5rKSB7XG5cdFx0XHQkKHlhaExpbmspLnBhcmVudHMoJy5pdGVtJykuZWFjaChmdW5jdGlvbigpe1xuXHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzKTtcblx0XHRcdFx0JCh0aGlzKS5hZGRDbGFzcygnb24nKTtcblx0XHRcdFx0JCh0aGlzKS5maW5kKCcud3JhcHBlcicpLmVxKDApLmNzcyh7aGVpZ2h0OiAnYXV0byd9KTtcblx0XHRcdFx0JCh0aGlzKS5maW5kKCcuY29udGVudCcpLmVxKDApLmNzcyh7b3BhY2l0eTogMX0pO1xuXHRcdFx0fSk7XG5cblx0XHRcdCQoeWFoTGluaykuYWRkQ2xhc3MoJ3lhaCcpO1xuXHRcdFx0eWFoTGluay5vbmNsaWNrID0gZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO307XG5cdFx0fSk7XG5cdH1cblxuXHQvL8+ALm1vZHMucHVzaChpbml0KTtcbn0pKCk7XG5cblxuXG4vLyBUT0RPOiBzY3JvbGxpbnRvdmlldyBpbi1wYWdlIFRPQyJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==