{"version":3,"sources":["webpack:///./node_modules/moment-timezone/node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/environments/environment.ts","webpack:///./src/hmr.ts","webpack:///./src/main.ts","webpack:///./src/root-routing.module.ts","webpack:///./src/root.component.css","webpack:///./src/root.component.html","webpack:///./src/root.component.ts","webpack:///./src/root.module.ts","webpack:///./src/shared/AppConsts.ts","webpack:///./src/shared/animations/activity-log-animations.ts","webpack:///./src/shared/auth/app-auth.service.ts","webpack:///./src/shared/auth/parent-auth.gaurd.ts","webpack:///./src/shared/common/alertbox/alertbox.component.html","webpack:///./src/shared/common/alertbox/alertbox.component.ts","webpack:///./src/shared/common/confirm-dialog/confirm-dialog.component.html","webpack:///./src/shared/common/confirm-dialog/confirm-dialog.component.ts","webpack:///./src/shared/common/constants.ts","webpack:///./src/shared/common/custom-date-format.ts","webpack:///./src/shared/common/isdirty-alertbox/isdirty-alertbox.component.css","webpack:///./src/shared/common/isdirty-alertbox/isdirty-alertbox.component.html","webpack:///./src/shared/common/isdirty-alertbox/isdirty-alertbox.component.ts","webpack:///./src/shared/directives/input-value-restrict.ts","webpack:///./src/shared/interfaces/common.ts","webpack:///./src/shared/layout/admin-footer/admin-footer.component.css","webpack:///./src/shared/layout/admin-footer/admin-footer.component.html","webpack:///./src/shared/layout/admin-footer/admin-footer.component.ts","webpack:///./src/shared/layout/admin-header/admin-header.component.css","webpack:///./src/shared/layout/admin-header/admin-header.component.html","webpack:///./src/shared/layout/admin-header/admin-header.component.ts","webpack:///./src/shared/layout/admin-menu/admin-menu.component.html","webpack:///./src/shared/layout/admin-menu/admin-menu.component.scss","webpack:///./src/shared/layout/admin-menu/admin-menu.component.ts","webpack:///./src/shared/layout/admin-menu/menu-list-item/menu-list-item.component.html","webpack:///./src/shared/layout/admin-menu/menu-list-item/menu-list-item.component.scss","webpack:///./src/shared/layout/admin-menu/menu-list-item/menu-list-item.component.ts","webpack:///./src/shared/layout/admin-menu/nav.service.ts","webpack:///./src/shared/layout/alerts/alerts.component.css","webpack:///./src/shared/layout/alerts/alerts.component.html","webpack:///./src/shared/layout/alerts/alerts.component.ts","webpack:///./src/shared/layout/animations.ts","webpack:///./src/shared/layout/change-password/change-password.component.css","webpack:///./src/shared/layout/change-password/change-password.component.html","webpack:///./src/shared/layout/change-password/change-password.component.ts","webpack:///./src/shared/layout/customer-header/customer-header.component.css","webpack:///./src/shared/layout/customer-header/customer-header.component.html","webpack:///./src/shared/layout/customer-header/customer-header.component.ts","webpack:///./src/shared/layout/customer-menu/customer-menu.component.css","webpack:///./src/shared/layout/customer-menu/customer-menu.component.html","webpack:///./src/shared/layout/customer-menu/customer-menu.component.ts","webpack:///./src/shared/layout/profile-edit/profile-edit.component.css","webpack:///./src/shared/layout/profile-edit/profile-edit.component.html","webpack:///./src/shared/layout/profile-edit/profile-edit.component.ts","webpack:///./src/shared/layout/profile/profile.component.css","webpack:///./src/shared/layout/profile/profile.component.html","webpack:///./src/shared/layout/profile/profile.component.ts","webpack:///./src/shared/nav/app-url.service.ts","webpack:///./src/shared/pipes/custom-date.pipe.ts","webpack:///./src/shared/pipes/customer-filter.pipe.ts","webpack:///./src/shared/pipes/elipsis.pipe.ts","webpack:///./src/shared/pipes/phone-format.pipe.ts","webpack:///./src/shared/pipes/truncate-zero.ts","webpack:///./src/shared/pipes/user-filter.pipe.ts","webpack:///./src/shared/service-proxies/service-proxies.ts","webpack:///./src/shared/service-proxies/service-proxy.module.ts","webpack:///./src/shared/services/admin-dynamic-header.service.ts","webpack:///./src/shared/services/api.service.ts","webpack:///./src/shared/services/auth.service.ts","webpack:///./src/shared/services/banner.service.ts","webpack:///./src/shared/services/common.service.ts","webpack:///./src/shared/services/customer-common.service.ts","webpack:///./src/shared/services/customer.service.ts","webpack:///./src/shared/services/dashboard.service.ts","webpack:///./src/shared/services/dialog.service.ts","webpack:///./src/shared/services/email.service.ts","webpack:///./src/shared/services/faq.service.ts","webpack:///./src/shared/services/login.service.ts","webpack:///./src/shared/services/permission.service.ts","webpack:///./src/shared/services/rest.service.ts","webpack:///./src/shared/services/transaction.service.ts","webpack:///./src/shared/services/user.service.ts","webpack:///./src/shared/session/app-session.service.ts","webpack:///./src/shared/shared.module.ts","webpack:///./src/shared/validators/blank-space-validator.ts","webpack:///./src/shared/validators/password-validator.ts"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0G;;;;;;;;;;;AC9QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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","file":"main.js","sourcesContent":["var map = {\n\t\"./af\": \"./node_modules/moment-timezone/node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment-timezone/node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment-timezone/node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment-timezone/node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment-timezone/node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment-timezone/node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment-timezone/node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment-timezone/node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment-timezone/node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment-timezone/node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment-timezone/node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment-timezone/node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment-timezone/node_modules/moment/locale/bn.js\",\n\t\"./bn.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment-timezone/node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment-timezone/node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment-timezone/node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment-timezone/node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment-timezone/node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment-timezone/node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment-timezone/node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment-timezone/node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment-timezone/node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment-timezone/node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment-timezone/node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment-timezone/node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment-timezone/node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/moment-timezone/node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment-timezone/node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment-timezone/node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment-timezone/node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment-timezone/node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/en-il.js\",\n\t\"./en-nz\": \"./node_modules/moment-timezone/node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/en-nz.js\",\n\t\"./eo\": \"./node_modules/moment-timezone/node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment-timezone/node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment-timezone/node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/es-do.js\",\n\t\"./es-us\": \"./node_modules/moment-timezone/node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment-timezone/node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment-timezone/node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment-timezone/node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment-timezone/node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/fi.js\",\n\t\"./fo\": \"./node_modules/moment-timezone/node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment-timezone/node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment-timezone/node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment-timezone/node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment-timezone/node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/fy.js\",\n\t\"./gd\": \"./node_modules/moment-timezone/node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment-timezone/node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/gl.js\",\n\t\"./gom-latn\": \"./node_modules/moment-timezone/node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment-timezone/node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment-timezone/node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment-timezone/node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment-timezone/node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment-timezone/node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment-timezone/node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment-timezone/node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment-timezone/node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment-timezone/node_modules/moment/locale/it.js\",\n\t\"./it.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment-timezone/node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment-timezone/node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment-timezone/node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment-timezone/node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment-timezone/node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment-timezone/node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment-timezone/node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment-timezone/node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment-timezone/node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment-timezone/node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment-timezone/node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment-timezone/node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment-timezone/node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment-timezone/node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment-timezone/node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment-timezone/node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment-timezone/node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment-timezone/node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment-timezone/node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment-timezone/node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment-timezone/node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment-timezone/node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment-timezone/node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment-timezone/node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment-timezone/node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment-timezone/node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment-timezone/node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment-timezone/node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/nn.js\",\n\t\"./pa-in\": \"./node_modules/moment-timezone/node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment-timezone/node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment-timezone/node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment-timezone/node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment-timezone/node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment-timezone/node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment-timezone/node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment-timezone/node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment-timezone/node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment-timezone/node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment-timezone/node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment-timezone/node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment-timezone/node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment-timezone/node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment-timezone/node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment-timezone/node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment-timezone/node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment-timezone/node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment-timezone/node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment-timezone/node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment-timezone/node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment-timezone/node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/th.js\",\n\t\"./tl-ph\": \"./node_modules/moment-timezone/node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment-timezone/node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment-timezone/node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment-timezone/node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment-timezone/node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment-timezone/node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment-timezone/node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment-timezone/node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment-timezone/node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment-timezone/node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment-timezone/node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment-timezone/node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment-timezone/node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment-timezone/node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment-timezone/node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment-timezone/node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-tw\": \"./node_modules/moment-timezone/node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment-timezone/node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment-timezone/node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","var map = {\n\t\"./modules/admin/admin.module\": [\n\t\t\"./src/app/modules/admin/admin.module.ts\",\n\t\t\"default~modules-admin-admin-module~modules-customer-customer-module\",\n\t\t\"modules-admin-admin-module\"\n\t],\n\t\"./modules/customer/customer.module\": [\n\t\t\"./src/app/modules/customer/customer.module.ts\",\n\t\t\"default~modules-admin-admin-module~modules-customer-customer-module\",\n\t\t\"modules-customer-customer-module\"\n\t],\n\t\"app/app.module\": [\n\t\t\"./src/app/app.module.ts\",\n\t\t\"app-app-module\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tvar ids = map[req];\n\tif(!ids) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\tvar id = ids[0];\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";\nmodule.exports = webpackAsyncContext;","// \"Production\" enabled environment\r\n//https://cpapi.neclease.com/\r\n\r\nexport const environment = {\r\n production: true,\r\n hmr: false,\r\n appConfig: 'appconfig.json',\r\n baseUrl: 'https://cpapi.neclease.com/',\r\n timeOutDuration: 1, // in days\r\n S3StorageService: true,\r\n GATrackingId: 'G-XRY2LP9N51'\r\n};","import { NgModuleRef, ApplicationRef } from '@angular/core';\r\nimport { createNewHosts } from '@angularclass/hmr';\r\n\r\nexport const hmrBootstrap = (module: any, bootstrap: () => Promise>) => {\r\n let ngModule: NgModuleRef;\r\n module.hot.accept();\r\n bootstrap().then(mod => ngModule = mod);\r\n module.hot.dispose(() => {\r\n let appRef: ApplicationRef = ngModule.injector.get(ApplicationRef);\r\n let elements = appRef.components.map(c => c.location.nativeElement);\r\n let makeVisible = createNewHosts(elements);\r\n ngModule.destroy();\r\n makeVisible();\r\n });\r\n};","import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\nimport { enableProdMode, ChangeDetectorRef } from '@angular/core';\r\nimport { environment } from './environments/environment';\r\nimport { RootModule } from './root.module';\r\nimport { hmrBootstrap } from './hmr';\r\n\r\nimport * as moment from 'moment';\r\n\r\nimport 'moment/min/locales.min';\r\nimport 'moment-timezone';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nconst bootstrap = () => {\r\n return platformBrowserDynamic().bootstrapModule(RootModule);\r\n};\r\n\r\n/* \"Hot Module Replacement\" is enabled as described on\r\n * https://medium.com/@beeman/tutorial-enable-hrm-in-angular-cli-apps-1b0d13b80130#.sa87zkloh\r\n */\r\n\r\nif (environment.hmr) {\r\n if (module['hot']) {\r\n hmrBootstrap(module, bootstrap); //HMR enabled bootstrap\r\n } else {\r\n console.error('HMR is not enabled for webpack-dev-server!');\r\n console.log('Are you using the --hmr flag for ng serve?');\r\n }\r\n} else {\r\n bootstrap(); //Regular bootstrap\r\n}","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule, PreloadAllModules } from '@angular/router';\r\nimport { PageGuard } from '@shared/auth/parent-auth.gaurd';\r\nimport { QuicklinkModule, QuicklinkStrategy } from 'ngx-quicklink';\r\n\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: 'app', pathMatch: 'full', canActivate: [PageGuard] },\r\n {\r\n path: 'app',\r\n loadChildren: 'app/app.module#AppModule', //Lazy load account module\r\n data: { preload: true }\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [QuicklinkModule,RouterModule.forRoot(routes, { useHash: true, preloadingStrategy: QuicklinkStrategy })], // for loading lazy modules in idle time ------ ,preloadingStrategy: PreloadAllModules\r\n exports: [RouterModule],\r\n providers: []\r\n})\r\nexport class RootRoutingModule {}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvcm9vdC5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"
\\r\\n \\r\\n
\\r\\n\"","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n styleUrls: ['./root.component.css'],\r\n templateUrl: './root.component.html'\r\n})\r\nexport class RootComponent {\r\n\r\n}","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NoopAnimationsModule, BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { NgModule, Injector, APP_INITIALIZER, LOCALE_ID } from '@angular/core';\r\nimport { PlatformLocation, registerLocaleData } from '@angular/common';\r\n\r\nimport { AbpModule } from '@abp/abp.module';\r\nimport { AbpHttpInterceptor } from '@abp/abpHttpInterceptor';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\n\r\nimport { SharedModule } from '@shared/shared.module';\r\nimport { ServiceProxyModule } from '@shared/service-proxies/service-proxy.module';\r\nimport { RootRoutingModule } from './root-routing.module';\r\n\r\nimport { AppConsts } from '@shared/AppConsts';\r\nimport { AppSessionService } from '@shared/session/app-session.service';\r\nimport { API_BASE_URL } from '@shared/service-proxies/service-proxies';\r\n\r\nimport { RootComponent } from './root.component';\r\nimport { AppPreBootstrap } from './AppPreBootstrap';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { ToastrModule } from 'ngx-toastr';\r\n\r\nimport * as _ from 'lodash';\r\nimport 'hammerjs';\r\nimport { PageGuard, ParentAuthGuard } from '@shared/auth/parent-auth.gaurd';\r\n\r\nexport function convertAbpLocaleToAngularLocale(locale: string): string {\r\n if (!AppConsts.localeMappings) {\r\n return locale;\r\n }\r\n\r\n let localeMapings = _.filter(AppConsts.localeMappings, { from: locale });\r\n if (localeMapings && localeMapings.length) {\r\n return localeMapings[0]['to'];\r\n }\r\n\r\n return locale;\r\n}\r\n\r\nexport function shouldLoadLocale(): boolean {\r\n return abp.localization.currentLanguage.name && abp.localization.currentLanguage.name !== 'en-US';\r\n}\r\n\r\nexport function getRemoteServiceBaseUrl(): string {\r\n return AppConsts.remoteServiceBaseUrl;\r\n}\r\n\r\nexport function getCurrentLanguage(): string {\r\n return abp.localization.currentLanguage.name;\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n SharedModule.forRoot(),\r\n AbpModule,\r\n ServiceProxyModule,\r\n RootRoutingModule,\r\n HttpClientModule,\r\n ToastrModule.forRoot({\r\n maxOpened: 1,\r\n autoDismiss: true\r\n })\r\n ],\r\n declarations: [RootComponent],\r\n providers: [\r\n { provide: HTTP_INTERCEPTORS, useClass: AbpHttpInterceptor, multi: true },\r\n { provide: API_BASE_URL, useFactory: getRemoteServiceBaseUrl },\r\n PageGuard,\r\n ParentAuthGuard\r\n // {\r\n // provide: LOCALE_ID,\r\n // useFactory: getCurrentLanguage\r\n // }\r\n ],\r\n bootstrap: [RootComponent]\r\n})\r\nexport class RootModule {}\r\n\r\nexport function getBaseHref(platformLocation: PlatformLocation): string {\r\n var baseUrl = platformLocation.getBaseHrefFromDOM();\r\n if (baseUrl) {\r\n return baseUrl;\r\n }\r\n\r\n return '/';\r\n}\r\n\r\nfunction getDocumentOrigin() {\r\n if (!document.location.origin) {\r\n return (\r\n document.location.protocol +\r\n '//' +\r\n document.location.hostname +\r\n (document.location.port ? ':' + document.location.port : '')\r\n );\r\n }\r\n\r\n return document.location.origin;\r\n}\r\n","export class AppConsts {\r\n\r\n static remoteServiceBaseUrl = 'http://neccp.fingent.net/';\r\n static appBaseUrl = 'http://cpweb.fingent.net/';\r\n static appBaseHref: string; // returns angular's base-href parameter value if used during the publish\r\n \r\n static localeMappings: any = [];\r\n\r\n static readonly userManagement = {\r\n defaultAdminUserName: 'admin'\r\n };\r\n\r\n static readonly localization = {\r\n defaultLocalizationSourceName: 'CustomerPortal'\r\n };\r\n\r\n \r\n static readonly authorization = {\r\n encrptedAuthTokenName: 'enc_auth_token'\r\n };\r\n}\r\n","import { trigger, transition, style, animate, query, stagger, animateChild, state, keyframes } from \"@angular/animations\";\r\n\r\nexport const listAnimations = [\r\n trigger('items', [\r\n transition(':enter', [\r\n style({ transform: 'scale(0.5)', opacity: 0 }), // initial\r\n animate('0.7s cubic-bezier(.8, -0.6, 0.26, 1.6)',\r\n style({ transform: 'scale(1)', opacity: 1 })) // final\r\n ]),\r\n transition(':leave', [\r\n style({ transform: 'scale(1)', opacity: 1, height: '*' }),\r\n animate('0.6s cubic-bezier(.8, -0.6, 0.2, 1.5)',\r\n style({\r\n transform: 'scale(0.5)', opacity: 0,\r\n height: '0px', margin: '0px'\r\n }))\r\n ])\r\n ]),\r\n trigger('list', [\r\n transition(':enter', [\r\n query('@items', stagger(150, animateChild()), { optional: true })\r\n ]),\r\n transition(':leave', [\r\n query('@items', stagger(50, animateChild()), { optional: true })\r\n ]),\r\n ])\r\n]\r\n\r\nexport const headreAnimations = [\r\n trigger('items', [\r\n transition('* => *', [\r\n style({ transform: 'scale(0.5)', opacity: 0 }), // initial\r\n animate('0.7s cubic-bezier(.8, -0.6, 0.26, 1.6)',\r\n style({ transform: 'scale(1)', opacity: 1 })) // final\r\n ])\r\n\r\n ]),\r\n trigger('list', [\r\n transition('* => *', [\r\n query('@items', stagger(150, animateChild()))\r\n ]),\r\n\r\n ])\r\n]\r\n\r\nexport const menuAnimations = [\r\n trigger('items', [\r\n transition(':enter', [\r\n style({ transform: 'scale(0.5)', opacity: 0 }), // initial\r\n animate('0.2s cubic-bezier(.8, -0.6, 0.26, 1.6)',\r\n style({ transform: 'scale(1)', opacity: 1 })) // final\r\n ]),\r\n transition(':leave', [\r\n style({ transform: 'scale(1)', opacity: 1, height: '*' }),\r\n animate('0.2s cubic-bezier(.8, -0.6, 0.2, 1.5)',\r\n style({\r\n transform: 'scale(0.5)', opacity: 0,\r\n height: '0px', margin: '0px'\r\n }))\r\n ])\r\n ]),\r\n trigger('list', [\r\n transition(':enter', [\r\n query('@items', stagger(150, animateChild()))\r\n ]),\r\n transition(':leave', [\r\n query('@items', stagger(50, animateChild()))\r\n ]),\r\n ]),\r\n trigger('indicatorRotate', [\r\n state('collapsed', style({ transform: 'rotate(0deg)' })),\r\n state('expanded', style({ transform: 'rotate(180deg)' })),\r\n transition('expanded <=> collapsed',\r\n animate('225ms cubic-bezier(0.4,0.0,0.2,1)')\r\n ),\r\n ])\r\n]\r\n\r\nexport const gridAnimation = trigger('gridAnimation', [\r\n transition(':enter', [\r\n style({ opacity: 0 }),\r\n animate('.5s ease-in', keyframes([\r\n style({ opacity: 0, transform: 'scale(0.3) translate3d(0,0,0)', offset: 0 }),\r\n // style({ opacity: .9, transform: 'scale(1)', offset: 0.5 }),\r\n style({ opacity: 0.5, transform: 'scale(0.70)', offset: 0.5 }),\r\n style({ opacity: 1, transform: 'scale(1) translate3d(0,0,0)', offset: 1.0 })\r\n ]))\r\n ])\r\n ]\r\n );","import { Injectable } from '@angular/core';\r\nimport { AppConsts } from '@shared/AppConsts';\r\n\r\n@Injectable()\r\nexport class AppAuthService {\r\n\r\n logout(reload?: boolean): void {\r\n abp.auth.clearToken();\r\n if (reload !== false) {\r\n location.href = AppConsts.appBaseUrl;\r\n }\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router, NavigationEnd } from '@angular/router';\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { Observable, Subscription, merge } from 'rxjs';\r\nimport { AdminDynamicHeaderService } from '@shared/services/admin-dynamic-header.service';\r\nimport { environment } from 'environments/environment';\r\nimport { CookieService } from 'ngx-cookie-service';\r\n\r\n@Injectable()\r\nexport class ParentAuthGuard implements CanActivate {\r\n currentUrl: any;\r\n userPermission: any[] = []\r\n constructor(\r\n private router: Router,\r\n public http: HttpClient\r\n ) { }\r\n ngOnInit() {\r\n }\r\n canActivate(\r\n next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot): Observable | Promise | boolean {\r\n if (localStorage.getItem('access_token') !== null) {\r\n let loginDuration = this.getLoginMinutes(new Date(localStorage.getItem('login_time')), new Date());\r\n let expiryDuration = environment.timeOutDuration * 24 * 60;\r\n if (loginDuration < expiryDuration) {\r\n let isCustomer = (localStorage.getItem('userRole') || '').toLowerCase().includes('customer');\r\n let isAdminUrl = state.url.includes('admin');\r\n if (isCustomer && !isAdminUrl) {\r\n return true;\r\n } else if (!isCustomer && isAdminUrl) {\r\n return true;\r\n } else {\r\n this.router.navigate(['/unauthorized']);\r\n } \r\n }\r\n } else {\r\n this.router.navigate(['']);\r\n }\r\n let loggedInUser = localStorage.getItem('loggedInUser'); // For rememberme autofill\r\n let loggedEmail = localStorage.getItem('email'); // For rememberme autofill\r\n localStorage.clear();\r\n localStorage.setItem(\"loggedInUser\", loggedInUser);\r\n localStorage.setItem(\"email\", loggedEmail);\r\n this.router.navigate(['app/login']);\r\n return false;\r\n }\r\n\r\n getLoginMinutes(logTime: Date, curTime: Date) {\r\n var totalMinutes = 0;\r\n totalMinutes = (curTime.getTime() - logTime.getTime()) / (1000 * 60);\r\n return totalMinutes;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class PageGuard implements CanActivate {\r\n currentUrl: any;\r\n userPermission: any[] = []\r\n constructor(\r\n private router: Router,\r\n public http: HttpClient,\r\n private cookieService: CookieService\r\n ) { }\r\n\r\n ngOnInit() { }\r\n\r\n canActivate(\r\n next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot): Observable | Promise | boolean {\r\n const UserLoggedInvalue: string = this.cookieService.get('isRemember');\r\n\r\n if (localStorage.getItem('access_token') !== null && UserLoggedInvalue) {\r\n let loginDuration = this.getLoginMinutes(new Date(localStorage.getItem('login_time')), new Date());\r\n let expiryDuration = environment.timeOutDuration * 24 * 60;\r\n if (loginDuration < expiryDuration) {\r\n let isCustomer = (localStorage.getItem('userRole') || '').toLowerCase().includes('customer');\r\n if (isCustomer) {\r\n this.router.navigate(['app/customer']);\r\n } else {\r\n this.router.navigate(['app/admin']); \r\n }\r\n return false;\r\n }\r\n }\r\n localStorage.clear();\r\n // this.router.navigate(['app/login']);\r\n return true;\r\n \r\n }\r\n\r\n getLoginMinutes(logTime: Date, curTime: Date) {\r\n var totalMinutes = 0;\r\n totalMinutes = (curTime.getTime() - logTime.getTime()) / (1000 * 60);\r\n return totalMinutes;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{ data.header }}

\\r\\n
\\r\\n
\\r\\n

\\r\\n {{ data.content }}\\r\\n

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Payment Process

\\r\\n
\\r\\n
\\r\\n

\\r\\n Your payment is in process.. Please Wait...\\r\\n

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","import { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-alert-box',\r\n templateUrl: './alertbox.component.html'\r\n})\r\nexport class AlertBoxComponent {\r\n constructor(\r\n public router: Router,\r\n public dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data\r\n ) {\r\n }\r\n\r\n onCancelClick() {\r\n this.dialogRef.close();\r\n }\r\n onProceed() {\r\n this.dialogRef.close();\r\n this.router.navigateByUrl('/app/customer/contracts/pay-now/12');\r\n }\r\n}\r\n\r\n/* Opening dialogue box\r\n =======================\r\n let ref = this.dialog.open(AlertBoxComponent, {\r\n width: '520px',\r\n height: 'auto',\r\n data: { isOpened: [true/false],\r\n header: [alert box heading],\r\n content: [alert box text]\r\n }\r\n });\r\n*/\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n
\\r\\n
\\r\\n {{ dialogBody }}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","import { Component, HostListener, Input, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material';\r\nimport { DialogService } from '@shared/services/dialog.service';\r\n\r\n/**\r\n * ModalComponent - This class represents the modal component.\r\n * @requires Component\r\n */\r\n\r\n@Component({\r\n selector: 'app-confirm-dialog',\r\n templateUrl: './confirm-dialog.component.html'\r\n})\r\nexport class ConfirmDialogComponent {\r\n public dialogTitle: string;\r\n public dialogBody: string;\r\n\r\n constructor(public dialogRef: MatDialogRef) {}\r\n}\r\n","export const key = \"NecFinSer2019\"","import { NativeDateAdapter, MatDateFormats } from \"@angular/material\";\r\n\r\nexport class AppDateAdapter extends NativeDateAdapter {\r\n format(date: Date, displayFormat: Object): string {\r\n if (displayFormat === 'input') {\r\n let day: string = date.getDate().toString();\r\n day = +day < 10 ? '0' + day : day;\r\n let month: string = (date.getMonth() + 1).toString();\r\n month = +month < 10 ? '0' + month : month;\r\n let year = date.getFullYear();\r\n return `${month}/${day}/${year}`;\r\n }\r\n return date.toDateString();\r\n }\r\n}\r\n\r\nexport const APP_DATE_FORMATS: MatDateFormats = {\r\n parse: {\r\n dateInput: { month: 'short', year: 'numeric', day: 'numeric' },\r\n },\r\n display: {\r\n dateInput: 'input',\r\n monthYearLabel: { year: 'numeric', month: 'numeric' },\r\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric'\r\n },\r\n monthYearA11yLabel: { year: 'numeric', month: 'long' },\r\n }\r\n};","module.exports = \".modal-popup\\r\\n{\\r\\n z-index:15000000;\\r\\n}\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zaGFyZWQvY29tbW9uL2lzZGlydHktYWxlcnRib3gvaXNkaXJ0eS1hbGVydGJveC5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztJQUVJLGlCQUFpQjtDQUNwQiIsImZpbGUiOiJzcmMvc2hhcmVkL2NvbW1vbi9pc2RpcnR5LWFsZXJ0Ym94L2lzZGlydHktYWxlcnRib3guY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5tb2RhbC1wb3B1cFxyXG57XHJcbiAgICB6LWluZGV4OjE1MDAwMDAwO1xyXG59Il19 */\"","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Alert

\\r\\n
\\r\\n
\\r\\n

\\r\\n You have unsaved changes! Do you want to continue?\\r\\n

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","import { Component, OnInit, Input, SimpleChanges } from '@angular/core';\r\nimport { UserService } from '@shared/services/user.service';\r\n\r\n@Component({\r\n selector: 'app-isdirty-alertbox',\r\n templateUrl: './isdirty-alertbox.component.html',\r\n styleUrls: ['./isdirty-alertbox.component.css']\r\n})\r\nexport class IsdirtyAlertboxComponent implements OnInit {\r\n @Input() isDirty;\r\n\r\n modalFlag: boolean = false;\r\n constructor(private userService: UserService) {}\r\n\r\n ngOnInit() {\r\n this.modalFlag = this.isDirty;\r\n }\r\n onCancelClick() {\r\n this.modalFlag = false;\r\n }\r\n\r\n onConfirmationClick() {\r\n this.modalFlag = false;\r\n this.userService.IsDirtyClear.next(null);\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n var isDirty = changes['isDirty'].currentValue;\r\n if (isDirty) this.modalFlag = true;\r\n else this.modalFlag = true;\r\n }\r\n}\r\n","import { Directive, ElementRef, Input } from '@angular/core';\r\nimport * as Inputmask from 'inputmask';\r\n\r\n\r\n@Directive({\r\n selector: '[app-restrict-input]',\r\n})\r\nexport class RestrictInputDirective {\r\n\r\n // map of some of the regex strings I'm using (TODO: add your own)\r\n private regexMap = {\r\n integer: '^[0-9]*$',\r\n float: '^[+-]?([0-9]*[.])?[0-9]+$',\r\n words: '([A-z]*\\\\s)*',\r\n point25: '^\\-?[0-9]*(?:\\\\.25|\\\\.50|\\\\.75|)$'\r\n };\r\n\r\n public constructor(private el: ElementRef) { }\r\n\r\n @Input('app-restrict-input')\r\n public set defineInputType(type: string) {\r\n Inputmask({ regex: this.regexMap[type], placeholder: '' })\r\n .mask(this.el.nativeElement);\r\n }\r\n\r\n}\r\n","import { Observable } from 'rxjs';\r\n\r\nexport interface DashboardData {\r\n type: number;\r\n // UserData: {\r\n // TotalCustomers: number;\r\n // ActiveCustomer: number;\r\n // InactiveCustomer: number;\r\n // loggedCustomers: number;\r\n // };\r\n // ContractData: {\r\n // TotalContracts: number;\r\n // NetInvetsment: number;\r\n // TimeDeliquent: number;\r\n // AccountRecievable: number;\r\n // };\r\n}\r\n\r\nexport interface dashboardCount {\r\n MNewContract: number;\r\n MDisposedContract: number;\r\n YNewContract: number;\r\n YDisposedContract:number;\r\n type: number;\r\n syncTime: string;\r\n}\r\n\r\nexport interface Company {\r\n CustomerCompany: string;\r\n CompanyId: number;\r\n}\r\n\r\nexport interface ListItem {\r\n Id: number;\r\n Name: string;\r\n}\r\n\r\nexport interface ListItemTemp {\r\n id: number;\r\n name: string;\r\n}\r\n\r\nexport interface DocumentInfo {\r\n file: string;\r\n ObjectType: ObjectType;\r\n FileName: string;\r\n FileType: FileType;\r\n ObjectId: number;\r\n}\r\n\r\nexport enum ObjectType {\r\n None = 0,\r\n Banner = 1,\r\n FormsAndDocuments = 2,\r\n UserProfile = 3,\r\n Requests = 4\r\n}\r\n\r\nexport enum FileType {\r\n None = 0,\r\n Document = 1,\r\n Image = 2\r\n}\r\n\r\nexport interface DownloadZip {\r\n filename:string[];\r\n id:number;\r\n objectType:ObjectType;\r\n}\r\n\r\nexport interface Address {\r\n id: number;\r\n Street: string;\r\n State: string;\r\n Country: string;\r\n City: string;\r\n Zip: string;\r\n Address:string;\r\n}\r\n\r\nexport interface UserPasswordDetails {\r\n UserId: number;\r\n OldPassword: string;\r\n NewPassword: string;\r\n ConfirmNewPassword: string;\r\n IsAgree: boolean;\r\n}\r\n\r\nexport class CommonCriteria {\r\n SearchKey: string;\r\n SortColumn: string;\r\n SortDirection: string;\r\n PageIndex: number;\r\n PageSize: number;\r\n}\r\n\r\nexport enum NotificationType {\r\n None = 0,\r\n ForgotPasswordEmail = 1,\r\n LoginDetailsEmail = 2,\r\n ResendLoginDetailsEmail = 3,\r\n ResetPasswordEmail = 4,\r\n AdditionalFinancingNECEmail = 5,\r\n HelpRequestNECEmail = 6,\r\n CustomerProfileEditNECEmail = 8,\r\n PaymentApprovalDelayEmail = 9,\r\n PaymentApprovalConfirmationEmail = 10,\r\n PaymentApprovalRejection = 11\r\n}\r\n\r\nexport enum TransactionFeeType {\r\n None = 0,\r\n Amount = 1,\r\n Percent = 2\r\n}\r\n\r\nexport enum PaymentType {\r\n None = 0,\r\n Card = 1,\r\n ACH = 2\r\n}\r\n\r\nexport enum TransactionStatus {\r\n None = 0,\r\n AUTHORIZATION_EXPIRED = 1,\r\n AUTHORIZED = 2,\r\n AUTHORIZING = 3,\r\n FAILED = 4,\r\n GATEWAY_REJECTED = 5,\r\n PROCESSOR_DECLINED = 6,\r\n SETTLED = 7,\r\n SETTLING = 8,\r\n SUBMITTED_FOR_SETTLEMENT = 9,\r\n VOIDED = 10,\r\n UNRECOGNIZED = 11,\r\n SETTLEMENT_CONFIRMED = 12,\r\n SETTLEMENT_DECLINED = 13,\r\n SETTLEMENT_PENDING = 14\r\n}\r\n\r\nexport enum SignUPStatus {\r\n None = 0,\r\n System_Approved = 1,\r\n Admin_Approved = 2,\r\n Rejected = 3,\r\n Pending = 4\r\n}\r\n\r\nexport interface ComponentCanDeactivate {\r\n canDeactivate: () => boolean | Observable;\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvc2hhcmVkL2xheW91dC9hZG1pbi1mb290ZXIvYWRtaW4tZm9vdGVyLmNvbXBvbmVudC5jc3MifQ== */\"","module.exports = \"

\\r\\n admin-footer works!\\r\\n

\\r\\n\"","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-admin-footer',\r\n templateUrl: './admin-footer.component.html',\r\n styleUrls: ['./admin-footer.component.css']\r\n})\r\nexport class AdminFooterComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","module.exports = \".page-head h2 {\\r\\n text-transform: capitalize;\\r\\n}\\r\\n.menu-dropdown-icon {\\r\\n float: right !important;\\r\\n}\\r\\n.profile-menu .mat-menu-content {\\r\\n padding: 8px 0 !important;\\r\\n}\\r\\n.profile-menu .mat-menu-item .mat-icon {\\r\\n margin-right: 8px;\\r\\n}\\r\\n.profile-menu button.mat-menu-item {\\r\\n padding: 0 24px;\\r\\n /* padding-top: 5px !important; */\\r\\n}\\r\\n.admin-profile .profile-photo .profile-image {\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n -o-object-fit: cover;\\r\\n object-fit: cover;\\r\\n border-radius: 50%;\\r\\n}\\r\\n.bread-crumb.no-link {\\r\\n cursor: default;\\r\\n}\\r\\n.profile-name {\\r\\n border-radius: 10px;\\r\\n padding: 0 4px 0;\\r\\n}\\r\\n.page-heading .icon-shopping-list-1 {\\r\\n font-size: 30px !important;\\r\\n}\\r\\naside.logo-container.admin-logo img {\\r\\n padding-left: 7px;\\r\\n width: 113px;\\r\\n height: 35px;\\r\\n padding-top: 3px;\\r\\n}\\r\\n.admin-time-div {\\r\\n float: right;\\r\\n padding: 18px 20px 0 0;\\r\\n}\\r\\n.admin-time-div p {\\r\\n margin: 0;\\r\\n font-size: 11px;\\r\\n color: #2b3391;\\r\\n}\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zaGFyZWQvbGF5b3V0L2FkbWluLWhlYWRlci9hZG1pbi1oZWFkZXIuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLDJCQUEyQjtDQUM1QjtBQUNEO0VBQ0Usd0JBQXdCO0NBQ3pCO0FBQ0Q7RUFDRSwwQkFBMEI7Q0FDM0I7QUFDRDtFQUNFLGtCQUFrQjtDQUNuQjtBQUNEO0VBQ0UsZ0JBQWdCO0VBQ2hCLGtDQUFrQztDQUNuQztBQUVEO0VBQ0UsWUFBWTtFQUNaLGFBQWE7RUFDYixxQkFBa0I7S0FBbEIsa0JBQWtCO0VBQ2xCLG1CQUFtQjtDQUNwQjtBQUNEO0VBQ0UsZ0JBQWdCO0NBQ2pCO0FBQ0Q7RUFDRSxvQkFBb0I7RUFDcEIsaUJBQWlCO0NBQ2xCO0FBQ0Q7RUFDRSwyQkFBMkI7Q0FDNUI7QUFDRDtFQUNFLGtCQUFrQjtFQUNsQixhQUFhO0VBQ2IsYUFBYTtFQUNiLGlCQUFpQjtDQUNsQjtBQUNEO0VBQ0UsYUFBYTtFQUNiLHVCQUF1QjtDQUN4QjtBQUNEO0VBQ0UsVUFBVTtFQUNWLGdCQUFnQjtFQUNoQixlQUFlO0NBQ2hCIiwiZmlsZSI6InNyYy9zaGFyZWQvbGF5b3V0L2FkbWluLWhlYWRlci9hZG1pbi1oZWFkZXIuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5wYWdlLWhlYWQgaDIge1xyXG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xyXG59XHJcbi5tZW51LWRyb3Bkb3duLWljb24ge1xyXG4gIGZsb2F0OiByaWdodCAhaW1wb3J0YW50O1xyXG59XHJcbi5wcm9maWxlLW1lbnUgLm1hdC1tZW51LWNvbnRlbnQge1xyXG4gIHBhZGRpbmc6IDhweCAwICFpbXBvcnRhbnQ7XHJcbn1cclxuLnByb2ZpbGUtbWVudSAubWF0LW1lbnUtaXRlbSAubWF0LWljb24ge1xyXG4gIG1hcmdpbi1yaWdodDogOHB4O1xyXG59XHJcbi5wcm9maWxlLW1lbnUgYnV0dG9uLm1hdC1tZW51LWl0ZW0ge1xyXG4gIHBhZGRpbmc6IDAgMjRweDtcclxuICAvKiBwYWRkaW5nLXRvcDogNXB4ICFpbXBvcnRhbnQ7ICovXHJcbn1cclxuXHJcbi5hZG1pbi1wcm9maWxlIC5wcm9maWxlLXBob3RvIC5wcm9maWxlLWltYWdlIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgb2JqZWN0LWZpdDogY292ZXI7XHJcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG59XHJcbi5icmVhZC1jcnVtYi5uby1saW5rIHtcclxuICBjdXJzb3I6IGRlZmF1bHQ7XHJcbn1cclxuLnByb2ZpbGUtbmFtZSB7XHJcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICBwYWRkaW5nOiAwIDRweCAwO1xyXG59XHJcbi5wYWdlLWhlYWRpbmcgLmljb24tc2hvcHBpbmctbGlzdC0xIHtcclxuICBmb250LXNpemU6IDMwcHggIWltcG9ydGFudDtcclxufVxyXG5hc2lkZS5sb2dvLWNvbnRhaW5lci5hZG1pbi1sb2dvIGltZyB7XHJcbiAgcGFkZGluZy1sZWZ0OiA3cHg7XHJcbiAgd2lkdGg6IDExM3B4O1xyXG4gIGhlaWdodDogMzVweDtcclxuICBwYWRkaW5nLXRvcDogM3B4O1xyXG59XHJcbi5hZG1pbi10aW1lLWRpdiB7XHJcbiAgZmxvYXQ6IHJpZ2h0O1xyXG4gIHBhZGRpbmc6IDE4cHggMjBweCAwIDA7XHJcbn1cclxuLmFkbWluLXRpbWUtZGl2IHAge1xyXG4gIG1hcmdpbjogMDtcclxuICBmb250LXNpemU6IDExcHg7XHJcbiAgY29sb3I6ICMyYjMzOTE7XHJcbn1cclxuIl19 */\"","module.exports = \"
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

{{ title }}

\\r\\n \\r\\n\\r\\n
\\r\\n Home\\r\\n \\r\\n \\r\\n {{ item.title }}\\r\\n 35 ? item?.title : '' }}\\\"\\r\\n >\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\"","import { Component, OnInit, ViewEncapsulation, AfterViewInit } from '@angular/core';\r\nimport { AdminDynamicHeaderService } from '@shared/services/admin-dynamic-header.service';\r\nimport { AdminHeaderProperties } from '@shared/interfaces/AdminHeader';\r\nimport { Subscription } from 'rxjs/internal/Subscription';\r\nimport { headreAnimations, menuAnimations } from '@shared/animations/activity-log-animations';\r\nimport { trigger, transition, style, animate } from '@angular/animations';\r\nimport { Router, NavigationStart } from '@angular/router';\r\nimport { environment } from 'environments/environment';\r\nimport { AuthService } from '@shared/services/auth.service';\r\n\r\n@Component({\r\n selector: 'app-admin-header',\r\n templateUrl: './admin-header.component.html',\r\n styleUrls: ['./admin-header.component.css'],\r\n encapsulation: ViewEncapsulation.None,\r\n animations: [headreAnimations, menuAnimations]\r\n})\r\nexport class AdminHeaderComponent implements OnInit, AfterViewInit {\r\n title: string = '';\r\n breadCrumbs;\r\n iconPath: string;\r\n breabcrumbState: string;\r\n userName: string;\r\n expand_button: string = 'expand_more';\r\n //state: string = 'collapsed';\r\n userImage: string;\r\n permissions: any;\r\n currentTime: Date;\r\n\r\n private propertiesSubscription: Subscription;\r\n private routerSubscription: Subscription;\r\n private UserImageSubscription: Subscription;\r\n\r\n constructor(\r\n private dynamicHeader: AdminDynamicHeaderService,\r\n public router: Router,\r\n private authService: AuthService\r\n ) {}\r\n\r\n ngOnInit() {\r\n /* subscribe to headre title */\r\n this.propertiesSubscription = this.dynamicHeader.properties.subscribe(updatedProperties => {\r\n this.title = updatedProperties.title;\r\n this.breadCrumbs = updatedProperties.breadcrumbs;\r\n this.iconPath = updatedProperties.iconPath;\r\n this.breabcrumbState = Math.random()\r\n .toString(36)\r\n .substring(7);\r\n });\r\n\r\n this.setUserImage();\r\n this.UserImageSubscription = this.dynamicHeader.userProperty.subscribe(UserImage => {\r\n this.setUserImage();\r\n });\r\n\r\n this.routerSubscription = this.router.events.subscribe(event => {\r\n /* to reset the menu icon on router change */\r\n if (event instanceof NavigationStart) {\r\n //this.state = 'collapsed';\r\n }\r\n });\r\n }\r\n ngAfterViewInit() {\r\n setInterval(() => {\r\n //replaced function() by ()=>\r\n this.currentTime = new Date();\r\n }, 500);\r\n }\r\n onMenuChange(event) {\r\n /* to reset the menu icon on menu click */\r\n\r\n //this.state = 'collapsed';\r\n switch (event) {\r\n case 'account':\r\n this.router.navigateByUrl('/app/admin/profile');\r\n break;\r\n case 'logout':\r\n localStorage.clear();\r\n this.router.navigateByUrl('/app/login');\r\n this.authService.logout().subscribe(\r\n result => {\r\n },\r\n error => {\r\n console.log('Error while logging out.', error);\r\n }\r\n );\r\n break;\r\n }\r\n }\r\n setUserImage() {\r\n this.userName = localStorage.getItem('userName');\r\n if (localStorage.getItem('userImageName') == '') {\r\n this.userImage = environment.baseUrl + 'Images/DefaultImages/default-user.jpg';\r\n } else {\r\n this.userImage = environment.S3StorageService?localStorage.getItem(\"S3BucketImagePath\"): environment.baseUrl + 'Images/UserProfile/' + localStorage.getItem('userImageName');\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n // this.propertiesSubscription.unsubscribe();\r\n // this.routerSubscription.unsubscribe();\r\n }\r\n // profileMenu() {\r\n // /* to swap the menu icon on profile icon click */\r\n // this.state = (this.state == 'expanded' ? 'collapsed' : 'expanded');\r\n // }\r\n}\r\n","module.exports = \"\"","module.exports = \"/* app drawer breakpoint */\\n/**\\n * Applies styles for users in high contrast mode. Note that this only applies\\n * to Microsoft browsers. Chrome can be included by checking for the `html[hc]`\\n * attribute, however Chrome handles high contrast differently.\\n * @param target Which kind of high contrast setting to target. Defaults to `active`, can be\\n * `white-on-black` or `black-on-white`.\\n */\\n/* Theme for the ripple elements.*/\\n/* stylelint-disable material/no-prefixes */\\n/* stylelint-enable */\\n.mat-sidenav {\\n width: 360px; }\\n.mat-sidenav-container {\\n background-color: white !important;\\n height: 100vh; }\\n.sidenav-toolbar {\\n height: 64px;\\n background-color: #3f51b5;\\n display: flex;\\n flex-direction: row; }\\n@media (max-width: 600px) {\\n .sidenav-toolbar {\\n height: 56px; } }\\n.mat-nav-list {\\n padding-top: 0; }\\n@media (max-width: 600px) {\\n .fixed-topnav {\\n position: fixed;\\n top: 0;\\n left: 0;\\n z-index: 2;\\n width: 100% !important; }\\n .mat-drawer-container,\\n .mat-drawer {\\n padding-top: 56px; } }\\n.menu-list-item.mat-list-item .mat-list-item-content {\\n flex: 1 1 100%; }\\n.version-info {\\n font-size: 8pt;\\n float: right;\\n padding: 8px; }\\n.left-nav {\\n overflow-y: hidden;\\n overflow-x: hidden;\\n width: 115px; }\\n.left-nav:hover {\\n width: 120px;\\n overflow-y: scroll; }\\n.left-nav:hover::-webkit-scrollbar {\\n width: 5px;\\n background: transparent;\\n /* make scrollbar transparent */ }\\n.left-nav::-webkit-scrollbar {\\n width: 0px;\\n background: transparent;\\n /* make scrollbar transparent */ }\\n.inner-scroll {\\n width: 115px; }\\n.icon-shopping-list-1 {\\n font-size: 26px !important; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zaGFyZWQvbGF5b3V0L2FkbWluLW1lbnUvRDpcXFdvcmtzXFxORUNcXGFuZ3VsYXIvc3JjXFxzaGFyZWRcXGxheW91dFxcYWRtaW4tbWVudVxcX2JyZWFrcG9pbnRzLnNjc3MiLCJzcmMvc2hhcmVkL2xheW91dC9hZG1pbi1tZW51L0Q6XFxXb3Jrc1xcTkVDXFxhbmd1bGFyL25vZGVfbW9kdWxlc1xcQGFuZ3VsYXJcXG1hdGVyaWFsXFxfdGhlbWluZy5zY3NzIiwic3JjL3NoYXJlZC9sYXlvdXQvYWRtaW4tbWVudS9EOlxcV29ya3NcXE5FQ1xcYW5ndWxhci9zcmNcXHNoYXJlZFxcbGF5b3V0XFxhZG1pbi1tZW51XFxhZG1pbi1tZW51LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdnQiwyQkFBMkI7QUNrSzNDOzs7Ozs7R0FNRztBQW1xQ0gsbUNBQW1DO0FBNCtDbkMsNENBQTRDO0FBd0M1QyxzQkFBc0I7QUMvMUZ0QjtFQUNFLGFBQVksRUFDYjtBQUNEO0VBQ0UsbUNBQWtDO0VBQ2xDLGNBQWEsRUFDZDtBQUNEO0VBQ0UsYUFBWTtFQUNaLDBCRGlwQlk7RUNocEJaLGNBQWE7RUFDYixvQkFBbUIsRUFLcEI7QUFIQztJQU5GO01BT0ksYUFBWSxFQUVmLEVBQUE7QUFDRDtFQUNFLGVBQWMsRUFDZjtBRk5DO0VFUUE7SUFDRSxnQkFBZTtJQUNmLE9BQU07SUFDTixRQUFPO0lBQ1AsV0FBVTtJQUNWLHVCQUFzQixFQUN2QjtFQUVEOztJQUVFLGtCQUFpQixFQUNsQixFQUFBO0FBRUg7RUFFSSxlQUFjLEVBQ2Y7QUFFSDtFQUNFLGVBQWM7RUFDZCxhQUFZO0VBQ1osYUFBWSxFQUNiO0FBQ0Q7RUFDRSxtQkFBa0I7RUFDbEIsbUJBQWtCO0VBQ2xCLGFBQVksRUFlYjtBQWxCRDtJQU1JLGFBQVk7SUFDWixtQkFBa0IsRUFNbkI7QUFiSDtNQVVNLFdBQVU7TUFDVix3QkFBdUI7TUFBRSxnQ0FBZ0MsRUFDMUQ7QUFaTDtJQWVJLFdBQVU7SUFDVix3QkFBdUI7SUFBRSxnQ0FBZ0MsRUFDMUQ7QUFFSDtFQUNFLGFBQVksRUFDYjtBQUVEO0VBQ0UsMkJBQTBCLEVBQzNCIiwiZmlsZSI6InNyYy9zaGFyZWQvbGF5b3V0L2FkbWluLW1lbnUvYWRtaW4tbWVudS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEJyZWFrcG9pbnRzXHJcbiRoYW5kc2V0OiAzNjBweDtcclxuJGxhcmdlLWhhbmRzZXQ6IDQ4MHB4O1xyXG4kdGFibGV0OiA2NDBweDsgLyogYXBwIGRyYXdlciBicmVha3BvaW50ICovXHJcbiRsYXJnZS10YWJsZXQ6IDg0MHB4O1xyXG4kZGVza3RvcDogOTYwcHg7XHJcbiRsYXJnZS1kZXNrdG9wOiAxMjgwcHg7XHJcbiR4LWxhcmdlLWRlc2t0b3A6IDE0NDBweDtcclxuJHh4LWxhcmdlLWRlc2t0b3A6IDE5MjBweDtcclxuXHJcbi8vIGdlbmVyYXRlIG1pbi13aWR0aCBicmVha3BvaW50XHJcbkBtaXhpbiBicmVha3BvaW50KCRwb2ludCkge1xyXG4gIEBtZWRpYSAobWluLXdpZHRoOiAkcG9pbnQpIHsgQGNvbnRlbnQgOyB9XHJcbn1cclxuLy8gZ2VuZXJhdGUgbWF4LXdpZHRoIGJyZWFrcG9pbnQgKHVzZSBzcGFyaW5nbHkpXHJcbkBtaXhpbiBicmVha3BvaW50LW1heCgkcG9pbnQpIHtcclxuICBAbWVkaWEgKG1heC13aWR0aDogJHBvaW50KSB7IEBjb250ZW50IDsgfVxyXG59XHJcbi8vIGdlbmVyYXRlIG1pbi1oZWlnaHQgYnJlYWtwb2ludFxyXG5AbWl4aW4gaGVpZ2h0LWJyZWFrcG9pbnQoJHBvaW50KSB7XHJcbiAgQG1lZGlhIChtaW4taGVpZ2h0OiAkcG9pbnQpIHsgQGNvbnRlbnQgOyB9XHJcbn1cclxuLy8gZ2VuZXJhdGUgbWF4LWhlaWdodCBicmVha3BvaW50ICh1c2Ugc3BhcmluZ2x5KVxyXG5AbWl4aW4gaGVpZ2h0LWJyZWFrcG9pbnQtbWF4KCRwb2ludCkge1xyXG4gIEBtZWRpYSAobWluLWhlaWdodDogJHBvaW50KSB7IEBjb250ZW50IDsgfVxyXG59XHJcbiIsIi8vIEltcG9ydCBhbGwgdGhlIHRoZW1pbmcgZnVuY3Rpb25hbGl0eS5cbi8vIFdlIGNhbiB1c2UgcmVsYXRpdmUgaW1wb3J0cyBmb3IgaW1wb3J0cyBmcm9tIHRoZSBjZGsgYmVjYXVzZSB3ZSBidW5kbGUgZXZlcnl0aGluZ1xuLy8gdXAgaW50byBhIHNpbmdsZSBmbGF0IHNjc3MgZmlsZSBmb3IgbWF0ZXJpYWwuXG4vLyBXZSB3YW50IG92ZXJsYXlzIHRvIGFsd2F5cyBhcHBlYXIgb3ZlciB1c2VyIGNvbnRlbnQsIHNvIHNldCBhIGJhc2VsaW5lXG4vLyB2ZXJ5IGhpZ2ggei1pbmRleCBmb3IgdGhlIG92ZXJsYXkgY29udGFpbmVyLCB3aGljaCBpcyB3aGVyZSB3ZSBjcmVhdGUgdGhlIG5ld1xuLy8gc3RhY2tpbmcgY29udGV4dCBmb3IgYWxsIG92ZXJsYXlzLlxuJGNkay16LWluZGV4LW92ZXJsYXktY29udGFpbmVyOiAxMDAwO1xuJGNkay16LWluZGV4LW92ZXJsYXk6IDEwMDA7XG4kY2RrLXotaW5kZXgtb3ZlcmxheS1iYWNrZHJvcDogMTAwMDtcblxuLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgYWxsIG9mIHRoZSBiYWNrZHJvcHNcbiRjZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wLWJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4zMik7XG5cbi8vIERlZmF1bHQgYmFja2Ryb3AgYW5pbWF0aW9uIGlzIGJhc2VkIG9uIHRoZSBNYXRlcmlhbCBEZXNpZ24gc3dpZnQtZWFzZS1vdXQuXG4kYmFja2Ryb3AtYW5pbWF0aW9uLWR1cmF0aW9uOiA0MDBtcyAhZGVmYXVsdDtcbiRiYWNrZHJvcC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSAhZGVmYXVsdDtcblxuXG5AbWl4aW4gY2RrLW92ZXJsYXkoKSB7XG4gIC5jZGstb3ZlcmxheS1jb250YWluZXIsIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlciB7XG4gICAgLy8gRGlzYWJsZSBldmVudHMgZnJvbSBiZWluZyBjYXB0dXJlZCBvbiB0aGUgb3ZlcmxheSBjb250YWluZXIuXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICAvLyBUaGUgY29udGFpbmVyIHNob3VsZCBiZSB0aGUgc2l6ZSBvZiB0aGUgdmlld3BvcnQuXG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLy8gVGhlIG92ZXJsYXktY29udGFpbmVyIGlzIGFuIGludmlzaWJsZSBlbGVtZW50IHdoaWNoIGNvbnRhaW5zIGFsbCBpbmRpdmlkdWFsIG92ZXJsYXlzLlxuICAuY2RrLW92ZXJsYXktY29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgei1pbmRleDogJGNkay16LWluZGV4LW92ZXJsYXktY29udGFpbmVyO1xuXG4gICAgJjplbXB0eSB7XG4gICAgICAvLyBIaWRlIHRoZSBlbGVtZW50IHdoZW4gaXQgZG9lc24ndCBoYXZlIGFueSBjaGlsZCBub2Rlcy4gVGhpcyBkb2Vzbid0XG4gICAgICAvLyBpbmNsdWRlIG92ZXJsYXlzIHRoYXQgaGF2ZSBiZWVuIGRldGFjaGVkLCByYXRoZXIgdGhhbiBkaXNwb3NlZC5cbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLy8gV2UgdXNlIGFuIGV4dHJhIHdyYXBwZXIgZWxlbWVudCBpbiBvcmRlciB0byB1c2UgbWFrZSB0aGUgb3ZlcmxheSBpdHNlbGYgYSBmbGV4IGl0ZW0uXG4gIC8vIFRoaXMgbWFrZXMgY2VudGVyaW5nIHRoZSBvdmVybGF5IGVhc3kgd2l0aG91dCBydW5uaW5nIGludG8gdGhlIHN1YnBpeGVsIHJlbmRlcmluZ1xuICAvLyBwcm9ibGVtcyB0aWVkIHRvIHVzaW5nIGB0cmFuc2Zvcm1gIGFuZCB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggdGhlIG90aGVyIHBvc2l0aW9uXG4gIC8vIHN0cmF0ZWdpZXMuXG4gIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogJGNkay16LWluZGV4LW92ZXJsYXk7XG4gIH1cblxuICAvLyBBIHNpbmdsZSBvdmVybGF5IHBhbmUuXG4gIC5jZGstb3ZlcmxheS1wYW5lIHtcbiAgICAvLyBOb3RlOiBpdCdzIGltcG9ydGFudCBmb3IgdGhpcyBvbmUgdG8gc3RhcnQgb2ZmIGBhYnNvbHV0ZWAsXG4gICAgLy8gaW4gb3JkZXIgZm9yIHVzIHRvIGJlIGFibGUgdG8gbWVhc3VyZSBpdCBjb3JyZWN0bHkuXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgei1pbmRleDogJGNkay16LWluZGV4LW92ZXJsYXk7XG5cbiAgICAvLyBGb3IgY29ubmVjdGVkLXBvc2l0aW9uIG92ZXJsYXlzLCB3ZSBzZXQgYGRpc3BsYXk6IGZsZXhgIGluXG4gICAgLy8gb3JkZXIgdG8gZm9yY2UgYG1heC13aWR0aGAgYW5kIGBtYXgtaGVpZ2h0YCB0byB0YWtlIGVmZmVjdC5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICB9XG5cbiAgLmNkay1vdmVybGF5LWJhY2tkcm9wIHtcbiAgICAvLyBUT0RPKGplbGJvdXJuKTogcmV1c2Ugc2lkZW5hdiBmdWxsc2NyZWVuIG1peGluLlxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG5cbiAgICB6LWluZGV4OiAkY2RrLXotaW5kZXgtb3ZlcmxheS1iYWNrZHJvcDtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJGJhY2tkcm9wLWFuaW1hdGlvbi1kdXJhdGlvbiAkYmFja2Ryb3AtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjtcbiAgICBvcGFjaXR5OiAwO1xuXG4gICAgJi5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nIHtcbiAgICAgIG9wYWNpdHk6IDE7XG5cbiAgICAgIC8vIEluIGhpZ2ggY29udHJhc3QgbW9kZSB0aGUgcmdiYSBiYWNrZ3JvdW5kIHdpbGwgYmVjb21lIHNvbGlkIHNvIHdlIG5lZWQgdG8gZmFsbCBiYWNrXG4gICAgICAvLyB0byBtYWtpbmcgaXQgb3BhcXVlIHVzaW5nIGBvcGFjaXR5YC4gTm90ZSB0aGF0IHdlIGNhbid0IHVzZSB0aGUgYGNkay1oaWdoLWNvbnRyYXN0YFxuICAgICAgLy8gbWl4aW4sIGJlY2F1c2Ugd2UgY2FuJ3Qgbm9ybWFsaXplIHRoZSBpbXBvcnQgcGF0aCB0byB0aGUgX2ExMXkuc2NzcyBib3RoIGZvciB0aGVcbiAgICAgIC8vIHNvdXJjZSBhbmQgd2hlbiB0aGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQuIFNlZSAjMTA5MDguXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkge1xuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQ6ICRjZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wLWJhY2tncm91bmQ7XG4gIH1cblxuICAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3Age1xuICAgIC8vIE5vdGU6IGFzIG9mIEZpcmVmb3ggNTcsIGhhdmluZyB0aGUgYmFja2Ryb3AgYmUgYGJhY2tncm91bmQ6IG5vbmVgIHdpbGwgcHJldmVudCBpdCBmcm9tXG4gICAgLy8gY2FwdHVyaW5nIHRoZSB1c2VyJ3MgbW91c2Ugc2Nyb2xsIGV2ZW50cy4gU2luY2Ugd2UgYWxzbyBjYW4ndCB1c2Ugc29tZXRoaW5nIGxpa2VcbiAgICAvLyBgcmdiYSgwLCAwLCAwLCAwKWAsIHdlIHdvcmsgYXJvdW5kIHRoZSBpbmNvbnNpc3RlbmN5IGJ5IG5vdCBzZXR0aW5nIHRoZSBiYWNrZ3JvdW5kIGF0XG4gICAgLy8gYWxsIGFuZCB1c2luZyBgb3BhY2l0eWAgdG8gbWFrZSB0aGUgZWxlbWVudCB0cmFuc3BhcmVudC5cbiAgICAmLCAmLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmcge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cblxuICAvLyBPdmVybGF5IHBhcmVudCBlbGVtZW50IHVzZWQgd2l0aCB0aGUgY29ubmVjdGVkIHBvc2l0aW9uIHN0cmF0ZWd5LiBVc2VkIHRvIGNvbnN0cmFpbiB0aGVcbiAgLy8gb3ZlcmxheSBlbGVtZW50J3Mgc2l6ZSB0byBmaXQgd2l0aGluIHRoZSB2aWV3cG9ydC5cbiAgLmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3gge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB6LWluZGV4OiAkY2RrLXotaW5kZXgtb3ZlcmxheTtcblxuICAgIC8vIFdlIHVzZSBgZGlzcGxheTogZmxleGAgb24gdGhpcyBlbGVtZW50IGV4Y2x1c2l2ZWx5IGZvciBjZW50ZXJpbmcgY29ubmVjdGVkIG92ZXJsYXlzLlxuICAgIC8vIFdoZW4gKm5vdCogY2VudGVyaW5nLCBhIHRvcC9sZWZ0L2JvdHRvbS9yaWdodCB3aWxsIGJlIHNldCB3aGljaCBvdmVycmlkZXMgdGhlIG5vcm1hbFxuICAgIC8vIGZsZXggbGF5b3V0LlxuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAvLyBXZSB1c2UgdGhlIGBjb2x1bW5gIGRpcmVjdGlvbiBoZXJlIHRvIGF2b2lkIHNvbWUgZmxleGJveCBpc3N1ZXMgaW4gRWRnZVxuICAgIC8vIHdoZW4gdXNpbmcgdGhlIFwiZ3JvdyBhZnRlciBvcGVuXCIgb3B0aW9ucy5cbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgLy8gQWRkIHNvbWUgZGltZW5zaW9ucyBzbyB0aGUgZWxlbWVudCBoYXMgYW4gYGlubmVyVGV4dGAgd2hpY2ggc29tZSBwZW9wbGUgZGVwZW5kIG9uIGluIHRlc3RzLlxuICAgIG1pbi13aWR0aDogMXB4O1xuICAgIG1pbi1oZWlnaHQ6IDFweDtcbiAgfVxuXG4gIC8vIFVzZWQgd2hlbiBkaXNhYmxpbmcgZ2xvYmFsIHNjcm9sbGluZy5cbiAgLmNkay1nbG9iYWwtc2Nyb2xsYmxvY2sge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcblxuICAgIC8vIE5lY2Vzc2FyeSBmb3IgdGhlIGNvbnRlbnQgbm90IHRvIGxvc2UgaXRzIHdpZHRoLiBOb3RlIHRoYXQgd2UncmUgdXNpbmcgMTAwJSwgaW5zdGVhZCBvZlxuICAgIC8vIDEwMHZ3LCBiZWNhdXNlIDEwMHZ3IGluY2x1ZGVzIHRoZSB3aWR0aCBwbHVzIHRoZSBzY3JvbGxiYXIsIHdoZXJlYXMgMTAwJSBpcyB0aGUgd2lkdGhcbiAgICAvLyB0aGF0IHRoZSBlbGVtZW50IGhhZCBiZWZvcmUgd2UgbWFkZSBpdCBgZml4ZWRgLlxuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgLy8gTm90ZTogdGhpcyB3aWxsIGFsd2F5cyBhZGQgYSBzY3JvbGxiYXIgdG8gd2hhdGV2ZXIgZWxlbWVudCBpdCBpcyBvbiwgd2hpY2ggY2FuXG4gICAgLy8gcG90ZW50aWFsbHkgcmVzdWx0IGluIGRvdWJsZSBzY3JvbGxiYXJzLiBJdCBzaG91bGRuJ3QgYmUgYW4gaXNzdWUsIGJlY2F1c2Ugd2Ugd29uJ3RcbiAgICAvLyBibG9jayBzY3JvbGxpbmcgb24gYSBwYWdlIHRoYXQgZG9lc24ndCBoYXZlIGEgc2Nyb2xsYmFyIGluIHRoZSBmaXJzdCBwbGFjZS5cbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIH1cbn1cblxuQG1peGluIGNkay1hMTF5IHtcbiAgLmNkay12aXN1YWxseS1oaWRkZW4ge1xuICAgIGJvcmRlcjogMDtcbiAgICBjbGlwOiByZWN0KDAgMCAwIDApO1xuICAgIGhlaWdodDogMXB4O1xuICAgIG1hcmdpbjogLTFweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxcHg7XG5cbiAgICAvLyBBdm9pZCBicm93c2VycyByZW5kZXJpbmcgdGhlIGZvY3VzIHJpbmcgaW4gc29tZSBjYXNlcy5cbiAgICBvdXRsaW5lOiAwO1xuXG4gICAgLy8gQXZvaWQgc29tZSBjYXNlcyB3aGVyZSB0aGUgYnJvd3NlciB3aWxsIHN0aWxsIHJlbmRlciB0aGUgbmF0aXZlIGNvbnRyb2xzIChzZWUgIzkwNDkpLlxuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cbn1cblxuLyoqXG4gKiBBcHBsaWVzIHN0eWxlcyBmb3IgdXNlcnMgaW4gaGlnaCBjb250cmFzdCBtb2RlLiBOb3RlIHRoYXQgdGhpcyBvbmx5IGFwcGxpZXNcbiAqIHRvIE1pY3Jvc29mdCBicm93c2Vycy4gQ2hyb21lIGNhbiBiZSBpbmNsdWRlZCBieSBjaGVja2luZyBmb3IgdGhlIGBodG1sW2hjXWBcbiAqIGF0dHJpYnV0ZSwgaG93ZXZlciBDaHJvbWUgaGFuZGxlcyBoaWdoIGNvbnRyYXN0IGRpZmZlcmVudGx5LlxuICogQHBhcmFtIHRhcmdldCBXaGljaCBraW5kIG9mIGhpZ2ggY29udHJhc3Qgc2V0dGluZyB0byB0YXJnZXQuIERlZmF1bHRzIHRvIGBhY3RpdmVgLCBjYW4gYmVcbiAqICAgIGB3aGl0ZS1vbi1ibGFja2Agb3IgYGJsYWNrLW9uLXdoaXRlYC5cbiAqL1xuQG1peGluIGNkay1oaWdoLWNvbnRyYXN0KCR0YXJnZXQ6IGFjdGl2ZSkge1xuICBAbWVkaWEgKC1tcy1oaWdoLWNvbnRyYXN0OiAkdGFyZ2V0KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gQ29yZSBzdHlsZXMgdGhhdCBlbmFibGUgbW9uaXRvcmluZyBhdXRvZmlsbCBzdGF0ZSBvZiB0ZXh0IGZpZWxkcy5cbkBtaXhpbiBjZGstdGV4dC1maWVsZCB7XG4gIC8vIEtleWZyYW1lcyB0aGF0IGFwcGx5IG5vIHN0eWxlcywgYnV0IGFsbG93IHVzIHRvIG1vbml0b3Igd2hlbiBhbiB0ZXh0IGZpZWxkIGJlY29tZXMgYXV0b2ZpbGxlZFxuICAvLyBieSB3YXRjaGluZyBmb3IgdGhlIGFuaW1hdGlvbiBldmVudHMgdGhhdCBhcmUgZmlyZWQgd2hlbiB0aGV5IHN0YXJ0LiBOb3RlOiB0aGUgLyohKi8gY29tbWVudCBpc1xuICAvLyBuZWVkZWQgdG8gcHJldmVudCBMaWJTYXNzIGZyb20gc3RyaXBwaW5nIHRoZSBrZXlmcmFtZXMgb3V0LlxuICAvLyBCYXNlZCBvbjogaHR0cHM6Ly9tZWRpdW0uY29tL0BicnVubi9kZXRlY3RpbmctYXV0b2ZpbGxlZC1maWVsZHMtaW4tamF2YXNjcmlwdC1hZWQ1OThkMjVkYTdcbiAgQGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCB7LyohKi99XG4gIEBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIHsvKiEqL31cblxuICAuY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkOi13ZWJraXQtYXV0b2ZpbGwge1xuICAgIGFuaW1hdGlvbi1uYW1lOiBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydDtcbiAgfVxuXG4gIC5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQ6bm90KDotd2Via2l0LWF1dG9maWxsKSB7XG4gICAgYW5pbWF0aW9uLW5hbWU6IGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZDtcbiAgfVxuXG4gIC8vIFJlbW92ZSB0aGUgcmVzaXplIGhhbmRsZSBvbiBhdXRvc2l6aW5nIHRleHRhcmVhcywgYmVjYXVzZSB3aGF0ZXZlciBoZWlnaHRcbiAgLy8gdGhlIHVzZXIgcmVzaXplZCB0byB3aWxsIGJlIG92ZXJ3cml0dGVuIG9uY2UgdGhleSBzdGFydCB0eXBpbmcgYWdhaW4uXG4gIHRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZSB7XG4gICAgcmVzaXplOiBub25lO1xuICB9XG5cbiAgLy8gVGhpcyBjbGFzcyBpcyB0ZW1wb3JhcmlseSBhcHBsaWVkIHRvIHRoZSB0ZXh0YXJlYSB3aGVuIGl0IGlzIGJlaW5nIG1lYXN1cmVkLiBJdCBpcyBpbW1lZGlhdGVseVxuICAvLyByZW1vdmVkIHdoZW4gbWVhc3VyaW5nIGlzIGNvbXBsZXRlLiBXZSB1c2UgYCFpbXBvcnRhbnRgIHJ1bGVzIGhlcmUgdG8gbWFrZSBzdXJlIHVzZXItc3BlY2lmaWVkXG4gIC8vIHJ1bGVzIGRvIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgbWVhc3VyZW1lbnQuXG4gIHRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmcge1xuICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgICAvLyBIYXZpbmcgMnB4IHRvcCBhbmQgYm90dG9tIHBhZGRpbmcgc2VlbXMgdG8gZml4IGEgYnVnIHdoZXJlIENocm9tZSBnZXRzIGFuIGluY29ycmVjdFxuICAgIC8vIG1lYXN1cmVtZW50LiBXZSBqdXN0IGhhdmUgdG8gYWNjb3VudCBmb3IgaXQgbGF0ZXIgYW5kIHN1YnRyYWN0IGl0IG9mZiB0aGUgZmluYWwgcmVzdWx0LlxuICAgIHBhZGRpbmc6IDJweCAwICFpbXBvcnRhbnQ7XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3ggIWltcG9ydGFudDtcbiAgfVxufVxuXG4vLyBVc2VkIHRvIGdlbmVyYXRlIFVJRHMgZm9yIGtleWZyYW1lcyB1c2VkIHRvIGNoYW5nZSB0aGUgdGV4dCBmaWVsZCBhdXRvZmlsbCBzdHlsZXMuXG4kY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnQ6IDA7XG5cbi8vIE1peGluIHVzZWQgdG8gYXBwbHkgY3VzdG9tIGJhY2tncm91bmQgYW5kIGZvcmVncm91bmQgY29sb3JzIHRvIGFuIGF1dG9maWxsZWQgdGV4dCBmaWVsZC5cbi8vIEJhc2VkIG9uOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNzgxNTQ5L1xuLy8gcmVtb3ZpbmctaW5wdXQtYmFja2dyb3VuZC1jb2xvdXItZm9yLWNocm9tZS1hdXRvY29tcGxldGUjYW5zd2VyLTM3NDMyMjYwXG5AbWl4aW4gY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3IoJGJhY2tncm91bmQsICRmb3JlZ3JvdW5kOicnKSB7XG4gIEBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3ItI3skY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnR9IHtcbiAgICB0byB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgICAgIEBpZiAkZm9yZWdyb3VuZCAhPSAnJyB7IGNvbG9yOiAkZm9yZWdyb3VuZDsgfVxuICAgIH1cbiAgfVxuXG4gICY6LXdlYmtpdC1hdXRvZmlsbCB7XG4gICAgYW5pbWF0aW9uLW5hbWU6IGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWNvbG9yLSN7JGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWNvbG9yLWZyYW1lLWNvdW50fTtcbiAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICB9XG5cbiAgJi5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQ6LXdlYmtpdC1hdXRvZmlsbCB7XG4gICAgYW5pbWF0aW9uLW5hbWU6IGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0LFxuICAgICAgICAgICAgICAgICAgICBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvci0jeyRjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvci1mcmFtZS1jb3VudH07XG4gIH1cblxuICAkY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnQ6XG4gICAgICAkY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnQgKyAxICFnbG9iYWw7XG59XG5cblxuLy8gQ29yZSBzdHlsZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBhcHBseSBtYXRlcmlhbCBkZXNpZ24gdHJlYXRtZW50cyB0byBhbnkgZWxlbWVudC5cbi8vIE1lZGlhIHF1ZXJpZXNcbi8vIFRPRE8oam9zZXBocGVycm90dCk6IENoYW5nZSAkbWF0LXhzbWFsbCBhbmQgJG1hdC1zbWFsbCB1c2FnZXMgdG8gcmVseSBvbiBCcmVha3BvaW50T2JzZXJ2ZXIsXG4kbWF0LXhzbWFsbDogJ21heC13aWR0aDogNTk5cHgnO1xuJG1hdC1zbWFsbDogJ21heC13aWR0aDogOTU5cHgnO1xuXG4vLyBUT0RPOiBSZXZpc2l0IGFsbCB6LWluZGljZXMgYmVmb3JlIGJldGFcbi8vIHotaW5kZXggbWFzdGVyIGxpc3RcblxuJHotaW5kZXgtZmFiOiAyMCAhZGVmYXVsdDtcbiR6LWluZGV4LWRyYXdlcjogMTAwICFkZWZhdWx0O1xuXG4vLyBHbG9iYWwgY29uc3RhbnRzXG4kcGk6IDMuMTQxNTkyNjU7XG5cbi8vIFBhZGRpbmcgYmV0d2VlbiBpbnB1dCB0b2dnbGVzIGFuZCB0aGVpciBsYWJlbHNcbiRtYXQtdG9nZ2xlLXBhZGRpbmc6IDhweCAhZGVmYXVsdDtcbi8vIFdpZHRoIGFuZCBoZWlnaHQgb2YgaW5wdXQgdG9nZ2xlc1xuJG1hdC10b2dnbGUtc2l6ZTogMjBweCAhZGVmYXVsdDtcblxuLy8gRWFzaW5nIEN1cnZlc1xuLy8gVE9ETyhqZWxib3Vybik6IGFsbCBvZiB0aGVzZSBuZWVkIHRvIGJlIHJldmlzaXRlZFxuXG4vLyBUaGUgZGVmYXVsdCBhbmltYXRpb24gY3VydmVzIHVzZWQgYnkgbWF0ZXJpYWwgZGVzaWduLlxuJG1hdC1saW5lYXItb3V0LXNsb3ctaW4tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpICFkZWZhdWx0O1xuJG1hdC1mYXN0LW91dC1zbG93LWluLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSAhZGVmYXVsdDtcbiRtYXQtZmFzdC1vdXQtbGluZWFyLWluLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSkgIWRlZmF1bHQ7XG5cbiRlYXNlLWluLW91dC1jdXJ2ZS1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpICFkZWZhdWx0O1xuXG4kc3dpZnQtZWFzZS1vdXQtZHVyYXRpb246IDQwMG1zICFkZWZhdWx0O1xuJHN3aWZ0LWVhc2Utb3V0LXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSkgIWRlZmF1bHQ7XG4kc3dpZnQtZWFzZS1vdXQ6IGFsbCAkc3dpZnQtZWFzZS1vdXQtZHVyYXRpb24gJHN3aWZ0LWVhc2Utb3V0LXRpbWluZy1mdW5jdGlvbiAhZGVmYXVsdDtcblxuJHN3aWZ0LWVhc2UtaW4tZHVyYXRpb246IDMwMG1zICFkZWZhdWx0O1xuJHN3aWZ0LWVhc2UtaW4tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NSwgMCwgMC41NSwgMC4yKSAhZGVmYXVsdDtcbiRzd2lmdC1lYXNlLWluOiBhbGwgJHN3aWZ0LWVhc2UtaW4tZHVyYXRpb24gJHN3aWZ0LWVhc2UtaW4tdGltaW5nLWZ1bmN0aW9uICFkZWZhdWx0O1xuXG4kc3dpZnQtZWFzZS1pbi1vdXQtZHVyYXRpb246IDUwMG1zICFkZWZhdWx0O1xuJHN3aWZ0LWVhc2UtaW4tb3V0LXRpbWluZy1mdW5jdGlvbjogJGVhc2UtaW4tb3V0LWN1cnZlLWZ1bmN0aW9uICFkZWZhdWx0O1xuJHN3aWZ0LWVhc2UtaW4tb3V0OiBhbGwgJHN3aWZ0LWVhc2UtaW4tb3V0LWR1cmF0aW9uICRzd2lmdC1lYXNlLWluLW91dC10aW1pbmctZnVuY3Rpb24gIWRlZmF1bHQ7XG5cbiRzd2lmdC1saW5lYXItZHVyYXRpb246IDgwbXMgIWRlZmF1bHQ7XG4kc3dpZnQtbGluZWFyLXRpbWluZy1mdW5jdGlvbjogbGluZWFyICFkZWZhdWx0O1xuJHN3aWZ0LWxpbmVhcjogYWxsICRzd2lmdC1saW5lYXItZHVyYXRpb24gJHN3aWZ0LWxpbmVhci10aW1pbmctZnVuY3Rpb24gIWRlZmF1bHQ7XG5cblxuXG4vLyBBIGNvbGxlY3Rpb24gb2YgbWl4aW5zIGFuZCBDU1MgY2xhc3NlcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGFwcGx5IGVsZXZhdGlvbiB0byBhIG1hdGVyaWFsXG4vLyBlbGVtZW50LlxuLy8gU2VlOiBodHRwczovL21hdGVyaWFsLmlvL2Rlc2lnbi9lbnZpcm9ubWVudC9lbGV2YXRpb24uaHRtbFxuLy8gRXhhbXBsZXM6XG4vL1xuLy9cbi8vIC5tYXQtZm9vIHtcbi8vICAgQGluY2x1ZGUgJG1hdC1lbGV2YXRpb24oMik7XG4vL1xuLy8gICAmOmFjdGl2ZSB7XG4vLyAgICAgQGluY2x1ZGUgJG1hdC1lbGV2YXRpb24oOCk7XG4vLyAgIH1cbi8vIH1cbi8vXG4vLyA8ZGl2IGlkPVwiZXh0ZXJuYWwtY2FyZFwiIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16MlwiPjxwPlNvbWUgY29udGVudDwvcD48L2Rpdj5cbi8vXG4vLyBGb3IgYW4gZXhwbGFuYXRpb24gb2YgdGhlIGRlc2lnbiBiZWhpbmQgaG93IGVsZXZhdGlvbiBpcyBpbXBsZW1lbnRlZCwgc2VlIHRoZSBkZXNpZ24gZG9jIGF0XG4vLyBodHRwczovL2dvby5nbC9LcTBrOVouXG5cbi8vIENvbG9ycyBmb3IgdW1icmEsIHBlbnVtYnJhLCBhbmQgYW1iaWVudCBzaGFkb3dzLiBBcyBkZXNjcmliZWQgaW4gdGhlIGRlc2lnbiBkb2MsIGVhY2ggZWxldmF0aW9uXG4vLyBsZXZlbCBpcyBjcmVhdGVkIHVzaW5nIGEgc2V0IG9mIDMgc2hhZG93IHZhbHVlcywgb25lIGZvciB1bWJyYSAodGhlIHNoYWRvdyByZXByZXNlbnRpbmcgdGhlXG4vLyBzcGFjZSBjb21wbGV0ZWx5IG9ic2N1cmVkIGJ5IGFuIG9iamVjdCByZWxhdGl2ZSB0byBpdHMgbGlnaHQgc291cmNlKSwgb25lIGZvciBwZW51bWJyYSAodGhlXG4vLyBzcGFjZSBwYXJ0aWFsbHkgb2JzY3VyZWQgYnkgYW4gb2JqZWN0KSwgYW5kIG9uZSBmb3IgYW1iaWVudCAodGhlIHNwYWNlIHdoaWNoIGNvbnRhaW5zIHRoZSBvYmplY3Rcbi8vIGl0c2VsZikuIEZvciBhIGZ1cnRoZXIgZXhwbGFuYXRpb24gb2YgdGhlc2UgdGVybXMgYW5kIHRoZWlyIG1lYW5pbmdzLCBzZWVcbi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VtYnJhLF9wZW51bWJyYV9hbmRfYW50dW1icmEuXG5cbi8vIE1hcHMgZm9yIHRoZSBkaWZmZXJlbnQgc2hhZG93IHNldHMgYW5kIHRoZWlyIHZhbHVlcyB3aXRoaW4gZWFjaCB6LXNwYWNlLiBUaGVzZSB2YWx1ZXMgd2VyZVxuLy8gY3JlYXRlZCBieSB0YWtpbmcgYSBmZXcgcmVmZXJlbmNlIHNoYWRvdyBzZXRzIGNyZWF0ZWQgYnkgR29vZ2xlJ3MgRGVzaWduZXJzIGFuZCBpbnRlcnBvbGF0aW5nXG4vLyBhbGwgb2YgdGhlIHZhbHVlcyBiZXR3ZWVuIHRoZW0uXG5cbkBmdW5jdGlvbiBfZ2V0LXVtYnJhLW1hcCgkY29sb3IsICRvcGFjaXR5KSB7XG4gIEByZXR1cm4gKFxuICAgIDA6ICcwcHggMHB4IDBweCAwcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjIpfScsXG4gICAgMTogJzBweCAycHggMXB4IC0xcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjIpfScsXG4gICAgMjogJzBweCAzcHggMXB4IC0ycHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjIpfScsXG4gICAgMzogJzBweCAzcHggM3B4IC0ycHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjIpfScsXG4gICAgNDogJzBweCAycHggNHB4IC0xcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjIpfScsXG4gICAgNTogJzBweCAzcHggNXB4IC0xcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjIpfScsXG4gICAgNjogJzBweCAzcHggNXB4IC0xcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjIpfScsXG4gICAgNzogJzBweCA0cHggNXB4IC0ycHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjIpfScsXG4gICAgODogJzBweCA1cHggNXB4IC0zcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjIpfScsXG4gICAgOTogJzBweCA1cHggNnB4IC0zcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjIpfScsXG4gICAgMTA6ICcwcHggNnB4IDZweCAtM3B4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4yKX0nLFxuICAgIDExOiAnMHB4IDZweCA3cHggLTRweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICAxMjogJzBweCA3cHggOHB4IC00cHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjIpfScsXG4gICAgMTM6ICcwcHggN3B4IDhweCAtNHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4yKX0nLFxuICAgIDE0OiAnMHB4IDdweCA5cHggLTRweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICAxNTogJzBweCA4cHggOXB4IC01cHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjIpfScsXG4gICAgMTY6ICcwcHggOHB4IDEwcHggLTVweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICAxNzogJzBweCA4cHggMTFweCAtNXB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4yKX0nLFxuICAgIDE4OiAnMHB4IDlweCAxMXB4IC01cHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjIpfScsXG4gICAgMTk6ICcwcHggOXB4IDEycHggLTZweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICAyMDogJzBweCAxMHB4IDEzcHggLTZweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICAyMTogJzBweCAxMHB4IDEzcHggLTZweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICAyMjogJzBweCAxMHB4IDE0cHggLTZweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICAyMzogJzBweCAxMXB4IDE0cHggLTdweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICAyNDogJzBweCAxMXB4IDE1cHggLTdweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9J1xuICApO1xufVxuXG5AZnVuY3Rpb24gX2dldC1wZW51bWJyYS1tYXAoJGNvbG9yLCAkb3BhY2l0eSkge1xuICBAcmV0dXJuIChcbiAgICAwOiAnMHB4IDBweCAwcHggMHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICAxOiAnMHB4IDFweCAxcHggMHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICAyOiAnMHB4IDJweCAycHggMHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICAzOiAnMHB4IDNweCA0cHggMHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICA0OiAnMHB4IDRweCA1cHggMHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICA1OiAnMHB4IDVweCA4cHggMHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICA2OiAnMHB4IDZweCAxMHB4IDBweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpfScsXG4gICAgNzogJzBweCA3cHggMTBweCAxcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjE0KX0nLFxuICAgIDg6ICcwcHggOHB4IDEwcHggMXB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICA5OiAnMHB4IDlweCAxMnB4IDFweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpfScsXG4gICAgMTA6ICcwcHggMTBweCAxNHB4IDFweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpfScsXG4gICAgMTE6ICcwcHggMTFweCAxNXB4IDFweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpfScsXG4gICAgMTI6ICcwcHggMTJweCAxN3B4IDJweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpfScsXG4gICAgMTM6ICcwcHggMTNweCAxOXB4IDJweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpfScsXG4gICAgMTQ6ICcwcHggMTRweCAyMXB4IDJweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpfScsXG4gICAgMTU6ICcwcHggMTVweCAyMnB4IDJweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpfScsXG4gICAgMTY6ICcwcHggMTZweCAyNHB4IDJweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpfScsXG4gICAgMTc6ICcwcHggMTdweCAyNnB4IDJweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpfScsXG4gICAgMTg6ICcwcHggMThweCAyOHB4IDJweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpfScsXG4gICAgMTk6ICcwcHggMTlweCAyOXB4IDJweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpfScsXG4gICAgMjA6ICcwcHggMjBweCAzMXB4IDNweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpfScsXG4gICAgMjE6ICcwcHggMjFweCAzM3B4IDNweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpfScsXG4gICAgMjI6ICcwcHggMjJweCAzNXB4IDNweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpfScsXG4gICAgMjM6ICcwcHggMjNweCAzNnB4IDNweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpfScsXG4gICAgMjQ6ICcwcHggMjRweCAzOHB4IDNweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpfSdcbiAgKTtcbn1cblxuQGZ1bmN0aW9uIF9nZXQtYW1iaWVudC1tYXAoJGNvbG9yLCAkb3BhY2l0eSkge1xuICBAcmV0dXJuIChcbiAgICAwOiAnMHB4IDBweCAwcHggMHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xMil9JyxcbiAgICAxOiAnMHB4IDFweCAzcHggMHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xMil9JyxcbiAgICAyOiAnMHB4IDFweCA1cHggMHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xMil9JyxcbiAgICAzOiAnMHB4IDFweCA4cHggMHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xMil9JyxcbiAgICA0OiAnMHB4IDFweCAxMHB4IDBweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTIpfScsXG4gICAgNTogJzBweCAxcHggMTRweCAwcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjEyKX0nLFxuICAgIDY6ICcwcHggMXB4IDE4cHggMHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xMil9JyxcbiAgICA3OiAnMHB4IDJweCAxNnB4IDFweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTIpfScsXG4gICAgODogJzBweCAzcHggMTRweCAycHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjEyKX0nLFxuICAgIDk6ICcwcHggM3B4IDE2cHggMnB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xMil9JyxcbiAgICAxMDogJzBweCA0cHggMThweCAzcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjEyKX0nLFxuICAgIDExOiAnMHB4IDRweCAyMHB4IDNweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTIpfScsXG4gICAgMTI6ICcwcHggNXB4IDIycHggNHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xMil9JyxcbiAgICAxMzogJzBweCA1cHggMjRweCA0cHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjEyKX0nLFxuICAgIDE0OiAnMHB4IDVweCAyNnB4IDRweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTIpfScsXG4gICAgMTU6ICcwcHggNnB4IDI4cHggNXB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xMil9JyxcbiAgICAxNjogJzBweCA2cHggMzBweCA1cHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjEyKX0nLFxuICAgIDE3OiAnMHB4IDZweCAzMnB4IDVweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTIpfScsXG4gICAgMTg6ICcwcHggN3B4IDM0cHggNnB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xMil9JyxcbiAgICAxOTogJzBweCA3cHggMzZweCA2cHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjEyKX0nLFxuICAgIDIwOiAnMHB4IDhweCAzOHB4IDdweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTIpfScsXG4gICAgMjE6ICcwcHggOHB4IDQwcHggN3B4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xMil9JyxcbiAgICAyMjogJzBweCA4cHggNDJweCA3cHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjEyKX0nLFxuICAgIDIzOiAnMHB4IDlweCA0NHB4IDhweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTIpfScsXG4gICAgMjQ6ICcwcHggOXB4IDQ2cHggOHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xMil9J1xuICApO1xufVxuXG4vLyBUaGUgZGVmYXVsdCBkdXJhdGlvbiB2YWx1ZSBmb3IgZWxldmF0aW9uIHRyYW5zaXRpb25zLlxuJG1hdC1lbGV2YXRpb24tdHJhbnNpdGlvbi1kdXJhdGlvbjogMjgwbXMgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGVhc2luZyB2YWx1ZSBmb3IgZWxldmF0aW9uIHRyYW5zaXRpb25zLlxuJG1hdC1lbGV2YXRpb24tdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246ICRtYXQtZmFzdC1vdXQtc2xvdy1pbi10aW1pbmctZnVuY3Rpb247XG5cbi8vIFRoZSBkZWZhdWx0IGNvbG9yIGZvciBlbGV2YXRpb24gc2hhZG93cy5cbiRtYXQtZWxldmF0aW9uLWNvbG9yOiBibGFjayAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgb3BhY2l0eSBzY2FsaW5nIHZhbHVlIGZvciBlbGV2YXRpb24gc2hhZG93cy5cbiRtYXQtZWxldmF0aW9uLW9wYWNpdHk6IDEgIWRlZmF1bHQ7XG5cbi8vIFByZWZpeCBmb3IgZWxldmF0aW9uLXJlbGF0ZWQgc2VsZWN0b3JzLlxuJF9tYXQtZWxldmF0aW9uLXByZWZpeDogJ21hdC1lbGV2YXRpb24teic7XG5cbi8vIEFwcGxpZXMgdGhlIGNvcnJlY3QgY3NzIHJ1bGVzIHRvIGFuIGVsZW1lbnQgdG8gZ2l2ZSBpdCB0aGUgZWxldmF0aW9uIHNwZWNpZmllZCBieSAkelZhbHVlLlxuLy8gVGhlICR6VmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI0LlxuQG1peGluIG1hdC1lbGV2YXRpb24oJHpWYWx1ZSwgJGNvbG9yOiAkbWF0LWVsZXZhdGlvbi1jb2xvciwgJG9wYWNpdHk6ICRtYXQtZWxldmF0aW9uLW9wYWNpdHkpIHtcbiAgQGlmIHR5cGUtb2YoJHpWYWx1ZSkgIT0gbnVtYmVyIG9yIG5vdCB1bml0bGVzcygkelZhbHVlKSB7XG4gICAgQGVycm9yICckelZhbHVlIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXInO1xuICB9XG4gIEBpZiAkelZhbHVlIDwgMCBvciAkelZhbHVlID4gMjQge1xuICAgIEBlcnJvciAnJHpWYWx1ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjQnO1xuICB9XG5cbiAgYm94LXNoYWRvdzogI3ttYXAtZ2V0KF9nZXQtdW1icmEtbWFwKCRjb2xvciwgJG9wYWNpdHkpLCAkelZhbHVlKX0sXG4gICAgICAgICAgICAgICN7bWFwLWdldChfZ2V0LXBlbnVtYnJhLW1hcCgkY29sb3IsICRvcGFjaXR5KSwgJHpWYWx1ZSl9LFxuICAgICAgICAgICAgICAje21hcC1nZXQoX2dldC1hbWJpZW50LW1hcCgkY29sb3IsICRvcGFjaXR5KSwgJHpWYWx1ZSl9O1xufVxuXG5AbWl4aW4gX21hdC10aGVtZS1lbGV2YXRpb24oJHpWYWx1ZSwgJHRoZW1lLCAkb3BhY2l0eTogJG1hdC1lbGV2YXRpb24tb3BhY2l0eSkge1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuICAkZWxldmF0aW9uLWNvbG9yOiBtYXAtZ2V0KCRmb3JlZ3JvdW5kLCBlbGV2YXRpb24pO1xuICAkZWxldmF0aW9uLWNvbG9yLW9yLWRlZmF1bHQ6IGlmKCRlbGV2YXRpb24tY29sb3IgPT0gbnVsbCwgJG1hdC1lbGV2YXRpb24tY29sb3IsICRlbGV2YXRpb24tY29sb3IpO1xuXG4gIEBpbmNsdWRlIG1hdC1lbGV2YXRpb24oJHpWYWx1ZSwgJGVsZXZhdGlvbi1jb2xvci1vci1kZWZhdWx0LCAkb3BhY2l0eSk7XG59XG5cbi8vIEFwcGxpZXMgdGhlIGVsZXZhdGlvbiB0byBhbiBlbGVtZW50IGluIGEgbWFubmVyIHRoYXQgYWxsb3dzXG4vLyBjb25zdW1lcnMgdG8gb3ZlcnJpZGUgaXQgdmlhIHRoZSBNYXRlcmlhbCBlbGV2YXRpb24gY2xhc3Nlcy5cbkBtaXhpbiBtYXQtb3ZlcnJpZGFibGUtZWxldmF0aW9uKFxuICAgICR6VmFsdWUsXG4gICAgJGNvbG9yOiAkbWF0LWVsZXZhdGlvbi1jb2xvcixcbiAgICAkb3BhY2l0eTogJG1hdC1lbGV2YXRpb24tb3BhY2l0eSkge1xuICAmOm5vdChbY2xhc3MqPScjeyRfbWF0LWVsZXZhdGlvbi1wcmVmaXh9J10pIHtcbiAgICBAaW5jbHVkZSBtYXQtZWxldmF0aW9uKCR6VmFsdWUsICRjb2xvciwgJG9wYWNpdHkpO1xuICB9XG59XG5cbkBtaXhpbiBfbWF0LXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigkelZhbHVlLCAkdGhlbWUsICRvcGFjaXR5OiAkbWF0LWVsZXZhdGlvbi1vcGFjaXR5KSB7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG4gICRlbGV2YXRpb24tY29sb3I6IG1hcC1nZXQoJGZvcmVncm91bmQsIGVsZXZhdGlvbik7XG4gICRlbGV2YXRpb24tY29sb3Itb3ItZGVmYXVsdDogaWYoJGVsZXZhdGlvbi1jb2xvciA9PSBudWxsLCAkbWF0LWVsZXZhdGlvbi1jb2xvciwgJGVsZXZhdGlvbi1jb2xvcik7XG5cbiAgQGluY2x1ZGUgbWF0LW92ZXJyaWRhYmxlLWVsZXZhdGlvbigkelZhbHVlLCAkZWxldmF0aW9uLWNvbG9yLW9yLWRlZmF1bHQsICRvcGFjaXR5KTtcbn1cblxuLy8gUmV0dXJucyBhIHN0cmluZyB0aGF0IGNhbiBiZSB1c2VkIGFzIHRoZSB2YWx1ZSBmb3IgYSB0cmFuc2l0aW9uIHByb3BlcnR5IGZvciBlbGV2YXRpb24uXG4vLyBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgaXMgdXNlZnVsIGluIHNpdHVhdGlvbnMgd2hlcmUgYSBjb21wb25lbnQgbmVlZHMgdG8gdHJhbnNpdGlvblxuLy8gbW9yZSB0aGFuIG9uZSBwcm9wZXJ0eS5cbi8vXG4vLyAuZm9vIHtcbi8vICAgdHJhbnNpdGlvbjogbWF0LWVsZXZhdGlvbi10cmFuc2l0aW9uLXByb3BlcnR5LXZhbHVlKCksIG9wYWNpdHkgMTAwbXMgZWFzZTtcbi8vIH1cbkBmdW5jdGlvbiBtYXQtZWxldmF0aW9uLXRyYW5zaXRpb24tcHJvcGVydHktdmFsdWUoXG4gICAgJGR1cmF0aW9uOiAkbWF0LWVsZXZhdGlvbi10cmFuc2l0aW9uLWR1cmF0aW9uLFxuICAgICRlYXNpbmc6ICRtYXQtZWxldmF0aW9uLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSB7XG4gIEByZXR1cm4gYm94LXNoYWRvdyAjeyRkdXJhdGlvbn0gI3skZWFzaW5nfTtcbn1cblxuLy8gQXBwbGllcyB0aGUgY29ycmVjdCBjc3MgcnVsZXMgbmVlZGVkIHRvIGhhdmUgYW4gZWxlbWVudCB0cmFuc2l0aW9uIGJldHdlZW4gZWxldmF0aW9ucy5cbi8vIFRoaXMgbWl4aW4gc2hvdWxkIGJlIGFwcGxpZWQgdG8gZWxlbWVudHMgd2hvc2UgZWxldmF0aW9uIHZhbHVlcyB3aWxsIGNoYW5nZSBkZXBlbmRpbmcgb24gdGhlaXJcbi8vIGNvbnRleHQgKGUuZy4gd2hlbiBhY3RpdmUgb3IgZGlzYWJsZWQpLlxuLy9cbi8vIE5PVEUodHJhdmlza2F1Zm1hbik6IEJvdGggdGhpcyBtaXhpbiBhbmQgdGhlIGFib3ZlIGZ1bmN0aW9uIHVzZSBkZWZhdWx0IHBhcmFtZXRlcnMgc28gdGhleSBjYW5cbi8vIGJlIHVzZWQgaW4gdGhlIHNhbWUgd2F5IGJ5IGNsaWVudHMuXG5AbWl4aW4gbWF0LWVsZXZhdGlvbi10cmFuc2l0aW9uKFxuICAgICRkdXJhdGlvbjogJG1hdC1lbGV2YXRpb24tdHJhbnNpdGlvbi1kdXJhdGlvbixcbiAgICAkZWFzaW5nOiAkbWF0LWVsZXZhdGlvbi10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikge1xuICB0cmFuc2l0aW9uOiBtYXQtZWxldmF0aW9uLXRyYW5zaXRpb24tcHJvcGVydHktdmFsdWUoJGR1cmF0aW9uLCAkZWFzaW5nKTtcbn1cblxuLy8gQ29sb3IgcGFsZXR0ZXMgZnJvbSB0aGUgTWF0ZXJpYWwgRGVzaWduIHNwZWMuXG4vLyBTZWUgaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vY29sb3IvXG4vL1xuLy8gQ29udHJhc3QgY29sb3JzIGFyZSBoYXJkLWNvZGVkIGJlY2F1c2UgaXQgaXMgdG9vIGRpZmZpY3VsdCAocHJvYmFibHkgaW1wb3NzaWJsZSkgdG9cbi8vIGNhbGN1bGF0ZSB0aGVtLiBUaGVzZSBjb250cmFzdCBjb2xvcnMgYXJlIHB1bGxlZCBmcm9tIHRoZSBwdWJsaWMgTWF0ZXJpYWwgRGVzaWduIHNwZWMgc3dhdGNoZXMuXG4vLyBXaGlsZSB0aGUgY29udHJhc3QgY29sb3JzIGluIHRoZSBzcGVjIGFyZSBub3QgcHJlc2NyaXB0aXZlLCB3ZSB1c2UgdGhlbSBmb3IgY29udmVuaWVuY2UuXG5cblxuLy8gQGRlcHJlY2F0ZWQgcmVuYW1lZCB0byAkZGFyay1wcmltYXJ5LXRleHQuXG4vLyBAYnJlYWtpbmctY2hhbmdlIDguMC4wXG4kYmxhY2stODctb3BhY2l0eTogcmdiYShibGFjaywgMC44Nyk7XG4vLyBAZGVwcmVjYXRlZCByZW5hbWVkIHRvICRsaWdodC1wcmltYXJ5LXRleHQuXG4vLyBAYnJlYWtpbmctY2hhbmdlIDguMC4wXG4kd2hpdGUtODctb3BhY2l0eTogcmdiYSh3aGl0ZSwgMC44Nyk7XG4vLyBAZGVwcmVjYXRlZCB1c2UgJGRhcmstW3NlY29uZGFyeS10ZXh0LGRpc2FibGVkLXRleHQsZGl2aWRlcnMsZm9jdXNlZF0gaW5zdGVhZC5cbi8vIEBicmVha2luZy1jaGFuZ2UgOC4wLjBcbiRibGFjay0xMi1vcGFjaXR5OiByZ2JhKGJsYWNrLCAwLjEyKTtcbi8vIEBkZXByZWNhdGVkIHVzZSAkbGlnaHQtW3NlY29uZGFyeS10ZXh0LGRpc2FibGVkLXRleHQsZGl2aWRlcnMsZm9jdXNlZF0gaW5zdGVhZC5cbi8vIEBicmVha2luZy1jaGFuZ2UgOC4wLjBcbiR3aGl0ZS0xMi1vcGFjaXR5OiByZ2JhKHdoaXRlLCAwLjEyKTtcbi8vIEBkZXByZWNhdGVkIHVzZSAkZGFyay1bc2Vjb25kYXJ5LXRleHQsZGlzYWJsZWQtdGV4dCxkaXZpZGVycyxmb2N1c2VkXSBpbnN0ZWFkLlxuLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMFxuJGJsYWNrLTYtb3BhY2l0eTogcmdiYShibGFjaywgMC4wNik7XG4vLyBAZGVwcmVjYXRlZCB1c2UgJGxpZ2h0LVtzZWNvbmRhcnktdGV4dCxkaXNhYmxlZC10ZXh0LGRpdmlkZXJzLGZvY3VzZWRdIGluc3RlYWQuXG4vLyBAYnJlYWtpbmctY2hhbmdlIDguMC4wXG4kd2hpdGUtNi1vcGFjaXR5OiByZ2JhKHdoaXRlLCAwLjA2KTtcblxuJGRhcmstcHJpbWFyeS10ZXh0OiByZ2JhKGJsYWNrLCAwLjg3KTtcbiRkYXJrLXNlY29uZGFyeS10ZXh0OiByZ2JhKGJsYWNrLCAwLjU0KTtcbiRkYXJrLWRpc2FibGVkLXRleHQ6IHJnYmEoYmxhY2ssIDAuMzgpO1xuJGRhcmstZGl2aWRlcnM6IHJnYmEoYmxhY2ssIDAuMTIpO1xuJGRhcmstZm9jdXNlZDogcmdiYShibGFjaywgMC4xMik7XG4kbGlnaHQtcHJpbWFyeS10ZXh0OiB3aGl0ZTtcbiRsaWdodC1zZWNvbmRhcnktdGV4dDogcmdiYSh3aGl0ZSwgMC43KTtcbiRsaWdodC1kaXNhYmxlZC10ZXh0OiByZ2JhKHdoaXRlLCAwLjUpO1xuJGxpZ2h0LWRpdmlkZXJzOiByZ2JhKHdoaXRlLCAwLjEyKTtcbiRsaWdodC1mb2N1c2VkOiByZ2JhKHdoaXRlLCAwLjEyKTtcblxuJG1hdC1yZWQ6IChcbiAgNTA6ICNmZmViZWUsXG4gIDEwMDogI2ZmY2RkMixcbiAgMjAwOiAjZWY5YTlhLFxuICAzMDA6ICNlNTczNzMsXG4gIDQwMDogI2VmNTM1MCxcbiAgNTAwOiAjZjQ0MzM2LFxuICA2MDA6ICNlNTM5MzUsXG4gIDcwMDogI2QzMmYyZixcbiAgODAwOiAjYzYyODI4LFxuICA5MDA6ICNiNzFjMWMsXG4gIEExMDA6ICNmZjhhODAsXG4gIEEyMDA6ICNmZjUyNTIsXG4gIEE0MDA6ICNmZjE3NDQsXG4gIEE3MDA6ICNkNTAwMDAsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJG1hdC1waW5rOiAoXG4gIDUwOiAjZmNlNGVjLFxuICAxMDA6ICNmOGJiZDAsXG4gIDIwMDogI2Y0OGZiMSxcbiAgMzAwOiAjZjA2MjkyLFxuICA0MDA6ICNlYzQwN2EsXG4gIDUwMDogI2U5MWU2MyxcbiAgNjAwOiAjZDgxYjYwLFxuICA3MDA6ICNjMjE4NWIsXG4gIDgwMDogI2FkMTQ1NyxcbiAgOTAwOiAjODgwZTRmLFxuICBBMTAwOiAjZmY4MGFiLFxuICBBMjAwOiAjZmY0MDgxLFxuICBBNDAwOiAjZjUwMDU3LFxuICBBNzAwOiAjYzUxMTYyLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtcHVycGxlOiAoXG4gIDUwOiAjZjNlNWY1LFxuICAxMDA6ICNlMWJlZTcsXG4gIDIwMDogI2NlOTNkOCxcbiAgMzAwOiAjYmE2OGM4LFxuICA0MDA6ICNhYjQ3YmMsXG4gIDUwMDogIzljMjdiMCxcbiAgNjAwOiAjOGUyNGFhLFxuICA3MDA6ICM3YjFmYTIsXG4gIDgwMDogIzZhMWI5YSxcbiAgOTAwOiAjNGExNDhjLFxuICBBMTAwOiAjZWE4MGZjLFxuICBBMjAwOiAjZTA0MGZiLFxuICBBNDAwOiAjZDUwMGY5LFxuICBBNzAwOiAjYWEwMGZmLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJG1hdC1kZWVwLXB1cnBsZTogKFxuICA1MDogI2VkZTdmNixcbiAgMTAwOiAjZDFjNGU5LFxuICAyMDA6ICNiMzlkZGIsXG4gIDMwMDogIzk1NzVjZCxcbiAgNDAwOiAjN2U1N2MyLFxuICA1MDA6ICM2NzNhYjcsXG4gIDYwMDogIzVlMzViMSxcbiAgNzAwOiAjNTEyZGE4LFxuICA4MDA6ICM0NTI3YTAsXG4gIDkwMDogIzMxMWI5MixcbiAgQTEwMDogI2IzODhmZixcbiAgQTIwMDogIzdjNGRmZixcbiAgQTQwMDogIzY1MWZmZixcbiAgQTcwMDogIzYyMDBlYSxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtaW5kaWdvOiAoXG4gIDUwOiAjZThlYWY2LFxuICAxMDA6ICNjNWNhZTksXG4gIDIwMDogIzlmYThkYSxcbiAgMzAwOiAjNzk4NmNiLFxuICA0MDA6ICM1YzZiYzAsXG4gIDUwMDogIzNmNTFiNSxcbiAgNjAwOiAjMzk0OWFiLFxuICA3MDA6ICMzMDNmOWYsXG4gIDgwMDogIzI4MzU5MyxcbiAgOTAwOiAjMWEyMzdlLFxuICBBMTAwOiAjOGM5ZWZmLFxuICBBMjAwOiAjNTM2ZGZlLFxuICBBNDAwOiAjM2Q1YWZlLFxuICBBNzAwOiAjMzA0ZmZlLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJG1hdC1ibHVlOiAoXG4gIDUwOiAjZTNmMmZkLFxuICAxMDA6ICNiYmRlZmIsXG4gIDIwMDogIzkwY2FmOSxcbiAgMzAwOiAjNjRiNWY2LFxuICA0MDA6ICM0MmE1ZjUsXG4gIDUwMDogIzIxOTZmMyxcbiAgNjAwOiAjMWU4OGU1LFxuICA3MDA6ICMxOTc2ZDIsXG4gIDgwMDogIzE1NjVjMCxcbiAgOTAwOiAjMGQ0N2ExLFxuICBBMTAwOiAjODJiMWZmLFxuICBBMjAwOiAjNDQ4YWZmLFxuICBBNDAwOiAjMjk3OWZmLFxuICBBNzAwOiAjMjk2MmZmLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtbGlnaHQtYmx1ZTogKFxuICA1MDogI2UxZjVmZSxcbiAgMTAwOiAjYjNlNWZjLFxuICAyMDA6ICM4MWQ0ZmEsXG4gIDMwMDogIzRmYzNmNyxcbiAgNDAwOiAjMjliNmY2LFxuICA1MDA6ICMwM2E5ZjQsXG4gIDYwMDogIzAzOWJlNSxcbiAgNzAwOiAjMDI4OGQxLFxuICA4MDA6ICMwMjc3YmQsXG4gIDkwMDogIzAxNTc5YixcbiAgQTEwMDogIzgwZDhmZixcbiAgQTIwMDogIzQwYzRmZixcbiAgQTQwMDogIzAwYjBmZixcbiAgQTcwMDogIzAwOTFlYSxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJG1hdC1jeWFuOiAoXG4gIDUwOiAjZTBmN2ZhLFxuICAxMDA6ICNiMmViZjIsXG4gIDIwMDogIzgwZGVlYSxcbiAgMzAwOiAjNGRkMGUxLFxuICA0MDA6ICMyNmM2ZGEsXG4gIDUwMDogIzAwYmNkNCxcbiAgNjAwOiAjMDBhY2MxLFxuICA3MDA6ICMwMDk3YTcsXG4gIDgwMDogIzAwODM4ZixcbiAgOTAwOiAjMDA2MDY0LFxuICBBMTAwOiAjODRmZmZmLFxuICBBMjAwOiAjMThmZmZmLFxuICBBNDAwOiAjMDBlNWZmLFxuICBBNzAwOiAjMDBiOGQ0LFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtdGVhbDogKFxuICA1MDogI2UwZjJmMSxcbiAgMTAwOiAjYjJkZmRiLFxuICAyMDA6ICM4MGNiYzQsXG4gIDMwMDogIzRkYjZhYyxcbiAgNDAwOiAjMjZhNjlhLFxuICA1MDA6ICMwMDk2ODgsXG4gIDYwMDogIzAwODk3YixcbiAgNzAwOiAjMDA3OTZiLFxuICA4MDA6ICMwMDY5NWMsXG4gIDkwMDogIzAwNGQ0MCxcbiAgQTEwMDogI2E3ZmZlYixcbiAgQTIwMDogIzY0ZmZkYSxcbiAgQTQwMDogIzFkZTliNixcbiAgQTcwMDogIzAwYmZhNSxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LWdyZWVuOiAoXG4gIDUwOiAjZThmNWU5LFxuICAxMDA6ICNjOGU2YzksXG4gIDIwMDogI2E1ZDZhNyxcbiAgMzAwOiAjODFjNzg0LFxuICA0MDA6ICM2NmJiNmEsXG4gIDUwMDogIzRjYWY1MCxcbiAgNjAwOiAjNDNhMDQ3LFxuICA3MDA6ICMzODhlM2MsXG4gIDgwMDogIzJlN2QzMixcbiAgOTAwOiAjMWI1ZTIwLFxuICBBMTAwOiAjYjlmNmNhLFxuICBBMjAwOiAjNjlmMGFlLFxuICBBNDAwOiAjMDBlNjc2LFxuICBBNzAwOiAjMDBjODUzLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJG1hdC1saWdodC1ncmVlbjogKFxuICA1MDogI2YxZjhlOSxcbiAgMTAwOiAjZGNlZGM4LFxuICAyMDA6ICNjNWUxYTUsXG4gIDMwMDogI2FlZDU4MSxcbiAgNDAwOiAjOWNjYzY1LFxuICA1MDA6ICM4YmMzNGEsXG4gIDYwMDogIzdjYjM0MixcbiAgNzAwOiAjNjg5ZjM4LFxuICA4MDA6ICM1NThiMmYsXG4gIDkwMDogIzMzNjkxZSxcbiAgQTEwMDogI2NjZmY5MCxcbiAgQTIwMDogI2IyZmY1OSxcbiAgQTQwMDogIzc2ZmYwMyxcbiAgQTcwMDogIzY0ZGQxNyxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJG1hdC1saW1lOiAoXG4gIDUwOiAjZjlmYmU3LFxuICAxMDA6ICNmMGY0YzMsXG4gIDIwMDogI2U2ZWU5YyxcbiAgMzAwOiAjZGNlNzc1LFxuICA0MDA6ICNkNGUxNTcsXG4gIDUwMDogI2NkZGMzOSxcbiAgNjAwOiAjYzBjYTMzLFxuICA3MDA6ICNhZmI0MmIsXG4gIDgwMDogIzllOWQyNCxcbiAgOTAwOiAjODI3NzE3LFxuICBBMTAwOiAjZjRmZjgxLFxuICBBMjAwOiAjZWVmZjQxLFxuICBBNDAwOiAjYzZmZjAwLFxuICBBNzAwOiAjYWVlYTAwLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJG1hdC15ZWxsb3c6IChcbiAgNTA6ICNmZmZkZTcsXG4gIDEwMDogI2ZmZjljNCxcbiAgMjAwOiAjZmZmNTlkLFxuICAzMDA6ICNmZmYxNzYsXG4gIDQwMDogI2ZmZWU1OCxcbiAgNTAwOiAjZmZlYjNiLFxuICA2MDA6ICNmZGQ4MzUsXG4gIDcwMDogI2ZiYzAyZCxcbiAgODAwOiAjZjlhODI1LFxuICA5MDA6ICNmNTdmMTcsXG4gIEExMDA6ICNmZmZmOGQsXG4gIEEyMDA6ICNmZmZmMDAsXG4gIEE0MDA6ICNmZmVhMDAsXG4gIEE3MDA6ICNmZmQ2MDAsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtYW1iZXI6IChcbiAgNTA6ICNmZmY4ZTEsXG4gIDEwMDogI2ZmZWNiMyxcbiAgMjAwOiAjZmZlMDgyLFxuICAzMDA6ICNmZmQ1NGYsXG4gIDQwMDogI2ZmY2EyOCxcbiAgNTAwOiAjZmZjMTA3LFxuICA2MDA6ICNmZmIzMDAsXG4gIDcwMDogI2ZmYTAwMCxcbiAgODAwOiAjZmY4ZjAwLFxuICA5MDA6ICNmZjZmMDAsXG4gIEExMDA6ICNmZmU1N2YsXG4gIEEyMDA6ICNmZmQ3NDAsXG4gIEE0MDA6ICNmZmM0MDAsXG4gIEE3MDA6ICNmZmFiMDAsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtb3JhbmdlOiAoXG4gIDUwOiAjZmZmM2UwLFxuICAxMDA6ICNmZmUwYjIsXG4gIDIwMDogI2ZmY2M4MCxcbiAgMzAwOiAjZmZiNzRkLFxuICA0MDA6ICNmZmE3MjYsXG4gIDUwMDogI2ZmOTgwMCxcbiAgNjAwOiAjZmI4YzAwLFxuICA3MDA6ICNmNTdjMDAsXG4gIDgwMDogI2VmNmMwMCxcbiAgOTAwOiAjZTY1MTAwLFxuICBBMTAwOiAjZmZkMTgwLFxuICBBMjAwOiAjZmZhYjQwLFxuICBBNDAwOiAjZmY5MTAwLFxuICBBNzAwOiAjZmY2ZDAwLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiBibGFjayxcbiAgKVxuKTtcblxuJG1hdC1kZWVwLW9yYW5nZTogKFxuICA1MDogI2ZiZTllNyxcbiAgMTAwOiAjZmZjY2JjLFxuICAyMDA6ICNmZmFiOTEsXG4gIDMwMDogI2ZmOGE2NSxcbiAgNDAwOiAjZmY3MDQzLFxuICA1MDA6ICNmZjU3MjIsXG4gIDYwMDogI2Y0NTExZSxcbiAgNzAwOiAjZTY0YTE5LFxuICA4MDA6ICNkODQzMTUsXG4gIDkwMDogI2JmMzYwYyxcbiAgQTEwMDogI2ZmOWU4MCxcbiAgQTIwMDogI2ZmNmU0MCxcbiAgQTQwMDogI2ZmM2QwMCxcbiAgQTcwMDogI2RkMmMwMCxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtYnJvd246IChcbiAgNTA6ICNlZmViZTksXG4gIDEwMDogI2Q3Y2NjOCxcbiAgMjAwOiAjYmNhYWE0LFxuICAzMDA6ICNhMTg4N2YsXG4gIDQwMDogIzhkNmU2MyxcbiAgNTAwOiAjNzk1NTQ4LFxuICA2MDA6ICM2ZDRjNDEsXG4gIDcwMDogIzVkNDAzNyxcbiAgODAwOiAjNGUzNDJlLFxuICA5MDA6ICMzZTI3MjMsXG4gIEExMDA6ICNkN2NjYzgsXG4gIEEyMDA6ICNiY2FhYTQsXG4gIEE0MDA6ICM4ZDZlNjMsXG4gIEE3MDA6ICM1ZDQwMzcsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtZ3JleTogKFxuICA1MDogI2ZhZmFmYSxcbiAgMTAwOiAjZjVmNWY1LFxuICAyMDA6ICNlZWVlZWUsXG4gIDMwMDogI2UwZTBlMCxcbiAgNDAwOiAjYmRiZGJkLFxuICA1MDA6ICM5ZTllOWUsXG4gIDYwMDogIzc1NzU3NSxcbiAgNzAwOiAjNjE2MTYxLFxuICA4MDA6ICM0MjQyNDIsXG4gIDkwMDogIzIxMjEyMSxcbiAgQTEwMDogI2ZmZmZmZixcbiAgQTIwMDogI2VlZWVlZSxcbiAgQTQwMDogI2JkYmRiZCxcbiAgQTcwMDogIzYxNjE2MSxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4vLyBBbGlhcyBmb3IgYWx0ZXJuYXRlIHNwZWxsaW5nLlxuJG1hdC1ncmF5OiAkbWF0LWdyZXk7XG5cbiRtYXQtYmx1ZS1ncmV5OiAoXG4gIDUwOiAjZWNlZmYxLFxuICAxMDA6ICNjZmQ4ZGMsXG4gIDIwMDogI2IwYmVjNSxcbiAgMzAwOiAjOTBhNGFlLFxuICA0MDA6ICM3ODkwOWMsXG4gIDUwMDogIzYwN2Q4YixcbiAgNjAwOiAjNTQ2ZTdhLFxuICA3MDA6ICM0NTVhNjQsXG4gIDgwMDogIzM3NDc0ZixcbiAgOTAwOiAjMjYzMjM4LFxuICBBMTAwOiAjY2ZkOGRjLFxuICBBMjAwOiAjYjBiZWM1LFxuICBBNDAwOiAjNzg5MDljLFxuICBBNzAwOiAjNDU1YTY0LFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbi8vIEFsaWFzIGZvciBhbHRlcm5hdGUgc3BlbGxpbmcuXG4kbWF0LWJsdWUtZ3JheTogJG1hdC1ibHVlLWdyZXk7XG5cblxuLy8gQmFja2dyb3VuZCBwYWxldHRlIGZvciBsaWdodCB0aGVtZXMuXG4kbWF0LWxpZ2h0LXRoZW1lLWJhY2tncm91bmQ6IChcbiAgc3RhdHVzLWJhcjogbWFwX2dldCgkbWF0LWdyZXksIDMwMCksXG4gIGFwcC1iYXI6ICAgIG1hcF9nZXQoJG1hdC1ncmV5LCAxMDApLFxuICBiYWNrZ3JvdW5kOiBtYXBfZ2V0KCRtYXQtZ3JleSwgNTApLFxuICBob3ZlcjogICAgICByZ2JhKGJsYWNrLCAwLjA0KSwgLy8gVE9ETyhrYXJhKTogY2hlY2sgc3R5bGUgd2l0aCBNYXRlcmlhbCBEZXNpZ24gVVhcbiAgY2FyZDogICAgICAgd2hpdGUsXG4gIGRpYWxvZzogICAgIHdoaXRlLFxuICBkaXNhYmxlZC1idXR0b246IHJnYmEoYmxhY2ssIDAuMTIpLFxuICByYWlzZWQtYnV0dG9uOiB3aGl0ZSxcbiAgZm9jdXNlZC1idXR0b246ICRkYXJrLWZvY3VzZWQsXG4gIHNlbGVjdGVkLWJ1dHRvbjogbWFwX2dldCgkbWF0LWdyZXksIDMwMCksXG4gIHNlbGVjdGVkLWRpc2FibGVkLWJ1dHRvbjogbWFwX2dldCgkbWF0LWdyZXksIDQwMCksXG4gIGRpc2FibGVkLWJ1dHRvbi10b2dnbGU6IG1hcF9nZXQoJG1hdC1ncmV5LCAyMDApLFxuICB1bnNlbGVjdGVkLWNoaXA6IG1hcF9nZXQoJG1hdC1ncmV5LCAzMDApLFxuICBkaXNhYmxlZC1saXN0LW9wdGlvbjogbWFwX2dldCgkbWF0LWdyZXksIDIwMCksXG4pO1xuXG4vLyBCYWNrZ3JvdW5kIHBhbGV0dGUgZm9yIGRhcmsgdGhlbWVzLlxuJG1hdC1kYXJrLXRoZW1lLWJhY2tncm91bmQ6IChcbiAgc3RhdHVzLWJhcjogYmxhY2ssXG4gIGFwcC1iYXI6ICAgIG1hcF9nZXQoJG1hdC1ncmV5LCA5MDApLFxuICBiYWNrZ3JvdW5kOiAjMzAzMDMwLFxuICBob3ZlcjogICAgICByZ2JhKHdoaXRlLCAwLjA0KSwgLy8gVE9ETyhrYXJhKTogY2hlY2sgc3R5bGUgd2l0aCBNYXRlcmlhbCBEZXNpZ24gVVhcbiAgY2FyZDogICAgICAgbWFwX2dldCgkbWF0LWdyZXksIDgwMCksXG4gIGRpYWxvZzogICAgIG1hcF9nZXQoJG1hdC1ncmV5LCA4MDApLFxuICBkaXNhYmxlZC1idXR0b246IHJnYmEod2hpdGUsIDAuMTIpLFxuICByYWlzZWQtYnV0dG9uOiBtYXAtZ2V0KCRtYXQtZ3JleSwgODAwKSxcbiAgZm9jdXNlZC1idXR0b246ICRsaWdodC1mb2N1c2VkLFxuICBzZWxlY3RlZC1idXR0b246IG1hcF9nZXQoJG1hdC1ncmV5LCA5MDApLFxuICBzZWxlY3RlZC1kaXNhYmxlZC1idXR0b246IG1hcF9nZXQoJG1hdC1ncmV5LCA4MDApLFxuICBkaXNhYmxlZC1idXR0b24tdG9nZ2xlOiBibGFjayxcbiAgdW5zZWxlY3RlZC1jaGlwOiBtYXBfZ2V0KCRtYXQtZ3JleSwgNzAwKSxcbiAgZGlzYWJsZWQtbGlzdC1vcHRpb246IGJsYWNrLFxuKTtcblxuLy8gRm9yZWdyb3VuZCBwYWxldHRlIGZvciBsaWdodCB0aGVtZXMuXG4kbWF0LWxpZ2h0LXRoZW1lLWZvcmVncm91bmQ6IChcbiAgYmFzZTogICAgICAgICAgICAgIGJsYWNrLFxuICBkaXZpZGVyOiAgICAgICAgICAgJGRhcmstZGl2aWRlcnMsXG4gIGRpdmlkZXJzOiAgICAgICAgICAkZGFyay1kaXZpZGVycyxcbiAgZGlzYWJsZWQ6ICAgICAgICAgICRkYXJrLWRpc2FibGVkLXRleHQsXG4gIGRpc2FibGVkLWJ1dHRvbjogICByZ2JhKGJsYWNrLCAwLjI2KSxcbiAgZGlzYWJsZWQtdGV4dDogICAgICRkYXJrLWRpc2FibGVkLXRleHQsXG4gIGVsZXZhdGlvbjogICAgICAgICBibGFjayxcbiAgaGludC10ZXh0OiAgICAgICAgICRkYXJrLWRpc2FibGVkLXRleHQsXG4gIHNlY29uZGFyeS10ZXh0OiAgICAkZGFyay1zZWNvbmRhcnktdGV4dCxcbiAgaWNvbjogICAgICAgICAgICAgIHJnYmEoYmxhY2ssIDAuNTQpLFxuICBpY29uczogICAgICAgICAgICAgcmdiYShibGFjaywgMC41NCksXG4gIHRleHQ6ICAgICAgICAgICAgICByZ2JhKGJsYWNrLCAwLjg3KSxcbiAgc2xpZGVyLW1pbjogICAgICAgIHJnYmEoYmxhY2ssIDAuODcpLFxuICBzbGlkZXItb2ZmOiAgICAgICAgcmdiYShibGFjaywgMC4yNiksXG4gIHNsaWRlci1vZmYtYWN0aXZlOiByZ2JhKGJsYWNrLCAwLjM4KSxcbik7XG5cbi8vIEZvcmVncm91bmQgcGFsZXR0ZSBmb3IgZGFyayB0aGVtZXMuXG4kbWF0LWRhcmstdGhlbWUtZm9yZWdyb3VuZDogKFxuICBiYXNlOiAgICAgICAgICAgICAgd2hpdGUsXG4gIGRpdmlkZXI6ICAgICAgICAgICAkbGlnaHQtZGl2aWRlcnMsXG4gIGRpdmlkZXJzOiAgICAgICAgICAkbGlnaHQtZGl2aWRlcnMsXG4gIGRpc2FibGVkOiAgICAgICAgICAkbGlnaHQtZGlzYWJsZWQtdGV4dCxcbiAgZGlzYWJsZWQtYnV0dG9uOiAgIHJnYmEod2hpdGUsIDAuMyksXG4gIGRpc2FibGVkLXRleHQ6ICAgICAkbGlnaHQtZGlzYWJsZWQtdGV4dCxcbiAgZWxldmF0aW9uOiAgICAgICAgIGJsYWNrLFxuICBoaW50LXRleHQ6ICAgICAgICAgJGxpZ2h0LWRpc2FibGVkLXRleHQsXG4gIHNlY29uZGFyeS10ZXh0OiAgICAkbGlnaHQtc2Vjb25kYXJ5LXRleHQsXG4gIGljb246ICAgICAgICAgICAgICB3aGl0ZSxcbiAgaWNvbnM6ICAgICAgICAgICAgIHdoaXRlLFxuICB0ZXh0OiAgICAgICAgICAgICAgd2hpdGUsXG4gIHNsaWRlci1taW46ICAgICAgICB3aGl0ZSxcbiAgc2xpZGVyLW9mZjogICAgICAgIHJnYmEod2hpdGUsIDAuMyksXG4gIHNsaWRlci1vZmYtYWN0aXZlOiByZ2JhKHdoaXRlLCAwLjMpLFxuKTtcblxuXG5cbi8vIEZvciBhIGdpdmVuIGh1ZSBpbiBhIHBhbGV0dGUsIHJldHVybiB0aGUgY29udHJhc3QgY29sb3IgZnJvbSB0aGUgbWFwIG9mIGNvbnRyYXN0IHBhbGV0dGVzLlxuLy8gQHBhcmFtICRjb2xvci1tYXBcbi8vIEBwYXJhbSAkaHVlXG5AZnVuY3Rpb24gbWF0LWNvbnRyYXN0KCRwYWxldHRlLCAkaHVlKSB7XG4gIEByZXR1cm4gbWFwLWdldChtYXAtZ2V0KCRwYWxldHRlLCBjb250cmFzdCksICRodWUpO1xufVxuXG5cbi8vIENyZWF0ZXMgYSBtYXAgb2YgaHVlcyB0byBjb2xvcnMgZm9yIGEgdGhlbWUuIFRoaXMgaXMgdXNlZCB0byBkZWZpbmUgYSB0aGVtZSBwYWxldHRlIGluIHRlcm1zXG4vLyBvZiB0aGUgTWF0ZXJpYWwgRGVzaWduIGh1ZXMuXG4vLyBAcGFyYW0gJGNvbG9yLW1hcFxuLy8gQHBhcmFtICRwcmltYXJ5XG4vLyBAcGFyYW0gJGxpZ2h0ZXJcbkBmdW5jdGlvbiBtYXQtcGFsZXR0ZSgkYmFzZS1wYWxldHRlLCAkZGVmYXVsdDogNTAwLCAkbGlnaHRlcjogMTAwLCAkZGFya2VyOiA3MDApIHtcbiAgJHJlc3VsdDogbWFwX21lcmdlKCRiYXNlLXBhbGV0dGUsIChcbiAgICBkZWZhdWx0OiBtYXAtZ2V0KCRiYXNlLXBhbGV0dGUsICRkZWZhdWx0KSxcbiAgICBsaWdodGVyOiBtYXAtZ2V0KCRiYXNlLXBhbGV0dGUsICRsaWdodGVyKSxcbiAgICBkYXJrZXI6IG1hcC1nZXQoJGJhc2UtcGFsZXR0ZSwgJGRhcmtlciksXG5cbiAgICBkZWZhdWx0LWNvbnRyYXN0OiBtYXQtY29udHJhc3QoJGJhc2UtcGFsZXR0ZSwgJGRlZmF1bHQpLFxuICAgIGxpZ2h0ZXItY29udHJhc3Q6IG1hdC1jb250cmFzdCgkYmFzZS1wYWxldHRlLCAkbGlnaHRlciksXG4gICAgZGFya2VyLWNvbnRyYXN0OiBtYXQtY29udHJhc3QoJGJhc2UtcGFsZXR0ZSwgJGRhcmtlcilcbiAgKSk7XG5cbiAgLy8gRm9yIGVhY2ggaHVlIGluIHRoZSBwYWxldHRlLCBhZGQgYSBcIi1jb250cmFzdFwiIGNvbG9yIHRvIHRoZSBtYXAuXG4gIEBlYWNoICRodWUsICRjb2xvciBpbiAkYmFzZS1wYWxldHRlIHtcbiAgICAkcmVzdWx0OiBtYXBfbWVyZ2UoJHJlc3VsdCwgKFxuICAgICAgJyN7JGh1ZX0tY29udHJhc3QnOiBtYXQtY29udHJhc3QoJGJhc2UtcGFsZXR0ZSwgJGh1ZSlcbiAgICApKTtcbiAgfVxuXG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuXG4vLyBHZXRzIGEgY29sb3IgZnJvbSBhIHRoZW1lIHBhbGV0dGUgKHRoZSBvdXRwdXQgb2YgbWF0LXBhbGV0dGUpLlxuLy8gVGhlIGh1ZSBjYW4gYmUgb25lIG9mIHRoZSBzdGFuZGFyZCB2YWx1ZXMgKDUwMCwgQTQwMCwgZXRjLiksIG9uZSBvZiB0aGUgdGhyZWUgcHJlY29uZmlndXJlZFxuLy8gaHVlcyAoZGVmYXVsdCwgbGlnaHRlciwgZGFya2VyKSwgb3IgYW55IG9mIHRoZSBhZm9yZW1lbnRpb25lZCBwcmVmaXhlZCB3aXRoIFwiLWNvbnRyYXN0XCIuXG4vL1xuLy8gQHBhcmFtICRjb2xvci1tYXAgVGhlIHRoZW1lIHBhbGV0dGUgKG91dHB1dCBvZiBtYXQtcGFsZXR0ZSkuXG4vLyBAcGFyYW0gJGh1ZSBUaGUgaHVlIGZyb20gdGhlIHBhbGV0dGUgdG8gdXNlLiBJZiB0aGlzIGlzIGEgdmFsdWUgYmV0d2VlbiAwIGFuZCAxLCBpdCB3aWxsXG4vLyAgICAgYmUgdHJlYXRlZCBhcyBvcGFjaXR5LlxuLy8gQHBhcmFtICRvcGFjaXR5IFRoZSBhbHBoYSBjaGFubmVsIHZhbHVlIGZvciB0aGUgY29sb3IuXG5AZnVuY3Rpb24gbWF0LWNvbG9yKCRwYWxldHRlLCAkaHVlOiBkZWZhdWx0LCAkb3BhY2l0eTogbnVsbCkge1xuICAvLyBJZiBodWVLZXkgaXMgYSBudW1iZXIgYmV0d2VlbiB6ZXJvIGFuZCBvbmUsIHRoZW4gaXQgYWN0dWFsbHkgY29udGFpbnMgYW5cbiAgLy8gb3BhY2l0eSB2YWx1ZSwgc28gcmVjYWxsIHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUgZGVmYXVsdCBodWUgYW5kIHRoYXQgZ2l2ZW4gb3BhY2l0eS5cbiAgQGlmIHR5cGUtb2YoJGh1ZSkgPT0gbnVtYmVyIGFuZCAkaHVlID49IDAgYW5kICRodWUgPD0gMSB7XG4gICAgQHJldHVybiBtYXQtY29sb3IoJHBhbGV0dGUsIGRlZmF1bHQsICRodWUpO1xuICB9XG5cbiAgJGNvbG9yOiBtYXAtZ2V0KCRwYWxldHRlLCAkaHVlKTtcbiAgJG9wYWNpdHk6IGlmKCRvcGFjaXR5ID09IG51bGwsIG9wYWNpdHkoJGNvbG9yKSwgJG9wYWNpdHkpO1xuXG4gIEByZXR1cm4gcmdiYSgkY29sb3IsICRvcGFjaXR5KTtcbn1cblxuXG4vLyBDcmVhdGVzIGEgY29udGFpbmVyIG9iamVjdCBmb3IgYSBsaWdodCB0aGVtZSB0byBiZSBnaXZlbiB0byBpbmRpdmlkdWFsIGNvbXBvbmVudCB0aGVtZSBtaXhpbnMuXG5AZnVuY3Rpb24gbWF0LWxpZ2h0LXRoZW1lKCRwcmltYXJ5LCAkYWNjZW50LCAkd2FybjogbWF0LXBhbGV0dGUoJG1hdC1yZWQpKSB7XG4gIEByZXR1cm4gKFxuICAgIHByaW1hcnk6ICRwcmltYXJ5LFxuICAgIGFjY2VudDogJGFjY2VudCxcbiAgICB3YXJuOiAkd2FybixcbiAgICBpcy1kYXJrOiBmYWxzZSxcbiAgICBmb3JlZ3JvdW5kOiAkbWF0LWxpZ2h0LXRoZW1lLWZvcmVncm91bmQsXG4gICAgYmFja2dyb3VuZDogJG1hdC1saWdodC10aGVtZS1iYWNrZ3JvdW5kLFxuICApO1xufVxuXG5cbi8vIENyZWF0ZXMgYSBjb250YWluZXIgb2JqZWN0IGZvciBhIGRhcmsgdGhlbWUgdG8gYmUgZ2l2ZW4gdG8gaW5kaXZpZHVhbCBjb21wb25lbnQgdGhlbWUgbWl4aW5zLlxuQGZ1bmN0aW9uIG1hdC1kYXJrLXRoZW1lKCRwcmltYXJ5LCAkYWNjZW50LCAkd2FybjogbWF0LXBhbGV0dGUoJG1hdC1yZWQpKSB7XG4gIEByZXR1cm4gKFxuICAgIHByaW1hcnk6ICRwcmltYXJ5LFxuICAgIGFjY2VudDogJGFjY2VudCxcbiAgICB3YXJuOiAkd2FybixcbiAgICBpcy1kYXJrOiB0cnVlLFxuICAgIGZvcmVncm91bmQ6ICRtYXQtZGFyay10aGVtZS1mb3JlZ3JvdW5kLFxuICAgIGJhY2tncm91bmQ6ICRtYXQtZGFyay10aGVtZS1iYWNrZ3JvdW5kLFxuICApO1xufVxuXG5cblxuJG1hdC1yaXBwbGUtY29sb3Itb3BhY2l0eTogMC4xO1xuXG5AbWl4aW4gbWF0LXJpcHBsZSgpIHtcblxuICAvLyBUaGUgaG9zdCBlbGVtZW50IG9mIGFuIG1hdC1yaXBwbGUgZGlyZWN0aXZlIHNob3VsZCBhbHdheXMgaGF2ZSBhIHBvc2l0aW9uIG9mIFwiYWJzb2x1dGVcIiBvclxuICAvLyBcInJlbGF0aXZlXCIgc28gdGhhdCB0aGUgcmlwcGxlcyBpbnNpZGUgYXJlIGNvcnJlY3RseSBwb3NpdGlvbmVkIHJlbGF0aXZlbHkgdG8gdGhlIGNvbnRhaW5lci5cbiAgLm1hdC1yaXBwbGUge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAvLyBCeSBkZWZhdWx0LCBldmVyeSByaXBwbGUgY29udGFpbmVyIHNob3VsZCBoYXZlIHBvc2l0aW9uOiByZWxhdGl2ZSBpbiBmYXZvciBvZiBjcmVhdGluZyBhblxuICAgIC8vIGVhc3kgQVBJIGZvciBkZXZlbG9wZXJzIHVzaW5nIHRoZSBNYXRSaXBwbGUgZGlyZWN0aXZlLlxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gIC5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkIHtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgfVxuXG4gIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5LCB0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG5cbiAgICAvLyBJbiBoaWdoIGNvbnRyYXN0IG1vZGUgdGhlIHJpcHBsZSBpcyBvcGFxdWUsIGNhdXNpbmcgaXQgdG8gb2JzdHJ1Y3QgdGhlIGNvbnRlbnQuXG4gICAgQGluY2x1ZGUgY2RrLWhpZ2gtY29udHJhc3Qge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLyogVGhlbWUgZm9yIHRoZSByaXBwbGUgZWxlbWVudHMuKi9cbkBtaXhpbiBtYXQtcmlwcGxlLXRoZW1lKCR0aGVtZSkge1xuICAkZm9yZWdyb3VuZDogbWFwX2dldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuICAkZm9yZWdyb3VuZC1iYXNlOiBtYXBfZ2V0KCRmb3JlZ3JvdW5kLCBiYXNlKTtcblxuICAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRmb3JlZ3JvdW5kLWJhc2UsICRtYXQtcmlwcGxlLWNvbG9yLW9wYWNpdHkpO1xuICB9XG59XG5cblxuXG4vLyBVdGlsaXR5IGZvciBmZXRjaGluZyBhIG5lc3RlZCB2YWx1ZSBmcm9tIGEgdHlwb2dyYXBoeSBjb25maWcuXG5AZnVuY3Rpb24gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsICRuYW1lKSB7XG4gIEByZXR1cm4gbWFwLWdldChtYXAtZ2V0KCRjb25maWcsICRsZXZlbCksICRuYW1lKTtcbn1cblxuLy8gR2V0cyB0aGUgZm9udCBzaXplIGZvciBhIGxldmVsIGluc2lkZSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuQGZ1bmN0aW9uIG1hdC1mb250LXNpemUoJGNvbmZpZywgJGxldmVsKSB7XG4gIEByZXR1cm4gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGZvbnQtc2l6ZSk7XG59XG5cbi8vIEdldHMgdGhlIGxpbmUgaGVpZ2h0IGZvciBhIGxldmVsIGluc2lkZSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuQGZ1bmN0aW9uIG1hdC1saW5lLWhlaWdodCgkY29uZmlnLCAkbGV2ZWwpIHtcbiAgQHJldHVybiBfbWF0LWdldC10eXBlLXZhbHVlKCRjb25maWcsICRsZXZlbCwgbGluZS1oZWlnaHQpO1xufVxuXG4vLyBHZXRzIHRoZSBmb250IHdlaWdodCBmb3IgYSBsZXZlbCBpbnNpZGUgYSB0eXBvZ3JhcGh5IGNvbmZpZy5cbkBmdW5jdGlvbiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgJGxldmVsKSB7XG4gIEByZXR1cm4gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGZvbnQtd2VpZ2h0KTtcbn1cblxuLy8gR2V0cyB0aGUgbGV0dGVyIHNwYWNpbmcgZm9yIGEgbGV2ZWwgaW5zaWRlIGEgdHlwb2dyYXBoeSBjb25maWcuXG5AZnVuY3Rpb24gbWF0LWxldHRlci1zcGFjaW5nKCRjb25maWcsICRsZXZlbCkge1xuICBAcmV0dXJuIF9tYXQtZ2V0LXR5cGUtdmFsdWUoJGNvbmZpZywgJGxldmVsLCBsZXR0ZXItc3BhY2luZyk7XG59XG5cbi8vIEdldHMgdGhlIGZvbnQtZmFtaWx5IGZyb20gYSB0eXBvZ3JhcGh5IGNvbmZpZyBhbmQgcmVtb3ZlcyB0aGUgcXVvdGVzIGFyb3VuZCBpdC5cbkBmdW5jdGlvbiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZywgJGxldmVsOiBudWxsKSB7XG4gICRmb250LWZhbWlseTogbWFwLWdldCgkY29uZmlnLCBmb250LWZhbWlseSk7XG5cbiAgQGlmICRsZXZlbCAhPSBudWxsIHtcbiAgICAkZm9udC1mYW1pbHk6IF9tYXQtZ2V0LXR5cGUtdmFsdWUoJGNvbmZpZywgJGxldmVsLCBmb250LWZhbWlseSk7XG4gIH1cblxuICAvLyBHdWFyZCBhZ2FpbnN0IHVucXVvdGluZyBub24tc3RyaW5nIHZhbHVlcywgYmVjYXVzZSBpdCdzIGRlcHJlY2F0ZWQuXG4gIEByZXR1cm4gaWYodHlwZS1vZigkZm9udC1mYW1pbHkpID09IHN0cmluZywgdW5xdW90ZSgkZm9udC1mYW1pbHkpLCAkZm9udC1mYW1pbHkpO1xufVxuXG4vLyBPdXRwdXRzIHRoZSBzaG9ydGhhbmQgYGZvbnRgIENTUyBwcm9wZXJ0eSwgYmFzZWQgb24gYSBzZXQgb2YgdHlwb2dyYXBoeSB2YWx1ZXMuIEZhbGxzIGJhY2sgdG9cbi8vIHRoZSBpbmRpdmlkdWFsIHByb3BlcnRpZXMgaWYgYSB2YWx1ZSB0aGF0IGlzbid0IGFsbG93ZWQgaW4gdGhlIHNob3J0aGFuZCBpcyBwYXNzZWQgaW4uXG5AbWl4aW4gbWF0LXR5cG9ncmFwaHktZm9udC1zaG9ydGhhbmQoJGZvbnQtc2l6ZSwgJGZvbnQtd2VpZ2h0LCAkbGluZS1oZWlnaHQsICRmb250LWZhbWlseSkge1xuICAvLyBJZiBhbnkgb2YgdGhlIHZhbHVlcyBhcmUgc2V0IHRvIGBpbmhlcml0YCwgd2UgY2FuJ3QgdXNlIHRoZSBzaG9ydGhhbmRcbiAgLy8gc28gd2UgZmFsbCBiYWNrIHRvIHBhc3NpbmcgaW4gdGhlIGluZGl2aWR1YWwgcHJvcGVydGllcy5cbiAgQGlmICgkZm9udC1zaXplID09IGluaGVyaXQgb3JcbiAgICAgICAkZm9udC13ZWlnaHQgPT0gaW5oZXJpdCBvclxuICAgICAgICRsaW5lLWhlaWdodCA9PSBpbmhlcml0IG9yXG4gICAgICAgJGZvbnQtZmFtaWx5ID09IGluaGVyaXQgb3JcbiAgICAgICAkZm9udC1zaXplID09IG51bGwgb3JcbiAgICAgICAkZm9udC13ZWlnaHQgPT0gbnVsbCBvclxuICAgICAgICRsaW5lLWhlaWdodCA9PSBudWxsIG9yXG4gICAgICAgJGZvbnQtZmFtaWx5ID09IG51bGwpIHtcblxuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0O1xuICAgIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlIHVzZSB0aGUgc2hvcnRoYW5kIGBmb250YCwgYmVjYXVzZSBpdCdzIHRoZSBsZWFzdCBhbW91bnQgb2YgYnl0ZXMuIE5vdGVcbiAgICAvLyB0aGF0IHdlIG5lZWQgdG8gdXNlIGludGVycG9sYXRpb24gZm9yIGBmb250LXNpemUvbGluZS1oZWlnaHRgIGluIG9yZGVyIHRvIHByZXZlbnRcbiAgICAvLyBTYXNzIGZyb20gZGl2aWRpbmcgdGhlIHR3byB2YWx1ZXMuXG4gICAgZm9udDogJGZvbnQtd2VpZ2h0ICN7JGZvbnQtc2l6ZX0vI3skbGluZS1oZWlnaHR9ICRmb250LWZhbWlseTtcbiAgfVxufVxuXG4vLyBDb252ZXJ0cyBhIHR5cG9ncmFwaHkgbGV2ZWwgaW50byBDU1Mgc3R5bGVzLlxuQG1peGluIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCAkbGV2ZWwpIHtcbiAgJGZvbnQtc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCAkbGV2ZWwpO1xuICAkZm9udC13ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCAkbGV2ZWwpO1xuICAkbGluZS1oZWlnaHQ6IG1hdC1saW5lLWhlaWdodCgkY29uZmlnLCAkbGV2ZWwpO1xuICAkZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnLCAkbGV2ZWwpO1xuXG4gIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWZvbnQtc2hvcnRoYW5kKCRmb250LXNpemUsICRmb250LXdlaWdodCwgJGxpbmUtaGVpZ2h0LCAkZm9udC1mYW1pbHkpO1xuICBsZXR0ZXItc3BhY2luZzogbWF0LWxldHRlci1zcGFjaW5nKCRjb25maWcsICRsZXZlbCk7XG59XG5cblxuQG1peGluIG1hdC1vcHRpb24tdGhlbWUoJHRoZW1lKSB7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuXG4gIC5tYXQtb3B0aW9uIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICY6aG92ZXI6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSxcbiAgICAmOmZvY3VzOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCkge1xuICAgICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBob3Zlcik7XG4gICAgfVxuXG4gICAgLy8gSW4gbXVsdGlwbGUgbW9kZSB0aGVyZSBpcyBhIGNoZWNrYm94IHRvIHNob3cgdGhhdCB0aGUgb3B0aW9uIGlzIHNlbGVjdGVkLlxuICAgICYubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSk6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSB7XG4gICAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGhvdmVyKTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY3RpdmUge1xuICAgICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBob3Zlcik7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgICB9XG5cbiAgICAmLm1hdC1vcHRpb24tZGlzYWJsZWQge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgaGludC10ZXh0KTtcbiAgICB9XG4gIH1cblxuICAubWF0LXByaW1hcnkgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCkge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJHByaW1hcnkpO1xuICB9XG5cbiAgLm1hdC1hY2NlbnQgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCkge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGFjY2VudCk7XG4gIH1cblxuICAubWF0LXdhcm4gLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCkge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJHdhcm4pO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtb3B0aW9uLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LW9wdGlvbiB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gICAgICBzaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIHN1YmhlYWRpbmctMik7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuQG1peGluIG1hdC1vcHRncm91cC10aGVtZSgkdGhlbWUpIHtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LW9wdGdyb3VwLWxhYmVsIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LW9wdGdyb3VwLWRpc2FibGVkIC5tYXQtb3B0Z3JvdXAtbGFiZWwge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG4gIH1cbn1cblxuQG1peGluIG1hdC1vcHRncm91cC10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC1vcHRncm91cC1sYWJlbCB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIGJvZHktMik7XG4gIH1cbn1cblxuXG5cbkBtaXhpbiBtYXQtcHNldWRvLWNoZWNrYm94LXRoZW1lKCR0aGVtZSkge1xuICAkaXMtZGFyay10aGVtZTogbWFwLWdldCgkdGhlbWUsIGlzLWRhcmspO1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcblxuICAvLyBOT1RFKHRyYXZpc2thdWZtYW4pOiBXaGlsZSB0aGUgc3BlYyBjYWxscyBmb3IgdHJhbnNsdWNlbnQgYmxhY2tzL3doaXRlcyBmb3IgZGlzYWJsZWQgY29sb3JzLFxuICAvLyB0aGlzIGRvZXMgbm90IHdvcmsgd2VsbCB3aXRoIGVsZW1lbnRzIGxheWVyZWQgb24gdG9wIG9mIG9uZSBhbm90aGVyLiBUbyBnZXQgYXJvdW5kIHRoaXMgd2VcbiAgLy8gYmxlbmQgdGhlIGNvbG9ycyB0b2dldGhlciBiYXNlZCBvbiB0aGUgYmFzZSBjb2xvciBhbmQgdGhlIHRoZW1lIGJhY2tncm91bmQuXG4gICR3aGl0ZS0zMHBjdC1vcGFjaXR5LW9uLWRhcms6ICM2ODY4Njg7XG4gICRibGFjay0yNnBjdC1vcGFjaXR5LW9uLWxpZ2h0OiAjYjBiMGIwO1xuICAkZGlzYWJsZWQtY29sb3I6IGlmKCRpcy1kYXJrLXRoZW1lLCAkd2hpdGUtMzBwY3Qtb3BhY2l0eS1vbi1kYXJrLCAkYmxhY2stMjZwY3Qtb3BhY2l0eS1vbi1saWdodCk7XG4gICRjb2xvcmVkLWJveC1zZWxlY3RvcjogJy5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUnO1xuXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94IHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKSwgc2Vjb25kYXJ5LXRleHQpO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgYmFja2dyb3VuZCk7XG4gICAgfVxuICB9XG5cbiAgLy8gRGVmYXVsdCB0byB0aGUgYWNjZW50IGNvbG9yLiBOb3RlIHRoYXQgdGhlIHBzZXVkbyBjaGVja2JveGVzIGFyZSBtZWFudCB0byBpbmhlcml0IHRoZVxuICAvLyB0aGVtZSBmcm9tIHRoZWlyIHBhcmVudCwgcmF0aGVyIHRoYW4gaW1wbGVtZW50aW5nIHRoZWlyIG93biB0aGVtaW5nLCB3aGljaCBpcyB3aHkgd2VcbiAgLy8gZG9uJ3QgYXR0YWNoIHRvIHRoZSBgbWF0LSpgIGNsYXNzZXMuXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUsXG4gIC5tYXQtYWNjZW50IC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsXG4gIC5tYXQtYWNjZW50IC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcihtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KSk7XG4gIH1cblxuICAubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1wcmltYXJ5IC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcihtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSkpO1xuICB9XG5cbiAgLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsXG4gIC5tYXQtd2FybiAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlIHtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IobWFwLWdldCgkdGhlbWUsIHdhcm4pKTtcbiAgfVxuXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgICYubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZCB7XG4gICAgICBiYWNrZ3JvdW5kOiAkZGlzYWJsZWQtY29sb3I7XG4gICAgfVxuICB9XG59XG5cblxuXG4vLyBSZXByZXNlbnRzIGEgdHlwb2dyYXBoeSBsZXZlbCBmcm9tIHRoZSBNYXRlcmlhbCBkZXNpZ24gc3BlYy5cbkBmdW5jdGlvbiBtYXQtdHlwb2dyYXBoeS1sZXZlbChcbiAgJGZvbnQtc2l6ZSxcbiAgJGxpbmUtaGVpZ2h0OiAkZm9udC1zaXplLFxuICAkZm9udC13ZWlnaHQ6IDQwMCxcbiAgJGZvbnQtZmFtaWx5OiBudWxsLFxuICAkbGV0dGVyLXNwYWNpbmc6IG51bGwpIHtcblxuICBAcmV0dXJuIChcbiAgICBmb250LXNpemU6ICRmb250LXNpemUsXG4gICAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodCxcbiAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LFxuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHksXG4gICAgbGV0dGVyLXNwYWNpbmc6ICRsZXR0ZXItc3BhY2luZ1xuICApO1xufVxuXG4vLyBSZXByZXNlbnRzIGEgY29sbGVjdGlvbiBvZiB0eXBvZ3JhcGh5IGxldmVscy5cbi8vIERlZmF1bHRzIGNvbWUgZnJvbSBodHRwczovL21hdGVyaWFsLmlvL2d1aWRlbGluZXMvc3R5bGUvdHlwb2dyYXBoeS5odG1sXG5AZnVuY3Rpb24gbWF0LXR5cG9ncmFwaHktY29uZmlnKFxuICAkZm9udC1mYW1pbHk6ICAgJ1JvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmJyxcbiAgJGRpc3BsYXktNDogICAgIG1hdC10eXBvZ3JhcGh5LWxldmVsKDExMnB4LCAxMTJweCwgMzAwKSxcbiAgJGRpc3BsYXktMzogICAgIG1hdC10eXBvZ3JhcGh5LWxldmVsKDU2cHgsIDU2cHgsIDQwMCksXG4gICRkaXNwbGF5LTI6ICAgICBtYXQtdHlwb2dyYXBoeS1sZXZlbCg0NXB4LCA0OHB4LCA0MDApLFxuICAkZGlzcGxheS0xOiAgICAgbWF0LXR5cG9ncmFwaHktbGV2ZWwoMzRweCwgNDBweCwgNDAwKSxcbiAgJGhlYWRsaW5lOiAgICAgIG1hdC10eXBvZ3JhcGh5LWxldmVsKDI0cHgsIDMycHgsIDQwMCksXG4gICR0aXRsZTogICAgICAgICBtYXQtdHlwb2dyYXBoeS1sZXZlbCgyMHB4LCAzMnB4LCA1MDApLFxuICAkc3ViaGVhZGluZy0yOiAgbWF0LXR5cG9ncmFwaHktbGV2ZWwoMTZweCwgMjhweCwgNDAwKSxcbiAgJHN1YmhlYWRpbmctMTogIG1hdC10eXBvZ3JhcGh5LWxldmVsKDE1cHgsIDI0cHgsIDQwMCksXG4gICRib2R5LTI6ICAgICAgICBtYXQtdHlwb2dyYXBoeS1sZXZlbCgxNHB4LCAyNHB4LCA1MDApLFxuICAkYm9keS0xOiAgICAgICAgbWF0LXR5cG9ncmFwaHktbGV2ZWwoMTRweCwgMjBweCwgNDAwKSxcbiAgJGNhcHRpb246ICAgICAgIG1hdC10eXBvZ3JhcGh5LWxldmVsKDEycHgsIDIwcHgsIDQwMCksXG4gICRidXR0b246ICAgICAgICBtYXQtdHlwb2dyYXBoeS1sZXZlbCgxNHB4LCAxNHB4LCA1MDApLFxuICAvLyBMaW5lLWhlaWdodCBtdXN0IGJlIHVuaXQtbGVzcyBmcmFjdGlvbiBvZiB0aGUgZm9udC1zaXplLlxuICAkaW5wdXQ6ICAgICAgICAgbWF0LXR5cG9ncmFwaHktbGV2ZWwoaW5oZXJpdCwgMS4xMjUsIDQwMClcbikge1xuXG4gIC8vIERlY2xhcmUgYW4gaW5pdGlhbCBtYXAgd2l0aCBhbGwgb2YgdGhlIGxldmVscy5cbiAgJGNvbmZpZzogKFxuICAgIGRpc3BsYXktNDogICAgICAkZGlzcGxheS00LFxuICAgIGRpc3BsYXktMzogICAgICAkZGlzcGxheS0zLFxuICAgIGRpc3BsYXktMjogICAgICAkZGlzcGxheS0yLFxuICAgIGRpc3BsYXktMTogICAgICAkZGlzcGxheS0xLFxuICAgIGhlYWRsaW5lOiAgICAgICAkaGVhZGxpbmUsXG4gICAgdGl0bGU6ICAgICAgICAgICR0aXRsZSxcbiAgICBzdWJoZWFkaW5nLTI6ICAgJHN1YmhlYWRpbmctMixcbiAgICBzdWJoZWFkaW5nLTE6ICAgJHN1YmhlYWRpbmctMSxcbiAgICBib2R5LTI6ICAgICAgICAgJGJvZHktMixcbiAgICBib2R5LTE6ICAgICAgICAgJGJvZHktMSxcbiAgICBjYXB0aW9uOiAgICAgICAgJGNhcHRpb24sXG4gICAgYnV0dG9uOiAgICAgICAgICRidXR0b24sXG4gICAgaW5wdXQ6ICAgICAgICAgICRpbnB1dCxcbiAgKTtcblxuICAvLyBMb29wIHRocm91Z2ggdGhlIGxldmVscyBhbmQgc2V0IHRoZSBgZm9udC1mYW1pbHlgIG9mIHRoZSBvbmVzIHRoYXQgZG9uJ3QgaGF2ZSBvbmUgdG8gdGhlIGJhc2UuXG4gIC8vIE5vdGUgdGhhdCBTYXNzIGNhbid0IG1vZGlmeSBtYXBzIGluIHBsYWNlLCB3aGljaCBtZWFucyB0aGF0IHdlIG5lZWQgdG8gbWVyZ2UgYW5kIHJlLWFzc2lnbi5cbiAgQGVhY2ggJGtleSwgJGxldmVsIGluICRjb25maWcge1xuICAgIEBpZiBtYXAtZ2V0KCRsZXZlbCwgZm9udC1mYW1pbHkpID09IG51bGwge1xuICAgICAgJG5ldy1sZXZlbDogbWFwLW1lcmdlKCRsZXZlbCwgKGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHkpKTtcbiAgICAgICRjb25maWc6IG1hcC1tZXJnZSgkY29uZmlnLCAoJGtleTogJG5ldy1sZXZlbCkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFkZCB0aGUgYmFzZSBmb250IGZhbWlseSB0byB0aGUgY29uZmlnLlxuICBAcmV0dXJuIG1hcC1tZXJnZSgkY29uZmlnLCAoZm9udC1mYW1pbHk6ICRmb250LWZhbWlseSkpO1xufVxuXG4vLyBBZGRzIHRoZSBiYXNlIHR5cG9ncmFwaHkgc3R5bGVzLCBiYXNlZCBvbiBhIGNvbmZpZy5cbkBtaXhpbiBtYXQtYmFzZS10eXBvZ3JhcGh5KCRjb25maWcsICRzZWxlY3RvcjogJy5tYXQtdHlwb2dyYXBoeScpIHtcbiAgLm1hdC1oMSwgLm1hdC1oZWFkbGluZSwgI3skc2VsZWN0b3J9IGgxIHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgaGVhZGxpbmUpO1xuICAgIG1hcmdpbjogMCAwIDE2cHg7XG4gIH1cblxuICAubWF0LWgyLCAubWF0LXRpdGxlLCAjeyRzZWxlY3Rvcn0gaDIge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCB0aXRsZSk7XG4gICAgbWFyZ2luOiAwIDAgMTZweDtcbiAgfVxuXG4gIC5tYXQtaDMsIC5tYXQtc3ViaGVhZGluZy0yLCAjeyRzZWxlY3Rvcn0gaDMge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCBzdWJoZWFkaW5nLTIpO1xuICAgIG1hcmdpbjogMCAwIDE2cHg7XG4gIH1cblxuICAubWF0LWg0LCAubWF0LXN1YmhlYWRpbmctMSwgI3skc2VsZWN0b3J9IGg0IHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgc3ViaGVhZGluZy0xKTtcbiAgICBtYXJnaW46IDAgMCAxNnB4O1xuICB9XG5cbiAgLy8gTm90ZTogdGhlIHNwZWMgZG9lc24ndCBoYXZlIGFueXRoaW5nIHRoYXQgd291bGQgY29ycmVzcG9uZCB0byBoNSBhbmQgaDYsIGJ1dCB3ZSBhZGQgdGhlc2UgZm9yXG4gIC8vIGNvbnNpc3RlbmN5LiBUaGUgZm9udCBzaXplcyBjb21lIGZyb20gdGhlIENocm9tZSB1c2VyIGFnZW50IHN0eWxlcyB3aGljaCBoYXZlIGg1IGF0IDAuODNlbVxuICAvLyBhbmQgaDYgYXQgMC42N2VtLlxuICAubWF0LWg1LCAjeyRzZWxlY3Rvcn0gaDUge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWZvbnQtc2hvcnRoYW5kKFxuICAgICAgbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpICogMC44MyxcbiAgICAgIG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpLFxuICAgICAgbWF0LWxpbmUtaGVpZ2h0KCRjb25maWcsIGJvZHktMSksXG4gICAgICBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZywgYm9keS0xKVxuICAgICk7XG5cbiAgICBtYXJnaW46IDAgMCAxMnB4O1xuICB9XG5cbiAgLm1hdC1oNiwgI3skc2VsZWN0b3J9IGg2IHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1mb250LXNob3J0aGFuZChcbiAgICAgIG1hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0xKSAqIDAuNjcsXG4gICAgICBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0xKSxcbiAgICAgIG1hdC1saW5lLWhlaWdodCgkY29uZmlnLCBib2R5LTEpLFxuICAgICAgbWF0LWZvbnQtZmFtaWx5KCRjb25maWcsIGJvZHktMSlcbiAgICApO1xuXG4gICAgbWFyZ2luOiAwIDAgMTJweDtcbiAgfVxuXG4gIC5tYXQtYm9keS1zdHJvbmcsIC5tYXQtYm9keS0yIHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgYm9keS0yKTtcbiAgfVxuXG4gIC5tYXQtYm9keSwgLm1hdC1ib2R5LTEsICN7JHNlbGVjdG9yfSB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIGJvZHktMSk7XG5cbiAgICBwIHtcbiAgICAgIG1hcmdpbjogMCAwIDEycHg7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zbWFsbCwgLm1hdC1jYXB0aW9uIHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgY2FwdGlvbik7XG4gIH1cblxuICAvLyBOb3RlOiBUaGUgc3BlYyBkb2Vzbid0IG1lbnRpb24gbGV0dGVyIHNwYWNpbmcuIFRoZSB2YWx1ZSBjb21lcyBmcm9tXG4gIC8vIGV5ZWJhbGxpbmcgaXQgdW50aWwgaXQgbG9va2VkIGV4YWN0bHkgbGlrZSB0aGUgc3BlYyBleGFtcGxlcy5cbiAgLm1hdC1kaXNwbGF5LTQsICN7JHNlbGVjdG9yfSAubWF0LWRpc3BsYXktNCB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIGRpc3BsYXktNCk7XG4gICAgbWFyZ2luOiAwIDAgNTZweDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDVlbTtcbiAgfVxuXG4gIC5tYXQtZGlzcGxheS0zLCAjeyRzZWxlY3Rvcn0gLm1hdC1kaXNwbGF5LTMge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCBkaXNwbGF5LTMpO1xuICAgIG1hcmdpbjogMCAwIDY0cHg7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gIH1cblxuICAubWF0LWRpc3BsYXktMiwgI3skc2VsZWN0b3J9IC5tYXQtZGlzcGxheS0yIHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgZGlzcGxheS0yKTtcbiAgICBtYXJnaW46IDAgMCA2NHB4O1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMDVlbTtcbiAgfVxuXG4gIC5tYXQtZGlzcGxheS0xLCAjeyRzZWxlY3Rvcn0gLm1hdC1kaXNwbGF5LTEge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCBkaXNwbGF5LTEpO1xuICAgIG1hcmdpbjogMCAwIDY0cHg7XG4gIH1cbn1cblxuXG5cblxuQG1peGluIG1hdC1hdXRvY29tcGxldGUtdGhlbWUoJHRoZW1lKSB7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG5cbiAgLm1hdC1hdXRvY29tcGxldGUtcGFuZWwge1xuICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDQsICR0aGVtZSk7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgIC8vIFNlbGVjdGVkIG9wdGlvbnMgaW4gYXV0b2NvbXBsZXRlcyBzaG91bGQgbm90IGJlIGdyYXksIGJ1dCB3ZVxuICAgIC8vIG9ubHkgd2FudCB0byBvdmVycmlkZSB0aGUgYmFja2dyb3VuZCBmb3Igc2VsZWN0ZWQgb3B0aW9ucyBpZlxuICAgIC8vIHRoZXkgYXJlICpub3QqIGluIGhvdmVyIG9yIGZvY3VzIHN0YXRlLiBUaGlzIGNoYW5nZSBoYXMgdG8gYmVcbiAgICAvLyBtYWRlIGhlcmUgYmVjYXVzZSBiYXNlIG9wdGlvbiBzdHlsZXMgYXJlIHNoYXJlZCBiZXR3ZWVuIHRoZVxuICAgIC8vIGF1dG9jb21wbGV0ZSBhbmQgdGhlIHNlbGVjdC5cbiAgICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKSB7XG4gICAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGNhcmQpO1xuXG4gICAgICAmOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCkge1xuICAgICAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuXG5AbWl4aW4gbWF0LWF1dG9jb21wbGV0ZS10eXBvZ3JhcGh5KCRjb25maWcpIHsgfVxuXG4vLyBUaGlzIGNvbnRhaW5zIGFsbCBvZiB0aGUgc3R5bGVzIGZvciB0aGUgYmFkZ2Vcbi8vIHJhdGhlciB0aGFuIGp1c3QgdGhlIGNvbG9yL3RoZW1lIGJlY2F1c2Ugb2Zcbi8vIG5vIHN0eWxlIHNoZWV0IHN1cHBvcnQgZm9yIGRpcmVjdGl2ZXMuXG5cblxuXG5cblxuJG1hdC1iYWRnZS1mb250LXNpemU6IDEycHg7XG4kbWF0LWJhZGdlLWZvbnQtd2VpZ2h0OiA2MDA7XG4kbWF0LWJhZGdlLWRlZmF1bHQtc2l6ZTogMjJweCAhZGVmYXVsdDtcbiRtYXQtYmFkZ2Utc21hbGwtc2l6ZTogJG1hdC1iYWRnZS1kZWZhdWx0LXNpemUgLSA2O1xuJG1hdC1iYWRnZS1sYXJnZS1zaXplOiAkbWF0LWJhZGdlLWRlZmF1bHQtc2l6ZSArIDY7XG5cbi8vIE1peGluIGZvciBidWlsZGluZyBvZmZzZXQgZ2l2ZW4gZGlmZmVyZW50IHNpemVzXG5AbWl4aW4gX21hdC1iYWRnZS1zaXplKCRzaXplKSB7XG4gIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgd2lkdGg6ICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgbGluZS1oZWlnaHQ6ICRzaXplO1xuICB9XG5cbiAgJi5tYXQtYmFkZ2UtYWJvdmUge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICB0b3A6IC0kc2l6ZSAvIDI7XG4gICAgfVxuICB9XG5cbiAgJi5tYXQtYmFkZ2UtYmVsb3cge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICBib3R0b206IC0kc2l6ZSAvIDI7XG4gICAgfVxuICB9XG5cbiAgJi5tYXQtYmFkZ2UtYmVmb3JlIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgbGVmdDogLSRzaXplO1xuICAgIH1cbiAgfVxuXG4gIFtkaXI9J3J0bCddICYubWF0LWJhZGdlLWJlZm9yZSB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIGxlZnQ6IGF1dG87XG4gICAgICByaWdodDogLSRzaXplO1xuICAgIH1cbiAgfVxuXG4gICYubWF0LWJhZGdlLWFmdGVyIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgcmlnaHQ6IC0kc2l6ZTtcbiAgICB9XG4gIH1cblxuICBbZGlyPSdydGwnXSAmLm1hdC1iYWRnZS1hZnRlciB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgbGVmdDogLSRzaXplO1xuICAgIH1cbiAgfVxuXG4gICYubWF0LWJhZGdlLW92ZXJsYXAge1xuICAgICYubWF0LWJhZGdlLWJlZm9yZSB7XG4gICAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgICBsZWZ0OiAtJHNpemUgLyAyO1xuICAgICAgfVxuICAgIH1cblxuICAgIFtkaXI9J3J0bCddICYubWF0LWJhZGdlLWJlZm9yZSB7XG4gICAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICByaWdodDogLSRzaXplIC8gMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm1hdC1iYWRnZS1hZnRlciB7XG4gICAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgICByaWdodDogLSRzaXplIC8gMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBbZGlyPSdydGwnXSAmLm1hdC1iYWRnZS1hZnRlciB7XG4gICAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgbGVmdDogLSRzaXplIC8gMjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1iYWRnZS10aGVtZSgkdGhlbWUpIHtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5LCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJHByaW1hcnkpO1xuXG4gICAgQGluY2x1ZGUgY2RrLWhpZ2gtY29udHJhc3Qge1xuICAgICAgb3V0bGluZTogc29saWQgMXB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICB9XG4gIH1cblxuICAubWF0LWJhZGdlLWFjY2VudCB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYWNjZW50KTtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGFjY2VudCwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1iYWRnZS13YXJuIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkd2FybiwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJHdhcm4pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYmFkZ2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gIC5tYXQtYmFkZ2UtaGlkZGVuIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJhZGdlLWRpc2FibGVkIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgLy8gVGhlIGRpc2FibGVkIGNvbG9yIHVzdWFsbHkgaGFzIHNvbWUga2luZCBvZiBvcGFjaXR5LCBidXQgYmVjYXVzZSB0aGUgYmFkZ2UgaXMgb3ZlcmxheWVkXG4gICAgICAvLyBvbiB0b3Agb2Ygc29tZXRoaW5nIGVsc2UsIGl0IHdvbid0IGxvb2sgZ29vZCBpZiBpdCdzIG9wYXF1ZS4gV2UgY29udmVydCBpdCBpbnRvIGEgc29saWRcbiAgICAgIC8vIGNvbG9yIGJ5IHRha2luZyB0aGUgb3BhY2l0eSBmcm9tIHRoZSByZ2JhIHZhbHVlIGFuZCB1c2luZyB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIHRoZVxuICAgICAgLy8gcGVyY2VudGFnZSBvZiB0aGUgYmFja2dyb3VuZCB0byBwdXQgaW50byBmb3JlZ3JvdW5kIHdoZW4gbWl4aW5nIHRoZSBjb2xvcnMgdG9nZXRoZXIuXG4gICAgICAkYXBwLWJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgJ2JhY2tncm91bmQnKTtcbiAgICAgICRiYWRnZS1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC1idXR0b24pO1xuICAgICAgJGJhZGdlLW9wYWNpdHk6IG9wYWNpdHkoJGJhZGdlLWNvbG9yKTtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYXBwLWJhY2tncm91bmQsIHJnYmEoJGJhZGdlLWNvbG9yLCAxKSwgKDEgLSAkYmFkZ2Utb3BhY2l0eSkgKiAxMDAlKTtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyMDBtcyBlYXNlLWluLW91dDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNik7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG5cbiAgLy8gVGhlIGFjdGl2ZSBjbGFzcyBpcyBhZGRlZCBhZnRlciB0aGUgZWxlbWVudCBpcyBhZGRlZFxuICAvLyBzbyBpdCBjYW4gYW5pbWF0ZSBzY2FsZSB0byBkZWZhdWx0XG4gIC5tYXQtYmFkZ2UtY29udGVudC5tYXQtYmFkZ2UtYWN0aXZlIHtcbiAgICAvLyBTY2FsZSB0byBgbm9uZWAgaW5zdGVhZCBvZiBgMWAgdG8gYXZvaWQgYmx1cnJ5IHRleHQgaW4gc29tZSBicm93c2Vycy5cbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cblxuICAubWF0LWJhZGdlLXNtYWxsIHtcbiAgICBAaW5jbHVkZSBfbWF0LWJhZGdlLXNpemUoJG1hdC1iYWRnZS1zbWFsbC1zaXplKTtcbiAgfVxuICAubWF0LWJhZGdlLW1lZGl1bSB7XG4gICAgQGluY2x1ZGUgX21hdC1iYWRnZS1zaXplKCRtYXQtYmFkZ2UtZGVmYXVsdC1zaXplKTtcbiAgfVxuICAubWF0LWJhZGdlLWxhcmdlIHtcbiAgICBAaW5jbHVkZSBfbWF0LWJhZGdlLXNpemUoJG1hdC1iYWRnZS1sYXJnZS1zaXplKTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LWJhZGdlLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIGZvbnQtd2VpZ2h0OiAkbWF0LWJhZGdlLWZvbnQtd2VpZ2h0O1xuICAgIGZvbnQtc2l6ZTogJG1hdC1iYWRnZS1mb250LXNpemU7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtYmFkZ2Utc21hbGwgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICBmb250LXNpemU6ICRtYXQtYmFkZ2UtZm9udC1zaXplIC8gMjtcbiAgfVxuXG4gIC5tYXQtYmFkZ2UtbGFyZ2UgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICBmb250LXNpemU6ICRtYXQtYmFkZ2UtZm9udC1zaXplICogMjtcbiAgfVxufVxuXG5cblxuXG5cbkBtaXhpbiBtYXQtYm90dG9tLXNoZWV0LXRoZW1lKCR0aGVtZSkge1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgX21hdC10aGVtZS1lbGV2YXRpb24oMTYsICR0aGVtZSk7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBkaWFsb2cpO1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtYm90dG9tLXNoZWV0LXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCBib2R5LTEpO1xuICB9XG59XG5cblxuXG5cblxuJF9tYXQtYnV0dG9uLXJpcHBsZS1vcGFjaXR5OiAwLjE7XG5cbi8vIEFwcGxpZXMgYSBmb2N1cyBzdHlsZSB0byBhbiBtYXQtYnV0dG9uIGVsZW1lbnQgZm9yIGVhY2ggb2YgdGhlIHN1cHBvcnRlZCBwYWxldHRlcy5cbkBtaXhpbiBfbWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LWNvbG9yKCR0aGVtZSkge1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcblxuICAmLm1hdC1wcmltYXJ5IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSk7XG4gIH1cblxuICAmLm1hdC1hY2NlbnQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRhY2NlbnQpO1xuICB9XG5cbiAgJi5tYXQtd2FybiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHdhcm4pO1xuICB9XG5cbiAgJltkaXNhYmxlZF0gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cblxuQG1peGluIF9tYXQtYnV0dG9uLXJpcHBsZS1jb2xvcigkdGhlbWUsICRodWUsICRvcGFjaXR5OiAkX21hdC1idXR0b24tcmlwcGxlLW9wYWNpdHkpIHtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG5cbiAgJi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHByaW1hcnksICRodWUsICRvcGFjaXR5KTtcbiAgfVxuXG4gICYubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGFjY2VudCwgJGh1ZSwgJG9wYWNpdHkpO1xuICB9XG5cbiAgJi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHdhcm4sICRodWUsICRvcGFjaXR5KTtcbiAgfVxufVxuXG4vLyBBcHBsaWVzIGEgcHJvcGVydHkgdG8gYW4gbWF0LWJ1dHRvbiBlbGVtZW50IGZvciBlYWNoIG9mIHRoZSBzdXBwb3J0ZWQgcGFsZXR0ZXMuXG5AbWl4aW4gX21hdC1idXR0b24tdGhlbWUtcHJvcGVydHkoJHRoZW1lLCAkcHJvcGVydHksICRodWUpIHtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgJi5tYXQtcHJpbWFyeSB7XG4gICAgI3skcHJvcGVydHl9OiBtYXQtY29sb3IoJHByaW1hcnksICRodWUpO1xuICB9XG4gICYubWF0LWFjY2VudCB7XG4gICAgI3skcHJvcGVydHl9OiBtYXQtY29sb3IoJGFjY2VudCwgJGh1ZSk7XG4gIH1cbiAgJi5tYXQtd2FybiB7XG4gICAgI3skcHJvcGVydHl9OiBtYXQtY29sb3IoJHdhcm4sICRodWUpO1xuICB9XG5cbiAgJi5tYXQtcHJpbWFyeSwgJi5tYXQtYWNjZW50LCAmLm1hdC13YXJuLCAmW2Rpc2FibGVkXSB7XG4gICAgJltkaXNhYmxlZF0ge1xuICAgICAgJHBhbGV0dGU6IGlmKCRwcm9wZXJ0eSA9PSAnY29sb3InLCAkZm9yZWdyb3VuZCwgJGJhY2tncm91bmQpO1xuICAgICAgI3skcHJvcGVydHl9OiBtYXQtY29sb3IoJHBhbGV0dGUsIGRpc2FibGVkLWJ1dHRvbik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtYnV0dG9uLXRoZW1lKCR0aGVtZSkge1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWJ1dHRvbiwgLm1hdC1pY29uLWJ1dHRvbiwgLm1hdC1zdHJva2VkLWJ1dHRvbiB7XG4gICAgLy8gQnV0dG9ucyB3aXRob3V0IGEgYmFja2dyb3VuZCBjb2xvciBzaG91bGQgaW5oZXJpdCB0aGUgZm9udCBjb2xvci4gVGhpcyBpcyBuZWNlc3NhcnkgdG9cbiAgICAvLyBlbnN1cmUgdGhhdCB0aGUgYnV0dG9uIGlzIHJlYWRhYmxlIG9uIGN1c3RvbSBiYWNrZ3JvdW5kIGNvbG9ycy4gSXQncyB3cm9uZyB0byBhbHdheXMgYXNzdW1lXG4gICAgLy8gdGhhdCB0aG9zZSBidXR0b25zIGFyZSBhbHdheXMgcGxhY2VkIGluc2lkZSBvZiBjb250YWluZXJzIHdpdGggdGhlIGRlZmF1bHQgYmFja2dyb3VuZFxuICAgIC8vIGNvbG9yIG9mIHRoZSB0aGVtZSAoZS5nLiB0aGVtZWQgdG9vbGJhcnMpLlxuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXG4gICAgQGluY2x1ZGUgX21hdC1idXR0b24tdGhlbWUtcHJvcGVydHkoJHRoZW1lLCAnY29sb3InLCBkZWZhdWx0KTtcbiAgICBAaW5jbHVkZSBfbWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LWNvbG9yKCR0aGVtZSk7XG5cbiAgICAvLyBTZXR1cCB0aGUgcmlwcGxlIGNvbG9yIHRvIGJlIGJhc2VkIG9uIHRoZSB0ZXh0IGNvbG9yLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgcmlwcGxlc1xuICAgIC8vIGFyZSBtYXRjaGluZyB3aXRoIHRoZSBjdXJyZW50IHRoZW1lIHBhbGV0dGUgYW5kIGFyZSBpbiBjb250cmFzdCB0byB0aGUgYmFja2dyb3VuZCBjb2xvclxuICAgIC8vIChlLmcgaW4gdGhlbWVkIHRvb2xiYXJzKS5cbiAgICAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICAgIG9wYWNpdHk6ICRfbWF0LWJ1dHRvbi1yaXBwbGUtb3BhY2l0eTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5IHtcbiAgICBiYWNrZ3JvdW5kOiBtYXBfZ2V0KCRmb3JlZ3JvdW5kLCBiYXNlKTtcbiAgfVxuXG4gIC8vIE5vdGU6IHRoaXMgbmVlZHMgYSBiaXQgZXh0cmEgc3BlY2lmaWNpdHksIGJlY2F1c2Ugd2UncmUgbm90IGd1YXJhbnRlZWQgdGhlIGluY2x1c2lvblxuICAvLyBvcmRlciBvZiB0aGUgdGhlbWUgc3R5bGVzIGFuZCB0aGUgYnV0dG9uIHJlc2V0IG1heSBlbmQgdXAgcmVzZXR0aW5nIHRoaXMgYXMgd2VsbC5cbiAgLm1hdC1zdHJva2VkLWJ1dHRvbjpub3QoW2Rpc2FibGVkXSkge1xuICAgIGJvcmRlci1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxuXG4gIC5tYXQtZmxhdC1idXR0b24sIC5tYXQtcmFpc2VkLWJ1dHRvbiwgLm1hdC1mYWIsIC5tYXQtbWluaS1mYWIge1xuICAgIC8vIERlZmF1bHQgZm9udCBhbmQgYmFja2dyb3VuZCBjb2xvciB3aGVuIG5vdCB1c2luZyBhbnkgY29sb3IgcGFsZXR0ZS5cbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIHJhaXNlZC1idXR0b24pO1xuXG4gICAgQGluY2x1ZGUgX21hdC1idXR0b24tdGhlbWUtcHJvcGVydHkoJHRoZW1lLCAnY29sb3InLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICBAaW5jbHVkZSBfbWF0LWJ1dHRvbi10aGVtZS1wcm9wZXJ0eSgkdGhlbWUsICdiYWNrZ3JvdW5kLWNvbG9yJywgZGVmYXVsdCk7XG4gICAgQGluY2x1ZGUgX21hdC1idXR0b24tcmlwcGxlLWNvbG9yKCR0aGVtZSwgZGVmYXVsdC1jb250cmFzdCk7XG4gIH1cblxuICAubWF0LXN0cm9rZWQtYnV0dG9uLCAubWF0LWZsYXQtYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigwLCAkdGhlbWUpO1xuICB9XG5cbiAgLm1hdC1yYWlzZWQtYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigyLCAkdGhlbWUpO1xuXG4gICAgJjpub3QoW2Rpc2FibGVkXSk6YWN0aXZlIHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDgsICR0aGVtZSk7XG4gICAgfVxuXG4gICAgJltkaXNhYmxlZF0ge1xuICAgICAgQGluY2x1ZGUgX21hdC10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oMCwgJHRoZW1lKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWZhYiwgLm1hdC1taW5pLWZhYiB7XG4gICAgQGluY2x1ZGUgX21hdC10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oNiwgJHRoZW1lKTtcblxuICAgICY6bm90KFtkaXNhYmxlZF0pOmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigxMiwgJHRoZW1lKTtcbiAgICB9XG5cbiAgICAmW2Rpc2FibGVkXSB7XG4gICAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigwLCAkdGhlbWUpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LWJ1dHRvbi10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC1idXR0b24sIC5tYXQtcmFpc2VkLWJ1dHRvbiwgLm1hdC1pY29uLWJ1dHRvbiwgLm1hdC1zdHJva2VkLWJ1dHRvbixcbiAgLm1hdC1mbGF0LWJ1dHRvbiwgLm1hdC1mYWIsIC5tYXQtbWluaS1mYWIge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcsIGJ1dHRvbik7XG4gICAgICBzaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJ1dHRvbik7XG4gICAgICB3ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBidXR0b24pO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cblxuQG1peGluIG1hdC1idXR0b24tdG9nZ2xlLXRoZW1lKCR0aGVtZSkge1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZGl2aWRlci1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcblxuICAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZSxcbiAgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIHtcbiAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLWVsZXZhdGlvbigyLCAkdGhlbWUpO1xuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCxcbiAgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG5cbiAgICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGZvY3VzZWQtYnV0dG9uKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBjYXJkKTtcblxuICAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgZm9jdXNlZC1idXR0b24sIDEpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZSArIC5tYXQtYnV0dG9uLXRvZ2dsZSB7XG4gICAgYm9yZGVyLWxlZnQ6IHNvbGlkIDFweCAkZGl2aWRlci1jb2xvcjtcbiAgfVxuXG4gIFtkaXI9J3J0bCddIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZSArIC5tYXQtYnV0dG9uLXRvZ2dsZSB7XG4gICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgYm9yZGVyLXJpZ2h0OiBzb2xpZCAxcHggJGRpdmlkZXItY29sb3I7XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbCB7XG4gICAgLm1hdC1idXR0b24tdG9nZ2xlICsgLm1hdC1idXR0b24tdG9nZ2xlIHtcbiAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgYm9yZGVyLXRvcDogc29saWQgMXB4ICRkaXZpZGVyLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIHNlbGVjdGVkLWJ1dHRvbik7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuXG4gICAgJi5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGlzYWJsZWQtYnV0dG9uKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGRpc2FibGVkLWJ1dHRvbi10b2dnbGUpO1xuXG4gICAgJi5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgY2FyZCk7XG4gICAgfVxuXG4gICAgJi5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgc2VsZWN0ZWQtZGlzYWJsZWQtYnV0dG9uKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLFxuICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gICAgYm9yZGVyOiBzb2xpZCAxcHggJGRpdmlkZXItY29sb3I7XG4gIH1cbn1cblxuQG1peGluIG1hdC1idXR0b24tdG9nZ2xlLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LWJ1dHRvbi10b2dnbGUge1xuICAgIGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cbn1cblxuXG5cblxuXG5cblxuQG1peGluIG1hdC1jYXJkLXRoZW1lKCR0aGVtZSkge1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtY2FyZCB7XG4gICAgQGluY2x1ZGUgX21hdC10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oMSwgJHRoZW1lKTtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGNhcmQpO1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gICAgLy8gTmVlZHMgZXh0cmEgc3BlY2lmaWNpdHkgdG8gYmUgYWJsZSB0byBvdmVycmlkZSB0aGUgZWxldmF0aW9uIHNlbGVjdG9ycy5cbiAgICAmLm1hdC1jYXJkLWZsYXQge1xuICAgICAgQGluY2x1ZGUgX21hdC10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oMCwgJHRoZW1lKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWNhcmQtc3VidGl0bGUge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LWNhcmQtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtY2FyZCB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtY2FyZC10aXRsZSB7XG4gICAgZm9udDoge1xuICAgICAgc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBoZWFkbGluZSk7XG4gICAgICB3ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCB0aXRsZSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYXJkLWhlYWRlciAubWF0LWNhcmQtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCB0aXRsZSk7XG4gIH1cblxuICAubWF0LWNhcmQtc3VidGl0bGUsXG4gIC5tYXQtY2FyZC1jb250ZW50IHtcbiAgICBmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5cblxuXG5cblxuQG1peGluIG1hdC1jaGVja2JveC10aGVtZSgkdGhlbWUpIHtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC1nZXQoJHRoZW1lLCBpcy1kYXJrKTtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cblxuICAvLyBUaGUgY29sb3Igb2YgdGhlIGNoZWNrYm94J3MgY2hlY2ttYXJrIC8gbWl4ZWRtYXJrLlxuICAkY2hlY2tib3gtbWFyay1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kKTtcblxuICAvLyBOT1RFKHRyYXZpc2thdWZtYW4pOiBXaGlsZSB0aGUgc3BlYyBjYWxscyBmb3IgdHJhbnNsdWNlbnQgYmxhY2tzL3doaXRlcyBmb3IgZGlzYWJsZWQgY29sb3JzLFxuICAvLyB0aGlzIGRvZXMgbm90IHdvcmsgd2VsbCB3aXRoIGVsZW1lbnRzIGxheWVyZWQgb24gdG9wIG9mIG9uZSBhbm90aGVyLiBUbyBnZXQgYXJvdW5kIHRoaXMgd2VcbiAgLy8gYmxlbmQgdGhlIGNvbG9ycyB0b2dldGhlciBiYXNlZCBvbiB0aGUgYmFzZSBjb2xvciBhbmQgdGhlIHRoZW1lIGJhY2tncm91bmQuXG4gICR3aGl0ZS0zMHBjdC1vcGFjaXR5LW9uLWRhcms6ICM2ODY4Njg7XG4gICRibGFjay0yNnBjdC1vcGFjaXR5LW9uLWxpZ2h0OiAjYjBiMGIwO1xuICAkZGlzYWJsZWQtY29sb3I6IGlmKCRpcy1kYXJrLXRoZW1lLCAkd2hpdGUtMzBwY3Qtb3BhY2l0eS1vbi1kYXJrLCAkYmxhY2stMjZwY3Qtb3BhY2l0eS1vbi1saWdodCk7XG5cbiAgLm1hdC1jaGVja2JveC1mcmFtZSB7XG4gICAgYm9yZGVyLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrIHtcbiAgICBmaWxsOiAkY2hlY2tib3gtbWFyay1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGgge1xuICAgIC8vICFpbXBvcnRhbnQgaXMgbmVlZGVkIGhlcmUgYmVjYXVzZSBhIHN0cm9rZSBtdXN0IGJlIHNldCBhcyBhblxuICAgIC8vIGF0dHJpYnV0ZSBvbiB0aGUgU1ZHIGluIG9yZGVyIGZvciBsaW5lIGFuaW1hdGlvbiB0byB3b3JrIHByb3Blcmx5LlxuICAgIHN0cm9rZTogJGNoZWNrYm94LW1hcmstY29sb3IgIWltcG9ydGFudDtcblxuICAgIEBpbmNsdWRlIGNkay1oaWdoLWNvbnRyYXN0KGJsYWNrLW9uLXdoaXRlKSB7XG4gICAgICAvLyBIYXZpbmcgdGhlIG9uZSBhYm92ZSBiZSAhaW1wb3J0YW50IGVuZHMgdXAgb3ZlcnJpZGluZyB0aGUgYnJvd3NlcidzIGF1dG9tYXRpY1xuICAgICAgLy8gY29sb3IgaW52ZXJzaW9uIHNvIHdlIG5lZWQgdG8gcmUtaW52ZXJ0IGl0IG91cnNlbHZlcyBmb3IgYmxhY2stb24td2hpdGUuXG4gICAgICBzdHJva2U6ICMwMDAgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAubWF0LWNoZWNrYm94LW1peGVkbWFyayB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNoZWNrYm94LW1hcmstY29sb3I7XG4gIH1cblxuICAubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUsIC5tYXQtY2hlY2tib3gtY2hlY2tlZCB7XG4gICAgJi5tYXQtcHJpbWFyeSAubWF0LWNoZWNrYm94LWJhY2tncm91bmQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYWNjZW50KTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHdhcm4pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQge1xuICAgICYubWF0LWNoZWNrYm94LWNoZWNrZWQsXG4gICAgJi5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSB7XG4gICAgICAubWF0LWNoZWNrYm94LWJhY2tncm91bmQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjpub3QoLm1hdC1jaGVja2JveC1jaGVja2VkKSB7XG4gICAgICAubWF0LWNoZWNrYm94LWZyYW1lIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1hdC1jaGVja2JveC1sYWJlbCB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgY2RrLWhpZ2gtY29udHJhc3Qge1xuICAgICAgb3BhY2l0eTogMC41O1xuICAgIH1cbiAgfVxuXG4gIC8vIFRoaXMgb25lIGlzIG1vdmVkIGRvd24gaGVyZSBzbyBpdCBjYW4gdGFyZ2V0IGJvdGhcbiAgLy8gdGhlIHRoZW1lIGNvbG9ycyBhbmQgdGhlIGRpc2FibGVkIHN0YXRlLlxuICBAaW5jbHVkZSBjZGstaGlnaC1jb250cmFzdCB7XG4gICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kIHtcbiAgICAgIC8vIE5lZWRzIHRvIGJlIHJlbW92ZWQgYmVjYXVzZSBpdCBoaWRlcyB0aGUgY2hlY2tib3ggb3V0bGluZS5cbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jaGVja2JveDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkge1xuICAgICYubWF0LXByaW1hcnkgLm1hdC1jaGVja2JveC1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCAubWF0LWNoZWNrYm94LXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYWNjZW50KTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIC5tYXQtY2hlY2tib3gtcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCR3YXJuKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1jaGVja2JveC10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC1jaGVja2JveCB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC8vIFRPRE8oa2FyYSk6IFJlbW92ZSB0aGlzIHN0eWxlIHdoZW4gZml4aW5nIHZlcnRpY2FsIGJhc2VsaW5lXG4gIC5tYXQtY2hlY2tib3gtbGF5b3V0IC5tYXQtY2hlY2tib3gtbGFiZWwge1xuICAgIGxpbmUtaGVpZ2h0OiBtYXQtbGluZS1oZWlnaHQoJGNvbmZpZywgYm9keS0yKTtcbiAgfVxufVxuXG5cblxuXG5cblxuJG1hdC1jaGlwLXJlbW92ZS1mb250LXNpemU6IDE4cHg7XG5cbkBtaXhpbiBtYXQtY2hpcHMtY29sb3IoJGZvcmVncm91bmQsICRiYWNrZ3JvdW5kKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICBjb2xvcjogJGZvcmVncm91bmQ7XG5cbiAgLm1hdC1jaGlwLXJlbW92ZSB7XG4gICAgY29sb3I6ICRmb3JlZ3JvdW5kO1xuICAgIG9wYWNpdHk6IDAuNDtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LWNoaXBzLXRoZW1lLWNvbG9yKCRwYWxldHRlKSB7XG4gIEBpbmNsdWRlIG1hdC1jaGlwcy1jb2xvcihtYXQtY29sb3IoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpLCBtYXQtY29sb3IoJHBhbGV0dGUpKTtcblxuICAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QsIDAuMSk7XG4gIH1cbn1cblxuQG1peGluIG1hdC1jaGlwcy10aGVtZSgkdGhlbWUpIHtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC1nZXQoJHRoZW1lLCBpcy1kYXJrKTtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgJHVuc2VsZWN0ZWQtYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCB1bnNlbGVjdGVkLWNoaXApO1xuICAkdW5zZWxlY3RlZC1mb3JlZ3JvdW5kOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcCB7XG4gICAgQGluY2x1ZGUgbWF0LWNoaXBzLWNvbG9yKCR1bnNlbGVjdGVkLWZvcmVncm91bmQsICR1bnNlbGVjdGVkLWJhY2tncm91bmQpO1xuXG4gICAgJjpub3QoLm1hdC1jaGlwLWRpc2FibGVkKSB7XG4gICAgICAmOmFjdGl2ZSB7XG4gICAgICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtZWxldmF0aW9uKDMsICR0aGVtZSk7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtY2hpcC1yZW1vdmU6aG92ZXIge1xuICAgICAgICBvcGFjaXR5OiAwLjU0O1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWF0LWNoaXAtZGlzYWJsZWQge1xuICAgICAgb3BhY2l0eTogMC40O1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hcF9nZXQoJGZvcmVncm91bmQsIGJhc2UpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZCB7XG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBAaW5jbHVkZSBtYXQtY2hpcHMtdGhlbWUtY29sb3IoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgQGluY2x1ZGUgbWF0LWNoaXBzLXRoZW1lLWNvbG9yKCR3YXJuKTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgQGluY2x1ZGUgbWF0LWNoaXBzLXRoZW1lLWNvbG9yKCRhY2NlbnQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LWNoaXBzLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LWNoaXAge1xuICAgIGZvbnQtc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTIpO1xuICAgIGZvbnQtd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0yKTtcblxuICAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uLFxuICAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb24ge1xuICAgICAgZm9udC1zaXplOiAkbWF0LWNoaXAtcmVtb3ZlLWZvbnQtc2l6ZTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5AbWl4aW4gbWF0LXRhYmxlLXRoZW1lKCR0aGVtZSkge1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtdGFibGUge1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgJ2NhcmQnKTtcbiAgfVxuXG4gIC5tYXQtdGFibGUgdGhlYWQsIC5tYXQtdGFibGUgdGJvZHksIC5tYXQtdGFibGUgdGZvb3QsXG4gIG1hdC1oZWFkZXItcm93LCBtYXQtcm93LCBtYXQtZm9vdGVyLXJvdyxcbiAgW21hdC1oZWFkZXItcm93XSwgW21hdC1yb3ddLCBbbWF0LWZvb3Rlci1yb3ddLFxuICAubWF0LXRhYmxlLXN0aWNreSB7XG4gICAgYmFja2dyb3VuZDogaW5oZXJpdDtcbiAgfVxuXG4gIG1hdC1yb3csIG1hdC1oZWFkZXItcm93LCBtYXQtZm9vdGVyLXJvdyxcbiAgdGgubWF0LWhlYWRlci1jZWxsLCB0ZC5tYXQtY2VsbCwgdGQubWF0LWZvb3Rlci1jZWxsIHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG5cbiAgLm1hdC1oZWFkZXItY2VsbCB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1jZWxsLCAubWF0LWZvb3Rlci1jZWxsIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXRhYmxlLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LXRhYmxlIHtcbiAgICBmb250LWZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1oZWFkZXItY2VsbCB7XG4gICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pO1xuICAgIGZvbnQtd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0yKTtcbiAgfVxuXG4gIC5tYXQtY2VsbCwgLm1hdC1mb290ZXItY2VsbCB7XG4gICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gIH1cbn1cblxuXG5cblxuXG5cblxuJG1hdC1kYXRlcGlja2VyLXNlbGVjdGVkLXRvZGF5LWJveC1zaGFkb3ctd2lkdGg6IDFweDtcbiRtYXQtZGF0ZXBpY2tlci1zZWxlY3RlZC1mYWRlLWFtb3VudDogMC42O1xuJG1hdC1kYXRlcGlja2VyLXRvZGF5LWZhZGUtYW1vdW50OiAwLjI7XG4kbWF0LWNhbGVuZGFyLWJvZHktZm9udC1zaXplOiAxM3B4ICFkZWZhdWx0O1xuJG1hdC1jYWxlbmRhci13ZWVrZGF5LXRhYmxlLWZvbnQtc2l6ZTogMTFweCAhZGVmYXVsdDtcblxuQG1peGluIF9tYXQtZGF0ZXBpY2tlci1jb2xvcigkcGFsZXR0ZSkge1xuICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcGFsZXR0ZSk7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQgPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGZhZGUtb3V0KG1hdC1jb2xvcigkcGFsZXR0ZSksICRtYXQtZGF0ZXBpY2tlci1zZWxlY3RlZC1mYWRlLWFtb3VudCk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQge1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwICRtYXQtZGF0ZXBpY2tlci1zZWxlY3RlZC10b2RheS1ib3gtc2hhZG93LXdpZHRoXG4gICAgICAgICAgICAgICAgbWF0LWNvbG9yKCRwYWxldHRlLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LWRhdGVwaWNrZXItdGhlbWUoJHRoZW1lKSB7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG5cbiAgLm1hdC1jYWxlbmRhci1hcnJvdyB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBpY29uKTtcbiAgfVxuXG4gIC8vIFRoZSBwcmV2L25leHQgYnV0dG9ucyBuZWVkIGEgYml0IG1vcmUgc3BlY2lmaWNpdHkgdG9cbiAgLy8gYXZvaWQgYmVpbmcgb3ZlcndyaXR0ZW4gYnkgdGhlIC5tYXQtaWNvbi1idXR0b24uXG4gIC5tYXQtZGF0ZXBpY2tlci10b2dnbGUsXG4gIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50IC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b24sXG4gIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50IC5tYXQtY2FsZW5kYXItcHJldmlvdXMtYnV0dG9uIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBpY29uKTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBoaW50LXRleHQpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcjo6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktbGFiZWwge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQgPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1jZWxsOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyLFxuICAuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZSxcbiAgLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZSB7XG4gICAgJiA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBob3Zlcik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpIHtcbiAgICAvLyBOb3RlOiB0aG91Z2ggaXQncyBub3QgdGV4dCwgdGhlIGJvcmRlciBpcyBhIGhpbnQgYWJvdXQgdGhlIGZhY3QgdGhhdCB0aGlzIGlzIHRvZGF5J3MgZGF0ZSxcbiAgICAvLyBzbyB3ZSB1c2UgdGhlIGhpbnQgY29sb3IuXG4gICAgYm9yZGVyLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQgPiAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCkge1xuICAgIGJvcmRlci1jb2xvcjogZmFkZS1vdXQobWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBoaW50LXRleHQpLCAkbWF0LWRhdGVwaWNrZXItdG9kYXktZmFkZS1hbW91bnQpO1xuICB9XG5cbiAgQGluY2x1ZGUgX21hdC1kYXRlcGlja2VyLWNvbG9yKG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KSk7XG5cbiAgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtZWxldmF0aW9uKDQsICR0aGVtZSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBAaW5jbHVkZSBfbWF0LWRhdGVwaWNrZXItY29sb3IobWFwLWdldCgkdGhlbWUsIGFjY2VudCkpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgQGluY2x1ZGUgX21hdC1kYXRlcGlja2VyLWNvbG9yKG1hcC1nZXQoJHRoZW1lLCB3YXJuKSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2gge1xuICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtZWxldmF0aW9uKDAsICR0aGVtZSk7XG4gIH1cblxuICAubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZSB7XG4gICAgY29sb3I6IG1hdC1jb2xvcihtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSkpO1xuXG4gICAgJi5tYXQtYWNjZW50IHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IobWFwLWdldCgkdGhlbWUsIGFjY2VudCkpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcihtYXAtZ2V0KCR0aGVtZSwgd2FybikpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LWRhdGVwaWNrZXItdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtY2FsZW5kYXIge1xuICAgIGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHkge1xuICAgIGZvbnQtc2l6ZTogJG1hdC1jYWxlbmRhci1ib2R5LWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1sYWJlbCxcbiAgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJ1dHRvbik7XG4gICAgICB3ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBidXR0b24pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyIHRoIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiAkbWF0LWNhbGVuZGFyLXdlZWtkYXktdGFibGUtZm9udC1zaXplO1xuICAgICAgd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0xKTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5cblxuQG1peGluIG1hdC1kaWFsb2ctdGhlbWUoJHRoZW1lKSB7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1kaWFsb2ctY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLWVsZXZhdGlvbigyNCwgJHRoZW1lKTtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGRpYWxvZyk7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cbn1cblxuQG1peGluIG1hdC1kaWFsb2ctdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtZGlhbG9nLXRpdGxlIHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgdGl0bGUpO1xuICB9XG59XG5cblxuXG5cblxuXG5AbWl4aW4gbWF0LWV4cGFuc2lvbi1wYW5lbC10aGVtZSgkdGhlbWUpIHtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbCB7XG4gICAgQGluY2x1ZGUgX21hdC10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oMiwgJHRoZW1lKTtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGNhcmQpO1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC1hY3Rpb24tcm93IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG5cbiAgLm1hdC1leHBhbnNpb24tcGFuZWw6bm90KC5tYXQtZXhwYW5kZWQpIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciB7XG4gICAgJjpub3QoW2FyaWEtZGlzYWJsZWQ9J3RydWUnXSkge1xuICAgICAgJi5jZGsta2V5Ym9hcmQtZm9jdXNlZCxcbiAgICAgICYuY2RrLXByb2dyYW0tZm9jdXNlZCxcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGhvdmVyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBEaXNhYmxlIHRoZSBob3ZlciBvbiB0b3VjaCBkZXZpY2VzIHNpbmNlIGl0IGNhbiBhcHBlYXIgbGlrZSBpdCBpcyBzdHVjay4gV2UgY2FuJ3QgdXNlXG4gIC8vIGBAbWVkaWEgKGhvdmVyKWAgYWJvdmUsIGJlY2F1c2UgdGhlIGRlc2t0b3Agc3VwcG9ydCBicm93c2VyIHN1cHBvcnQgaXNuJ3QgZ3JlYXQuXG4gIEBtZWRpYSAoaG92ZXI6IG5vbmUpIHtcbiAgICAubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPSd0cnVlJ10pXG4gICAgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGUge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uLFxuICAubWF0LWV4cGFuc2lvbi1pbmRpY2F0b3I6OmFmdGVyIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD0ndHJ1ZSddIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC1idXR0b24pO1xuXG4gICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlLFxuICAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbiB7XG4gICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1leHBhbnNpb24tcGFuZWwtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZywgc3ViaGVhZGluZy0xKTtcbiAgICAgIHNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgc3ViaGVhZGluZy0xKTtcbiAgICAgIHdlaWdodDogbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIHN1YmhlYWRpbmctMSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudCB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIGJvZHktMSk7XG4gIH1cbn1cblxuXG5cblxuLy8gVGhpcyBtaXhpbiB3aWxsIGVuc3VyZSB0aGF0IGxpbmVzIHRoYXQgb3ZlcmZsb3cgdGhlIGNvbnRhaW5lciB3aWxsIGhpZGUgdGhlIG92ZXJmbG93IGFuZFxuLy8gdHJ1bmNhdGUgbmVhdGx5IHdpdGggYW4gZWxsaXBzaXMuXG5AbWl4aW4gbWF0LXRydW5jYXRlLWxpbmUoKSB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG4vLyBNaXhpbiB0byBwcm92aWRlIGFsbCBtYXQtbGluZSBzdHlsZXMsIGNoYW5naW5nIHNlY29uZGFyeSBmb250IHNpemUgYmFzZWQgb24gd2hldGhlciB0aGUgbGlzdFxuLy8gaXMgaW4gZGVuc2UgbW9kZS5cbkBtaXhpbiBtYXQtbGluZS1iYXNlKCRzZWNvbmRhcnktZm9udC1zaXplKSB7XG4gIC5tYXQtbGluZSB7XG4gICAgQGluY2x1ZGUgbWF0LXRydW5jYXRlLWxpbmUoKTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgLy8gYWxsIGxpbmVzIGJ1dCB0aGUgdG9wIGxpbmUgc2hvdWxkIGhhdmUgc21hbGxlciB0ZXh0XG4gICAgJjpudGgtY2hpbGQobisyKSB7XG4gICAgICBmb250LXNpemU6ICRzZWNvbmRhcnktZm9udC1zaXplO1xuICAgIH1cbiAgfVxufVxuXG4vLyBUaGlzIG1peGluIG5vcm1hbGl6ZXMgZGVmYXVsdCBlbGVtZW50IHN0eWxlcywgZS5nLiBmb250IHdlaWdodCBmb3IgaGVhZGluZyB0ZXh0LlxuQG1peGluIG1hdC1ub3JtYWxpemUtdGV4dCgpIHtcbiAgJiA+ICoge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICB9XG59XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzZSBzdHlsZXMgZm9yIHRoZSB3cmFwcGVyIGFyb3VuZCBtYXQtbGluZSBlbGVtZW50cyBpbiBhIGxpc3QuXG5AbWl4aW4gbWF0LWxpbmUtd3JhcHBlci1iYXNlKCkge1xuICBAaW5jbHVkZSBtYXQtbm9ybWFsaXplLXRleHQoKTtcblxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogMTAwJTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvLyBNdXN0IHJlbW92ZSB3cmFwcGVyIHdoZW4gbGluZXMgYXJlIGVtcHR5IG9yIGl0IHRha2VzIHVwIGhvcml6b250YWxcbiAgLy8gc3BhY2UgYW5kIHB1c2hlcyBvdGhlciBlbGVtZW50cyB0byB0aGUgcmlnaHQuXG4gICY6ZW1wdHkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuXG5cbi8vIEluY2x1ZGUgdGhpcyBlbXB0eSBtaXhpbiBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUgb3RoZXIgY29tcG9uZW50cy5cbkBtaXhpbiBtYXQtZ3JpZC1saXN0LXRoZW1lKCR0aGVtZSkgeyB9XG5cbkBtaXhpbiBtYXQtZ3JpZC1saXN0LXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LWdyaWQtdGlsZS1oZWFkZXIsXG4gIC5tYXQtZ3JpZC10aWxlLWZvb3RlciB7XG4gICAgQGluY2x1ZGUgbWF0LWxpbmUtYmFzZShtYXQtZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pKTtcbiAgICBmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5cblxuXG4vLyBJbmNsdWRlIHRoaXMgZW1wdHkgbWl4aW4gZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIG90aGVyIGNvbXBvbmVudHMuXG5AbWl4aW4gbWF0LWljb24tdGhlbWUoJHRoZW1lKSB7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtaWNvbiB7XG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkYWNjZW50KTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJHdhcm4pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LWljb24tdHlwb2dyYXBoeSgkY29uZmlnKSB7IH1cblxuXG5cblxuXG4vLyBSZW5kZXJzIGEgZ3JhZGllbnQgZm9yIHNob3dpbmcgdGhlIGRhc2hlZCBsaW5lIHdoZW4gdGhlIGlucHV0IGlzIGRpc2FibGVkLlxuLy8gVW5saWtlIHVzaW5nIGEgYm9yZGVyLCBhIGdyYWRpZW50IGFsbG93cyB1cyB0byBhZGp1c3QgdGhlIHNwYWNpbmcgb2YgdGhlIGRvdHRlZCBsaW5lXG4vLyB0byBtYXRjaCB0aGUgTWF0ZXJpYWwgRGVzaWduIHNwZWMuXG5AbWl4aW4gbWF0LWNvbnRyb2wtZGlzYWJsZWQtdW5kZXJsaW5lKCRjb2xvcikge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRjb2xvciAwJSwgJGNvbG9yIDMzJSwgdHJhbnNwYXJlbnQgMCUpO1xuICBiYWNrZ3JvdW5kLXNpemU6IDRweCAxMDAlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG59XG5cbi8vIEZpZ3VyZXMgb3V0IHRoZSBjb2xvciBvZiB0aGUgcGxhY2Vob2xkZXIgZm9yIGEgZm9ybSBjb250cm9sLlxuLy8gVXNlZCBwcmltYXJpbHkgdG8gcHJldmVudCB0aGUgdmFyaW91cyBmb3JtIGNvbnRyb2xzIGZyb21cbi8vIGJlY29taW5nIG91dCBvZiBzeW5jIHNpbmNlIHRoZXNlIGNvbG9ycyBhcmVuJ3QgaW4gYSBwYWxldHRlLlxuQGZ1bmN0aW9uIF9tYXQtY29udHJvbC1wbGFjZWhvbGRlci1jb2xvcigkdGhlbWUpIHtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC1nZXQoJHRoZW1lLCBpcy1kYXJrKTtcbiAgQHJldHVybiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0LCBpZigkaXMtZGFyay10aGVtZSwgMC41LCAwLjQyKSk7XG59XG5cblxuLyogc3R5bGVsaW50LWRpc2FibGUgbWF0ZXJpYWwvbm8tcHJlZml4ZXMgKi9cbkBtaXhpbiB1c2VyLXNlbGVjdCgkdmFsdWUpIHtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogJHZhbHVlO1xuICAtbW96LXVzZXItc2VsZWN0OiAkdmFsdWU7XG4gIC1tcy11c2VyLXNlbGVjdDogJHZhbHVlO1xuICB1c2VyLXNlbGVjdDogJHZhbHVlO1xufVxuXG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIge1xuICAmOjpwbGFjZWhvbGRlciB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxuICAmOjotbW96LXBsYWNlaG9sZGVyIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG4gICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgIEBjb250ZW50O1xuICB9XG5cbiAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBjdXJzb3ItZ3JhYiB7XG4gIGN1cnNvcjogLXdlYmtpdC1ncmFiO1xuICBjdXJzb3I6IGdyYWI7XG59XG5cbkBtaXhpbiBjdXJzb3ItZ3JhYmJpbmcge1xuICBjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmc7XG4gIGN1cnNvcjogZ3JhYmJpbmc7XG59XG5cbkBtaXhpbiBiYWNrZmFjZS12aXNpYmlsaXR5KCR2YWx1ZSkge1xuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6ICR2YWx1ZTtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogJHZhbHVlO1xufVxuLyogc3R5bGVsaW50LWVuYWJsZSAqL1xuXG5cblxuQG1peGluIG1hdC1pbnB1dC10aGVtZSgkdGhlbWUpIHtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlciB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1pbnB1dC1lbGVtZW50OmRpc2FibGVkLFxuICAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVyIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gICAgY2FyZXQtY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSk7XG5cbiAgICBAaW5jbHVkZSBpbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgICBjb2xvcjogX21hdC1jb250cm9sLXBsYWNlaG9sZGVyLWNvbG9yKCR0aGVtZSk7XG4gICAgfVxuXG4gICAgLy8gT24gZGFyayB0aGVtZXMgd2Ugc2V0IHRoZSBuYXRpdmUgYHNlbGVjdGAgY29sb3IgdG8gc29tZSBzaGFkZSBvZiB3aGl0ZSxcbiAgICAvLyBob3dldmVyIHRoZSBjb2xvciBwcm9wYWdhdGVzIHRvIGFsbCBvZiB0aGUgYG9wdGlvbmAgZWxlbWVudHMsIHdoaWNoIGFyZVxuICAgIC8vIGFsd2F5cyBvbiBhIHdoaXRlIGJhY2tncm91bmQgaW5zaWRlIHRoZSBkcm9wZG93biwgY2F1c2luZyB0aGVtIHRvIGJsZW5kIGluLlxuICAgIC8vIFNpbmNlIHdlIGNhbid0IGNoYW5nZSBiYWNrZ3JvdW5kIG9mIHRoZSBkcm9wZG93biwgd2UgbmVlZCB0byBleHBsaWNpdGx5XG4gICAgLy8gcmVzZXQgdGhlIGNvbG9yIG9mIHRoZSBvcHRpb25zIHRvIHNvbWV0aGluZyBkYXJrLlxuICAgIEBpZiAobWFwLWdldCgkdGhlbWUsIGlzLWRhcmspKSB7XG4gICAgICBvcHRpb24ge1xuICAgICAgICBjb2xvcjogJGRhcmstcHJpbWFyeS10ZXh0O1xuICAgICAgfVxuXG4gICAgICBvcHRpb246ZGlzYWJsZWQge1xuICAgICAgICBjb2xvcjogJGRhcmstZGlzYWJsZWQtdGV4dDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWF0LWFjY2VudCAubWF0LWlucHV0LWVsZW1lbnQge1xuICAgIGNhcmV0LWNvbG9yOiBtYXQtY29sb3IoJGFjY2VudCk7XG4gIH1cblxuICAubWF0LXdhcm4gLm1hdC1pbnB1dC1lbGVtZW50LFxuICAubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWlucHV0LWVsZW1lbnQge1xuICAgIGNhcmV0LWNvbG9yOiBtYXQtY29sb3IoJHdhcm4pO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVyIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCR3YXJuKTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LWlucHV0LXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAvLyBUaGUgdW5pdC1sZXNzIGxpbmUtaGVpZ2h0IGZyb20gdGhlIGZvbnQgY29uZmlnLlxuICAkbGluZS1oZWlnaHQ6IG1hdC1saW5lLWhlaWdodCgkY29uZmlnLCBpbnB1dCk7XG5cbiAgLy8gVGhlIGFtb3VudCBvZiBzcGFjZSBiZXR3ZWVuIHRoZSB0b3Agb2YgdGhlIGxpbmUgYW5kIHRoZSB0b3Agb2YgdGhlIGFjdHVhbCB0ZXh0XG4gIC8vIChhcyBhIGZyYWN0aW9uIG9mIHRoZSBmb250LXNpemUpLlxuICAkbGluZS1zcGFjaW5nOiAoJGxpbmUtaGVpZ2h0IC0gMSkgLyAyO1xuXG4gIC8vIDxpbnB1dD4gZWxlbWVudHMgc2VlbSB0byBoYXZlIHRoZWlyIGhlaWdodCBzZXQgc2xpZ2h0bHkgdG9vIGxhcmdlIG9uIFNhZmFyaSBjYXVzaW5nIHRoZSB0ZXh0IHRvXG4gIC8vIGJlIG1pc2FsaWduZWQgdy5yLnQuIHRoZSBwbGFjZWhvbGRlci4gQWRkaW5nIHRoaXMgbWFyZ2luIGNvcnJlY3RzIGl0LlxuICBpbnB1dC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gICAgbWFyZ2luLXRvcDogLSRsaW5lLXNwYWNpbmcgKiAxZW07XG4gIH1cbn1cblxuXG5cblxuXG5cblxuQG1peGluIG1hdC1saXN0LXRoZW1lKCR0aGVtZSkge1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtbGlzdC1iYXNlIHtcbiAgICAubWF0LWxpc3QtaXRlbSB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgICB9XG5cbiAgICAubWF0LWxpc3Qtb3B0aW9uIHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIH1cblxuICAgIC5tYXQtc3ViaGVhZGVyIHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgICB9XG4gIH1cblxuICAubWF0LWxpc3QtaXRlbS1kaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBkaXNhYmxlZC1saXN0LW9wdGlvbik7XG4gIH1cblxuICAubWF0LWxpc3Qtb3B0aW9uLFxuICAubWF0LW5hdi1saXN0IC5tYXQtbGlzdC1pdGVtIHtcbiAgICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgJ2hvdmVyJyk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtbGlzdC10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgJGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG5cbiAgLm1hdC1saXN0LWl0ZW0ge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gIH1cblxuICAubWF0LWxpc3Qtb3B0aW9uIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICB9XG5cbiAgLy8gRGVmYXVsdCBsaXN0XG4gIC5tYXQtbGlzdC1iYXNlIHtcbiAgICAubWF0LWxpc3QtaXRlbSB7XG4gICAgICBmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgc3ViaGVhZGluZy0yKTtcbiAgICAgIEBpbmNsdWRlIG1hdC1saW5lLWJhc2UobWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpKTtcbiAgICB9XG5cbiAgICAubWF0LWxpc3Qtb3B0aW9uIHtcbiAgICAgIGZvbnQtc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBzdWJoZWFkaW5nLTIpO1xuICAgICAgQGluY2x1ZGUgbWF0LWxpbmUtYmFzZShtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMSkpO1xuICAgIH1cblxuICAgIC5tYXQtc3ViaGVhZGVyIHtcbiAgICAgIGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZywgYm9keS0yKTtcbiAgICAgIGZvbnQtc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTIpO1xuICAgICAgZm9udC13ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIERlbnNlIGxpc3RcbiAgLm1hdC1saXN0LWJhc2VbZGVuc2VdIHtcbiAgICAubWF0LWxpc3QtaXRlbSB7XG4gICAgICBmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgICBAaW5jbHVkZSBtYXQtbGluZS1iYXNlKG1hdC1mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbikpO1xuICAgIH1cblxuICAgIC5tYXQtbGlzdC1vcHRpb24ge1xuICAgICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pO1xuICAgICAgQGluY2x1ZGUgbWF0LWxpbmUtYmFzZShtYXQtZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pKTtcbiAgICB9XG5cbiAgICAubWF0LXN1YmhlYWRlciB7XG4gICAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICAgICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pO1xuICAgICAgZm9udC13ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cblxuXG5AbWl4aW4gbWF0LW1lbnUtdGhlbWUoJHRoZW1lKSB7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1tZW51LXBhbmVsIHtcbiAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbig0LCAkdGhlbWUpO1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgJ2NhcmQnKTtcbiAgfVxuXG4gIC5tYXQtbWVudS1pdGVtIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCAndGV4dCcpO1xuXG4gICAgJltkaXNhYmxlZF0ge1xuICAgICAgJiwgJjo6YWZ0ZXIge1xuICAgICAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCAnZGlzYWJsZWQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWF0LW1lbnUtaXRlbSAubWF0LWljb24tbm8tY29sb3IsXG4gIC5tYXQtbWVudS1pdGVtLXN1Ym1lbnUtdHJpZ2dlcjo6YWZ0ZXIge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsICdpY29uJyk7XG4gIH1cblxuICAubWF0LW1lbnUtaXRlbTpob3ZlcixcbiAgLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZCxcbiAgLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWQsXG4gIC5tYXQtbWVudS1pdGVtLWhpZ2hsaWdodGVkIHtcbiAgICAmOm5vdChbZGlzYWJsZWRdKSB7XG4gICAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsICdob3ZlcicpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LW1lbnUtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtbWVudS1pdGVtIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnLCBib2R5LTEpO1xuICAgICAgc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpO1xuICAgICAgd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0xKTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5cbkBtaXhpbiBtYXQtcGFnaW5hdG9yLXRoZW1lKCR0aGVtZSkge1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuXG4gIC5tYXQtcGFnaW5hdG9yIHtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsICdjYXJkJyk7XG4gIH1cblxuICAubWF0LXBhZ2luYXRvcixcbiAgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIC5tYXQtc2VsZWN0LXRyaWdnZXIge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudCxcbiAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50IHtcbiAgICBib3JkZXItdG9wOiAycHggc29saWQgbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCAnaWNvbicpO1xuICAgIGJvcmRlci1yaWdodDogMnB4IHNvbGlkIG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgJ2ljb24nKTtcbiAgfVxuXG4gIC5tYXQtcGFnaW5hdG9yLWZpcnN0LFxuICAubWF0LXBhZ2luYXRvci1sYXN0IHtcbiAgICBib3JkZXItdG9wOiAycHggc29saWQgbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCAnaWNvbicpO1xuICB9XG5cbiAgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0ge1xuICAgIC5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudCxcbiAgICAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnQsXG4gICAgLm1hdC1wYWdpbmF0b3ItZmlyc3QsXG4gICAgLm1hdC1wYWdpbmF0b3ItbGFzdCB7XG4gICAgICBib3JkZXItY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgJ2Rpc2FibGVkJyk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtcGFnaW5hdG9yLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LXBhZ2luYXRvcixcbiAgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIC5tYXQtc2VsZWN0LXRyaWdnZXIge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcsIGNhcHRpb24pO1xuICAgICAgc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5AbWl4aW4gbWF0LXByb2dyZXNzLWJhci10aGVtZSgkdGhlbWUpIHtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG5cbiAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZCB7XG4gICAgZmlsbDogbWF0LWNvbG9yKCRwcmltYXJ5LCBsaWdodGVyKTtcbiAgfVxuXG4gIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5LCBsaWdodGVyKTtcbiAgfVxuXG4gIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHByaW1hcnkpO1xuICB9XG5cbiAgLm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCB7XG4gICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZCB7XG4gICAgICBmaWxsOiBtYXQtY29sb3IoJGFjY2VudCwgbGlnaHRlcik7XG4gICAgfVxuXG4gICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYWNjZW50LCBsaWdodGVyKTtcbiAgICB9XG5cbiAgICAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGFjY2VudCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4ge1xuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmQge1xuICAgICAgZmlsbDogbWF0LWNvbG9yKCR3YXJuLCBsaWdodGVyKTtcbiAgICB9XG5cbiAgICAubWF0LXByb2dyZXNzLWJhci1idWZmZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCR3YXJuLCBsaWdodGVyKTtcbiAgICB9XG5cbiAgICAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHdhcm4pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LXByb2dyZXNzLWJhci10eXBvZ3JhcGh5KCRjb25maWcpIHsgfVxuXG5cblxuXG5cblxuQG1peGluIG1hdC1wcm9ncmVzcy1zcGlubmVyLXRoZW1lKCR0aGVtZSkge1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcblxuICAubWF0LXByb2dyZXNzLXNwaW5uZXIsIC5tYXQtc3Bpbm5lciB7XG4gICAgY2lyY2xlIHtcbiAgICAgIHN0cm9rZTogbWF0LWNvbG9yKCRwcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQgY2lyY2xlIHtcbiAgICAgIHN0cm9rZTogbWF0LWNvbG9yKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4gY2lyY2xlIHtcbiAgICAgIHN0cm9rZTogbWF0LWNvbG9yKCR3YXJuKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1wcm9ncmVzcy1zcGlubmVyLXR5cG9ncmFwaHkoJGNvbmZpZykgeyB9XG5cblxuXG5cblxuQG1peGluIF9tYXQtcmFkaW8tY29sb3IoJHBhbGV0dGUpIHtcbiAgJi5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZSB7XG4gICAgYm9yZGVyLWNvbG9yOiBtYXQtY29sb3IoJHBhbGV0dGUpO1xuICB9XG5cbiAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsXG4gIC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLFxuICAmLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUsXG4gICY6YWN0aXZlIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcGFsZXR0ZSk7XG4gIH1cbn1cblxuQG1peGluIG1hdC1yYWRpby10aGVtZSgkdGhlbWUpIHtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGUge1xuICAgIGJvcmRlci1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LXJhZGlvLWJ1dHRvbiB7XG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBAaW5jbHVkZSBfbWF0LXJhZGlvLWNvbG9yKCRwcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgQGluY2x1ZGUgX21hdC1yYWRpby1jb2xvcigkYWNjZW50KTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtcmFkaW8tY29sb3IoJHdhcm4pO1xuICAgIH1cblxuICAgIC8vIFRoaXMgbmVlZHMgZXh0cmEgc3BlY2lmaWNpdHksIGJlY2F1c2UgdGhlIGNsYXNzZXMgYWJvdmUgYXJlIGNvbWJpbmVkXG4gICAgLy8gKGUuZy4gYC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRgKSB3aGljaCBpbmNyZWFzZXMgdGhlaXIgc3BlY2lmaWNpdHkgYSBsb3QuXG4gICAgLy8gVE9ETzogY29uc2lkZXIgbWFraW5nIHRoZSBzZWxlY3RvcnMgaW50byBkZXNjZW5kYW50cyAoYC5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLWJ1dHRvbmApLlxuICAgICYubWF0LXJhZGlvLWRpc2FibGVkIHtcbiAgICAgICYubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGUsXG4gICAgICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZCk7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQsXG4gICAgICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGlzYWJsZWQpO1xuICAgICAgfVxuXG4gICAgICAubWF0LXJhZGlvLWxhYmVsLWNvbnRlbnQge1xuICAgICAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3dpdGNoIHRoaXMgdG8gYSBzb2xpZCBjb2xvciBzaW5jZSB3ZSdyZSB1c2luZyBgb3BhY2l0eWBcbiAgICAvLyB0byBjb250cm9sIGhvdyBvcGFxdWUgdGhlIHJpcHBsZSBzaG91bGQgYmUuXG4gICAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXBfZ2V0KCRmb3JlZ3JvdW5kLCBiYXNlKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1yYWRpby10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC1yYWRpby1idXR0b24ge1xuICAgIGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cbn1cblxuXG5cblxuXG5cblxuXG5AbWl4aW4gbWF0LXNlbGVjdC10aGVtZSgkdGhlbWUpIHtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG5cbiAgLm1hdC1zZWxlY3QtdmFsdWUge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC1zZWxlY3QtcGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiBfbWF0LWNvbnRyb2wtcGxhY2Vob2xkZXItY29sb3IoJHRoZW1lKTtcbiAgfVxuXG4gIC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LXZhbHVlIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LXNlbGVjdC1wYW5lbCB7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbig0LCAkdGhlbWUpO1xuXG4gICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSkge1xuICAgICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBob3ZlciwgMC4xMik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkIHtcbiAgICAmLm1hdC1mb2N1c2VkIHtcbiAgICAgICYubWF0LXByaW1hcnkgLm1hdC1zZWxlY3QtYXJyb3cge1xuICAgICAgICBjb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5KTtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtYWNjZW50IC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICAgICAgY29sb3I6IG1hdC1jb2xvcigkYWNjZW50KTtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtd2FybiAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgICAgIGNvbG9yOiBtYXQtY29sb3IoJHdhcm4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZCAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCR3YXJuKTtcbiAgICB9XG5cbiAgICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LXNlbGVjdC10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLy8gVGhlIHVuaXQtbGVzcyBsaW5lLWhlaWdodCBmcm9tIHRoZSBmb250IGNvbmZpZy5cbiAgJGxpbmUtaGVpZ2h0OiBtYXQtbGluZS1oZWlnaHQoJGNvbmZpZywgaW5wdXQpO1xuXG4gIC5tYXQtc2VsZWN0IHtcbiAgICBmb250LWZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1zZWxlY3QtdHJpZ2dlciB7XG4gICAgaGVpZ2h0OiAkbGluZS1oZWlnaHQgKiAxZW07XG4gIH1cbn1cblxuXG5cblxuXG5cbkBtaXhpbiBtYXQtc2lkZW5hdi10aGVtZSgkdGhlbWUpIHtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgLy8gV2UgdXNlIGludmVydCgpIGhlcmUgdG8gaGF2ZSB0aGUgZGFya2VuIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGV4cGVjdGVkIHRvIGJlIHVzZWQuIElmIHRoZVxuICAvLyBiYWNrZ3JvdW5kIGlzIGxpZ2h0LCB3ZSB1c2UgYSBkYXJrIGJhY2tkcm9wLiBJZiB0aGUgYmFja2dyb3VuZCBpcyBkYXJrLFxuICAvLyB3ZSB1c2UgYSBsaWdodCBiYWNrZHJvcC5cbiAgJGRyYXdlci1iYWNrZHJvcC1jb2xvcjogaW52ZXJ0KG1hdC1jb2xvcigkYmFja2dyb3VuZCwgY2FyZCwgMC42KSk7XG4gICRkcmF3ZXItYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBkaWFsb2cpO1xuICAkZHJhd2VyLWNvbnRhaW5lci1iYWNrZ3JvdW5kLWNvbG9yOiAgbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kKTtcbiAgJGRyYXdlci1wdXNoLWJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgZGlhbG9nKTtcbiAgJGRyYXdlci1zaWRlLWJvcmRlcjogc29saWQgMXB4IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG5cbiAgLm1hdC1kcmF3ZXItY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZHJhd2VyLWNvbnRhaW5lci1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC1kcmF3ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkcmF3ZXItYmFja2dyb3VuZC1jb2xvcjtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICYubWF0LWRyYXdlci1wdXNoIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkcmF3ZXItcHVzaC1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH1cblxuICAgICY6bm90KC5tYXQtZHJhd2VyLXNpZGUpIHtcbiAgICAgIC8vIFRoZSBlbGV2YXRpb24gb2Ygei0xNiBpcyBub3RlZCBpbiB0aGUgZGVzaWduIHNwZWNpZmljYXRpb25zLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL2NvbXBvbmVudHMvbmF2aWdhdGlvbi1kcmF3ZXIuaHRtbFxuICAgICAgQGluY2x1ZGUgX21hdC10aGVtZS1lbGV2YXRpb24oMTYsICR0aGVtZSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1kcmF3ZXItc2lkZSB7XG4gICAgYm9yZGVyLXJpZ2h0OiAkZHJhd2VyLXNpZGUtYm9yZGVyO1xuXG4gICAgJi5tYXQtZHJhd2VyLWVuZCB7XG4gICAgICBib3JkZXItbGVmdDogJGRyYXdlci1zaWRlLWJvcmRlcjtcbiAgICAgIGJvcmRlci1yaWdodDogbm9uZTtcbiAgICB9XG4gIH1cblxuICBbZGlyPSdydGwnXSAubWF0LWRyYXdlci1zaWRlIHtcbiAgICBib3JkZXItbGVmdDogJGRyYXdlci1zaWRlLWJvcmRlcjtcbiAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG5cbiAgICAmLm1hdC1kcmF3ZXItZW5kIHtcbiAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkZHJhd2VyLXNpZGUtYm9yZGVyO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkcmF3ZXItYmFja2Ryb3AtY29sb3I7XG4gIH1cbn1cblxuQG1peGluIG1hdC1zaWRlbmF2LXR5cG9ncmFwaHkoJGNvbmZpZykgeyB9XG5cblxuXG5cblxuXG5AbWl4aW4gX21hdC1zbGlkZS10b2dnbGUtY2hlY2tlZCgkcGFsZXR0ZSwgJHRodW1iLWNoZWNrZWQtaHVlKSB7XG4gICYubWF0LWNoZWNrZWQge1xuICAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcGFsZXR0ZSwgJHRodW1iLWNoZWNrZWQtaHVlKTtcbiAgICB9XG5cbiAgICAubWF0LXNsaWRlLXRvZ2dsZS1iYXIge1xuICAgICAgLy8gT3BhY2l0eSBpcyBkZXRlcm1pbmVkIGZyb20gdGhlIHNwZWNzIGZvciB0aGUgc2VsZWN0aW9uIGNvbnRyb2xzLlxuICAgICAgLy8gU2VlOiBodHRwczovL21hdGVyaWFsLmlvL2Rlc2lnbi9jb21wb25lbnRzL3NlbGVjdGlvbi1jb250cm9scy5odG1sI3NwZWNzXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHBhbGV0dGUsICR0aHVtYi1jaGVja2VkLWh1ZSwgMC41NCk7XG4gICAgfVxuXG4gICAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICAvLyBTZXQgbm8gb3BhY2l0eSBmb3IgdGhlIHJpcHBsZXMgYmVjYXVzZSB0aGUgcmlwcGxlIG9wYWNpdHkgd2lsbCBiZSBhZGp1c3RlZCBkeW5hbWljYWxseVxuICAgICAgLy8gYmFzZWQgb24gdGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc2xpZGUtdG9nZ2xlIChlLmcuIGZvciBob3ZlciwgZm9jdXMpXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHBhbGV0dGUsICR0aHVtYi1jaGVja2VkLWh1ZSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtc2xpZGUtdG9nZ2xlLXRoZW1lKCR0aGVtZSkge1xuICAkaXMtZGFyazogbWFwX2dldCgkdGhlbWUsIGlzLWRhcmspO1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAvLyBDb2xvciBodWVzIGFyZSBiYXNlZCBvbiB0aGUgc3BlY3Mgd2hpY2ggYnJpZWZseSBzaG93IHRoZSBodWVzIHRoYXQgYXJlIGFwcGxpZWQgdG8gYSBzd2l0Y2guXG4gIC8vIFRoZSAyMDE4IHNwZWNzIG5vIGxvbmdlciBkZXNjcmliZSBob3cgZGFyayBzd2l0Y2hlcyBzaG91bGQgbG9vayBsaWtlLiBEdWUgdG8gdGhlIGxhY2sgb2ZcbiAgLy8gaW5mb3JtYXRpb24gZm9yIGRhcmsgdGhlbWVkIHN3aXRjaGVzLCB3ZSBrZWVwIHRoZSBvbGQgYmVoYXZpb3IgdGhhdCBpcyBiYXNlZCBvbiB0aGUgcHJldmlvdXNcbiAgLy8gc3BlY2lmaWNhdGlvbnMuIFNlZTogaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vY29tcG9uZW50cy9zZWxlY3Rpb24tY29udHJvbHMuaHRtbCNzcGVjc1xuICAkdGh1bWItdW5jaGVja2VkLWh1ZTogaWYoJGlzLWRhcmssIDQwMCwgNTApO1xuICAkdGh1bWItY2hlY2tlZC1odWU6IGlmKCRpcy1kYXJrLCAyMDAsIGRlZmF1bHQpO1xuXG4gICRiYXItdW5jaGVja2VkLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkKTtcbiAgJHJpcHBsZS11bmNoZWNrZWQtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgYmFzZSk7XG5cbiAgLm1hdC1zbGlkZS10b2dnbGUge1xuICAgIEBpbmNsdWRlIF9tYXQtc2xpZGUtdG9nZ2xlLWNoZWNrZWQoJGFjY2VudCwgJHRodW1iLWNoZWNrZWQtaHVlKTtcblxuICAgICYubWF0LXByaW1hcnkge1xuICAgICAgQGluY2x1ZGUgX21hdC1zbGlkZS10b2dnbGUtY2hlY2tlZCgkcHJpbWFyeSwgJHRodW1iLWNoZWNrZWQtaHVlKTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtc2xpZGUtdG9nZ2xlLWNoZWNrZWQoJHdhcm4sICR0aHVtYi1jaGVja2VkLWh1ZSk7XG4gICAgfVxuXG4gICAgJjpub3QoLm1hdC1jaGVja2VkKSAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICAgIC8vIFNldCBubyBvcGFjaXR5IGZvciB0aGUgcmlwcGxlcyBiZWNhdXNlIHRoZSByaXBwbGUgb3BhY2l0eSB3aWxsIGJlIGFkanVzdGVkIGR5bmFtaWNhbGx5XG4gICAgICAvLyBiYXNlZCBvbiB0aGUgdHlwZSBvZiBpbnRlcmFjdGlvbiB3aXRoIHRoZSBzbGlkZS10b2dnbGUgKGUuZy4gZm9yIGhvdmVyLCBmb2N1cylcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRyaXBwbGUtdW5jaGVja2VkLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iIHtcbiAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLWVsZXZhdGlvbigxLCAkdGhlbWUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkbWF0LWdyZXksICR0aHVtYi11bmNoZWNrZWQtaHVlKTtcbiAgfVxuXG4gIC5tYXQtc2xpZGUtdG9nZ2xlLWJhciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhci11bmNoZWNrZWQtY29sb3I7XG4gIH1cbn1cblxuQG1peGluIG1hdC1zbGlkZS10b2dnbGUtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnQge1xuICAgIGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cbn1cblxuXG5cblxuXG5AbWl4aW4gX21hdC1zbGlkZXItaW5uZXItY29udGVudC10aGVtZSgkcGFsZXR0ZSkge1xuICAubWF0LXNsaWRlci10cmFjay1maWxsLFxuICAubWF0LXNsaWRlci10aHVtYixcbiAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcGFsZXR0ZSk7XG4gIH1cblxuICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0IHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRwYWxldHRlLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXNsaWRlci10aGVtZSgkdGhlbWUpIHtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgJG1hdC1zbGlkZXItb2ZmLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNsaWRlci1vZmYpO1xuICAkbWF0LXNsaWRlci1vZmYtZm9jdXNlZC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzbGlkZXItb2ZmLWFjdGl2ZSk7XG4gICRtYXQtc2xpZGVyLWRpc2FibGVkLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNsaWRlci1vZmYpO1xuICAkbWF0LXNsaWRlci1sYWJlbGVkLW1pbi12YWx1ZS10aHVtYi1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzbGlkZXItbWluKTtcbiAgJG1hdC1zbGlkZXItbGFiZWxlZC1taW4tdmFsdWUtdGh1bWItbGFiZWwtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2xpZGVyLW9mZik7XG4gICRtYXQtc2xpZGVyLWZvY3VzLXJpbmctY29sb3I6IG1hdC1jb2xvcigkYWNjZW50LCBkZWZhdWx0LCAwLjIpO1xuICAkbWF0LXNsaWRlci1mb2N1cy1yaW5nLW1pbi12YWx1ZS1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBiYXNlLCAwLjEyKTtcbiAgJG1hdC1zbGlkZXItdGljay1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBiYXNlLCAwLjcpO1xuICAkbWF0LXNsaWRlci10aWNrLXNpemU6IDJweDtcblxuICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWF0LXNsaWRlci1vZmYtY29sb3I7XG4gIH1cblxuICAubWF0LXByaW1hcnkge1xuICAgIEBpbmNsdWRlIF9tYXQtc2xpZGVyLWlubmVyLWNvbnRlbnQtdGhlbWUoJHByaW1hcnkpO1xuICB9XG5cbiAgLm1hdC1hY2NlbnQge1xuICAgIEBpbmNsdWRlIF9tYXQtc2xpZGVyLWlubmVyLWNvbnRlbnQtdGhlbWUoJGFjY2VudCk7XG4gIH1cblxuICAubWF0LXdhcm4ge1xuICAgIEBpbmNsdWRlIF9tYXQtc2xpZGVyLWlubmVyLWNvbnRlbnQtdGhlbWUoJHdhcm4pO1xuICB9XG5cbiAgLm1hdC1zbGlkZXItZm9jdXMtcmluZyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItZm9jdXMtcmluZy1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtc2xpZGVyOmhvdmVyLFxuICAuY2RrLWZvY3VzZWQge1xuICAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItb2ZmLWZvY3VzZWQtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zbGlkZXItZGlzYWJsZWQge1xuICAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQsXG4gICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbCxcbiAgICAubWF0LXNsaWRlci10aHVtYiB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWF0LXNsaWRlci1kaXNhYmxlZC1jb2xvcjtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWF0LXNsaWRlci1kaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWF0LXNsaWRlci1taW4tdmFsdWUge1xuICAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmcge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItZm9jdXMtcmluZy1taW4tdmFsdWUtY29sb3I7XG4gICAgfVxuXG4gICAgJi5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcge1xuICAgICAgLm1hdC1zbGlkZXItdGh1bWIsXG4gICAgICAubWF0LXNsaWRlci10aHVtYi1sYWJlbCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLWxhYmVsZWQtbWluLXZhbHVlLXRodW1iLWNvbG9yO1xuICAgICAgfVxuXG4gICAgICAmLmNkay1mb2N1c2VkIHtcbiAgICAgICAgLm1hdC1zbGlkZXItdGh1bWIsXG4gICAgICAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWF0LXNsaWRlci1sYWJlbGVkLW1pbi12YWx1ZS10aHVtYi1sYWJlbC1jb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICY6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpIHtcbiAgICAgIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkbWF0LXNsaWRlci1vZmYtY29sb3I7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuXG4gICAgICAmOmhvdmVyLFxuICAgICAgJi5jZGstZm9jdXNlZCB7XG4gICAgICAgIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICRtYXQtc2xpZGVyLW9mZi1mb2N1c2VkLWNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICRtYXQtc2xpZGVyLWRpc2FibGVkLWNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zbGlkZXItaGFzLXRpY2tzIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVyIHtcbiAgICBib3JkZXItY29sb3I6ICRtYXQtc2xpZGVyLXRpY2stY29sb3I7XG4gIH1cblxuICAubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRpY2tzIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkbWF0LXNsaWRlci10aWNrLWNvbG9yLFxuICAgICAgICAkbWF0LXNsaWRlci10aWNrLWNvbG9yICRtYXQtc2xpZGVyLXRpY2stc2l6ZSwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO1xuICAgIC8vIEZpcmVmb3ggZG9lc24ndCBkcmF3IHRoZSBncmFkaWVudCBjb3JyZWN0bHkgd2l0aCAndG8gcmlnaHQnXG4gICAgLy8gKHNlZSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE0MzE5KS5cbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMC4wMDAxZGVnLCAkbWF0LXNsaWRlci10aWNrLWNvbG9yLFxuICAgICAgICAkbWF0LXNsaWRlci10aWNrLWNvbG9yICRtYXQtc2xpZGVyLXRpY2stc2l6ZSwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO1xuICB9XG5cbiAgLm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGlja3Mge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAkbWF0LXNsaWRlci10aWNrLWNvbG9yLFxuICAgICAgICAkbWF0LXNsaWRlci10aWNrLWNvbG9yICRtYXQtc2xpZGVyLXRpY2stc2l6ZSwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtc2xpZGVyLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0IHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgICAgIHNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgICB3ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cbkBtaXhpbiBtYXQtc3RlcHBlci10aGVtZSgkdGhlbWUpIHtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcblxuICAubWF0LXN0ZXAtaGVhZGVyIHtcbiAgICAmLmNkay1rZXlib2FyZC1mb2N1c2VkLFxuICAgICYuY2RrLXByb2dyYW0tZm9jdXNlZCxcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgIH1cblxuICAgIC8vIE9uIHRvdWNoIGRldmljZXMgdGhlIDpob3ZlciBzdGF0ZSB3aWxsIGxpbmdlciBvbiB0aGUgZWxlbWVudCBhZnRlciBhIHRhcC5cbiAgICAvLyBSZXNldCBpdCB2aWEgYEBtZWRpYWAgYWZ0ZXIgdGhlIGRlY2xhcmF0aW9uLCBiZWNhdXNlIHRoZSBtZWRpYSBxdWVyeSBpc24ndFxuICAgIC8vIHN1cHBvcnRlZCBieSBhbGwgYnJvd3NlcnMgeWV0LlxuICAgIEBtZWRpYSAoaG92ZXI6IG5vbmUpIHtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtc3RlcC1sYWJlbCxcbiAgICAubWF0LXN0ZXAtb3B0aW9uYWwge1xuICAgICAgLy8gVE9ETyhqb3NlcGhwZXJyb3R0KTogVXBkYXRlIHRvIHVzaW5nIGEgY29ycmVjdGVkIGRpc2FibGVkLXRleHQgY29udHJhc3RcbiAgICAgIC8vIGluc3RlYWQgb2Ygc2Vjb25kYXJ5LXRleHQuXG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwLWljb24ge1xuICAgICAgLy8gVE9ETyhqb3NlcGhwZXJyb3R0KTogVXBkYXRlIHRvIHVzaW5nIGEgY29ycmVjdGVkIGRpc2FibGVkLXRleHQgY29udHJhc3RcbiAgICAgIC8vIGluc3RlYWQgb2Ygc2Vjb25kYXJ5LXRleHQuXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJHByaW1hcnksIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIH1cblxuICAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkLFxuICAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsXG4gICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHByaW1hcnkpO1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZXJyb3Ige1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCR3YXJuKTtcbiAgICB9XG5cbiAgICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtYWN0aXZlIHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIH1cblxuICAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1lcnJvciB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCR3YXJuKTtcbiAgICB9XG4gIH1cblxuICAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbCwgLm1hdC1zdGVwcGVyLXZlcnRpY2FsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGNhcmQpO1xuICB9XG5cbiAgLm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmU6OmJlZm9yZSB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmJlZm9yZSxcbiAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyOjphZnRlcixcbiAgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXN0ZXBwZXItdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtc3RlcHBlci12ZXJ0aWNhbCwgLm1hdC1zdGVwcGVyLWhvcml6b250YWwge1xuICAgIGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LXN0ZXAtbGFiZWwge1xuICAgIGZvbnQ6IHtcbiAgICAgIHNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgICAgIHdlaWdodDogbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMSk7XG4gICAgfTtcbiAgfVxuXG4gIC5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3Ige1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIH1cblxuICAubWF0LXN0ZXAtbGFiZWwtZXJyb3Ige1xuICAgIGZvbnQtc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTIpO1xuICB9XG5cbiAgLm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMik7XG4gICAgICB3ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuICAgIH07XG4gIH1cbn1cblxuQG1peGluIG1hdC1zb3J0LXRoZW1lKCR0aGVtZSkge1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtc29ydC1oZWFkZXItYXJyb3cge1xuICAgIC8vIEJlY2F1c2UgdGhlIGFycm93IGlzIG1hZGUgdXAgb2YgbXVsdGlwbGUgZWxlbWVudHMgdGhhdCBhcmUgc3RhY2tlZCBvbiB0b3Agb2YgZWFjaCBvdGhlcixcbiAgICAvLyB3ZSBjYW4ndCB1c2UgdGhlIHNlbWktdHJhc3BhcmVudCBjb2xvciBmcm9tIHRoZSB0aGVtZSBkaXJlY3RseS4gV2UgY29udmVydCBpdCBpbnRvIGEgc29saWRcbiAgICAvLyBjb2xvciBieSB0YWtpbmcgdGhlIG9wYWNpdHkgZnJvbSB0aGUgcmdiYSB2YWx1ZSBhbmQgdXNpbmcgdGhlIHZhbHVlIHRvIGRldGVybWluZSB0aGVcbiAgICAvLyBwZXJjZW50YWdlIG9mIHRoZSBiYWNrZ3JvdW5kIHRvIHB1dCBpbnRvIGZvcmVncm91bmQgd2hlbiBtaXhpbmcgdGhlIGNvbG9ycyB0b2dldGhlci5cbiAgICAkdGFibGUtYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCAnY2FyZCcpO1xuICAgICR0ZXh0LWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgICAkdGV4dC1vcGFjaXR5OiBvcGFjaXR5KCR0ZXh0LWNvbG9yKTtcbiAgICBjb2xvcjogbWl4KCR0YWJsZS1iYWNrZ3JvdW5kLCByZ2JhKCR0ZXh0LWNvbG9yLCAxKSwgKDEgLSAkdGV4dC1vcGFjaXR5KSAqIDEwMCUpO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtc29ydC10eXBvZ3JhcGh5KCRjb25maWcpIHsgfVxuXG5cblxuXG5cbkBtaXhpbiBtYXQtdGFicy10aGVtZSgkdGhlbWUpIHtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG4gICRoZWFkZXItYm9yZGVyOiAxcHggc29saWQgbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcblxuICAubWF0LXRhYi1uYXYtYmFyLFxuICAubWF0LXRhYi1oZWFkZXIge1xuICAgIGJvcmRlci1ib3R0b206ICRoZWFkZXItYm9yZGVyO1xuICB9XG5cbiAgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIHtcbiAgICAubWF0LXRhYi1uYXYtYmFyLFxuICAgIC5tYXQtdGFiLWhlYWRlciB7XG4gICAgICBib3JkZXItdG9wOiAkaGVhZGVyLWJvcmRlcjtcbiAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLm1hdC10YWItbGFiZWwsIC5tYXQtdGFiLWxpbmsge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gICAgJi5tYXQtdGFiLWRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24ge1xuICAgIGJvcmRlci1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24ge1xuICAgIGJvcmRlci1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgfVxuXG4gIC8vIFJlbW92ZSBoZWFkZXIgYm9yZGVyIHdoZW4gdGhlcmUgaXMgYSBiYWNrZ3JvdW5kIGNvbG9yXG4gIC5tYXQtdGFiLWdyb3VwW2NsYXNzKj0nbWF0LWJhY2tncm91bmQtJ10gLm1hdC10YWItaGVhZGVyLFxuICAubWF0LXRhYi1uYXYtYmFyW2NsYXNzKj0nbWF0LWJhY2tncm91bmQtJ10ge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgfVxuXG4gIC5tYXQtdGFiLWdyb3VwLCAubWF0LXRhYi1uYXYtYmFyIHtcbiAgICAkdGhlbWUtY29sb3JzOiAoXG4gICAgICBwcmltYXJ5OiAkcHJpbWFyeSxcbiAgICAgIGFjY2VudDogJGFjY2VudCxcbiAgICAgIHdhcm46ICR3YXJuXG4gICAgKTtcblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJHRoZW1lLWNvbG9ycyB7XG4gICAgICAvLyBTZXQgdGhlIGZvcmVncm91bmQgY29sb3Igb2YgdGhlIHRhYnNcbiAgICAgICYubWF0LSN7JG5hbWV9IHtcbiAgICAgICAgQGluY2x1ZGUgX21hdC10YWItbGFiZWwtZm9jdXMoJGNvbG9yKTtcbiAgICAgICAgQGluY2x1ZGUgX21hdC1pbmstYmFyKCRjb2xvcik7XG5cbiAgICAgICAgLy8gT3ZlcnJpZGUgaW5rIGJhciB3aGVuIGJhY2tncm91bmQgY29sb3IgaXMgdGhlIHNhbWVcbiAgICAgICAgJi5tYXQtYmFja2dyb3VuZC0jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgX21hdC1pbmstYmFyKCRjb2xvciwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICR0aGVtZS1jb2xvcnMge1xuICAgICAgLy8gU2V0IGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHRhYnMgYW5kIG92ZXJyaWRlIGZvY3VzIGNvbG9yXG4gICAgICAmLm1hdC1iYWNrZ3JvdW5kLSN7JG5hbWV9IHtcbiAgICAgICAgQGluY2x1ZGUgX21hdC10YWItbGFiZWwtZm9jdXMoJGNvbG9yKTtcbiAgICAgICAgQGluY2x1ZGUgX21hdC10YWJzLWJhY2tncm91bmQoJGNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9tYXQtaW5rLWJhcigkY29sb3IsICRodWU6IGRlZmF1bHQpIHtcbiAgLm1hdC1pbmstYmFyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGNvbG9yLCAkaHVlKTtcbiAgfVxufVxuXG5AbWl4aW4gX21hdC10YWItbGFiZWwtZm9jdXMoJHRhYi1mb2N1cy1jb2xvcikge1xuICAubWF0LXRhYi1sYWJlbCxcbiAgLm1hdC10YWItbGluayB7XG4gICAgJi5jZGsta2V5Ym9hcmQtZm9jdXNlZCxcbiAgICAmLmNkay1wcm9ncmFtLWZvY3VzZWQge1xuICAgICAgJjpub3QoLm1hdC10YWItZGlzYWJsZWQpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCR0YWItZm9jdXMtY29sb3IsIGxpZ2h0ZXIsIDAuMyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfbWF0LXRhYnMtYmFja2dyb3VuZCgkYmFja2dyb3VuZC1jb2xvcikge1xuICAvLyBTZXQgYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIHRhYiBncm91cFxuICAubWF0LXRhYi1oZWFkZXIsIC5tYXQtdGFiLWxpbmtzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQtY29sb3IpO1xuICB9XG5cbiAgLy8gU2V0IGxhYmVscyB0byBjb250cmFzdCBhZ2FpbnN0IGJhY2tncm91bmRcbiAgLm1hdC10YWItbGFiZWwsIC5tYXQtdGFiLWxpbmsge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQtY29sb3IsIGRlZmF1bHQtY29udHJhc3QpO1xuXG4gICAgJi5tYXQtdGFiLWRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQtY29sb3IsIGRlZmF1bHQtY29udHJhc3QsIDAuNCk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2V0IHBhZ2luYXRpb24gY2hldnJvbnMgdG8gY29udHJhc3QgYmFja2dyb3VuZFxuICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uIHtcbiAgICBib3JkZXItY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZC1jb2xvciwgZGVmYXVsdC1jb250cmFzdCk7XG4gIH1cblxuICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uIHtcbiAgICBib3JkZXItY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZC1jb2xvciwgZGVmYXVsdC1jb250cmFzdCwgMC40KTtcbiAgfVxuXG4gIC8vIFNldCByaXBwbGVzIGNvbG9yIHRvIGJlIHRoZSBjb250cmFzdCBjb2xvciBvZiB0aGUgbmV3IGJhY2tncm91bmQuIE90aGVyd2lzZSB0aGUgcmlwcGxlXG4gIC8vIGNvbG9yIHdpbGwgYmUgYmFzZWQgb24gdGhlIGFwcCBiYWNrZ3JvdW5kIGNvbG9yLlxuICAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQtY29sb3IsIGRlZmF1bHQtY29udHJhc3QsIDAuMTIpO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtdGFicy10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC10YWItZ3JvdXAge1xuICAgIGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LXRhYi1sYWJlbCwgLm1hdC10YWItbGluayB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZywgYnV0dG9uKTtcbiAgICAgIHNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgYnV0dG9uKTtcbiAgICAgIHdlaWdodDogbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIGJ1dHRvbik7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuXG5AbWl4aW4gX21hdC10b29sYmFyLWNvbG9yKCRwYWxldHRlKSB7XG4gIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkcGFsZXR0ZSk7XG4gIGNvbG9yOiBtYXQtY29sb3IoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpO1xufVxuXG5AbWl4aW4gX21hdC10b29sYmFyLWZvcm0tZmllbGQtb3ZlcnJpZGVzIHtcbiAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSxcbiAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSxcbiAgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbiAgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbiAgLm1hdC1zZWxlY3QtdmFsdWUsXG4gIC5tYXQtc2VsZWN0LWFycm93LFxuICAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1zZWxlY3QtYXJyb3cge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICB9XG5cbiAgLm1hdC1pbnB1dC1lbGVtZW50IHtcbiAgICBjYXJldC1jb2xvcjogY3VycmVudENvbG9yO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtdG9vbGJhci10aGVtZSgkdGhlbWUpIHtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC10b29sYmFyIHtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGFwcC1iYXIpO1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBAaW5jbHVkZSBfbWF0LXRvb2xiYXItY29sb3IoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBAaW5jbHVkZSBfbWF0LXRvb2xiYXItY29sb3IoJGFjY2VudCk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBAaW5jbHVkZSBfbWF0LXRvb2xiYXItY29sb3IoJHdhcm4pO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIF9tYXQtdG9vbGJhci1mb3JtLWZpZWxkLW92ZXJyaWRlcztcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXRvb2xiYXItdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtdG9vbGJhcixcbiAgLm1hdC10b29sYmFyIGgxLFxuICAubWF0LXRvb2xiYXIgaDIsXG4gIC5tYXQtdG9vbGJhciBoMyxcbiAgLm1hdC10b29sYmFyIGg0LFxuICAubWF0LXRvb2xiYXIgaDUsXG4gIC5tYXQtdG9vbGJhciBoNiB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIHRpdGxlKTtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuXG5cblxuXG4kbWF0LXRvb2x0aXAtdGFyZ2V0LWhlaWdodDogMjJweDtcbiRtYXQtdG9vbHRpcC1mb250LXNpemU6IDEwcHg7XG4kbWF0LXRvb2x0aXAtdmVydGljYWwtcGFkZGluZzogKCRtYXQtdG9vbHRpcC10YXJnZXQtaGVpZ2h0IC0gJG1hdC10b29sdGlwLWZvbnQtc2l6ZSkgLyAyO1xuXG4kbWF0LXRvb2x0aXAtaGFuZHNldC10YXJnZXQtaGVpZ2h0OiAzMHB4O1xuJG1hdC10b29sdGlwLWhhbmRzZXQtZm9udC1zaXplOiAxNHB4O1xuJG1hdC10b29sdGlwLWhhbmRzZXQtdmVydGljYWwtcGFkZGluZzpcbiAgICAoJG1hdC10b29sdGlwLWhhbmRzZXQtdGFyZ2V0LWhlaWdodCAtICRtYXQtdG9vbHRpcC1oYW5kc2V0LWZvbnQtc2l6ZSkgLyAyO1xuXG5AbWl4aW4gbWF0LXRvb2x0aXAtdGhlbWUoJHRoZW1lKSB7XG4gIC5tYXQtdG9vbHRpcCB7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRtYXQtZ3JleSwgNzAwLCAwLjkpO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtdG9vbHRpcC10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC10b29sdGlwIHtcbiAgICBmb250LWZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcpO1xuICAgIGZvbnQtc2l6ZTogJG1hdC10b29sdGlwLWZvbnQtc2l6ZTtcbiAgICBwYWRkaW5nLXRvcDogJG1hdC10b29sdGlwLXZlcnRpY2FsLXBhZGRpbmc7XG4gICAgcGFkZGluZy1ib3R0b206ICRtYXQtdG9vbHRpcC12ZXJ0aWNhbC1wYWRkaW5nO1xuICB9XG5cbiAgLm1hdC10b29sdGlwLWhhbmRzZXQge1xuICAgIGZvbnQtc2l6ZTogJG1hdC10b29sdGlwLWhhbmRzZXQtZm9udC1zaXplO1xuICAgIHBhZGRpbmctdG9wOiAkbWF0LXRvb2x0aXAtaGFuZHNldC12ZXJ0aWNhbC1wYWRkaW5nO1xuICAgIHBhZGRpbmctYm90dG9tOiAkbWF0LXRvb2x0aXAtaGFuZHNldC12ZXJ0aWNhbC1wYWRkaW5nO1xuICB9XG59XG5cblxuXG5cblxuQG1peGluIG1hdC1zbmFjay1iYXItdGhlbWUoJHRoZW1lKSB7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAtZ2V0KCR0aGVtZSwgaXMtZGFyayk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuXG4gIC5tYXQtc25hY2stYmFyLWNvbnRhaW5lciB7XG4gICAgLy8gVXNlIHRoZSBwcmltYXJ5IHRleHQgb24gdGhlIGRhcmsgdGhlbWUsIGV2ZW4gdGhvdWdoIHRoZSBsaWdodGVyIG9uZSB1c2VzXG4gICAgLy8gYSBzZWNvbmRhcnksIGJlY2F1c2UgdGhlIGNvbnRyYXN0IG9uIHRoZSBsaWdodCBwcmltYXJ5IHRleHQgaXMgcG9vci5cbiAgICBjb2xvcjogaWYoJGlzLWRhcmstdGhlbWUsICRkYXJrLXByaW1hcnktdGV4dCwgJGxpZ2h0LXNlY29uZGFyeS10ZXh0KTtcbiAgICBiYWNrZ3JvdW5kOiBpZigkaXMtZGFyay10aGVtZSwgbWFwLWdldCgkbWF0LWdyZXksIDUwKSwgIzMyMzIzMik7XG5cbiAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLWVsZXZhdGlvbig2LCAkdGhlbWUpO1xuICB9XG5cbiAgLm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uIHtcbiAgICBjb2xvcjogaWYoJGlzLWRhcmstdGhlbWUsIGluaGVyaXQsIG1hdC1jb2xvcigkYWNjZW50KSk7XG4gIH1cbn1cblxuQG1peGluIG1hdC1zbmFjay1iYXItdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtc2ltcGxlLXNuYWNrYmFyIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnLCBib2R5LTEpO1xuICAgICAgc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbiB7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiBpbmhlcml0O1xuICAgICAgc2l6ZTogaW5oZXJpdDtcbiAgICAgIHdlaWdodDogbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIGJ1dHRvbik7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLy8gVGhlbWUgc3R5bGVzIHRoYXQgb25seSBhcHBseSB0byB0aGUgZmlsbCBhcHBlYXJhbmNlIG9mIHRoZSBmb3JtLWZpZWxkLlxuXG5AbWl4aW4gbWF0LWZvcm0tZmllbGQtZmlsbC10aGVtZSgkdGhlbWUpIHtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC1nZXQoJHRoZW1lLCBpcy1kYXJrKTtcblxuICAkZmlsbC1iYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGJhc2UsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjEsIDAuMDQpKTtcbiAgJGZpbGwtZGlzYWJsZWQtYmFja2dyb3VuZDogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBiYXNlLCBpZigkaXMtZGFyay10aGVtZSwgMC4wNSwgMC4wMikpO1xuICAkdW5kZXJsaW5lLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjUsIDAuNDIpKTtcbiAgJGxhYmVsLWRpc2FibGVkLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwge1xuICAgIC5tYXQtZm9ybS1maWVsZC1mbGV4IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRmaWxsLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtZmxleCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZmlsbC1kaXNhYmxlZC1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmU6OmJlZm9yZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQge1xuICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgY29sb3I6ICRsYWJlbC1kaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFVzZWQgdG8gbWFrZSBpbnN0YW5jZXMgb2YgdGhlIF9tYXQtZm9ybS1maWVsZC1sYWJlbC1mbG9hdGluZyBtaXhpbiBuZWdsaWdpYmx5IGRpZmZlcmVudCxcbi8vIGFuZCBwcmV2ZW50IEdvb2dsZSdzIENTUyBPcHRpbWl6ZXIgZnJvbSBjb2xsYXBzaW5nIHRoZSBkZWNsYXJhdGlvbnMuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZVxuLy8gb2YgdGhlIHNlbGVjdG9ycyBjb250YWluIHBzZXVkby1jbGFzc2VzIG5vdCByZWNvZ25pemVkIGluIGFsbCBicm93c2Vycy4gSWYgYSBicm93c2VyIGVuY291bnRlcnNcbi8vIGFuIHVua25vd24gcHNldWRvLWNsYXNzIGl0IHdpbGwgZGlzY2FyZCB0aGUgZW50aXJlIHJ1bGUgc2V0LlxuJG1hdC1mb3JtLWZpZWxkLWZpbGwtZGVkdXBlOiAwO1xuXG4vLyBBcHBsaWVzIGEgZmxvYXRpbmcgbGFiZWwgYWJvdmUgdGhlIGZvcm0gZmllbGQgY29udHJvbCBpdHNlbGYuXG5AbWl4aW4gX21hdC1mb3JtLWZpZWxkLWZpbGwtbGFiZWwtZmxvYXRpbmcoJGZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCkge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRpbmZpeC1tYXJnaW4tdG9wIC0gJGluZml4LXBhZGRpbmcgKyAkbWF0LWZvcm0tZmllbGQtZmlsbC1kZWR1cGUpXG4gICAgICAgICAgICAgc2NhbGUoJGZvbnQtc2NhbGUpO1xuICB3aWR0aDogMTAwJSAvICRmb250LXNjYWxlICsgJG1hdC1mb3JtLWZpZWxkLWZpbGwtZGVkdXBlO1xuXG4gICRtYXQtZm9ybS1maWVsZC1maWxsLWRlZHVwZTogJG1hdC1mb3JtLWZpZWxkLWZpbGwtZGVkdXBlICsgMC4wMDAwMSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gbWF0LWZvcm0tZmllbGQtZmlsbC10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLy8gVGhlIHVuaXQtbGVzcyBsaW5lLWhlaWdodCBmcm9tIHRoZSBmb250IGNvbmZpZy5cbiAgJGxpbmUtaGVpZ2h0OiBtYXQtbGluZS1oZWlnaHQoJGNvbmZpZywgaW5wdXQpO1xuICAvLyBUaGUgYW1vdW50IHRvIHNjYWxlIHRoZSBmb250IGZvciB0aGUgZmxvYXRpbmcgbGFiZWwgYW5kIHN1YnNjcmlwdC5cbiAgJHN1YnNjcmlwdC1mb250LXNjYWxlOiAwLjc1O1xuICAvLyBUaGUgcGFkZGluZyBvbiB0b3Agb2YgdGhlIGluZml4LlxuICAkaW5maXgtcGFkZGluZy10b3A6IDAuMjVlbTtcbiAgLy8gVGhlIHBhZGRpbmcgYmVsb3cgdGhlIGluZml4LlxuICAkaW5maXgtcGFkZGluZy1ib3R0b206IDAuNzVlbTtcbiAgLy8gVGhlIG1hcmdpbiBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLWluZml4IHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBmbG9hdGluZyBsYWJlbC5cbiAgJGluZml4LW1hcmdpbi10b3A6IDFlbSAqICRsaW5lLWhlaWdodCAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIGFtb3VudCB3ZSBvZmZzZXQgdGhlIGxhYmVsIGZyb20gdGhlIGlucHV0IHRleHQgaW4gdGhlIGZpbGwgYXBwZWFyYW5jZS5cbiAgJGZpbGwtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQ6IC0wLjVlbTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIHtcbiAgICAubWF0LWZvcm0tZmllbGQtaW5maXgge1xuICAgICAgcGFkZGluZzogJGluZml4LXBhZGRpbmctdG9wIDAgJGluZml4LXBhZGRpbmctYm90dG9tIDA7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgIHRvcDogJGluZml4LW1hcmdpbi10b3AgKyAkaW5maXgtcGFkZGluZy10b3A7XG4gICAgICBtYXJnaW4tdG9wOiAkZmlsbC1hcHBlYXJhbmNlLWxhYmVsLW9mZnNldDtcbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCB7XG4gICAgICAmLm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsXG4gICAgICAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9tYXQtZm9ybS1maWVsZC1maWxsLWxhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmctdG9wICsgJGZpbGwtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQsXG4gICAgICAgICAgICAgICAgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXJ2ZXItc2lkZSByZW5kZXJlZCBtYXRJbnB1dCB3aXRoIGEgbGFiZWwgYXR0cmlidXRlIGJ1dCBsYWJlbCBub3Qgc2hvd25cbiAgICAgIC8vICh1c2VkIGFzIGEgcHVyZSBDU1Mgc3RhbmQtaW4gZm9yIG1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCkuXG4gICAgICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgX21hdC1mb3JtLWZpZWxkLWZpbGwtbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZy10b3AgKyAkZmlsbC1hcHBlYXJhbmNlLWxhYmVsLW9mZnNldCxcbiAgICAgICAgICAgICAgICAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuXG5cbi8vIFRoZW1lIHN0eWxlcyB0aGF0IG9ubHkgYXBwbHkgdG8gdGhlIGxlZ2FjeSBhcHBlYXJhbmNlIG9mIHRoZSBmb3JtLWZpZWxkLlxuXG5AbWl4aW4gbWF0LWZvcm0tZmllbGQtbGVnYWN5LXRoZW1lKCR0aGVtZSkge1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLWdldCgkdGhlbWUsIGlzLWRhcmspO1xuXG4gICRsYWJlbC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gICR1bmRlcmxpbmUtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDAuNywgMC40MikpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgIGNvbG9yOiAkbGFiZWwtY29sb3I7XG4gICAgfVxuXG4gICAgLm1hdC1oaW50IHtcbiAgICAgIGNvbG9yOiAkbGFiZWwtY29sb3I7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBAaW5jbHVkZSBtYXQtY29udHJvbC1kaXNhYmxlZC11bmRlcmxpbmUoJHVuZGVybGluZS1jb2xvcik7XG4gICAgfVxuICB9XG59XG5cbi8vIFVzZWQgdG8gbWFrZSBpbnN0YW5jZXMgb2YgdGhlIF9tYXQtZm9ybS1maWVsZC1sYWJlbC1mbG9hdGluZyBtaXhpbiBuZWdsaWdpYmx5IGRpZmZlcmVudCxcbi8vIGFuZCBwcmV2ZW50IEdvb2dsZSdzIENTUyBPcHRpbWl6ZXIgZnJvbSBjb2xsYXBzaW5nIHRoZSBkZWNsYXJhdGlvbnMuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZVxuLy8gb2YgdGhlIHNlbGVjdG9ycyBjb250YWluIHBzZXVkby1jbGFzc2VzIG5vdCByZWNvZ25pemVkIGluIGFsbCBicm93c2Vycy4gSWYgYSBicm93c2VyIGVuY291bnRlcnNcbi8vIGFuIHVua25vd24gcHNldWRvLWNsYXNzIGl0IHdpbGwgZGlzY2FyZCB0aGUgZW50aXJlIHJ1bGUgc2V0LlxuJG1hdC1mb3JtLWZpZWxkLWxlZ2FjeS1kZWR1cGU6IDA7XG5cbi8vIEFwcGxpZXMgYSBmbG9hdGluZyBsYWJlbCBhYm92ZSB0aGUgZm9ybSBmaWVsZCBjb250cm9sIGl0c2VsZi5cbkBtaXhpbiBfbWF0LWZvcm0tZmllbGQtbGVnYWN5LWxhYmVsLWZsb2F0aW5nKCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgLy8gV2UgdXNlIHBlcnNwZWN0aXZlIHRvIGZpeCB0aGUgdGV4dCBibHVycmluZXNzIGFzIGRlc2NyaWJlZCBoZXJlOlxuICAvLyBodHRwOi8vd3d3LnVzZXJhZ2VudG1hbi5jb20vYmxvZy8yMDE0LzA1LzA0L2ZpeGluZy10eXBvZ3JhcGh5LWluc2lkZS1vZi0yLWQtY3NzLXRyYW5zZm9ybXMvXG4gIC8vIFRoaXMgcmVzdWx0cyBpbiBhIHNtYWxsIGppdHRlciBhZnRlciB0aGUgbGFiZWwgZmxvYXRzIG9uIEZpcmVmb3gsIHdoaWNoIHRoZVxuICAvLyB0cmFuc2xhdGVaIGZpeGVzLlxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRpbmZpeC1tYXJnaW4tdG9wIC0gJGluZml4LXBhZGRpbmcpIHNjYWxlKCRmb250LXNjYWxlKSBwZXJzcGVjdGl2ZSgxMDBweClcbiAgdHJhbnNsYXRlWigwLjAwMXB4ICsgJG1hdC1mb3JtLWZpZWxkLWxlZ2FjeS1kZWR1cGUpO1xuICAvLyBUaGUgdHJpY2tzIGFib3ZlIHVzZWQgdG8gc21vb3RoIG91dCB0aGUgYW5pbWF0aW9uIG9uIGNocm9tZSBhbmQgZmlyZWZveCBhY3R1YWxseSBtYWtlIHRoaW5nc1xuICAvLyB3b3JzZSBvbiBJRSwgc28gd2UgZG9uJ3QgaW5jbHVkZSB0aGVtIGluIHRoZSBJRSB2ZXJzaW9uLlxuICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJG1hdC1mb3JtLWZpZWxkLWxlZ2FjeS1kZWR1cGUpXG4gICAgICAgICAgICAgICAgICBzY2FsZSgkZm9udC1zY2FsZSk7XG5cbiAgd2lkdGg6IDEwMCUgLyAkZm9udC1zY2FsZSArICRtYXQtZm9ybS1maWVsZC1sZWdhY3ktZGVkdXBlO1xuXG4gICRtYXQtZm9ybS1maWVsZC1sZWdhY3ktZGVkdXBlOiAkbWF0LWZvcm0tZmllbGQtbGVnYWN5LWRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuLy8gU2FtZSBhcyBtaXhpbiBhYm92ZSwgYnV0IG9taXRzIHRoZSB0cmFuc2xhdGVaIGZvciBwcmludGluZyBwdXJwb3Nlcy5cbkBtaXhpbiBfbWF0LWZvcm0tZmllbGQtbGVnYWN5LWxhYmVsLWZsb2F0aW5nLXByaW50KCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgLy8gVGhpcyByZXN1bHRzIGluIGEgc21hbGwgaml0dGVyIGFmdGVyIHRoZSBsYWJlbCBmbG9hdHMgb24gRmlyZWZveCwgd2hpY2ggdGhlXG4gIC8vIHRyYW5zbGF0ZVogZml4ZXMuXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJGluZml4LW1hcmdpbi10b3AgLSAkaW5maXgtcGFkZGluZyArICRtYXQtZm9ybS1maWVsZC1sZWdhY3ktZGVkdXBlKVxuICAgICAgICAgICAgICAgICAgc2NhbGUoJGZvbnQtc2NhbGUpO1xuICAvLyBUaGUgdHJpY2tzIGFib3ZlIHVzZWQgdG8gc21vb3RoIG91dCB0aGUgYW5pbWF0aW9uIG9uIGNocm9tZSBhbmQgZmlyZWZveCBhY3R1YWxseSBtYWtlIHRoaW5nc1xuICAvLyB3b3JzZSBvbiBJRSwgc28gd2UgZG9uJ3QgaW5jbHVkZSB0aGVtIGluIHRoZSBJRSB2ZXJzaW9uLlxuICAkbWF0LWZvcm0tZmllbGQtbGVnYWN5LWRlZHVwZTogJG1hdC1mb3JtLWZpZWxkLWxlZ2FjeS1kZWR1cGUgKyAwLjAwMDAxICFnbG9iYWw7XG59XG5cbkBtaXhpbiBtYXQtZm9ybS1maWVsZC1sZWdhY3ktdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC8vIFRoZSB1bml0LWxlc3MgbGluZS1oZWlnaHQgZnJvbSB0aGUgZm9udCBjb25maWcuXG4gICRsaW5lLWhlaWdodDogbWF0LWxpbmUtaGVpZ2h0KCRjb25maWcsIGlucHV0KTtcbiAgLy8gVGhlIGFtb3VudCB0byBzY2FsZSB0aGUgZm9udCBmb3IgdGhlIGZsb2F0aW5nIGxhYmVsIGFuZCBzdWJzY3JpcHQuXG4gICRzdWJzY3JpcHQtZm9udC1zY2FsZTogMC43NTtcbiAgLy8gVGhlIGFtb3VudCBvZiBzcGFjZSBiZXR3ZWVuIHRoZSB0b3Agb2YgdGhlIGxpbmUgYW5kIHRoZSB0b3Agb2YgdGhlIGFjdHVhbCB0ZXh0XG4gIC8vIChhcyBhIGZyYWN0aW9uIG9mIHRoZSBmb250LXNpemUpLlxuICAkbGluZS1zcGFjaW5nOiAoJGxpbmUtaGVpZ2h0IC0gMSkgLyAyO1xuICAvLyBUaGUgcGFkZGluZyBvbiB0aGUgaW5maXguIE1vY2tzIHNob3cgaGFsZiBvZiB0aGUgdGV4dCBzaXplLCBidXQgc2VlbSB0byBtZWFzdXJlIGZyb20gdGhlIGVkZ2VcbiAgLy8gb2YgdGhlIHRleHQgaXRzZWxmLCBub3QgdGhlIGVkZ2Ugb2YgdGhlIGxpbmU7IHRoZXJlZm9yZSB3ZSBzdWJ0cmFjdCBvZmYgdGhlIGxpbmUgc3BhY2luZy5cbiAgJGluZml4LXBhZGRpbmc6IDAuNWVtIC0gJGxpbmUtc3BhY2luZztcbiAgLy8gVGhlIG1hcmdpbiBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLWluZml4IHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBmbG9hdGluZyBsYWJlbC5cbiAgJGluZml4LW1hcmdpbi10b3A6IDFlbSAqICRsaW5lLWhlaWdodCAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIHNwYWNlIGJldHdlZW4gdGhlIGJvdHRvbSBvZiB0aGUgLm1hdC1mb3JtLWZpZWxkLWZsZXggYXJlYSBhbmQgdGhlIHN1YnNjcmlwdCB3cmFwcGVyLlxuICAvLyBNb2NrcyBzaG93IGhhbGYgb2YgdGhlIHRleHQgc2l6ZSwgYnV0IHRoaXMgbWFyZ2luIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHRoZSBzdWJzY3JpcHRcbiAgLy8gdGV4dCBmb250IHNpemUsIHNvIHdlIG5lZWQgdG8gZGl2aWRlIGJ5IHRoZSBzY2FsZSBmYWN0b3IgdG8gbWFrZSBpdCBoYWxmIG9mIHRoZSBvcmlnaW5hbCB0ZXh0XG4gIC8vIHNpemUuIFdlIGFnYWluIG5lZWQgdG8gc3VidHJhY3Qgb2ZmIHRoZSBsaW5lIHNwYWNpbmcgc2luY2UgdGhlIG1vY2tzIG1lYXN1cmUgdG8gdGhlIGVkZ2Ugb2YgdGhlXG4gIC8vIHRleHQsIG5vdCB0aGUgIGVkZ2Ugb2YgdGhlIGxpbmUuXG4gICRzdWJzY3JpcHQtbWFyZ2luLXRvcDogMC41ZW0gLyAkc3Vic2NyaXB0LWZvbnQtc2NhbGUgLSAoJGxpbmUtc3BhY2luZyAqIDIpO1xuICAvLyBUaGUgcGFkZGluZyBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLXdyYXBwZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIHN1YnNjcmlwdCwgc2luY2UgaXQnc1xuICAvLyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQuIFRoaXMgaXMgYSBjb21iaW5hdGlvbiBvZiB0aGUgc3Vic2NyaXB0J3MgbWFyZ2luIGFuZCBsaW5lLWhlaWdodCwgYnV0IHdlXG4gIC8vIG5lZWQgdG8gbXVsdGlwbHkgYnkgdGhlIHN1YnNjcmlwdCBmb250IHNjYWxlIGZhY3RvciBzaW5jZSB0aGUgd3JhcHBlciBoYXMgYSBsYXJnZXIgZm9udCBzaXplLlxuICAkd3JhcHBlci1wYWRkaW5nLWJvdHRvbTogKCRzdWJzY3JpcHQtbWFyZ2luLXRvcCArICRsaW5lLWhlaWdodCkgKiAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IHtcbiAgICAubWF0LWZvcm0tZmllbGQtd3JhcHBlciB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHdyYXBwZXItcGFkZGluZy1ib3R0b207XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLWluZml4IHtcbiAgICAgIHBhZGRpbmc6ICRpbmZpeC1wYWRkaW5nIDA7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQge1xuICAgICAgJi5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbWF0LWZvcm0tZmllbGQtbGVnYWN5LWxhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cblxuICAgICAgLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMCB3aWxsIHJlbHkgb24gQXV0b2ZpbGxNb25pdG9yIGluc3RlYWQuXG4gICAgICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbDotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9tYXQtZm9ybS1maWVsZC1sZWdhY3ktbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXJ2ZXItc2lkZSByZW5kZXJlZCBtYXRJbnB1dCB3aXRoIGEgbGFiZWwgYXR0cmlidXRlIGJ1dCBsYWJlbCBub3Qgc2hvd25cbiAgICAgIC8vICh1c2VkIGFzIGEgcHVyZSBDU1Mgc3RhbmQtaW4gZm9yIG1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCkuXG4gICAgICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgX21hdC1mb3JtLWZpZWxkLWxlZ2FjeS1sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgIHRvcDogJGluZml4LW1hcmdpbi10b3AgKyAkaW5maXgtcGFkZGluZztcbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIHtcbiAgICAgIC8vIFdlIHdhbnQgdGhlIHVuZGVybGluZSB0byBzdGFydCBhdCB0aGUgZW5kIG9mIHRoZSBjb250ZW50IGJveCwgbm90IHRoZSBwYWRkaW5nIGJveCxcbiAgICAgIC8vIHNvIHdlIG1vdmUgaXQgdXAgYnkgdGhlIHBhZGRpbmcgYW1vdW50LlxuICAgICAgYm90dG9tOiAkd3JhcHBlci1wYWRkaW5nLWJvdHRvbTtcbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXIge1xuICAgICAgbWFyZ2luLXRvcDogJHN1YnNjcmlwdC1tYXJnaW4tdG9wO1xuXG4gICAgICAvLyBXZSB3YW50IHRoZSBzdWJzY3JpcHQgdG8gc3RhcnQgYXQgdGhlIGVuZCBvZiB0aGUgY29udGVudCBib3gsIG5vdCB0aGUgcGFkZGluZyBib3gsXG4gICAgICAvLyBzbyB3ZSBtb3ZlIGl0IHVwIGJ5IHRoZSBwYWRkaW5nIGFtb3VudCAoYWRqdXN0ZWQgZm9yIHRoZSBzbWFsbGVyIGZvbnQgc2l6ZSk7XG4gICAgICB0b3A6IGNhbGMoMTAwJSAtICN7JHdyYXBwZXItcGFkZGluZy1ib3R0b20gLyAkc3Vic2NyaXB0LWZvbnQtc2NhbGV9KTtcbiAgICB9XG4gIH1cblxuICAvLyB0cmFuc2xhdGVaIGNhdXNlcyB0aGUgbGFiZWwgdG8gbm90IGFwcGVhciB3aGlsZSBwcmludGluZywgc28gd2Ugb3ZlcnJpZGUgaXQgdG8gbm90XG4gIC8vIGFwcGx5IHRyYW5zbGF0ZVogd2hpbGUgcHJpbnRpbmdcbiAgQG1lZGlhIHByaW50IHtcbiAgICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kge1xuICAgICAgJi5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQge1xuICAgICAgICAmLm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsXG4gICAgICAgIC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgICBAaW5jbHVkZSBfbWF0LWZvcm0tZmllbGQtbGVnYWN5LWxhYmVsLWZsb2F0aW5nLXByaW50KFxuICAgICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMCB3aWxsIHJlbHkgb24gQXV0b2ZpbGxNb25pdG9yIGluc3RlYWQuXG4gICAgICAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICAgIEBpbmNsdWRlIF9tYXQtZm9ybS1maWVsZC1sZWdhY3ktbGFiZWwtZmxvYXRpbmctcHJpbnQoXG4gICAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXJ2ZXItc2lkZSByZW5kZXJlZCBtYXRJbnB1dCB3aXRoIGEgbGFiZWwgYXR0cmlidXRlIGJ1dCBsYWJlbCBub3Qgc2hvd25cbiAgICAgICAgLy8gKHVzZWQgYXMgYSBwdXJlIENTUyBzdGFuZC1pbiBmb3IgbWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0KS5cbiAgICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgICBAaW5jbHVkZSBfbWF0LWZvcm0tZmllbGQtbGVnYWN5LWxhYmVsLWZsb2F0aW5nLXByaW50KFxuICAgICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuXG5cbi8vIFRoZW1lIHN0eWxlcyB0aGF0IG9ubHkgYXBwbHkgdG8gdGhlIG91dGxpbmUgYXBwZWFyYW5jZSBvZiB0aGUgZm9ybS1maWVsZC5cblxuQG1peGluIG1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhlbWUoJHRoZW1lKSB7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLWdldCgkdGhlbWUsIGlzLWRhcmspO1xuXG4gICRsYWJlbC1kaXNhYmxlZC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgJG91dGxpbmUtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDAuMywgMC4xMikpO1xuICAkb3V0bGluZS1jb2xvci1ob3ZlcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyLCBpZigkaXMtZGFyay10aGVtZSwgMSwgMC44NykpO1xuICAkb3V0bGluZS1jb2xvci1wcmltYXJ5OiBtYXQtY29sb3IoJHByaW1hcnkpO1xuICAkb3V0bGluZS1jb2xvci1hY2NlbnQ6IG1hdC1jb2xvcigkYWNjZW50KTtcbiAgJG91dGxpbmUtY29sb3Itd2FybjogbWF0LWNvbG9yKCR3YXJuKTtcbiAgJG91dGxpbmUtY29sb3ItZGlzYWJsZWQ6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDAuMTUsIDAuMDYpKTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIHtcbiAgICAubWF0LWZvcm0tZmllbGQtb3V0bGluZSB7XG4gICAgICBjb2xvcjogJG91dGxpbmUtY29sb3I7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sge1xuICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yLWhvdmVyO1xuICAgIH1cblxuICAgICYubWF0LWZvY3VzZWQge1xuICAgICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sge1xuICAgICAgICBjb2xvcjogJG91dGxpbmUtY29sb3ItcHJpbWFyeTtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtYWNjZW50IC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIHtcbiAgICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yLWFjY2VudDtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtd2FybiAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayB7XG4gICAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvci13YXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENsYXNzIHJlcGVhdGVkIHNvIHRoYXQgcnVsZSBpcyBzcGVjaWZpYyBlbm91Z2ggdG8gb3ZlcnJpZGUgZm9jdXNlZCBhY2NlbnQgY29sb3IgY2FzZS5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZCB7XG4gICAgICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayB7XG4gICAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvci13YXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQge1xuICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgY29sb3I6ICRsYWJlbC1kaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUge1xuICAgICAgICBjb2xvcjogJG91dGxpbmUtY29sb3ItZGlzYWJsZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFVzZWQgdG8gbWFrZSBpbnN0YW5jZXMgb2YgdGhlIF9tYXQtZm9ybS1maWVsZC1sYWJlbC1mbG9hdGluZyBtaXhpbiBuZWdsaWdpYmx5IGRpZmZlcmVudCxcbi8vIGFuZCBwcmV2ZW50IEdvb2dsZSdzIENTUyBPcHRpbWl6ZXIgZnJvbSBjb2xsYXBzaW5nIHRoZSBkZWNsYXJhdGlvbnMuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZVxuLy8gb2YgdGhlIHNlbGVjdG9ycyBjb250YWluIHBzZXVkby1jbGFzc2VzIG5vdCByZWNvZ25pemVkIGluIGFsbCBicm93c2Vycy4gSWYgYSBicm93c2VyIGVuY291bnRlcnNcbi8vIGFuIHVua25vd24gcHNldWRvLWNsYXNzIGl0IHdpbGwgZGlzY2FyZCB0aGUgZW50aXJlIHJ1bGUgc2V0LlxuJG1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZGVkdXBlOiAwO1xuXG4vLyBBcHBsaWVzIGEgZmxvYXRpbmcgbGFiZWwgYWJvdmUgdGhlIGZvcm0gZmllbGQgY29udHJvbCBpdHNlbGYuXG5AbWl4aW4gX21hdC1mb3JtLWZpZWxkLW91dGxpbmUtbGFiZWwtZmxvYXRpbmcoJGZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCkge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRpbmZpeC1tYXJnaW4tdG9wIC0gJGluZml4LXBhZGRpbmcgKyAkbWF0LWZvcm0tZmllbGQtb3V0bGluZS1kZWR1cGUpXG4gIHNjYWxlKCRmb250LXNjYWxlKTtcbiAgd2lkdGg6IDEwMCUgLyAkZm9udC1zY2FsZSArICRtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWRlZHVwZTtcblxuICAkbWF0LWZvcm0tZmllbGQtb3V0bGluZS1kZWR1cGU6ICRtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuQG1peGluIG1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC8vIFRoZSB1bml0LWxlc3MgbGluZS1oZWlnaHQgZnJvbSB0aGUgZm9udCBjb25maWcuXG4gICRsaW5lLWhlaWdodDogbWF0LWxpbmUtaGVpZ2h0KCRjb25maWcsIGlucHV0KTtcbiAgLy8gVGhlIGFtb3VudCB0byBzY2FsZSB0aGUgZm9udCBmb3IgdGhlIGZsb2F0aW5nIGxhYmVsIGFuZCBzdWJzY3JpcHQuXG4gICRzdWJzY3JpcHQtZm9udC1zY2FsZTogMC43NTtcbiAgLy8gVGhlIHBhZGRpbmcgYWJvdmUgYW5kIGJlbG93IHRoZSBpbmZpeC5cbiAgJGluZml4LXBhZGRpbmc6IDFlbTtcbiAgLy8gVGhlIG1hcmdpbiBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLWluZml4IHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBmbG9hdGluZyBsYWJlbC5cbiAgJGluZml4LW1hcmdpbi10b3A6IDFlbSAqICRsaW5lLWhlaWdodCAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIHNwYWNlIGJldHdlZW4gdGhlIGJvdHRvbSBvZiB0aGUgLm1hdC1mb3JtLWZpZWxkLWZsZXggYXJlYSBhbmQgdGhlIHN1YnNjcmlwdCB3cmFwcGVyLlxuICAvLyBNb2NrcyBzaG93IGhhbGYgb2YgdGhlIHRleHQgc2l6ZSwgYnV0IHRoaXMgbWFyZ2luIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHRoZSBzdWJzY3JpcHRcbiAgLy8gdGV4dCBmb250IHNpemUsIHNvIHdlIG5lZWQgdG8gZGl2aWRlIGJ5IHRoZSBzY2FsZSBmYWN0b3IgdG8gbWFrZSBpdCBoYWxmIG9mIHRoZSBvcmlnaW5hbCB0ZXh0XG4gIC8vIHNpemUuXG4gICRzdWJzY3JpcHQtbWFyZ2luLXRvcDogMC41ZW0gLyAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBwYWRkaW5nIGFwcGxpZWQgdG8gdGhlIGZvcm0tZmllbGQtd3JhcHBlciB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgc3Vic2NyaXB0LCBzaW5jZSBpdCdzXG4gIC8vIGFic29sdXRlbHkgcG9zaXRpb25lZC4gVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBzdWJzY3JpcHQncyBtYXJnaW4gYW5kIGxpbmUtaGVpZ2h0LCBidXQgd2VcbiAgLy8gbmVlZCB0byBtdWx0aXBseSBieSB0aGUgc3Vic2NyaXB0IGZvbnQgc2NhbGUgZmFjdG9yIHNpbmNlIHRoZSB3cmFwcGVyIGhhcyBhIGxhcmdlciBmb250IHNpemUuXG4gICR3cmFwcGVyLXBhZGRpbmctYm90dG9tOiAoJHN1YnNjcmlwdC1tYXJnaW4tdG9wICsgJGxpbmUtaGVpZ2h0KSAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIGFtb3VudCB3ZSBvZmZzZXQgdGhlIGxhYmVsIGZyb20gdGhlIGlucHV0IHRleHQgaW4gdGhlIG91dGxpbmUgYXBwZWFyYW5jZS5cbiAgJG91dGxpbmUtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQ6IC0wLjI1ZW07XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWluZml4IHtcbiAgICAgIHBhZGRpbmc6ICRpbmZpeC1wYWRkaW5nIDAgJGluZml4LXBhZGRpbmcgMDtcbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgdG9wOiAkaW5maXgtbWFyZ2luLXRvcCArICRpbmZpeC1wYWRkaW5nO1xuICAgICAgbWFyZ2luLXRvcDogJG91dGxpbmUtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQ7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQge1xuICAgICAgJi5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbWF0LWZvcm0tZmllbGQtb3V0bGluZS1sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nICsgJG91dGxpbmUtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQsXG4gICAgICAgICAgICAgICAgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXJ2ZXItc2lkZSByZW5kZXJlZCBtYXRJbnB1dCB3aXRoIGEgbGFiZWwgYXR0cmlidXRlIGJ1dCBsYWJlbCBub3Qgc2hvd25cbiAgICAgIC8vICh1c2VkIGFzIGEgcHVyZSBDU1Mgc3RhbmQtaW4gZm9yIG1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCkuXG4gICAgICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgX21hdC1mb3JtLWZpZWxkLW91dGxpbmUtbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZyArICRvdXRsaW5lLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0LFxuICAgICAgICAgICAgICAgICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5cblxuLy8gVGhlbWUgc3R5bGVzIHRoYXQgb25seSBhcHBseSB0byB0aGUgc3RhbmRhcmQgYXBwZWFyYW5jZSBvZiB0aGUgZm9ybS1maWVsZC5cblxuQG1peGluIG1hdC1mb3JtLWZpZWxkLXN0YW5kYXJkLXRoZW1lKCR0aGVtZSkge1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLWdldCgkdGhlbWUsIGlzLWRhcmspO1xuXG4gICR1bmRlcmxpbmUtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDAuNywgMC40MikpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcbiAgICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR1bmRlcmxpbmUtY29sb3I7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1jb250cm9sLWRpc2FibGVkLXVuZGVybGluZSgkdW5kZXJsaW5lLWNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1mb3JtLWZpZWxkLXN0YW5kYXJkLXR5cG9ncmFwaHkoJGNvbmZpZykge31cblxuXG4vLyBUaGVtZSBzdHlsZXMgdGhhdCBhcHBseSB0byBhbGwgYXBwZWFyYW5jZXMgb2YgdGhlIGZvcm0tZmllbGQuXG5AbWl4aW4gbWF0LWZvcm0tZmllbGQtdGhlbWUoJHRoZW1lKSB7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLWdldCgkdGhlbWUsIGlzLWRhcmspO1xuXG4gIC8vIExhYmVsIGNvbG9ycy4gUmVxdWlyZWQgaXMgdXNlZCBmb3IgdGhlIGAqYCBzdGFyIHNob3duIGluIHRoZSBsYWJlbC5cbiAgJGxhYmVsLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0LCBpZigkaXMtZGFyay10aGVtZSwgMC43LCAwLjYpKTtcbiAgJGZvY3VzZWQtbGFiZWwtY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSk7XG4gICRyZXF1aXJlZC1sYWJlbC1jb2xvcjogbWF0LWNvbG9yKCRhY2NlbnQpO1xuXG4gIC8vIFVuZGVybGluZSBjb2xvcnMuXG4gICR1bmRlcmxpbmUtY29sb3ItYmFzZTogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyLCBpZigkaXMtZGFyay10aGVtZSwgMSwgMC44NykpO1xuICAkdW5kZXJsaW5lLWNvbG9yLWFjY2VudDogbWF0LWNvbG9yKCRhY2NlbnQpO1xuICAkdW5kZXJsaW5lLWNvbG9yLXdhcm46IG1hdC1jb2xvcigkd2Fybik7XG4gICR1bmRlcmxpbmUtZm9jdXNlZC1jb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5KTtcblxuICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgIGNvbG9yOiAkbGFiZWwtY29sb3I7XG4gIH1cblxuICAubWF0LWhpbnQge1xuICAgIGNvbG9yOiAkbGFiZWwtY29sb3I7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICBjb2xvcjogJGZvY3VzZWQtbGFiZWwtY29sb3I7XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3ItYWNjZW50O1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgICB9XG4gIH1cblxuICAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlciB7XG4gICAgY29sb3I6ICRyZXF1aXJlZC1sYWJlbC1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR1bmRlcmxpbmUtY29sb3ItYmFzZTtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWZvY3VzZWQtY29sb3I7XG5cbiAgICAgICYubWF0LWFjY2VudCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR1bmRlcmxpbmUtY29sb3ItYWNjZW50O1xuICAgICAgfVxuXG4gICAgICAmLm1hdC13YXJuIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkge1xuICAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgICAgY29sb3I6ICR1bmRlcmxpbmUtZm9jdXNlZC1jb2xvcjtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlciB7XG4gICAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci1hY2NlbnQ7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVyIHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG4gICAgfVxuICB9XG5cbiAgLy8gU3R5bGluZyBmb3IgdGhlIGVycm9yIHN0YXRlIG9mIHRoZSBmb3JtIGZpZWxkLiBOb3RlIHRoYXQgd2hpbGUgdGhlIHNhbWUgY2FuIGJlXG4gIC8vIGFjaGlldmVkIHdpdGggdGhlIG5nLSogY2xhc3Nlcywgd2UgdXNlIHRoaXMgYXBwcm9hY2ggaW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgdGhlIHNhbWVcbiAgLy8gbG9naWMgaXMgdXNlZCB0byBzdHlsZSB0aGUgZXJyb3Igc3RhdGUgYW5kIHRvIHNob3cgdGhlIGVycm9yIG1lc3NhZ2VzLlxuICAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG5cbiAgICAgICYubWF0LWFjY2VudCxcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXIge1xuICAgICAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUsXG4gICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgICB9XG4gIH1cblxuICAubWF0LWVycm9yIHtcbiAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuICB9XG5cbiAgQGluY2x1ZGUgbWF0LWZvcm0tZmllbGQtbGVnYWN5LXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1mb3JtLWZpZWxkLXN0YW5kYXJkLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1mb3JtLWZpZWxkLWZpbGwtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGVtZSgkdGhlbWUpO1xufVxuXG4vLyBVc2VkIHRvIG1ha2UgaW5zdGFuY2VzIG9mIHRoZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcgbWl4aW4gbmVnbGlnaWJseSBkaWZmZXJlbnQsXG4vLyBhbmQgcHJldmVudCBHb29nbGUncyBDU1MgT3B0aW1pemVyIGZyb20gY29sbGFwc2luZyB0aGUgZGVjbGFyYXRpb25zLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWVcbi8vIG9mIHRoZSBzZWxlY3RvcnMgY29udGFpbiBwc2V1ZG8tY2xhc3NlcyBub3QgcmVjb2duaXplZCBpbiBhbGwgYnJvd3NlcnMuIElmIGEgYnJvd3NlciBlbmNvdW50ZXJzXG4vLyBhbiB1bmtub3duIHBzZXVkby1jbGFzcyBpdCB3aWxsIGRpc2NhcmQgdGhlIGVudGlyZSBydWxlIHNldC5cbiRtYXQtZm9ybS1maWVsZC1kZWR1cGU6IDA7XG5cbi8vIEFwcGxpZXMgYSBmbG9hdGluZyBsYWJlbCBhYm92ZSB0aGUgZm9ybSBmaWVsZCBjb250cm9sIGl0c2VsZi5cbkBtaXhpbiBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcoJGZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCkge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRpbmZpeC1tYXJnaW4tdG9wIC0gJGluZml4LXBhZGRpbmcgKyAkbWF0LWZvcm0tZmllbGQtZGVkdXBlKVxuICAgICAgICAgICAgIHNjYWxlKCRmb250LXNjYWxlKTtcbiAgd2lkdGg6IDEwMCUgLyAkZm9udC1zY2FsZSArICRtYXQtZm9ybS1maWVsZC1kZWR1cGU7XG5cbiAgJG1hdC1mb3JtLWZpZWxkLWRlZHVwZTogJG1hdC1mb3JtLWZpZWxkLWRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuQG1peGluIG1hdC1mb3JtLWZpZWxkLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAvLyBUaGUgdW5pdC1sZXNzIGxpbmUtaGVpZ2h0IGZyb20gdGhlIGZvbnQgY29uZmlnLlxuICAkbGluZS1oZWlnaHQ6IG1hdC1saW5lLWhlaWdodCgkY29uZmlnLCBpbnB1dCk7XG5cbiAgLy8gVGhlIGFtb3VudCB0byBzY2FsZSB0aGUgZm9udCBmb3IgdGhlIGZsb2F0aW5nIGxhYmVsIGFuZCBzdWJzY3JpcHQuXG4gICRzdWJzY3JpcHQtZm9udC1zY2FsZTogMC43NTtcbiAgLy8gVGhlIGFtb3VudCB0byBzY2FsZSB0aGUgZm9udCBmb3IgdGhlIHByZWZpeCBhbmQgc3VmZml4IGljb25zLlxuICAkcHJlZml4LXN1ZmZpeC1pY29uLWZvbnQtc2NhbGU6IDEuNTtcblxuICAvLyBUaGUgcGFkZGluZyBvbiB0aGUgaW5maXguIE1vY2tzIHNob3cgaGFsZiBvZiB0aGUgdGV4dCBzaXplLlxuICAkaW5maXgtcGFkZGluZzogMC41ZW07XG4gIC8vIFRoZSBtYXJnaW4gYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC1pbmZpeCB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgZmxvYXRpbmcgbGFiZWwuXG4gICRpbmZpeC1tYXJnaW4tdG9wOiAxZW0gKiAkbGluZS1oZWlnaHQgKiAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIEZvbnQgc2l6ZSB0byB1c2UgZm9yIHRoZSBsYWJlbCBhbmQgc3Vic2NyaXB0IHRleHQuXG4gICRzdWJzY3JpcHQtZm9udC1zaXplOiAkc3Vic2NyaXB0LWZvbnQtc2NhbGUgKiAxMDAlO1xuICAvLyBGb250IHNpemUgdG8gdXNlIGZvciB0aGUgZm9yIHRoZSBwcmVmaXggYW5kIHN1ZmZpeCBpY29ucy5cbiAgJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNpemU6ICRwcmVmaXgtc3VmZml4LWljb24tZm9udC1zY2FsZSAqIDEwMCU7XG4gIC8vIFRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBib3R0b20gb2YgdGhlIC5tYXQtZm9ybS1maWVsZC1mbGV4IGFyZWEgYW5kIHRoZSBzdWJzY3JpcHQgd3JhcHBlci5cbiAgLy8gTW9ja3Mgc2hvdyBoYWxmIG9mIHRoZSB0ZXh0IHNpemUsIGJ1dCB0aGlzIG1hcmdpbiBpcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCB0aGUgc3Vic2NyaXB0XG4gIC8vIHRleHQgZm9udCBzaXplLCBzbyB3ZSBuZWVkIHRvIGRpdmlkZSBieSB0aGUgc2NhbGUgZmFjdG9yIHRvIG1ha2UgaXQgaGFsZiBvZiB0aGUgb3JpZ2luYWwgdGV4dFxuICAvLyBzaXplLlxuICAkc3Vic2NyaXB0LW1hcmdpbi10b3A6IDAuNWVtIC8gJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuICAvLyBUaGUgcGFkZGluZyBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLXdyYXBwZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIHN1YnNjcmlwdCwgc2luY2UgaXQnc1xuICAvLyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQuIFRoaXMgaXMgYSBjb21iaW5hdGlvbiBvZiB0aGUgc3Vic2NyaXB0J3MgbWFyZ2luIGFuZCBsaW5lLWhlaWdodCwgYnV0IHdlXG4gIC8vIG5lZWQgdG8gbXVsdGlwbHkgYnkgdGhlIHN1YnNjcmlwdCBmb250IHNjYWxlIGZhY3RvciBzaW5jZSB0aGUgd3JhcHBlciBoYXMgYSBsYXJnZXIgZm9udCBzaXplLlxuICAkd3JhcHBlci1wYWRkaW5nLWJvdHRvbTogKCRzdWJzY3JpcHQtbWFyZ2luLXRvcCArICRsaW5lLWhlaWdodCkgKiAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG5cbiAgLm1hdC1mb3JtLWZpZWxkIHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgaW5wdXQpO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXIge1xuICAgIHBhZGRpbmctYm90dG9tOiAkd3JhcHBlci1wYWRkaW5nLWJvdHRvbTtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1wcmVmaXgsXG4gIC5tYXQtZm9ybS1maWVsZC1zdWZmaXgge1xuICAgIC8vIEFsbG93IGljb25zIGluIGEgcHJlZml4IG9yIHN1ZmZpeCB0byBhZGFwdCB0byB0aGUgY29ycmVjdCBzaXplLlxuICAgIC5tYXQtaWNvbiB7XG4gICAgICBmb250LXNpemU6ICRwcmVmaXgtc3VmZml4LWljb24tZm9udC1zaXplO1xuICAgICAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodDtcbiAgICB9XG5cbiAgICAvLyBBbGxvdyBpY29uIGJ1dHRvbnMgaW4gYSBwcmVmaXggb3Igc3VmZml4IHRvIGFkYXB0IHRvIHRoZSBjb3JyZWN0IHNpemUuXG4gICAgLm1hdC1pY29uLWJ1dHRvbiB7XG4gICAgICBoZWlnaHQ6ICRwcmVmaXgtc3VmZml4LWljb24tZm9udC1zY2FsZSAqIDFlbTtcbiAgICAgIHdpZHRoOiAkcHJlZml4LXN1ZmZpeC1pY29uLWZvbnQtc2NhbGUgKiAxZW07XG5cbiAgICAgIC5tYXQtaWNvbiB7XG4gICAgICAgIGhlaWdodDogJGxpbmUtaGVpZ2h0ICogMWVtO1xuICAgICAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1pbmZpeCB7XG4gICAgcGFkZGluZzogJGluZml4LXBhZGRpbmcgMDtcbiAgICAvLyBUaHJvd3Mgb2ZmIHRoZSBiYXNlbGluZSBpZiB3ZSBkbyBpdCBhcyBhIHJlYWwgbWFyZ2luLCBzbyB3ZSBkbyBpdCBhcyBhIGJvcmRlciBpbnN0ZWFkLlxuICAgIGJvcmRlci10b3A6ICRpbmZpeC1tYXJnaW4tdG9wIHNvbGlkIHRyYW5zcGFyZW50O1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCB7XG4gICAgJi5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAgIC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtZm9ybS1maWVsZC1sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgIH1cblxuICAgIC8vIFNlcnZlci1zaWRlIHJlbmRlcmVkIG1hdElucHV0IHdpdGggYSBsYWJlbCBhdHRyaWJ1dGUgYnV0IGxhYmVsIG5vdCBzaG93blxuICAgIC8vICh1c2VkIGFzIGEgcHVyZSBDU1Mgc3RhbmQtaW4gZm9yIG1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCkuXG4gICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtZm9ybS1maWVsZC1sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIHtcbiAgICB0b3A6IC0kaW5maXgtbWFyZ2luLXRvcDtcbiAgICBwYWRkaW5nLXRvcDogJGluZml4LW1hcmdpbi10b3A7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgIHRvcDogJGluZml4LW1hcmdpbi10b3AgKyAkaW5maXgtcGFkZGluZztcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUge1xuICAgIC8vIFdlIHdhbnQgdGhlIHVuZGVybGluZSB0byBzdGFydCBhdCB0aGUgZW5kIG9mIHRoZSBjb250ZW50IGJveCwgbm90IHRoZSBwYWRkaW5nIGJveCxcbiAgICAvLyBzbyB3ZSBtb3ZlIGl0IHVwIGJ5IHRoZSBwYWRkaW5nIGFtb3VudC5cbiAgICBib3R0b206ICR3cmFwcGVyLXBhZGRpbmctYm90dG9tO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIHtcbiAgICBmb250LXNpemU6ICRzdWJzY3JpcHQtZm9udC1zaXplO1xuICAgIG1hcmdpbi10b3A6ICRzdWJzY3JpcHQtbWFyZ2luLXRvcDtcblxuICAgIC8vIFdlIHdhbnQgdGhlIHN1YnNjcmlwdCB0byBzdGFydCBhdCB0aGUgZW5kIG9mIHRoZSBjb250ZW50IGJveCwgbm90IHRoZSBwYWRkaW5nIGJveCxcbiAgICAvLyBzbyB3ZSBtb3ZlIGl0IHVwIGJ5IHRoZSBwYWRkaW5nIGFtb3VudCAoYWRqdXN0ZWQgZm9yIHRoZSBzbWFsbGVyIGZvbnQgc2l6ZSk7XG4gICAgdG9wOiBjYWxjKDEwMCUgLSAjeyR3cmFwcGVyLXBhZGRpbmctYm90dG9tIC8gJHN1YnNjcmlwdC1mb250LXNjYWxlfSk7XG4gIH1cblxuICBAaW5jbHVkZSBtYXQtZm9ybS1maWVsZC1sZWdhY3ktdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWZvcm0tZmllbGQtc3RhbmRhcmQtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWZvcm0tZmllbGQtZmlsbC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtZm9ybS1maWVsZC1vdXRsaW5lLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG59XG5cblxuXG5cblxuQG1peGluIG1hdC10cmVlLXRoZW1lKCR0aGVtZSkge1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtdHJlZSB7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCAnY2FyZCcpO1xuICB9XG5cbiAgLm1hdC10cmVlLW5vZGUsXG4gIC5tYXQtbmVzdGVkLXRyZWUtbm9kZSB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cbn1cblxuQG1peGluIG1hdC10cmVlLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LXRyZWUge1xuICAgIGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LXRyZWUtbm9kZSxcbiAgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlIHtcbiAgICBmb250LXdlaWdodDogbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMSk7XG4gICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gIH1cbn1cblxuXG5cbi8vIEluY2x1ZGVzIGFsbCBvZiB0aGUgdHlwb2dyYXBoaWMgc3R5bGVzLlxuQG1peGluIGFuZ3VsYXItbWF0ZXJpYWwtdHlwb2dyYXBoeSgkY29uZmlnOiBudWxsKSB7XG4gIEBpZiAkY29uZmlnID09IG51bGwge1xuICAgICRjb25maWc6IG1hdC10eXBvZ3JhcGh5LWNvbmZpZygpO1xuICB9XG5cbiAgQGluY2x1ZGUgbWF0LWJhZGdlLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1iYXNlLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1hdXRvY29tcGxldGUtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWJvdHRvbS1zaGVldC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtYnV0dG9uLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1idXR0b24tdG9nZ2xlLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1jYXJkLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1jaGVja2JveC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtY2hpcHMtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXRhYmxlLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1kYXRlcGlja2VyLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1kaWFsb2ctdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWV4cGFuc2lvbi1wYW5lbC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtZm9ybS1maWVsZC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtZ3JpZC1saXN0LXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1pY29uLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1pbnB1dC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtbWVudS10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcGFnaW5hdG9yLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcm9ncmVzcy1iYXItdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXByb2dyZXNzLXNwaW5uZXItdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXJhZGlvLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1zZWxlY3QtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXNpZGVuYXYtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXNsaWRlLXRvZ2dsZS10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtc2xpZGVyLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1zdGVwcGVyLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1zb3J0LXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC10YWJzLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC10b29sYmFyLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC10b29sdGlwLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1saXN0LXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1vcHRpb24tdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LW9wdGdyb3VwLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1zbmFjay1iYXItdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXRyZWUtdHlwb2dyYXBoeSgkY29uZmlnKTtcbn1cblxuXG4vLyBNaXhpbiB0aGF0IHJlbmRlcnMgYWxsIG9mIHRoZSBjb3JlIHN0eWxlcyB0aGF0IGFyZSBub3QgdGhlbWUtZGVwZW5kZW50LlxuQG1peGluIG1hdC1jb3JlKCR0eXBvZ3JhcGh5LWNvbmZpZzogbnVsbCkge1xuICBAaW5jbHVkZSBhbmd1bGFyLW1hdGVyaWFsLXR5cG9ncmFwaHkoJHR5cG9ncmFwaHktY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXJpcHBsZSgpO1xuICBAaW5jbHVkZSBjZGstYTExeSgpO1xuICBAaW5jbHVkZSBjZGstb3ZlcmxheSgpO1xuICBAaW5jbHVkZSBjZGstdGV4dC1maWVsZCgpO1xufVxuXG4vLyBNaXhpbiB0aGF0IHJlbmRlcnMgYWxsIG9mIHRoZSBjb3JlIHN0eWxlcyB0aGF0IGRlcGVuZCBvbiB0aGUgdGhlbWUuXG5AbWl4aW4gbWF0LWNvcmUtdGhlbWUoJHRoZW1lKSB7XG4gIEBpbmNsdWRlIG1hdC1yaXBwbGUtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LW9wdGlvbi10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtb3B0Z3JvdXAtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LXBzZXVkby1jaGVja2JveC10aGVtZSgkdGhlbWUpO1xuXG4gIC8vIFByb3ZpZGVzIGV4dGVybmFsIENTUyBjbGFzc2VzIGZvciBlYWNoIGVsZXZhdGlvbiB2YWx1ZS4gRWFjaCBDU1MgY2xhc3MgaXMgZm9ybWF0dGVkIGFzXG4gIC8vIGBtYXQtZWxldmF0aW9uLXokelZhbHVlYCB3aGVyZSBgJHpWYWx1ZWAgY29ycmVzcG9uZHMgdG8gdGhlIHotc3BhY2UgdG8gd2hpY2ggdGhlIGVsZW1lbnQgaXNcbiAgLy8gZWxldmF0ZWQuXG4gIEBmb3IgJHpWYWx1ZSBmcm9tIDAgdGhyb3VnaCAyNCB7XG4gICAgLiN7JF9tYXQtZWxldmF0aW9uLXByZWZpeH0jeyR6VmFsdWV9IHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtZWxldmF0aW9uKCR6VmFsdWUsICR0aGVtZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gV3JhcHBlciBlbGVtZW50IHRoYXQgcHJvdmlkZXMgdGhlIHRoZW1lIGJhY2tncm91bmQgd2hlbiB0aGUgdXNlcidzIGNvbnRlbnQgaXNuJ3RcbiAgLy8gaW5zaWRlIG9mIGEgYG1hdC1zaWRlbmF2LWNvbnRhaW5lcmAuIE5vdGUgdGhhdCB3ZSBuZWVkIHRvIGV4Y2x1ZGUgdGhlIGFtcGVyc2FuZFxuICAvLyBzZWxlY3RvciBpbiBjYXNlIHRoZSBtaXhpbiBpcyBpbmNsdWRlZCBhdCB0aGUgdG9wIGxldmVsLlxuICAubWF0LWFwcC1iYWNrZ3JvdW5kI3tpZigmLCAnLCAmLm1hdC1hcHAtYmFja2dyb3VuZCcsICcnKX0ge1xuICAgICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgYmFja2dyb3VuZCk7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cblxuICAvLyBNYXJrZXIgdGhhdCBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSB1c2VyIGhhcyBhZGRlZCBhIHRoZW1lIHRvIHRoZWlyIHBhZ2UuXG4gIEBhdC1yb290IHtcbiAgICAubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuQG1peGluIG1hdC1kaXZpZGVyLXRoZW1lKCR0aGVtZSkge1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtZGl2aWRlciB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxuXG4gIC5tYXQtZGl2aWRlci12ZXJ0aWNhbCB7XG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG59XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8vIENyZWF0ZSBhIHRoZW1lLlxuQG1peGluIGFuZ3VsYXItbWF0ZXJpYWwtdGhlbWUoJHRoZW1lKSB7XG4gIEBpbmNsdWRlIG1hdC1jb3JlLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1hdXRvY29tcGxldGUtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWJhZGdlLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1ib3R0b20tc2hlZXQtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWJ1dHRvbi10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtYnV0dG9uLXRvZ2dsZS10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtY2FyZC10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtY2hlY2tib3gtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWNoaXBzLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC10YWJsZS10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtZGF0ZXBpY2tlci10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtZGlhbG9nLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1kaXZpZGVyLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1leHBhbnNpb24tcGFuZWwtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWZvcm0tZmllbGQtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWdyaWQtbGlzdC10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtaWNvbi10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtaW5wdXQtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWxpc3QtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LW1lbnUtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LXBhZ2luYXRvci10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtcHJvZ3Jlc3MtYmFyLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1wcm9ncmVzcy1zcGlubmVyLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1yYWRpby10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtc2VsZWN0LXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1zaWRlbmF2LXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1zbGlkZS10b2dnbGUtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LXNsaWRlci10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtc3RlcHBlci10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtc29ydC10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtdGFicy10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtdG9vbGJhci10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtdG9vbHRpcC10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtdHJlZS10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtc25hY2stYmFyLXRoZW1lKCR0aGVtZSk7XG59XG4iLCJAaW1wb3J0ICcuL2JyZWFrcG9pbnRzJztcclxuQGltcG9ydCAnLi90aGVtZSc7XHJcblxyXG4ubWF0LXNpZGVuYXYge1xyXG4gIHdpZHRoOiAzNjBweDtcclxufVxyXG4ubWF0LXNpZGVuYXYtY29udGFpbmVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xyXG4gIGhlaWdodDogMTAwdmg7XHJcbn1cclxuLnNpZGVuYXYtdG9vbGJhciB7XHJcbiAgaGVpZ2h0OiA2NHB4O1xyXG4gIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYXBwLXByaW1hcnkpO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XHJcbiAgICBoZWlnaHQ6IDU2cHg7XHJcbiAgfVxyXG59XHJcbi5tYXQtbmF2LWxpc3Qge1xyXG4gIHBhZGRpbmctdG9wOiAwO1xyXG59XHJcbkBpbmNsdWRlIGJyZWFrcG9pbnQtbWF4KDYwMHB4KSB7XHJcbiAgLmZpeGVkLXRvcG5hdiB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgei1pbmRleDogMjtcclxuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG5cclxuICAubWF0LWRyYXdlci1jb250YWluZXIsXHJcbiAgLm1hdC1kcmF3ZXIge1xyXG4gICAgcGFkZGluZy10b3A6IDU2cHg7XHJcbiAgfVxyXG59XHJcbi5tZW51LWxpc3QtaXRlbS5tYXQtbGlzdC1pdGVtIHtcclxuICAubWF0LWxpc3QtaXRlbS1jb250ZW50IHtcclxuICAgIGZsZXg6IDEgMSAxMDAlO1xyXG4gIH1cclxufVxyXG4udmVyc2lvbi1pbmZvIHtcclxuICBmb250LXNpemU6IDhwdDtcclxuICBmbG9hdDogcmlnaHQ7XHJcbiAgcGFkZGluZzogOHB4O1xyXG59XHJcbi5sZWZ0LW5hdiB7XHJcbiAgb3ZlcmZsb3cteTogaGlkZGVuO1xyXG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcclxuICB3aWR0aDogMTE1cHg7XHJcblxyXG4gICY6aG92ZXIge1xyXG4gICAgd2lkdGg6IDEyMHB4O1xyXG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xyXG5cclxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcclxuICAgICAgd2lkdGg6IDVweDtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IC8qIG1ha2Ugc2Nyb2xsYmFyIHRyYW5zcGFyZW50ICovXHJcbiAgICB9XHJcbiAgfVxyXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcclxuICAgIHdpZHRoOiAwcHg7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgLyogbWFrZSBzY3JvbGxiYXIgdHJhbnNwYXJlbnQgKi9cclxuICB9XHJcbn1cclxuLmlubmVyLXNjcm9sbCB7XHJcbiAgd2lkdGg6IDExNXB4O1xyXG59XHJcblxyXG4uaWNvbi1zaG9wcGluZy1saXN0LTEge1xyXG4gIGZvbnQtc2l6ZTogMjZweCAhaW1wb3J0YW50O1xyXG59XHJcbiJdfQ== */\"","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport { VERSION } from \"@angular/material\";\r\nimport { NavigationEnd, Router } from \"@angular/router\";\r\nimport { listAnimations } from \"@shared/animations/activity-log-animations\";\r\nimport { AdminDynamicHeaderService } from \"@shared/services/admin-dynamic-header.service\";\r\nimport { CommonService } from \"@shared/services/common.service\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { NavItem } from \"./nav-item\";\r\nimport { NavService } from \"./nav.service\";\r\n@Component({\r\n selector: \"app-admin-menu\",\r\n templateUrl: \"./admin-menu.component.html\",\r\n styleUrls: [\"./admin-menu.component.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n animations: [listAnimations],\r\n})\r\nexport class AdminMenuComponent implements AfterViewInit {\r\n @ViewChild(\"appDrawer\") appDrawer: ElementRef;\r\n version = VERSION;\r\n private userPermission: Subscription;\r\n menuPermisions: any;\r\n navItems: NavItem[];\r\n\r\n constructor(\r\n private navService: NavService,\r\n public router: Router,\r\n private cdr: ChangeDetectorRef,\r\n public commonService: CommonService,\r\n private dynamicHeader: AdminDynamicHeaderService\r\n ) {}\r\n tempMenu: any[] = [];\r\n ngOnInit() {\r\n this.userPermission = this.dynamicHeader.permissions.subscribe(\r\n (Permissions) => {\r\n var p = {} as StringCollection;\r\n // var temp = JSON.parse(localStorage.getItem('userPermissions'));\r\n // var d=this.menuPermisions?this.menuPermisions:\r\n if (Permissions) {\r\n for (var prop in Permissions) {\r\n var p = {} as StringCollection;\r\n var name = Permissions[prop].name;\r\n p.view = Permissions[prop].view;\r\n p.edit = Permissions[prop].edit;\r\n p.delete = Permissions[prop].delete;\r\n p.menu = Permissions[prop].menu;\r\n this.tempMenu[name] = p;\r\n }\r\n this.menuPermisions = this.tempMenu;\r\n this.initMenu();\r\n }\r\n\r\n // p.menu=true;\r\n // this.menuPermisions['AllPermision'] = p;\r\n }\r\n );\r\n this.userPermission = this.dynamicHeader.permissionsWhenPageReload.subscribe(\r\n (Permissions) => {\r\n var p = {} as StringCollection;\r\n if (Permissions) {\r\n this.menuPermisions = Permissions;\r\n this.initMenu();\r\n }\r\n // p.menu=true;\r\n // this.menuPermisions['AllPermision'] = p;\r\n }\r\n );\r\n }\r\n\r\n initMenu() {\r\n if (this.navItems ? this.navItems.length <= 0 : !this.navItems) {\r\n this.navItems = [\r\n {\r\n displayName: \"Dashboard\",\r\n iconName: \"icon-dashboard\",\r\n parentMenu: \"dashboard\",\r\n menuName: \"dashboard\",\r\n flag: false,\r\n permissionName: \"AllPermision\",\r\n route: \"/app/admin/dashboard\",\r\n },\r\n {\r\n displayName: \"Customers\",\r\n menuName: \"customers\",\r\n parentMenu: \"customers\",\r\n iconName: \"icon-users\",\r\n flag: false,\r\n permissionName: \"CustomerManagement\",\r\n route: '/app/admin/customers'\r\n // children: [\r\n // {\r\n // displayName: \"Portal\",\r\n // menuName: \"customers\",\r\n // parentMenu: \"customers\",\r\n // flag: false,\r\n // iconName: \"icon-users\",\r\n // route: \"/app/admin/customers\",\r\n // permissionName: \"CustomerManagement\",\r\n // } \r\n // ],\r\n },\r\n {\r\n displayName: \"Permissions\",\r\n menuName: \"permissions\",\r\n parentMenu: \"permissions\",\r\n flag: false,\r\n iconName: \"icon-permission\",\r\n permissionName: \"Permissions\",\r\n route: \"/app/admin/permissions\",\r\n },\r\n {\r\n displayName: \"Requests\",\r\n menuName: \"request\",\r\n parentMenu: \"request\",\r\n flag: false,\r\n permissionName: \"Request\",\r\n iconName: \"icon-requests\",\r\n children: [\r\n {\r\n displayName: \"Help Request\",\r\n menuName: \"requests\",\r\n parentMenu: \"request\",\r\n permissionName: \"HelpRequest\",\r\n flag: false,\r\n iconName: \"icon-file_icon\",\r\n route: \"/app/admin/requests\",\r\n },\r\n {\r\n displayName: \"Additional Financing\",\r\n menuName: \"additionalFinancing\",\r\n parentMenu: \"request\",\r\n permissionName: \"AdditionalFinancing\",\r\n flag: false,\r\n iconName: \"icon-money_icon\",\r\n route: \"/app/admin/requests/additional-financing\",\r\n },\r\n {\r\n displayName: \"Calculators\",\r\n menuName: \"calculator\",\r\n parentMenu: \"request\",\r\n permissionName: \"Calculators\",\r\n iconName: \"icon-calculatoricon\",\r\n flag: false,\r\n route: \"/app/admin/requests/calculator\",\r\n },\r\n {\r\n displayName: \"Signup Customers\",\r\n menuName: \"signupCustomers\",\r\n parentMenu: \"request\",\r\n permissionName: \"SignUpRequest\",\r\n iconName: \"icon-users\",\r\n flag: false,\r\n route: \"/app/admin/requests/signup-customers\",\r\n },\r\n ],\r\n },\r\n {\r\n displayName: \"Forms\",\r\n iconName: \"icon-forms\",\r\n menuName: \"forms\",\r\n parentMenu: \"forms\",\r\n flag: false,\r\n permissionName: \"FormsAndDocuments\",\r\n route: \"/app/admin/forms\",\r\n },\r\n {\r\n displayName: \"Email Triggers\",\r\n menuName: \"emailTriggers\",\r\n parentMenu: \"emailTriggers\",\r\n permissionName: \"EmailTriggers\",\r\n flag: false,\r\n iconName: \"icon-email-triggers\",\r\n route: \"/app/admin/email-triggers\",\r\n },\r\n {\r\n displayName: \"Non Portal Customers\",\r\n menuName: \"nonPortalCustomers\",\r\n parentMenu: \"nonPortalCustomers\",\r\n permissionName: \"CustomerManagement\",\r\n flag: false,\r\n iconName: \"icon-users\",\r\n route: \"/app/admin/non-portal-customers\",\r\n },\r\n {\r\n displayName: \"Banner Ads\",\r\n menuName: \"bannerAds\",\r\n parentMenu: \"bannerAds\",\r\n permissionName: \"BannerAds\",\r\n flag: false,\r\n iconName: \"icon-banner-ads font-size-46\",\r\n route: \"/app/admin/banners\",\r\n },\r\n {\r\n displayName: \"FAQ\",\r\n menuName: \"faq\",\r\n parentMenu: \"faq\",\r\n iconName: \"icon-faq\",\r\n flag: false,\r\n permissionName: \"FAQ\",\r\n route: \"/app/admin/faq\",\r\n },\r\n {\r\n displayName: \"Reports\",\r\n iconName: \"icon-shopping-list-1\",\r\n parentMenu: \"reports\",\r\n flag: false,\r\n permissionName: \"Reports\",\r\n menuName: \"reports\",\r\n children: [\r\n {\r\n displayName: \"Login Reports\",\r\n menuName: \"reports\",\r\n parentMenu: \"reports\",\r\n iconName: \"icon-shopping-list-1\",\r\n flag: false,\r\n permissionName: \"Reports\",\r\n route: \"/app/admin/reports/reports\",\r\n },\r\n {\r\n displayName: \"Payment Reports\",\r\n menuName: \"paymentReports\",\r\n parentMenu: \"reports\",\r\n iconName: \"icon-shopping-list-1\",\r\n flag: false,\r\n permissionName: \"Reports\",\r\n route: \"/app/admin/reports/payment-reports\",\r\n },\r\n ],\r\n },\r\n {\r\n displayName: \"Transaction Fee\",\r\n iconName: \"icon-finance_icon\",\r\n parentMenu: \"transactionFee\",\r\n menuName: \"transactionFee\",\r\n flag: false,\r\n permissionName: \"TransactionFee\",\r\n route: \"/app/admin/transactions\",\r\n },\r\n {\r\n displayName: \"NEC Users\",\r\n menuName: \"necUsers\",\r\n parentMenu: \"users\",\r\n iconName: \"icon-necuser\",\r\n flag: false,\r\n permissionName: \"NECUserManagement\",\r\n route: \"/app/admin/nec-users\",\r\n },\r\n ];\r\n }\r\n\r\n this.navItems.forEach((element) => {\r\n element.flag = false;\r\n var flag = false;\r\n if (element.children && element.children.length) {\r\n element.children.forEach((el) => {\r\n el.flag = false;\r\n if (\r\n this.menuPermisions[el.permissionName]\r\n ? this.menuPermisions[el.permissionName].menu\r\n : el.permissionName == \"AllPermision\"\r\n ? true\r\n : false\r\n ) {\r\n flag = true;\r\n el.flag = true;\r\n }\r\n });\r\n\r\n if (flag) {\r\n element.flag = flag;\r\n }\r\n } else {\r\n if (\r\n this.menuPermisions[element.permissionName]\r\n ? this.menuPermisions[element.permissionName].menu\r\n : element.permissionName == \"AllPermision\"\r\n ? true\r\n : false\r\n ) {\r\n element.flag = true;\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.navService.appDrawer = this.appDrawer;\r\n this.navService.openNav();\r\n this.cdr.detectChanges();\r\n\r\n this.router.events.subscribe((event) => {\r\n /* to expand the active menu when navigating through breadcrumbs */\r\n if (event instanceof NavigationEnd && this.navItems) {\r\n this.navItems.forEach((parent) => {\r\n if (parent.children) {\r\n parent.children.forEach((child) => {\r\n if (child.route == event.url) {\r\n this.commonService.expandedMenu = parent.menuName;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n}\r\nexport interface StringCollection {\r\n edit: boolean;\r\n delete: boolean;\r\n view: boolean;\r\n menu: boolean;\r\n}\r\n","module.exports = \"\\r\\n
  • \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n expand_more\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n {{ item.displayName }}\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
    \\r\\n\"","module.exports = \"/**\\n * Applies styles for users in high contrast mode. Note that this only applies\\n * to Microsoft browsers. Chrome can be included by checking for the `html[hc]`\\n * attribute, however Chrome handles high contrast differently.\\n * @param target Which kind of high contrast setting to target. Defaults to `active`, can be\\n * `white-on-black` or `black-on-white`.\\n */\\n/* Theme for the ripple elements.*/\\n/* stylelint-disable material/no-prefixes */\\n/* stylelint-enable */\\n:host {\\n display: flex;\\n flex-direction: column;\\n outline: none;\\n width: 100%; }\\n.mat-list-item {\\n padding: 8px 0;\\n display: flex;\\n width: 90px; }\\n.mat-list-item .routeIcon {\\n margin-right: 40px; }\\n.displayIcon.active {\\n background-color: #1312a2; }\\n.app-menu-list-item li.active .expanded-menu {\\n background-color: #0d1d4e; }\\n.expanded-menu .side-menu-item.active::before, .expanded-menu .side-menu-item:hover::before {\\n content: '';\\n content: '';\\n display: block;\\n width: 15px;\\n height: 3px;\\n position: absolute;\\n top: 46%;\\n left: 1px;\\n background-color: #ea550d; }\\n.expanded-menu .expanded-menu {\\n padding: 0; }\\n.expanded-menu li i {\\n font-size: 24px !important;\\n height: 39px;\\n clear: both; }\\n.app-menu-list-item .mat-list-item-content {\\n justify-content: center !important; }\\n.side-menu-item {\\n position: relative;\\n margin-top: -12px !important;\\n height: 36px !important;\\n align-items: center;\\n padding: 0;\\n width: 100%; }\\n.side-menu-item .menuName {\\n line-height: 18px;\\n padding: 0 4px !important;\\n color: #99a3ef; }\\n.side-menu-item .menuName.menu-padding5 {\\n padding: 0 8px !important; }\\n.side-menu-item .menuName.menu-padding10 {\\n padding: 0 10px !important; }\\n.trigger-icon {\\n position: absolute;\\n top: 25px;\\n right: 0px; }\\n.side-menu-item.active .menuName, .side-menu-item .menuName:hover {\\n color: #fff; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zaGFyZWQvbGF5b3V0L2FkbWluLW1lbnUvbWVudS1saXN0LWl0ZW0vRDpcXFdvcmtzXFxORUNcXGFuZ3VsYXIvbm9kZV9tb2R1bGVzXFxAYW5ndWxhclxcbWF0ZXJpYWxcXF90aGVtaW5nLnNjc3MiLCJzcmMvc2hhcmVkL2xheW91dC9hZG1pbi1tZW51L21lbnUtbGlzdC1pdGVtL0Q6XFxXb3Jrc1xcTkVDXFxhbmd1bGFyL3NyY1xcc2hhcmVkXFxsYXlvdXRcXGFkbWluLW1lbnVcXG1lbnUtbGlzdC1pdGVtXFxtZW51LWxpc3QtaXRlbS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxS0E7Ozs7OztHQU1HO0FBbXFDSCxtQ0FBbUM7QUE0K0NuQyw0Q0FBNEM7QUF3QzVDLHNCQUFzQjtBQ2gyRnRCO0VBQ0UsY0FBYTtFQUNiLHVCQUFzQjtFQUN0QixjQUFhO0VBQ2IsWUFBVyxFQUNaO0FBRUQ7RUFDRSxlQUFjO0VBQ2QsY0FBYTtFQUNiLFlBQVcsRUFJWjtBQVBEO0lBS0ksbUJBQWtCLEVBQ25CO0FBSUg7RUFDRSwwQkFBeUIsRUFDMUI7QUFFRDtFQUNFLDBCQUF5QixFQUMxQjtBQUNEO0VBQ0UsWUFBVztFQUNYLFlBQVc7RUFDWCxlQUFjO0VBQ2QsWUFBVztFQUNYLFlBQVc7RUFDWCxtQkFBa0I7RUFDbEIsU0FBUTtFQUNSLFVBQVM7RUFDVCwwQkFBeUIsRUFDMUI7QUFDRDtFQUNFLFdBQVUsRUFDWDtBQUNEO0VBQ0UsMkJBQTBCO0VBQzFCLGFBQVk7RUFDWixZQUFXLEVBQ1o7QUFDRDtFQUNFLG1DQUFrQyxFQUNuQztBQUNEO0VBQ0UsbUJBQWtCO0VBQ2xCLDZCQUE0QjtFQUM1Qix3QkFBdUI7RUFDdkIsb0JBQW1CO0VBQ25CLFdBQVU7RUFDVixZQUFXLEVBQ1o7QUFDRDtFQUNFLGtCQUFpQjtFQUNqQiwwQkFBd0I7RUFDeEIsZUFBYyxFQUNmO0FBQ0Q7RUFDRSwwQkFBd0IsRUFDekI7QUFDRDtFQUNFLDJCQUEwQixFQUMzQjtBQUVEO0VBQ0UsbUJBQWtCO0VBQ2xCLFVBQVM7RUFDVCxXQUFVLEVBQ1g7QUFFRDtFQUNFLFlBQVcsRUFDWiIsImZpbGUiOiJzcmMvc2hhcmVkL2xheW91dC9hZG1pbi1tZW51L21lbnUtbGlzdC1pdGVtL21lbnUtbGlzdC1pdGVtLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0IGFsbCB0aGUgdGhlbWluZyBmdW5jdGlvbmFsaXR5LlxuLy8gV2UgY2FuIHVzZSByZWxhdGl2ZSBpbXBvcnRzIGZvciBpbXBvcnRzIGZyb20gdGhlIGNkayBiZWNhdXNlIHdlIGJ1bmRsZSBldmVyeXRoaW5nXG4vLyB1cCBpbnRvIGEgc2luZ2xlIGZsYXQgc2NzcyBmaWxlIGZvciBtYXRlcmlhbC5cbi8vIFdlIHdhbnQgb3ZlcmxheXMgdG8gYWx3YXlzIGFwcGVhciBvdmVyIHVzZXIgY29udGVudCwgc28gc2V0IGEgYmFzZWxpbmVcbi8vIHZlcnkgaGlnaCB6LWluZGV4IGZvciB0aGUgb3ZlcmxheSBjb250YWluZXIsIHdoaWNoIGlzIHdoZXJlIHdlIGNyZWF0ZSB0aGUgbmV3XG4vLyBzdGFja2luZyBjb250ZXh0IGZvciBhbGwgb3ZlcmxheXMuXG4kY2RrLXotaW5kZXgtb3ZlcmxheS1jb250YWluZXI6IDEwMDA7XG4kY2RrLXotaW5kZXgtb3ZlcmxheTogMTAwMDtcbiRjZGstei1pbmRleC1vdmVybGF5LWJhY2tkcm9wOiAxMDAwO1xuXG4vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBhbGwgb2YgdGhlIGJhY2tkcm9wc1xuJGNkay1vdmVybGF5LWRhcmstYmFja2Ryb3AtYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjMyKTtcblxuLy8gRGVmYXVsdCBiYWNrZHJvcCBhbmltYXRpb24gaXMgYmFzZWQgb24gdGhlIE1hdGVyaWFsIERlc2lnbiBzd2lmdC1lYXNlLW91dC5cbiRiYWNrZHJvcC1hbmltYXRpb24tZHVyYXRpb246IDQwMG1zICFkZWZhdWx0O1xuJGJhY2tkcm9wLWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpICFkZWZhdWx0O1xuXG5cbkBtaXhpbiBjZGstb3ZlcmxheSgpIHtcbiAgLmNkay1vdmVybGF5LWNvbnRhaW5lciwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyIHtcbiAgICAvLyBEaXNhYmxlIGV2ZW50cyBmcm9tIGJlaW5nIGNhcHR1cmVkIG9uIHRoZSBvdmVybGF5IGNvbnRhaW5lci5cbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgIC8vIFRoZSBjb250YWluZXIgc2hvdWxkIGJlIHRoZSBzaXplIG9mIHRoZSB2aWV3cG9ydC5cbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAvLyBUaGUgb3ZlcmxheS1jb250YWluZXIgaXMgYW4gaW52aXNpYmxlIGVsZW1lbnQgd2hpY2ggY29udGFpbnMgYWxsIGluZGl2aWR1YWwgb3ZlcmxheXMuXG4gIC5jZGstb3ZlcmxheS1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiAkY2RrLXotaW5kZXgtb3ZlcmxheS1jb250YWluZXI7XG5cbiAgICAmOmVtcHR5IHtcbiAgICAgIC8vIEhpZGUgdGhlIGVsZW1lbnQgd2hlbiBpdCBkb2Vzbid0IGhhdmUgYW55IGNoaWxkIG5vZGVzLiBUaGlzIGRvZXNuJ3RcbiAgICAgIC8vIGluY2x1ZGUgb3ZlcmxheXMgdGhhdCBoYXZlIGJlZW4gZGV0YWNoZWQsIHJhdGhlciB0aGFuIGRpc3Bvc2VkLlxuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAvLyBXZSB1c2UgYW4gZXh0cmEgd3JhcHBlciBlbGVtZW50IGluIG9yZGVyIHRvIHVzZSBtYWtlIHRoZSBvdmVybGF5IGl0c2VsZiBhIGZsZXggaXRlbS5cbiAgLy8gVGhpcyBtYWtlcyBjZW50ZXJpbmcgdGhlIG92ZXJsYXkgZWFzeSB3aXRob3V0IHJ1bm5pbmcgaW50byB0aGUgc3VicGl4ZWwgcmVuZGVyaW5nXG4gIC8vIHByb2JsZW1zIHRpZWQgdG8gdXNpbmcgYHRyYW5zZm9ybWAgYW5kIHdpdGhvdXQgaW50ZXJmZXJpbmcgd2l0aCB0aGUgb3RoZXIgcG9zaXRpb25cbiAgLy8gc3RyYXRlZ2llcy5cbiAgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB6LWluZGV4OiAkY2RrLXotaW5kZXgtb3ZlcmxheTtcbiAgfVxuXG4gIC8vIEEgc2luZ2xlIG92ZXJsYXkgcGFuZS5cbiAgLmNkay1vdmVybGF5LXBhbmUge1xuICAgIC8vIE5vdGU6IGl0J3MgaW1wb3J0YW50IGZvciB0aGlzIG9uZSB0byBzdGFydCBvZmYgYGFic29sdXRlYCxcbiAgICAvLyBpbiBvcmRlciBmb3IgdXMgdG8gYmUgYWJsZSB0byBtZWFzdXJlIGl0IGNvcnJlY3RseS5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB6LWluZGV4OiAkY2RrLXotaW5kZXgtb3ZlcmxheTtcblxuICAgIC8vIEZvciBjb25uZWN0ZWQtcG9zaXRpb24gb3ZlcmxheXMsIHdlIHNldCBgZGlzcGxheTogZmxleGAgaW5cbiAgICAvLyBvcmRlciB0byBmb3JjZSBgbWF4LXdpZHRoYCBhbmQgYG1heC1oZWlnaHRgIHRvIHRha2UgZWZmZWN0LlxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gIH1cblxuICAuY2RrLW92ZXJsYXktYmFja2Ryb3Age1xuICAgIC8vIFRPRE8oamVsYm91cm4pOiByZXVzZSBzaWRlbmF2IGZ1bGxzY3JlZW4gbWl4aW4uXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcblxuICAgIHotaW5kZXg6ICRjZGstei1pbmRleC1vdmVybGF5LWJhY2tkcm9wO1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkYmFja2Ryb3AtYW5pbWF0aW9uLWR1cmF0aW9uICRiYWNrZHJvcC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uO1xuICAgIG9wYWNpdHk6IDA7XG5cbiAgICAmLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmcge1xuICAgICAgb3BhY2l0eTogMTtcblxuICAgICAgLy8gSW4gaGlnaCBjb250cmFzdCBtb2RlIHRoZSByZ2JhIGJhY2tncm91bmQgd2lsbCBiZWNvbWUgc29saWQgc28gd2UgbmVlZCB0byBmYWxsIGJhY2tcbiAgICAgIC8vIHRvIG1ha2luZyBpdCBvcGFxdWUgdXNpbmcgYG9wYWNpdHlgLiBOb3RlIHRoYXQgd2UgY2FuJ3QgdXNlIHRoZSBgY2RrLWhpZ2gtY29udHJhc3RgXG4gICAgICAvLyBtaXhpbiwgYmVjYXVzZSB3ZSBjYW4ndCBub3JtYWxpemUgdGhlIGltcG9ydCBwYXRoIHRvIHRoZSBfYTExeS5zY3NzIGJvdGggZm9yIHRoZVxuICAgICAgLy8gc291cmNlIGFuZCB3aGVuIHRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZC4gU2VlICMxMDkwOC5cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZDogJGNkay1vdmVybGF5LWRhcmstYmFja2Ryb3AtYmFja2dyb3VuZDtcbiAgfVxuXG4gIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCB7XG4gICAgLy8gTm90ZTogYXMgb2YgRmlyZWZveCA1NywgaGF2aW5nIHRoZSBiYWNrZHJvcCBiZSBgYmFja2dyb3VuZDogbm9uZWAgd2lsbCBwcmV2ZW50IGl0IGZyb21cbiAgICAvLyBjYXB0dXJpbmcgdGhlIHVzZXIncyBtb3VzZSBzY3JvbGwgZXZlbnRzLiBTaW5jZSB3ZSBhbHNvIGNhbid0IHVzZSBzb21ldGhpbmcgbGlrZVxuICAgIC8vIGByZ2JhKDAsIDAsIDAsIDApYCwgd2Ugd29yayBhcm91bmQgdGhlIGluY29uc2lzdGVuY3kgYnkgbm90IHNldHRpbmcgdGhlIGJhY2tncm91bmQgYXRcbiAgICAvLyBhbGwgYW5kIHVzaW5nIGBvcGFjaXR5YCB0byBtYWtlIHRoZSBlbGVtZW50IHRyYW5zcGFyZW50LlxuICAgICYsICYuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZyB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgfVxuXG4gIC8vIE92ZXJsYXkgcGFyZW50IGVsZW1lbnQgdXNlZCB3aXRoIHRoZSBjb25uZWN0ZWQgcG9zaXRpb24gc3RyYXRlZ3kuIFVzZWQgdG8gY29uc3RyYWluIHRoZVxuICAvLyBvdmVybGF5IGVsZW1lbnQncyBzaXplIHRvIGZpdCB3aXRoaW4gdGhlIHZpZXdwb3J0LlxuICAuY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6ICRjZGstei1pbmRleC1vdmVybGF5O1xuXG4gICAgLy8gV2UgdXNlIGBkaXNwbGF5OiBmbGV4YCBvbiB0aGlzIGVsZW1lbnQgZXhjbHVzaXZlbHkgZm9yIGNlbnRlcmluZyBjb25uZWN0ZWQgb3ZlcmxheXMuXG4gICAgLy8gV2hlbiAqbm90KiBjZW50ZXJpbmcsIGEgdG9wL2xlZnQvYm90dG9tL3JpZ2h0IHdpbGwgYmUgc2V0IHdoaWNoIG92ZXJyaWRlcyB0aGUgbm9ybWFsXG4gICAgLy8gZmxleCBsYXlvdXQuXG4gICAgZGlzcGxheTogZmxleDtcblxuICAgIC8vIFdlIHVzZSB0aGUgYGNvbHVtbmAgZGlyZWN0aW9uIGhlcmUgdG8gYXZvaWQgc29tZSBmbGV4Ym94IGlzc3VlcyBpbiBFZGdlXG4gICAgLy8gd2hlbiB1c2luZyB0aGUgXCJncm93IGFmdGVyIG9wZW5cIiBvcHRpb25zLlxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAvLyBBZGQgc29tZSBkaW1lbnNpb25zIHNvIHRoZSBlbGVtZW50IGhhcyBhbiBgaW5uZXJUZXh0YCB3aGljaCBzb21lIHBlb3BsZSBkZXBlbmQgb24gaW4gdGVzdHMuXG4gICAgbWluLXdpZHRoOiAxcHg7XG4gICAgbWluLWhlaWdodDogMXB4O1xuICB9XG5cbiAgLy8gVXNlZCB3aGVuIGRpc2FibGluZyBnbG9iYWwgc2Nyb2xsaW5nLlxuICAuY2RrLWdsb2JhbC1zY3JvbGxibG9jayB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuXG4gICAgLy8gTmVjZXNzYXJ5IGZvciB0aGUgY29udGVudCBub3QgdG8gbG9zZSBpdHMgd2lkdGguIE5vdGUgdGhhdCB3ZSdyZSB1c2luZyAxMDAlLCBpbnN0ZWFkIG9mXG4gICAgLy8gMTAwdncsIGJlY2F1c2UgMTAwdncgaW5jbHVkZXMgdGhlIHdpZHRoIHBsdXMgdGhlIHNjcm9sbGJhciwgd2hlcmVhcyAxMDAlIGlzIHRoZSB3aWR0aFxuICAgIC8vIHRoYXQgdGhlIGVsZW1lbnQgaGFkIGJlZm9yZSB3ZSBtYWRlIGl0IGBmaXhlZGAuXG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICAvLyBOb3RlOiB0aGlzIHdpbGwgYWx3YXlzIGFkZCBhIHNjcm9sbGJhciB0byB3aGF0ZXZlciBlbGVtZW50IGl0IGlzIG9uLCB3aGljaCBjYW5cbiAgICAvLyBwb3RlbnRpYWxseSByZXN1bHQgaW4gZG91YmxlIHNjcm9sbGJhcnMuIEl0IHNob3VsZG4ndCBiZSBhbiBpc3N1ZSwgYmVjYXVzZSB3ZSB3b24ndFxuICAgIC8vIGJsb2NrIHNjcm9sbGluZyBvbiBhIHBhZ2UgdGhhdCBkb2Vzbid0IGhhdmUgYSBzY3JvbGxiYXIgaW4gdGhlIGZpcnN0IHBsYWNlLlxuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgfVxufVxuXG5AbWl4aW4gY2RrLWExMXkge1xuICAuY2RrLXZpc3VhbGx5LWhpZGRlbiB7XG4gICAgYm9yZGVyOiAwO1xuICAgIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgbWFyZ2luOiAtMXB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcGFkZGluZzogMDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDFweDtcblxuICAgIC8vIEF2b2lkIGJyb3dzZXJzIHJlbmRlcmluZyB0aGUgZm9jdXMgcmluZyBpbiBzb21lIGNhc2VzLlxuICAgIG91dGxpbmU6IDA7XG5cbiAgICAvLyBBdm9pZCBzb21lIGNhc2VzIHdoZXJlIHRoZSBicm93c2VyIHdpbGwgc3RpbGwgcmVuZGVyIHRoZSBuYXRpdmUgY29udHJvbHMgKHNlZSAjOTA0OSkuXG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxufVxuXG4vKipcbiAqIEFwcGxpZXMgc3R5bGVzIGZvciB1c2VycyBpbiBoaWdoIGNvbnRyYXN0IG1vZGUuIE5vdGUgdGhhdCB0aGlzIG9ubHkgYXBwbGllc1xuICogdG8gTWljcm9zb2Z0IGJyb3dzZXJzLiBDaHJvbWUgY2FuIGJlIGluY2x1ZGVkIGJ5IGNoZWNraW5nIGZvciB0aGUgYGh0bWxbaGNdYFxuICogYXR0cmlidXRlLCBob3dldmVyIENocm9tZSBoYW5kbGVzIGhpZ2ggY29udHJhc3QgZGlmZmVyZW50bHkuXG4gKiBAcGFyYW0gdGFyZ2V0IFdoaWNoIGtpbmQgb2YgaGlnaCBjb250cmFzdCBzZXR0aW5nIHRvIHRhcmdldC4gRGVmYXVsdHMgdG8gYGFjdGl2ZWAsIGNhbiBiZVxuICogICAgYHdoaXRlLW9uLWJsYWNrYCBvciBgYmxhY2stb24td2hpdGVgLlxuICovXG5AbWl4aW4gY2RrLWhpZ2gtY29udHJhc3QoJHRhcmdldDogYWN0aXZlKSB7XG4gIEBtZWRpYSAoLW1zLWhpZ2gtY29udHJhc3Q6ICR0YXJnZXQpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBDb3JlIHN0eWxlcyB0aGF0IGVuYWJsZSBtb25pdG9yaW5nIGF1dG9maWxsIHN0YXRlIG9mIHRleHQgZmllbGRzLlxuQG1peGluIGNkay10ZXh0LWZpZWxkIHtcbiAgLy8gS2V5ZnJhbWVzIHRoYXQgYXBwbHkgbm8gc3R5bGVzLCBidXQgYWxsb3cgdXMgdG8gbW9uaXRvciB3aGVuIGFuIHRleHQgZmllbGQgYmVjb21lcyBhdXRvZmlsbGVkXG4gIC8vIGJ5IHdhdGNoaW5nIGZvciB0aGUgYW5pbWF0aW9uIGV2ZW50cyB0aGF0IGFyZSBmaXJlZCB3aGVuIHRoZXkgc3RhcnQuIE5vdGU6IHRoZSAvKiEqLyBjb21tZW50IGlzXG4gIC8vIG5lZWRlZCB0byBwcmV2ZW50IExpYlNhc3MgZnJvbSBzdHJpcHBpbmcgdGhlIGtleWZyYW1lcyBvdXQuXG4gIC8vIEJhc2VkIG9uOiBodHRwczovL21lZGl1bS5jb20vQGJydW5uL2RldGVjdGluZy1hdXRvZmlsbGVkLWZpZWxkcy1pbi1qYXZhc2NyaXB0LWFlZDU5OGQyNWRhN1xuICBAa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IHsvKiEqL31cbiAgQGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgey8qISovfVxuXG4gIC5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQ6LXdlYmtpdC1hdXRvZmlsbCB7XG4gICAgYW5pbWF0aW9uLW5hbWU6IGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0O1xuICB9XG5cbiAgLmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZDpub3QoOi13ZWJraXQtYXV0b2ZpbGwpIHtcbiAgICBhbmltYXRpb24tbmFtZTogY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kO1xuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSByZXNpemUgaGFuZGxlIG9uIGF1dG9zaXppbmcgdGV4dGFyZWFzLCBiZWNhdXNlIHdoYXRldmVyIGhlaWdodFxuICAvLyB0aGUgdXNlciByZXNpemVkIHRvIHdpbGwgYmUgb3ZlcndyaXR0ZW4gb25jZSB0aGV5IHN0YXJ0IHR5cGluZyBhZ2Fpbi5cbiAgdGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplIHtcbiAgICByZXNpemU6IG5vbmU7XG4gIH1cblxuICAvLyBUaGlzIGNsYXNzIGlzIHRlbXBvcmFyaWx5IGFwcGxpZWQgdG8gdGhlIHRleHRhcmVhIHdoZW4gaXQgaXMgYmVpbmcgbWVhc3VyZWQuIEl0IGlzIGltbWVkaWF0ZWx5XG4gIC8vIHJlbW92ZWQgd2hlbiBtZWFzdXJpbmcgaXMgY29tcGxldGUuIFdlIHVzZSBgIWltcG9ydGFudGAgcnVsZXMgaGVyZSB0byBtYWtlIHN1cmUgdXNlci1zcGVjaWZpZWRcbiAgLy8gcnVsZXMgZG8gbm90IGludGVyZmVyZSB3aXRoIHRoZSBtZWFzdXJlbWVudC5cbiAgdGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZyB7XG4gICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xuICAgIC8vIEhhdmluZyAycHggdG9wIGFuZCBib3R0b20gcGFkZGluZyBzZWVtcyB0byBmaXggYSBidWcgd2hlcmUgQ2hyb21lIGdldHMgYW4gaW5jb3JyZWN0XG4gICAgLy8gbWVhc3VyZW1lbnQuIFdlIGp1c3QgaGF2ZSB0byBhY2NvdW50IGZvciBpdCBsYXRlciBhbmQgc3VidHJhY3QgaXQgb2ZmIHRoZSBmaW5hbCByZXN1bHQuXG4gICAgcGFkZGluZzogMnB4IDAgIWltcG9ydGFudDtcbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8vIFVzZWQgdG8gZ2VuZXJhdGUgVUlEcyBmb3Iga2V5ZnJhbWVzIHVzZWQgdG8gY2hhbmdlIHRoZSB0ZXh0IGZpZWxkIGF1dG9maWxsIHN0eWxlcy5cbiRjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvci1mcmFtZS1jb3VudDogMDtcblxuLy8gTWl4aW4gdXNlZCB0byBhcHBseSBjdXN0b20gYmFja2dyb3VuZCBhbmQgZm9yZWdyb3VuZCBjb2xvcnMgdG8gYW4gYXV0b2ZpbGxlZCB0ZXh0IGZpZWxkLlxuLy8gQmFzZWQgb246IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI3ODE1NDkvXG4vLyByZW1vdmluZy1pbnB1dC1iYWNrZ3JvdW5kLWNvbG91ci1mb3ItY2hyb21lLWF1dG9jb21wbGV0ZSNhbnN3ZXItMzc0MzIyNjBcbkBtaXhpbiBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvcigkYmFja2dyb3VuZCwgJGZvcmVncm91bmQ6JycpIHtcbiAgQGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvci0jeyRjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvci1mcmFtZS1jb3VudH0ge1xuICAgIHRvIHtcbiAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgICAgQGlmICRmb3JlZ3JvdW5kICE9ICcnIHsgY29sb3I6ICRmb3JlZ3JvdW5kOyB9XG4gICAgfVxuICB9XG5cbiAgJjotd2Via2l0LWF1dG9maWxsIHtcbiAgICBhbmltYXRpb24tbmFtZTogY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3ItI3skY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnR9O1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gIH1cblxuICAmLmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZDotd2Via2l0LWF1dG9maWxsIHtcbiAgICBhbmltYXRpb24tbmFtZTogY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQsXG4gICAgICAgICAgICAgICAgICAgIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWNvbG9yLSN7JGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWNvbG9yLWZyYW1lLWNvdW50fTtcbiAgfVxuXG4gICRjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvci1mcmFtZS1jb3VudDpcbiAgICAgICRjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvci1mcmFtZS1jb3VudCArIDEgIWdsb2JhbDtcbn1cblxuXG4vLyBDb3JlIHN0eWxlcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGFwcGx5IG1hdGVyaWFsIGRlc2lnbiB0cmVhdG1lbnRzIHRvIGFueSBlbGVtZW50LlxuLy8gTWVkaWEgcXVlcmllc1xuLy8gVE9ETyhqb3NlcGhwZXJyb3R0KTogQ2hhbmdlICRtYXQteHNtYWxsIGFuZCAkbWF0LXNtYWxsIHVzYWdlcyB0byByZWx5IG9uIEJyZWFrcG9pbnRPYnNlcnZlcixcbiRtYXQteHNtYWxsOiAnbWF4LXdpZHRoOiA1OTlweCc7XG4kbWF0LXNtYWxsOiAnbWF4LXdpZHRoOiA5NTlweCc7XG5cbi8vIFRPRE86IFJldmlzaXQgYWxsIHotaW5kaWNlcyBiZWZvcmUgYmV0YVxuLy8gei1pbmRleCBtYXN0ZXIgbGlzdFxuXG4kei1pbmRleC1mYWI6IDIwICFkZWZhdWx0O1xuJHotaW5kZXgtZHJhd2VyOiAxMDAgIWRlZmF1bHQ7XG5cbi8vIEdsb2JhbCBjb25zdGFudHNcbiRwaTogMy4xNDE1OTI2NTtcblxuLy8gUGFkZGluZyBiZXR3ZWVuIGlucHV0IHRvZ2dsZXMgYW5kIHRoZWlyIGxhYmVsc1xuJG1hdC10b2dnbGUtcGFkZGluZzogOHB4ICFkZWZhdWx0O1xuLy8gV2lkdGggYW5kIGhlaWdodCBvZiBpbnB1dCB0b2dnbGVzXG4kbWF0LXRvZ2dsZS1zaXplOiAyMHB4ICFkZWZhdWx0O1xuXG4vLyBFYXNpbmcgQ3VydmVzXG4vLyBUT0RPKGplbGJvdXJuKTogYWxsIG9mIHRoZXNlIG5lZWQgdG8gYmUgcmV2aXNpdGVkXG5cbi8vIFRoZSBkZWZhdWx0IGFuaW1hdGlvbiBjdXJ2ZXMgdXNlZCBieSBtYXRlcmlhbCBkZXNpZ24uXG4kbWF0LWxpbmVhci1vdXQtc2xvdy1pbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSkgIWRlZmF1bHQ7XG4kbWF0LWZhc3Qtb3V0LXNsb3ctaW4tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpICFkZWZhdWx0O1xuJG1hdC1mYXN0LW91dC1saW5lYXItaW4tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKSAhZGVmYXVsdDtcblxuJGVhc2UtaW4tb3V0LWN1cnZlLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSkgIWRlZmF1bHQ7XG5cbiRzd2lmdC1lYXNlLW91dC1kdXJhdGlvbjogNDAwbXMgIWRlZmF1bHQ7XG4kc3dpZnQtZWFzZS1vdXQtdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSAhZGVmYXVsdDtcbiRzd2lmdC1lYXNlLW91dDogYWxsICRzd2lmdC1lYXNlLW91dC1kdXJhdGlvbiAkc3dpZnQtZWFzZS1vdXQtdGltaW5nLWZ1bmN0aW9uICFkZWZhdWx0O1xuXG4kc3dpZnQtZWFzZS1pbi1kdXJhdGlvbjogMzAwbXMgIWRlZmF1bHQ7XG4kc3dpZnQtZWFzZS1pbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1LCAwLCAwLjU1LCAwLjIpICFkZWZhdWx0O1xuJHN3aWZ0LWVhc2UtaW46IGFsbCAkc3dpZnQtZWFzZS1pbi1kdXJhdGlvbiAkc3dpZnQtZWFzZS1pbi10aW1pbmctZnVuY3Rpb24gIWRlZmF1bHQ7XG5cbiRzd2lmdC1lYXNlLWluLW91dC1kdXJhdGlvbjogNTAwbXMgIWRlZmF1bHQ7XG4kc3dpZnQtZWFzZS1pbi1vdXQtdGltaW5nLWZ1bmN0aW9uOiAkZWFzZS1pbi1vdXQtY3VydmUtZnVuY3Rpb24gIWRlZmF1bHQ7XG4kc3dpZnQtZWFzZS1pbi1vdXQ6IGFsbCAkc3dpZnQtZWFzZS1pbi1vdXQtZHVyYXRpb24gJHN3aWZ0LWVhc2UtaW4tb3V0LXRpbWluZy1mdW5jdGlvbiAhZGVmYXVsdDtcblxuJHN3aWZ0LWxpbmVhci1kdXJhdGlvbjogODBtcyAhZGVmYXVsdDtcbiRzd2lmdC1saW5lYXItdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXIgIWRlZmF1bHQ7XG4kc3dpZnQtbGluZWFyOiBhbGwgJHN3aWZ0LWxpbmVhci1kdXJhdGlvbiAkc3dpZnQtbGluZWFyLXRpbWluZy1mdW5jdGlvbiAhZGVmYXVsdDtcblxuXG5cbi8vIEEgY29sbGVjdGlvbiBvZiBtaXhpbnMgYW5kIENTUyBjbGFzc2VzIHRoYXQgY2FuIGJlIHVzZWQgdG8gYXBwbHkgZWxldmF0aW9uIHRvIGEgbWF0ZXJpYWxcbi8vIGVsZW1lbnQuXG4vLyBTZWU6IGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL2Vudmlyb25tZW50L2VsZXZhdGlvbi5odG1sXG4vLyBFeGFtcGxlczpcbi8vXG4vL1xuLy8gLm1hdC1mb28ge1xuLy8gICBAaW5jbHVkZSAkbWF0LWVsZXZhdGlvbigyKTtcbi8vXG4vLyAgICY6YWN0aXZlIHtcbi8vICAgICBAaW5jbHVkZSAkbWF0LWVsZXZhdGlvbig4KTtcbi8vICAgfVxuLy8gfVxuLy9cbi8vIDxkaXYgaWQ9XCJleHRlcm5hbC1jYXJkXCIgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXoyXCI+PHA+U29tZSBjb250ZW50PC9wPjwvZGl2PlxuLy9cbi8vIEZvciBhbiBleHBsYW5hdGlvbiBvZiB0aGUgZGVzaWduIGJlaGluZCBob3cgZWxldmF0aW9uIGlzIGltcGxlbWVudGVkLCBzZWUgdGhlIGRlc2lnbiBkb2MgYXRcbi8vIGh0dHBzOi8vZ29vLmdsL0txMGs5Wi5cblxuLy8gQ29sb3JzIGZvciB1bWJyYSwgcGVudW1icmEsIGFuZCBhbWJpZW50IHNoYWRvd3MuIEFzIGRlc2NyaWJlZCBpbiB0aGUgZGVzaWduIGRvYywgZWFjaCBlbGV2YXRpb25cbi8vIGxldmVsIGlzIGNyZWF0ZWQgdXNpbmcgYSBzZXQgb2YgMyBzaGFkb3cgdmFsdWVzLCBvbmUgZm9yIHVtYnJhICh0aGUgc2hhZG93IHJlcHJlc2VudGluZyB0aGVcbi8vIHNwYWNlIGNvbXBsZXRlbHkgb2JzY3VyZWQgYnkgYW4gb2JqZWN0IHJlbGF0aXZlIHRvIGl0cyBsaWdodCBzb3VyY2UpLCBvbmUgZm9yIHBlbnVtYnJhICh0aGVcbi8vIHNwYWNlIHBhcnRpYWxseSBvYnNjdXJlZCBieSBhbiBvYmplY3QpLCBhbmQgb25lIGZvciBhbWJpZW50ICh0aGUgc3BhY2Ugd2hpY2ggY29udGFpbnMgdGhlIG9iamVjdFxuLy8gaXRzZWxmKS4gRm9yIGEgZnVydGhlciBleHBsYW5hdGlvbiBvZiB0aGVzZSB0ZXJtcyBhbmQgdGhlaXIgbWVhbmluZ3MsIHNlZVxuLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW1icmEsX3BlbnVtYnJhX2FuZF9hbnR1bWJyYS5cblxuLy8gTWFwcyBmb3IgdGhlIGRpZmZlcmVudCBzaGFkb3cgc2V0cyBhbmQgdGhlaXIgdmFsdWVzIHdpdGhpbiBlYWNoIHotc3BhY2UuIFRoZXNlIHZhbHVlcyB3ZXJlXG4vLyBjcmVhdGVkIGJ5IHRha2luZyBhIGZldyByZWZlcmVuY2Ugc2hhZG93IHNldHMgY3JlYXRlZCBieSBHb29nbGUncyBEZXNpZ25lcnMgYW5kIGludGVycG9sYXRpbmdcbi8vIGFsbCBvZiB0aGUgdmFsdWVzIGJldHdlZW4gdGhlbS5cblxuQGZ1bmN0aW9uIF9nZXQtdW1icmEtbWFwKCRjb2xvciwgJG9wYWNpdHkpIHtcbiAgQHJldHVybiAoXG4gICAgMDogJzBweCAwcHggMHB4IDBweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICAxOiAnMHB4IDJweCAxcHggLTFweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICAyOiAnMHB4IDNweCAxcHggLTJweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICAzOiAnMHB4IDNweCAzcHggLTJweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICA0OiAnMHB4IDJweCA0cHggLTFweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICA1OiAnMHB4IDNweCA1cHggLTFweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICA2OiAnMHB4IDNweCA1cHggLTFweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICA3OiAnMHB4IDRweCA1cHggLTJweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICA4OiAnMHB4IDVweCA1cHggLTNweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICA5OiAnMHB4IDVweCA2cHggLTNweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICAxMDogJzBweCA2cHggNnB4IC0zcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjIpfScsXG4gICAgMTE6ICcwcHggNnB4IDdweCAtNHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4yKX0nLFxuICAgIDEyOiAnMHB4IDdweCA4cHggLTRweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICAxMzogJzBweCA3cHggOHB4IC00cHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjIpfScsXG4gICAgMTQ6ICcwcHggN3B4IDlweCAtNHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4yKX0nLFxuICAgIDE1OiAnMHB4IDhweCA5cHggLTVweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICAxNjogJzBweCA4cHggMTBweCAtNXB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4yKX0nLFxuICAgIDE3OiAnMHB4IDhweCAxMXB4IC01cHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjIpfScsXG4gICAgMTg6ICcwcHggOXB4IDExcHggLTVweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMil9JyxcbiAgICAxOTogJzBweCA5cHggMTJweCAtNnB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4yKX0nLFxuICAgIDIwOiAnMHB4IDEwcHggMTNweCAtNnB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4yKX0nLFxuICAgIDIxOiAnMHB4IDEwcHggMTNweCAtNnB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4yKX0nLFxuICAgIDIyOiAnMHB4IDEwcHggMTRweCAtNnB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4yKX0nLFxuICAgIDIzOiAnMHB4IDExcHggMTRweCAtN3B4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4yKX0nLFxuICAgIDI0OiAnMHB4IDExcHggMTVweCAtN3B4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4yKX0nXG4gICk7XG59XG5cbkBmdW5jdGlvbiBfZ2V0LXBlbnVtYnJhLW1hcCgkY29sb3IsICRvcGFjaXR5KSB7XG4gIEByZXR1cm4gKFxuICAgIDA6ICcwcHggMHB4IDBweCAwcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjE0KX0nLFxuICAgIDE6ICcwcHggMXB4IDFweCAwcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjE0KX0nLFxuICAgIDI6ICcwcHggMnB4IDJweCAwcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjE0KX0nLFxuICAgIDM6ICcwcHggM3B4IDRweCAwcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjE0KX0nLFxuICAgIDQ6ICcwcHggNHB4IDVweCAwcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjE0KX0nLFxuICAgIDU6ICcwcHggNXB4IDhweCAwcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjE0KX0nLFxuICAgIDY6ICcwcHggNnB4IDEwcHggMHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICA3OiAnMHB4IDdweCAxMHB4IDFweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpfScsXG4gICAgODogJzBweCA4cHggMTBweCAxcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjE0KX0nLFxuICAgIDk6ICcwcHggOXB4IDEycHggMXB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICAxMDogJzBweCAxMHB4IDE0cHggMXB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICAxMTogJzBweCAxMXB4IDE1cHggMXB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICAxMjogJzBweCAxMnB4IDE3cHggMnB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICAxMzogJzBweCAxM3B4IDE5cHggMnB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICAxNDogJzBweCAxNHB4IDIxcHggMnB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICAxNTogJzBweCAxNXB4IDIycHggMnB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICAxNjogJzBweCAxNnB4IDI0cHggMnB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICAxNzogJzBweCAxN3B4IDI2cHggMnB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICAxODogJzBweCAxOHB4IDI4cHggMnB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICAxOTogJzBweCAxOXB4IDI5cHggMnB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICAyMDogJzBweCAyMHB4IDMxcHggM3B4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICAyMTogJzBweCAyMXB4IDMzcHggM3B4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICAyMjogJzBweCAyMnB4IDM1cHggM3B4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICAyMzogJzBweCAyM3B4IDM2cHggM3B4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9JyxcbiAgICAyNDogJzBweCAyNHB4IDM4cHggM3B4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCl9J1xuICApO1xufVxuXG5AZnVuY3Rpb24gX2dldC1hbWJpZW50LW1hcCgkY29sb3IsICRvcGFjaXR5KSB7XG4gIEByZXR1cm4gKFxuICAgIDA6ICcwcHggMHB4IDBweCAwcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjEyKX0nLFxuICAgIDE6ICcwcHggMXB4IDNweCAwcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjEyKX0nLFxuICAgIDI6ICcwcHggMXB4IDVweCAwcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjEyKX0nLFxuICAgIDM6ICcwcHggMXB4IDhweCAwcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjEyKX0nLFxuICAgIDQ6ICcwcHggMXB4IDEwcHggMHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xMil9JyxcbiAgICA1OiAnMHB4IDFweCAxNHB4IDBweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTIpfScsXG4gICAgNjogJzBweCAxcHggMThweCAwcHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjEyKX0nLFxuICAgIDc6ICcwcHggMnB4IDE2cHggMXB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xMil9JyxcbiAgICA4OiAnMHB4IDNweCAxNHB4IDJweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTIpfScsXG4gICAgOTogJzBweCAzcHggMTZweCAycHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjEyKX0nLFxuICAgIDEwOiAnMHB4IDRweCAxOHB4IDNweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTIpfScsXG4gICAgMTE6ICcwcHggNHB4IDIwcHggM3B4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xMil9JyxcbiAgICAxMjogJzBweCA1cHggMjJweCA0cHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjEyKX0nLFxuICAgIDEzOiAnMHB4IDVweCAyNHB4IDRweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTIpfScsXG4gICAgMTQ6ICcwcHggNXB4IDI2cHggNHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xMil9JyxcbiAgICAxNTogJzBweCA2cHggMjhweCA1cHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjEyKX0nLFxuICAgIDE2OiAnMHB4IDZweCAzMHB4IDVweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTIpfScsXG4gICAgMTc6ICcwcHggNnB4IDMycHggNXB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xMil9JyxcbiAgICAxODogJzBweCA3cHggMzRweCA2cHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjEyKX0nLFxuICAgIDE5OiAnMHB4IDdweCAzNnB4IDZweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTIpfScsXG4gICAgMjA6ICcwcHggOHB4IDM4cHggN3B4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xMil9JyxcbiAgICAyMTogJzBweCA4cHggNDBweCA3cHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjEyKX0nLFxuICAgIDIyOiAnMHB4IDhweCA0MnB4IDdweCAje3JnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTIpfScsXG4gICAgMjM6ICcwcHggOXB4IDQ0cHggOHB4ICN7cmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xMil9JyxcbiAgICAyNDogJzBweCA5cHggNDZweCA4cHggI3tyZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjEyKX0nXG4gICk7XG59XG5cbi8vIFRoZSBkZWZhdWx0IGR1cmF0aW9uIHZhbHVlIGZvciBlbGV2YXRpb24gdHJhbnNpdGlvbnMuXG4kbWF0LWVsZXZhdGlvbi10cmFuc2l0aW9uLWR1cmF0aW9uOiAyODBtcyAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgZWFzaW5nIHZhbHVlIGZvciBlbGV2YXRpb24gdHJhbnNpdGlvbnMuXG4kbWF0LWVsZXZhdGlvbi10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogJG1hdC1mYXN0LW91dC1zbG93LWluLXRpbWluZy1mdW5jdGlvbjtcblxuLy8gVGhlIGRlZmF1bHQgY29sb3IgZm9yIGVsZXZhdGlvbiBzaGFkb3dzLlxuJG1hdC1lbGV2YXRpb24tY29sb3I6IGJsYWNrICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBvcGFjaXR5IHNjYWxpbmcgdmFsdWUgZm9yIGVsZXZhdGlvbiBzaGFkb3dzLlxuJG1hdC1lbGV2YXRpb24tb3BhY2l0eTogMSAhZGVmYXVsdDtcblxuLy8gUHJlZml4IGZvciBlbGV2YXRpb24tcmVsYXRlZCBzZWxlY3RvcnMuXG4kX21hdC1lbGV2YXRpb24tcHJlZml4OiAnbWF0LWVsZXZhdGlvbi16JztcblxuLy8gQXBwbGllcyB0aGUgY29ycmVjdCBjc3MgcnVsZXMgdG8gYW4gZWxlbWVudCB0byBnaXZlIGl0IHRoZSBlbGV2YXRpb24gc3BlY2lmaWVkIGJ5ICR6VmFsdWUuXG4vLyBUaGUgJHpWYWx1ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjQuXG5AbWl4aW4gbWF0LWVsZXZhdGlvbigkelZhbHVlLCAkY29sb3I6ICRtYXQtZWxldmF0aW9uLWNvbG9yLCAkb3BhY2l0eTogJG1hdC1lbGV2YXRpb24tb3BhY2l0eSkge1xuICBAaWYgdHlwZS1vZigkelZhbHVlKSAhPSBudW1iZXIgb3Igbm90IHVuaXRsZXNzKCR6VmFsdWUpIHtcbiAgICBAZXJyb3IgJyR6VmFsdWUgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlcic7XG4gIH1cbiAgQGlmICR6VmFsdWUgPCAwIG9yICR6VmFsdWUgPiAyNCB7XG4gICAgQGVycm9yICckelZhbHVlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyNCc7XG4gIH1cblxuICBib3gtc2hhZG93OiAje21hcC1nZXQoX2dldC11bWJyYS1tYXAoJGNvbG9yLCAkb3BhY2l0eSksICR6VmFsdWUpfSxcbiAgICAgICAgICAgICAgI3ttYXAtZ2V0KF9nZXQtcGVudW1icmEtbWFwKCRjb2xvciwgJG9wYWNpdHkpLCAkelZhbHVlKX0sXG4gICAgICAgICAgICAgICN7bWFwLWdldChfZ2V0LWFtYmllbnQtbWFwKCRjb2xvciwgJG9wYWNpdHkpLCAkelZhbHVlKX07XG59XG5cbkBtaXhpbiBfbWF0LXRoZW1lLWVsZXZhdGlvbigkelZhbHVlLCAkdGhlbWUsICRvcGFjaXR5OiAkbWF0LWVsZXZhdGlvbi1vcGFjaXR5KSB7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG4gICRlbGV2YXRpb24tY29sb3I6IG1hcC1nZXQoJGZvcmVncm91bmQsIGVsZXZhdGlvbik7XG4gICRlbGV2YXRpb24tY29sb3Itb3ItZGVmYXVsdDogaWYoJGVsZXZhdGlvbi1jb2xvciA9PSBudWxsLCAkbWF0LWVsZXZhdGlvbi1jb2xvciwgJGVsZXZhdGlvbi1jb2xvcik7XG5cbiAgQGluY2x1ZGUgbWF0LWVsZXZhdGlvbigkelZhbHVlLCAkZWxldmF0aW9uLWNvbG9yLW9yLWRlZmF1bHQsICRvcGFjaXR5KTtcbn1cblxuLy8gQXBwbGllcyB0aGUgZWxldmF0aW9uIHRvIGFuIGVsZW1lbnQgaW4gYSBtYW5uZXIgdGhhdCBhbGxvd3Ncbi8vIGNvbnN1bWVycyB0byBvdmVycmlkZSBpdCB2aWEgdGhlIE1hdGVyaWFsIGVsZXZhdGlvbiBjbGFzc2VzLlxuQG1peGluIG1hdC1vdmVycmlkYWJsZS1lbGV2YXRpb24oXG4gICAgJHpWYWx1ZSxcbiAgICAkY29sb3I6ICRtYXQtZWxldmF0aW9uLWNvbG9yLFxuICAgICRvcGFjaXR5OiAkbWF0LWVsZXZhdGlvbi1vcGFjaXR5KSB7XG4gICY6bm90KFtjbGFzcyo9JyN7JF9tYXQtZWxldmF0aW9uLXByZWZpeH0nXSkge1xuICAgIEBpbmNsdWRlIG1hdC1lbGV2YXRpb24oJHpWYWx1ZSwgJGNvbG9yLCAkb3BhY2l0eSk7XG4gIH1cbn1cblxuQG1peGluIF9tYXQtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKCR6VmFsdWUsICR0aGVtZSwgJG9wYWNpdHk6ICRtYXQtZWxldmF0aW9uLW9wYWNpdHkpIHtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcbiAgJGVsZXZhdGlvbi1jb2xvcjogbWFwLWdldCgkZm9yZWdyb3VuZCwgZWxldmF0aW9uKTtcbiAgJGVsZXZhdGlvbi1jb2xvci1vci1kZWZhdWx0OiBpZigkZWxldmF0aW9uLWNvbG9yID09IG51bGwsICRtYXQtZWxldmF0aW9uLWNvbG9yLCAkZWxldmF0aW9uLWNvbG9yKTtcblxuICBAaW5jbHVkZSBtYXQtb3ZlcnJpZGFibGUtZWxldmF0aW9uKCR6VmFsdWUsICRlbGV2YXRpb24tY29sb3Itb3ItZGVmYXVsdCwgJG9wYWNpdHkpO1xufVxuXG4vLyBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgY2FuIGJlIHVzZWQgYXMgdGhlIHZhbHVlIGZvciBhIHRyYW5zaXRpb24gcHJvcGVydHkgZm9yIGVsZXZhdGlvbi5cbi8vIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBkaXJlY3RseSBpcyB1c2VmdWwgaW4gc2l0dWF0aW9ucyB3aGVyZSBhIGNvbXBvbmVudCBuZWVkcyB0byB0cmFuc2l0aW9uXG4vLyBtb3JlIHRoYW4gb25lIHByb3BlcnR5LlxuLy9cbi8vIC5mb28ge1xuLy8gICB0cmFuc2l0aW9uOiBtYXQtZWxldmF0aW9uLXRyYW5zaXRpb24tcHJvcGVydHktdmFsdWUoKSwgb3BhY2l0eSAxMDBtcyBlYXNlO1xuLy8gfVxuQGZ1bmN0aW9uIG1hdC1lbGV2YXRpb24tdHJhbnNpdGlvbi1wcm9wZXJ0eS12YWx1ZShcbiAgICAkZHVyYXRpb246ICRtYXQtZWxldmF0aW9uLXRyYW5zaXRpb24tZHVyYXRpb24sXG4gICAgJGVhc2luZzogJG1hdC1lbGV2YXRpb24tdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pIHtcbiAgQHJldHVybiBib3gtc2hhZG93ICN7JGR1cmF0aW9ufSAjeyRlYXNpbmd9O1xufVxuXG4vLyBBcHBsaWVzIHRoZSBjb3JyZWN0IGNzcyBydWxlcyBuZWVkZWQgdG8gaGF2ZSBhbiBlbGVtZW50IHRyYW5zaXRpb24gYmV0d2VlbiBlbGV2YXRpb25zLlxuLy8gVGhpcyBtaXhpbiBzaG91bGQgYmUgYXBwbGllZCB0byBlbGVtZW50cyB3aG9zZSBlbGV2YXRpb24gdmFsdWVzIHdpbGwgY2hhbmdlIGRlcGVuZGluZyBvbiB0aGVpclxuLy8gY29udGV4dCAoZS5nLiB3aGVuIGFjdGl2ZSBvciBkaXNhYmxlZCkuXG4vL1xuLy8gTk9URSh0cmF2aXNrYXVmbWFuKTogQm90aCB0aGlzIG1peGluIGFuZCB0aGUgYWJvdmUgZnVuY3Rpb24gdXNlIGRlZmF1bHQgcGFyYW1ldGVycyBzbyB0aGV5IGNhblxuLy8gYmUgdXNlZCBpbiB0aGUgc2FtZSB3YXkgYnkgY2xpZW50cy5cbkBtaXhpbiBtYXQtZWxldmF0aW9uLXRyYW5zaXRpb24oXG4gICAgJGR1cmF0aW9uOiAkbWF0LWVsZXZhdGlvbi10cmFuc2l0aW9uLWR1cmF0aW9uLFxuICAgICRlYXNpbmc6ICRtYXQtZWxldmF0aW9uLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSB7XG4gIHRyYW5zaXRpb246IG1hdC1lbGV2YXRpb24tdHJhbnNpdGlvbi1wcm9wZXJ0eS12YWx1ZSgkZHVyYXRpb24sICRlYXNpbmcpO1xufVxuXG4vLyBDb2xvciBwYWxldHRlcyBmcm9tIHRoZSBNYXRlcmlhbCBEZXNpZ24gc3BlYy5cbi8vIFNlZSBodHRwczovL21hdGVyaWFsLmlvL2Rlc2lnbi9jb2xvci9cbi8vXG4vLyBDb250cmFzdCBjb2xvcnMgYXJlIGhhcmQtY29kZWQgYmVjYXVzZSBpdCBpcyB0b28gZGlmZmljdWx0IChwcm9iYWJseSBpbXBvc3NpYmxlKSB0b1xuLy8gY2FsY3VsYXRlIHRoZW0uIFRoZXNlIGNvbnRyYXN0IGNvbG9ycyBhcmUgcHVsbGVkIGZyb20gdGhlIHB1YmxpYyBNYXRlcmlhbCBEZXNpZ24gc3BlYyBzd2F0Y2hlcy5cbi8vIFdoaWxlIHRoZSBjb250cmFzdCBjb2xvcnMgaW4gdGhlIHNwZWMgYXJlIG5vdCBwcmVzY3JpcHRpdmUsIHdlIHVzZSB0aGVtIGZvciBjb252ZW5pZW5jZS5cblxuXG4vLyBAZGVwcmVjYXRlZCByZW5hbWVkIHRvICRkYXJrLXByaW1hcnktdGV4dC5cbi8vIEBicmVha2luZy1jaGFuZ2UgOC4wLjBcbiRibGFjay04Ny1vcGFjaXR5OiByZ2JhKGJsYWNrLCAwLjg3KTtcbi8vIEBkZXByZWNhdGVkIHJlbmFtZWQgdG8gJGxpZ2h0LXByaW1hcnktdGV4dC5cbi8vIEBicmVha2luZy1jaGFuZ2UgOC4wLjBcbiR3aGl0ZS04Ny1vcGFjaXR5OiByZ2JhKHdoaXRlLCAwLjg3KTtcbi8vIEBkZXByZWNhdGVkIHVzZSAkZGFyay1bc2Vjb25kYXJ5LXRleHQsZGlzYWJsZWQtdGV4dCxkaXZpZGVycyxmb2N1c2VkXSBpbnN0ZWFkLlxuLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMFxuJGJsYWNrLTEyLW9wYWNpdHk6IHJnYmEoYmxhY2ssIDAuMTIpO1xuLy8gQGRlcHJlY2F0ZWQgdXNlICRsaWdodC1bc2Vjb25kYXJ5LXRleHQsZGlzYWJsZWQtdGV4dCxkaXZpZGVycyxmb2N1c2VkXSBpbnN0ZWFkLlxuLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMFxuJHdoaXRlLTEyLW9wYWNpdHk6IHJnYmEod2hpdGUsIDAuMTIpO1xuLy8gQGRlcHJlY2F0ZWQgdXNlICRkYXJrLVtzZWNvbmRhcnktdGV4dCxkaXNhYmxlZC10ZXh0LGRpdmlkZXJzLGZvY3VzZWRdIGluc3RlYWQuXG4vLyBAYnJlYWtpbmctY2hhbmdlIDguMC4wXG4kYmxhY2stNi1vcGFjaXR5OiByZ2JhKGJsYWNrLCAwLjA2KTtcbi8vIEBkZXByZWNhdGVkIHVzZSAkbGlnaHQtW3NlY29uZGFyeS10ZXh0LGRpc2FibGVkLXRleHQsZGl2aWRlcnMsZm9jdXNlZF0gaW5zdGVhZC5cbi8vIEBicmVha2luZy1jaGFuZ2UgOC4wLjBcbiR3aGl0ZS02LW9wYWNpdHk6IHJnYmEod2hpdGUsIDAuMDYpO1xuXG4kZGFyay1wcmltYXJ5LXRleHQ6IHJnYmEoYmxhY2ssIDAuODcpO1xuJGRhcmstc2Vjb25kYXJ5LXRleHQ6IHJnYmEoYmxhY2ssIDAuNTQpO1xuJGRhcmstZGlzYWJsZWQtdGV4dDogcmdiYShibGFjaywgMC4zOCk7XG4kZGFyay1kaXZpZGVyczogcmdiYShibGFjaywgMC4xMik7XG4kZGFyay1mb2N1c2VkOiByZ2JhKGJsYWNrLCAwLjEyKTtcbiRsaWdodC1wcmltYXJ5LXRleHQ6IHdoaXRlO1xuJGxpZ2h0LXNlY29uZGFyeS10ZXh0OiByZ2JhKHdoaXRlLCAwLjcpO1xuJGxpZ2h0LWRpc2FibGVkLXRleHQ6IHJnYmEod2hpdGUsIDAuNSk7XG4kbGlnaHQtZGl2aWRlcnM6IHJnYmEod2hpdGUsIDAuMTIpO1xuJGxpZ2h0LWZvY3VzZWQ6IHJnYmEod2hpdGUsIDAuMTIpO1xuXG4kbWF0LXJlZDogKFxuICA1MDogI2ZmZWJlZSxcbiAgMTAwOiAjZmZjZGQyLFxuICAyMDA6ICNlZjlhOWEsXG4gIDMwMDogI2U1NzM3MyxcbiAgNDAwOiAjZWY1MzUwLFxuICA1MDA6ICNmNDQzMzYsXG4gIDYwMDogI2U1MzkzNSxcbiAgNzAwOiAjZDMyZjJmLFxuICA4MDA6ICNjNjI4MjgsXG4gIDkwMDogI2I3MWMxYyxcbiAgQTEwMDogI2ZmOGE4MCxcbiAgQTIwMDogI2ZmNTI1MixcbiAgQTQwMDogI2ZmMTc0NCxcbiAgQTcwMDogI2Q1MDAwMCxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LXBpbms6IChcbiAgNTA6ICNmY2U0ZWMsXG4gIDEwMDogI2Y4YmJkMCxcbiAgMjAwOiAjZjQ4ZmIxLFxuICAzMDA6ICNmMDYyOTIsXG4gIDQwMDogI2VjNDA3YSxcbiAgNTAwOiAjZTkxZTYzLFxuICA2MDA6ICNkODFiNjAsXG4gIDcwMDogI2MyMTg1YixcbiAgODAwOiAjYWQxNDU3LFxuICA5MDA6ICM4ODBlNGYsXG4gIEExMDA6ICNmZjgwYWIsXG4gIEEyMDA6ICNmZjQwODEsXG4gIEE0MDA6ICNmNTAwNTcsXG4gIEE3MDA6ICNjNTExNjIsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJG1hdC1wdXJwbGU6IChcbiAgNTA6ICNmM2U1ZjUsXG4gIDEwMDogI2UxYmVlNyxcbiAgMjAwOiAjY2U5M2Q4LFxuICAzMDA6ICNiYTY4YzgsXG4gIDQwMDogI2FiNDdiYyxcbiAgNTAwOiAjOWMyN2IwLFxuICA2MDA6ICM4ZTI0YWEsXG4gIDcwMDogIzdiMWZhMixcbiAgODAwOiAjNmExYjlhLFxuICA5MDA6ICM0YTE0OGMsXG4gIEExMDA6ICNlYTgwZmMsXG4gIEEyMDA6ICNlMDQwZmIsXG4gIEE0MDA6ICNkNTAwZjksXG4gIEE3MDA6ICNhYTAwZmYsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LWRlZXAtcHVycGxlOiAoXG4gIDUwOiAjZWRlN2Y2LFxuICAxMDA6ICNkMWM0ZTksXG4gIDIwMDogI2IzOWRkYixcbiAgMzAwOiAjOTU3NWNkLFxuICA0MDA6ICM3ZTU3YzIsXG4gIDUwMDogIzY3M2FiNyxcbiAgNjAwOiAjNWUzNWIxLFxuICA3MDA6ICM1MTJkYTgsXG4gIDgwMDogIzQ1MjdhMCxcbiAgOTAwOiAjMzExYjkyLFxuICBBMTAwOiAjYjM4OGZmLFxuICBBMjAwOiAjN2M0ZGZmLFxuICBBNDAwOiAjNjUxZmZmLFxuICBBNzAwOiAjNjIwMGVhLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJG1hdC1pbmRpZ286IChcbiAgNTA6ICNlOGVhZjYsXG4gIDEwMDogI2M1Y2FlOSxcbiAgMjAwOiAjOWZhOGRhLFxuICAzMDA6ICM3OTg2Y2IsXG4gIDQwMDogIzVjNmJjMCxcbiAgNTAwOiAjM2Y1MWI1LFxuICA2MDA6ICMzOTQ5YWIsXG4gIDcwMDogIzMwM2Y5ZixcbiAgODAwOiAjMjgzNTkzLFxuICA5MDA6ICMxYTIzN2UsXG4gIEExMDA6ICM4YzllZmYsXG4gIEEyMDA6ICM1MzZkZmUsXG4gIEE0MDA6ICMzZDVhZmUsXG4gIEE3MDA6ICMzMDRmZmUsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LWJsdWU6IChcbiAgNTA6ICNlM2YyZmQsXG4gIDEwMDogI2JiZGVmYixcbiAgMjAwOiAjOTBjYWY5LFxuICAzMDA6ICM2NGI1ZjYsXG4gIDQwMDogIzQyYTVmNSxcbiAgNTAwOiAjMjE5NmYzLFxuICA2MDA6ICMxZTg4ZTUsXG4gIDcwMDogIzE5NzZkMixcbiAgODAwOiAjMTU2NWMwLFxuICA5MDA6ICMwZDQ3YTEsXG4gIEExMDA6ICM4MmIxZmYsXG4gIEEyMDA6ICM0NDhhZmYsXG4gIEE0MDA6ICMyOTc5ZmYsXG4gIEE3MDA6ICMyOTYyZmYsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJG1hdC1saWdodC1ibHVlOiAoXG4gIDUwOiAjZTFmNWZlLFxuICAxMDA6ICNiM2U1ZmMsXG4gIDIwMDogIzgxZDRmYSxcbiAgMzAwOiAjNGZjM2Y3LFxuICA0MDA6ICMyOWI2ZjYsXG4gIDUwMDogIzAzYTlmNCxcbiAgNjAwOiAjMDM5YmU1LFxuICA3MDA6ICMwMjg4ZDEsXG4gIDgwMDogIzAyNzdiZCxcbiAgOTAwOiAjMDE1NzliLFxuICBBMTAwOiAjODBkOGZmLFxuICBBMjAwOiAjNDBjNGZmLFxuICBBNDAwOiAjMDBiMGZmLFxuICBBNzAwOiAjMDA5MWVhLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LWN5YW46IChcbiAgNTA6ICNlMGY3ZmEsXG4gIDEwMDogI2IyZWJmMixcbiAgMjAwOiAjODBkZWVhLFxuICAzMDA6ICM0ZGQwZTEsXG4gIDQwMDogIzI2YzZkYSxcbiAgNTAwOiAjMDBiY2Q0LFxuICA2MDA6ICMwMGFjYzEsXG4gIDcwMDogIzAwOTdhNyxcbiAgODAwOiAjMDA4MzhmLFxuICA5MDA6ICMwMDYwNjQsXG4gIEExMDA6ICM4NGZmZmYsXG4gIEEyMDA6ICMxOGZmZmYsXG4gIEE0MDA6ICMwMGU1ZmYsXG4gIEE3MDA6ICMwMGI4ZDQsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJG1hdC10ZWFsOiAoXG4gIDUwOiAjZTBmMmYxLFxuICAxMDA6ICNiMmRmZGIsXG4gIDIwMDogIzgwY2JjNCxcbiAgMzAwOiAjNGRiNmFjLFxuICA0MDA6ICMyNmE2OWEsXG4gIDUwMDogIzAwOTY4OCxcbiAgNjAwOiAjMDA4OTdiLFxuICA3MDA6ICMwMDc5NmIsXG4gIDgwMDogIzAwNjk1YyxcbiAgOTAwOiAjMDA0ZDQwLFxuICBBMTAwOiAjYTdmZmViLFxuICBBMjAwOiAjNjRmZmRhLFxuICBBNDAwOiAjMWRlOWI2LFxuICBBNzAwOiAjMDBiZmE1LFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtZ3JlZW46IChcbiAgNTA6ICNlOGY1ZTksXG4gIDEwMDogI2M4ZTZjOSxcbiAgMjAwOiAjYTVkNmE3LFxuICAzMDA6ICM4MWM3ODQsXG4gIDQwMDogIzY2YmI2YSxcbiAgNTAwOiAjNGNhZjUwLFxuICA2MDA6ICM0M2EwNDcsXG4gIDcwMDogIzM4OGUzYyxcbiAgODAwOiAjMmU3ZDMyLFxuICA5MDA6ICMxYjVlMjAsXG4gIEExMDA6ICNiOWY2Y2EsXG4gIEEyMDA6ICM2OWYwYWUsXG4gIEE0MDA6ICMwMGU2NzYsXG4gIEE3MDA6ICMwMGM4NTMsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LWxpZ2h0LWdyZWVuOiAoXG4gIDUwOiAjZjFmOGU5LFxuICAxMDA6ICNkY2VkYzgsXG4gIDIwMDogI2M1ZTFhNSxcbiAgMzAwOiAjYWVkNTgxLFxuICA0MDA6ICM5Y2NjNjUsXG4gIDUwMDogIzhiYzM0YSxcbiAgNjAwOiAjN2NiMzQyLFxuICA3MDA6ICM2ODlmMzgsXG4gIDgwMDogIzU1OGIyZixcbiAgOTAwOiAjMzM2OTFlLFxuICBBMTAwOiAjY2NmZjkwLFxuICBBMjAwOiAjYjJmZjU5LFxuICBBNDAwOiAjNzZmZjAzLFxuICBBNzAwOiAjNjRkZDE3LFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LWxpbWU6IChcbiAgNTA6ICNmOWZiZTcsXG4gIDEwMDogI2YwZjRjMyxcbiAgMjAwOiAjZTZlZTljLFxuICAzMDA6ICNkY2U3NzUsXG4gIDQwMDogI2Q0ZTE1NyxcbiAgNTAwOiAjY2RkYzM5LFxuICA2MDA6ICNjMGNhMzMsXG4gIDcwMDogI2FmYjQyYixcbiAgODAwOiAjOWU5ZDI0LFxuICA5MDA6ICM4Mjc3MTcsXG4gIEExMDA6ICNmNGZmODEsXG4gIEEyMDA6ICNlZWZmNDEsXG4gIEE0MDA6ICNjNmZmMDAsXG4gIEE3MDA6ICNhZWVhMDAsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LXllbGxvdzogKFxuICA1MDogI2ZmZmRlNyxcbiAgMTAwOiAjZmZmOWM0LFxuICAyMDA6ICNmZmY1OWQsXG4gIDMwMDogI2ZmZjE3NixcbiAgNDAwOiAjZmZlZTU4LFxuICA1MDA6ICNmZmViM2IsXG4gIDYwMDogI2ZkZDgzNSxcbiAgNzAwOiAjZmJjMDJkLFxuICA4MDA6ICNmOWE4MjUsXG4gIDkwMDogI2Y1N2YxNyxcbiAgQTEwMDogI2ZmZmY4ZCxcbiAgQTIwMDogI2ZmZmYwMCxcbiAgQTQwMDogI2ZmZWEwMCxcbiAgQTcwMDogI2ZmZDYwMCxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJG1hdC1hbWJlcjogKFxuICA1MDogI2ZmZjhlMSxcbiAgMTAwOiAjZmZlY2IzLFxuICAyMDA6ICNmZmUwODIsXG4gIDMwMDogI2ZmZDU0ZixcbiAgNDAwOiAjZmZjYTI4LFxuICA1MDA6ICNmZmMxMDcsXG4gIDYwMDogI2ZmYjMwMCxcbiAgNzAwOiAjZmZhMDAwLFxuICA4MDA6ICNmZjhmMDAsXG4gIDkwMDogI2ZmNmYwMCxcbiAgQTEwMDogI2ZmZTU3ZixcbiAgQTIwMDogI2ZmZDc0MCxcbiAgQTQwMDogI2ZmYzQwMCxcbiAgQTcwMDogI2ZmYWIwMCxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJG1hdC1vcmFuZ2U6IChcbiAgNTA6ICNmZmYzZTAsXG4gIDEwMDogI2ZmZTBiMixcbiAgMjAwOiAjZmZjYzgwLFxuICAzMDA6ICNmZmI3NGQsXG4gIDQwMDogI2ZmYTcyNixcbiAgNTAwOiAjZmY5ODAwLFxuICA2MDA6ICNmYjhjMDAsXG4gIDcwMDogI2Y1N2MwMCxcbiAgODAwOiAjZWY2YzAwLFxuICA5MDA6ICNlNjUxMDAsXG4gIEExMDA6ICNmZmQxODAsXG4gIEEyMDA6ICNmZmFiNDAsXG4gIEE0MDA6ICNmZjkxMDAsXG4gIEE3MDA6ICNmZjZkMDAsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6IGJsYWNrLFxuICApXG4pO1xuXG4kbWF0LWRlZXAtb3JhbmdlOiAoXG4gIDUwOiAjZmJlOWU3LFxuICAxMDA6ICNmZmNjYmMsXG4gIDIwMDogI2ZmYWI5MSxcbiAgMzAwOiAjZmY4YTY1LFxuICA0MDA6ICNmZjcwNDMsXG4gIDUwMDogI2ZmNTcyMixcbiAgNjAwOiAjZjQ1MTFlLFxuICA3MDA6ICNlNjRhMTksXG4gIDgwMDogI2Q4NDMxNSxcbiAgOTAwOiAjYmYzNjBjLFxuICBBMTAwOiAjZmY5ZTgwLFxuICBBMjAwOiAjZmY2ZTQwLFxuICBBNDAwOiAjZmYzZDAwLFxuICBBNzAwOiAjZGQyYzAwLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJG1hdC1icm93bjogKFxuICA1MDogI2VmZWJlOSxcbiAgMTAwOiAjZDdjY2M4LFxuICAyMDA6ICNiY2FhYTQsXG4gIDMwMDogI2ExODg3ZixcbiAgNDAwOiAjOGQ2ZTYzLFxuICA1MDA6ICM3OTU1NDgsXG4gIDYwMDogIzZkNGM0MSxcbiAgNzAwOiAjNWQ0MDM3LFxuICA4MDA6ICM0ZTM0MmUsXG4gIDkwMDogIzNlMjcyMyxcbiAgQTEwMDogI2Q3Y2NjOCxcbiAgQTIwMDogI2JjYWFhNCxcbiAgQTQwMDogIzhkNmU2MyxcbiAgQTcwMDogIzVkNDAzNyxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJG1hdC1ncmV5OiAoXG4gIDUwOiAjZmFmYWZhLFxuICAxMDA6ICNmNWY1ZjUsXG4gIDIwMDogI2VlZWVlZSxcbiAgMzAwOiAjZTBlMGUwLFxuICA0MDA6ICNiZGJkYmQsXG4gIDUwMDogIzllOWU5ZSxcbiAgNjAwOiAjNzU3NTc1LFxuICA3MDA6ICM2MTYxNjEsXG4gIDgwMDogIzQyNDI0MixcbiAgOTAwOiAjMjEyMTIxLFxuICBBMTAwOiAjZmZmZmZmLFxuICBBMjAwOiAjZWVlZWVlLFxuICBBNDAwOiAjYmRiZGJkLFxuICBBNzAwOiAjNjE2MTYxLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbi8vIEFsaWFzIGZvciBhbHRlcm5hdGUgc3BlbGxpbmcuXG4kbWF0LWdyYXk6ICRtYXQtZ3JleTtcblxuJG1hdC1ibHVlLWdyZXk6IChcbiAgNTA6ICNlY2VmZjEsXG4gIDEwMDogI2NmZDhkYyxcbiAgMjAwOiAjYjBiZWM1LFxuICAzMDA6ICM5MGE0YWUsXG4gIDQwMDogIzc4OTA5YyxcbiAgNTAwOiAjNjA3ZDhiLFxuICA2MDA6ICM1NDZlN2EsXG4gIDcwMDogIzQ1NWE2NCxcbiAgODAwOiAjMzc0NzRmLFxuICA5MDA6ICMyNjMyMzgsXG4gIEExMDA6ICNjZmQ4ZGMsXG4gIEEyMDA6ICNiMGJlYzUsXG4gIEE0MDA6ICM3ODkwOWMsXG4gIEE3MDA6ICM0NTVhNjQsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuLy8gQWxpYXMgZm9yIGFsdGVybmF0ZSBzcGVsbGluZy5cbiRtYXQtYmx1ZS1ncmF5OiAkbWF0LWJsdWUtZ3JleTtcblxuXG4vLyBCYWNrZ3JvdW5kIHBhbGV0dGUgZm9yIGxpZ2h0IHRoZW1lcy5cbiRtYXQtbGlnaHQtdGhlbWUtYmFja2dyb3VuZDogKFxuICBzdGF0dXMtYmFyOiBtYXBfZ2V0KCRtYXQtZ3JleSwgMzAwKSxcbiAgYXBwLWJhcjogICAgbWFwX2dldCgkbWF0LWdyZXksIDEwMCksXG4gIGJhY2tncm91bmQ6IG1hcF9nZXQoJG1hdC1ncmV5LCA1MCksXG4gIGhvdmVyOiAgICAgIHJnYmEoYmxhY2ssIDAuMDQpLCAvLyBUT0RPKGthcmEpOiBjaGVjayBzdHlsZSB3aXRoIE1hdGVyaWFsIERlc2lnbiBVWFxuICBjYXJkOiAgICAgICB3aGl0ZSxcbiAgZGlhbG9nOiAgICAgd2hpdGUsXG4gIGRpc2FibGVkLWJ1dHRvbjogcmdiYShibGFjaywgMC4xMiksXG4gIHJhaXNlZC1idXR0b246IHdoaXRlLFxuICBmb2N1c2VkLWJ1dHRvbjogJGRhcmstZm9jdXNlZCxcbiAgc2VsZWN0ZWQtYnV0dG9uOiBtYXBfZ2V0KCRtYXQtZ3JleSwgMzAwKSxcbiAgc2VsZWN0ZWQtZGlzYWJsZWQtYnV0dG9uOiBtYXBfZ2V0KCRtYXQtZ3JleSwgNDAwKSxcbiAgZGlzYWJsZWQtYnV0dG9uLXRvZ2dsZTogbWFwX2dldCgkbWF0LWdyZXksIDIwMCksXG4gIHVuc2VsZWN0ZWQtY2hpcDogbWFwX2dldCgkbWF0LWdyZXksIDMwMCksXG4gIGRpc2FibGVkLWxpc3Qtb3B0aW9uOiBtYXBfZ2V0KCRtYXQtZ3JleSwgMjAwKSxcbik7XG5cbi8vIEJhY2tncm91bmQgcGFsZXR0ZSBmb3IgZGFyayB0aGVtZXMuXG4kbWF0LWRhcmstdGhlbWUtYmFja2dyb3VuZDogKFxuICBzdGF0dXMtYmFyOiBibGFjayxcbiAgYXBwLWJhcjogICAgbWFwX2dldCgkbWF0LWdyZXksIDkwMCksXG4gIGJhY2tncm91bmQ6ICMzMDMwMzAsXG4gIGhvdmVyOiAgICAgIHJnYmEod2hpdGUsIDAuMDQpLCAvLyBUT0RPKGthcmEpOiBjaGVjayBzdHlsZSB3aXRoIE1hdGVyaWFsIERlc2lnbiBVWFxuICBjYXJkOiAgICAgICBtYXBfZ2V0KCRtYXQtZ3JleSwgODAwKSxcbiAgZGlhbG9nOiAgICAgbWFwX2dldCgkbWF0LWdyZXksIDgwMCksXG4gIGRpc2FibGVkLWJ1dHRvbjogcmdiYSh3aGl0ZSwgMC4xMiksXG4gIHJhaXNlZC1idXR0b246IG1hcC1nZXQoJG1hdC1ncmV5LCA4MDApLFxuICBmb2N1c2VkLWJ1dHRvbjogJGxpZ2h0LWZvY3VzZWQsXG4gIHNlbGVjdGVkLWJ1dHRvbjogbWFwX2dldCgkbWF0LWdyZXksIDkwMCksXG4gIHNlbGVjdGVkLWRpc2FibGVkLWJ1dHRvbjogbWFwX2dldCgkbWF0LWdyZXksIDgwMCksXG4gIGRpc2FibGVkLWJ1dHRvbi10b2dnbGU6IGJsYWNrLFxuICB1bnNlbGVjdGVkLWNoaXA6IG1hcF9nZXQoJG1hdC1ncmV5LCA3MDApLFxuICBkaXNhYmxlZC1saXN0LW9wdGlvbjogYmxhY2ssXG4pO1xuXG4vLyBGb3JlZ3JvdW5kIHBhbGV0dGUgZm9yIGxpZ2h0IHRoZW1lcy5cbiRtYXQtbGlnaHQtdGhlbWUtZm9yZWdyb3VuZDogKFxuICBiYXNlOiAgICAgICAgICAgICAgYmxhY2ssXG4gIGRpdmlkZXI6ICAgICAgICAgICAkZGFyay1kaXZpZGVycyxcbiAgZGl2aWRlcnM6ICAgICAgICAgICRkYXJrLWRpdmlkZXJzLFxuICBkaXNhYmxlZDogICAgICAgICAgJGRhcmstZGlzYWJsZWQtdGV4dCxcbiAgZGlzYWJsZWQtYnV0dG9uOiAgIHJnYmEoYmxhY2ssIDAuMjYpLFxuICBkaXNhYmxlZC10ZXh0OiAgICAgJGRhcmstZGlzYWJsZWQtdGV4dCxcbiAgZWxldmF0aW9uOiAgICAgICAgIGJsYWNrLFxuICBoaW50LXRleHQ6ICAgICAgICAgJGRhcmstZGlzYWJsZWQtdGV4dCxcbiAgc2Vjb25kYXJ5LXRleHQ6ICAgICRkYXJrLXNlY29uZGFyeS10ZXh0LFxuICBpY29uOiAgICAgICAgICAgICAgcmdiYShibGFjaywgMC41NCksXG4gIGljb25zOiAgICAgICAgICAgICByZ2JhKGJsYWNrLCAwLjU0KSxcbiAgdGV4dDogICAgICAgICAgICAgIHJnYmEoYmxhY2ssIDAuODcpLFxuICBzbGlkZXItbWluOiAgICAgICAgcmdiYShibGFjaywgMC44NyksXG4gIHNsaWRlci1vZmY6ICAgICAgICByZ2JhKGJsYWNrLCAwLjI2KSxcbiAgc2xpZGVyLW9mZi1hY3RpdmU6IHJnYmEoYmxhY2ssIDAuMzgpLFxuKTtcblxuLy8gRm9yZWdyb3VuZCBwYWxldHRlIGZvciBkYXJrIHRoZW1lcy5cbiRtYXQtZGFyay10aGVtZS1mb3JlZ3JvdW5kOiAoXG4gIGJhc2U6ICAgICAgICAgICAgICB3aGl0ZSxcbiAgZGl2aWRlcjogICAgICAgICAgICRsaWdodC1kaXZpZGVycyxcbiAgZGl2aWRlcnM6ICAgICAgICAgICRsaWdodC1kaXZpZGVycyxcbiAgZGlzYWJsZWQ6ICAgICAgICAgICRsaWdodC1kaXNhYmxlZC10ZXh0LFxuICBkaXNhYmxlZC1idXR0b246ICAgcmdiYSh3aGl0ZSwgMC4zKSxcbiAgZGlzYWJsZWQtdGV4dDogICAgICRsaWdodC1kaXNhYmxlZC10ZXh0LFxuICBlbGV2YXRpb246ICAgICAgICAgYmxhY2ssXG4gIGhpbnQtdGV4dDogICAgICAgICAkbGlnaHQtZGlzYWJsZWQtdGV4dCxcbiAgc2Vjb25kYXJ5LXRleHQ6ICAgICRsaWdodC1zZWNvbmRhcnktdGV4dCxcbiAgaWNvbjogICAgICAgICAgICAgIHdoaXRlLFxuICBpY29uczogICAgICAgICAgICAgd2hpdGUsXG4gIHRleHQ6ICAgICAgICAgICAgICB3aGl0ZSxcbiAgc2xpZGVyLW1pbjogICAgICAgIHdoaXRlLFxuICBzbGlkZXItb2ZmOiAgICAgICAgcmdiYSh3aGl0ZSwgMC4zKSxcbiAgc2xpZGVyLW9mZi1hY3RpdmU6IHJnYmEod2hpdGUsIDAuMyksXG4pO1xuXG5cblxuLy8gRm9yIGEgZ2l2ZW4gaHVlIGluIGEgcGFsZXR0ZSwgcmV0dXJuIHRoZSBjb250cmFzdCBjb2xvciBmcm9tIHRoZSBtYXAgb2YgY29udHJhc3QgcGFsZXR0ZXMuXG4vLyBAcGFyYW0gJGNvbG9yLW1hcFxuLy8gQHBhcmFtICRodWVcbkBmdW5jdGlvbiBtYXQtY29udHJhc3QoJHBhbGV0dGUsICRodWUpIHtcbiAgQHJldHVybiBtYXAtZ2V0KG1hcC1nZXQoJHBhbGV0dGUsIGNvbnRyYXN0KSwgJGh1ZSk7XG59XG5cblxuLy8gQ3JlYXRlcyBhIG1hcCBvZiBodWVzIHRvIGNvbG9ycyBmb3IgYSB0aGVtZS4gVGhpcyBpcyB1c2VkIHRvIGRlZmluZSBhIHRoZW1lIHBhbGV0dGUgaW4gdGVybXNcbi8vIG9mIHRoZSBNYXRlcmlhbCBEZXNpZ24gaHVlcy5cbi8vIEBwYXJhbSAkY29sb3ItbWFwXG4vLyBAcGFyYW0gJHByaW1hcnlcbi8vIEBwYXJhbSAkbGlnaHRlclxuQGZ1bmN0aW9uIG1hdC1wYWxldHRlKCRiYXNlLXBhbGV0dGUsICRkZWZhdWx0OiA1MDAsICRsaWdodGVyOiAxMDAsICRkYXJrZXI6IDcwMCkge1xuICAkcmVzdWx0OiBtYXBfbWVyZ2UoJGJhc2UtcGFsZXR0ZSwgKFxuICAgIGRlZmF1bHQ6IG1hcC1nZXQoJGJhc2UtcGFsZXR0ZSwgJGRlZmF1bHQpLFxuICAgIGxpZ2h0ZXI6IG1hcC1nZXQoJGJhc2UtcGFsZXR0ZSwgJGxpZ2h0ZXIpLFxuICAgIGRhcmtlcjogbWFwLWdldCgkYmFzZS1wYWxldHRlLCAkZGFya2VyKSxcblxuICAgIGRlZmF1bHQtY29udHJhc3Q6IG1hdC1jb250cmFzdCgkYmFzZS1wYWxldHRlLCAkZGVmYXVsdCksXG4gICAgbGlnaHRlci1jb250cmFzdDogbWF0LWNvbnRyYXN0KCRiYXNlLXBhbGV0dGUsICRsaWdodGVyKSxcbiAgICBkYXJrZXItY29udHJhc3Q6IG1hdC1jb250cmFzdCgkYmFzZS1wYWxldHRlLCAkZGFya2VyKVxuICApKTtcblxuICAvLyBGb3IgZWFjaCBodWUgaW4gdGhlIHBhbGV0dGUsIGFkZCBhIFwiLWNvbnRyYXN0XCIgY29sb3IgdG8gdGhlIG1hcC5cbiAgQGVhY2ggJGh1ZSwgJGNvbG9yIGluICRiYXNlLXBhbGV0dGUge1xuICAgICRyZXN1bHQ6IG1hcF9tZXJnZSgkcmVzdWx0LCAoXG4gICAgICAnI3skaHVlfS1jb250cmFzdCc6IG1hdC1jb250cmFzdCgkYmFzZS1wYWxldHRlLCAkaHVlKVxuICAgICkpO1xuICB9XG5cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG5cbi8vIEdldHMgYSBjb2xvciBmcm9tIGEgdGhlbWUgcGFsZXR0ZSAodGhlIG91dHB1dCBvZiBtYXQtcGFsZXR0ZSkuXG4vLyBUaGUgaHVlIGNhbiBiZSBvbmUgb2YgdGhlIHN0YW5kYXJkIHZhbHVlcyAoNTAwLCBBNDAwLCBldGMuKSwgb25lIG9mIHRoZSB0aHJlZSBwcmVjb25maWd1cmVkXG4vLyBodWVzIChkZWZhdWx0LCBsaWdodGVyLCBkYXJrZXIpLCBvciBhbnkgb2YgdGhlIGFmb3JlbWVudGlvbmVkIHByZWZpeGVkIHdpdGggXCItY29udHJhc3RcIi5cbi8vXG4vLyBAcGFyYW0gJGNvbG9yLW1hcCBUaGUgdGhlbWUgcGFsZXR0ZSAob3V0cHV0IG9mIG1hdC1wYWxldHRlKS5cbi8vIEBwYXJhbSAkaHVlIFRoZSBodWUgZnJvbSB0aGUgcGFsZXR0ZSB0byB1c2UuIElmIHRoaXMgaXMgYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDEsIGl0IHdpbGxcbi8vICAgICBiZSB0cmVhdGVkIGFzIG9wYWNpdHkuXG4vLyBAcGFyYW0gJG9wYWNpdHkgVGhlIGFscGhhIGNoYW5uZWwgdmFsdWUgZm9yIHRoZSBjb2xvci5cbkBmdW5jdGlvbiBtYXQtY29sb3IoJHBhbGV0dGUsICRodWU6IGRlZmF1bHQsICRvcGFjaXR5OiBudWxsKSB7XG4gIC8vIElmIGh1ZUtleSBpcyBhIG51bWJlciBiZXR3ZWVuIHplcm8gYW5kIG9uZSwgdGhlbiBpdCBhY3R1YWxseSBjb250YWlucyBhblxuICAvLyBvcGFjaXR5IHZhbHVlLCBzbyByZWNhbGwgdGhpcyBmdW5jdGlvbiB3aXRoIHRoZSBkZWZhdWx0IGh1ZSBhbmQgdGhhdCBnaXZlbiBvcGFjaXR5LlxuICBAaWYgdHlwZS1vZigkaHVlKSA9PSBudW1iZXIgYW5kICRodWUgPj0gMCBhbmQgJGh1ZSA8PSAxIHtcbiAgICBAcmV0dXJuIG1hdC1jb2xvcigkcGFsZXR0ZSwgZGVmYXVsdCwgJGh1ZSk7XG4gIH1cblxuICAkY29sb3I6IG1hcC1nZXQoJHBhbGV0dGUsICRodWUpO1xuICAkb3BhY2l0eTogaWYoJG9wYWNpdHkgPT0gbnVsbCwgb3BhY2l0eSgkY29sb3IpLCAkb3BhY2l0eSk7XG5cbiAgQHJldHVybiByZ2JhKCRjb2xvciwgJG9wYWNpdHkpO1xufVxuXG5cbi8vIENyZWF0ZXMgYSBjb250YWluZXIgb2JqZWN0IGZvciBhIGxpZ2h0IHRoZW1lIHRvIGJlIGdpdmVuIHRvIGluZGl2aWR1YWwgY29tcG9uZW50IHRoZW1lIG1peGlucy5cbkBmdW5jdGlvbiBtYXQtbGlnaHQtdGhlbWUoJHByaW1hcnksICRhY2NlbnQsICR3YXJuOiBtYXQtcGFsZXR0ZSgkbWF0LXJlZCkpIHtcbiAgQHJldHVybiAoXG4gICAgcHJpbWFyeTogJHByaW1hcnksXG4gICAgYWNjZW50OiAkYWNjZW50LFxuICAgIHdhcm46ICR3YXJuLFxuICAgIGlzLWRhcms6IGZhbHNlLFxuICAgIGZvcmVncm91bmQ6ICRtYXQtbGlnaHQtdGhlbWUtZm9yZWdyb3VuZCxcbiAgICBiYWNrZ3JvdW5kOiAkbWF0LWxpZ2h0LXRoZW1lLWJhY2tncm91bmQsXG4gICk7XG59XG5cblxuLy8gQ3JlYXRlcyBhIGNvbnRhaW5lciBvYmplY3QgZm9yIGEgZGFyayB0aGVtZSB0byBiZSBnaXZlbiB0byBpbmRpdmlkdWFsIGNvbXBvbmVudCB0aGVtZSBtaXhpbnMuXG5AZnVuY3Rpb24gbWF0LWRhcmstdGhlbWUoJHByaW1hcnksICRhY2NlbnQsICR3YXJuOiBtYXQtcGFsZXR0ZSgkbWF0LXJlZCkpIHtcbiAgQHJldHVybiAoXG4gICAgcHJpbWFyeTogJHByaW1hcnksXG4gICAgYWNjZW50OiAkYWNjZW50LFxuICAgIHdhcm46ICR3YXJuLFxuICAgIGlzLWRhcms6IHRydWUsXG4gICAgZm9yZWdyb3VuZDogJG1hdC1kYXJrLXRoZW1lLWZvcmVncm91bmQsXG4gICAgYmFja2dyb3VuZDogJG1hdC1kYXJrLXRoZW1lLWJhY2tncm91bmQsXG4gICk7XG59XG5cblxuXG4kbWF0LXJpcHBsZS1jb2xvci1vcGFjaXR5OiAwLjE7XG5cbkBtaXhpbiBtYXQtcmlwcGxlKCkge1xuXG4gIC8vIFRoZSBob3N0IGVsZW1lbnQgb2YgYW4gbWF0LXJpcHBsZSBkaXJlY3RpdmUgc2hvdWxkIGFsd2F5cyBoYXZlIGEgcG9zaXRpb24gb2YgXCJhYnNvbHV0ZVwiIG9yXG4gIC8vIFwicmVsYXRpdmVcIiBzbyB0aGF0IHRoZSByaXBwbGVzIGluc2lkZSBhcmUgY29ycmVjdGx5IHBvc2l0aW9uZWQgcmVsYXRpdmVseSB0byB0aGUgY29udGFpbmVyLlxuICAubWF0LXJpcHBsZSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIC8vIEJ5IGRlZmF1bHQsIGV2ZXJ5IHJpcHBsZSBjb250YWluZXIgc2hvdWxkIGhhdmUgcG9zaXRpb246IHJlbGF0aXZlIGluIGZhdm9yIG9mIGNyZWF0aW5nIGFuXG4gICAgLy8gZWFzeSBBUEkgZm9yIGRldmVsb3BlcnMgdXNpbmcgdGhlIE1hdFJpcHBsZSBkaXJlY3RpdmUuXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgLm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWQge1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICB9XG5cbiAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgIHRyYW5zaXRpb246IG9wYWNpdHksIHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcblxuICAgIC8vIEluIGhpZ2ggY29udHJhc3QgbW9kZSB0aGUgcmlwcGxlIGlzIG9wYXF1ZSwgY2F1c2luZyBpdCB0byBvYnN0cnVjdCB0aGUgY29udGVudC5cbiAgICBAaW5jbHVkZSBjZGstaGlnaC1jb250cmFzdCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxufVxuXG4vKiBUaGVtZSBmb3IgdGhlIHJpcHBsZSBlbGVtZW50cy4qL1xuQG1peGluIG1hdC1yaXBwbGUtdGhlbWUoJHRoZW1lKSB7XG4gICRmb3JlZ3JvdW5kOiBtYXBfZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG4gICRmb3JlZ3JvdW5kLWJhc2U6IG1hcF9nZXQoJGZvcmVncm91bmQsIGJhc2UpO1xuXG4gIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGZvcmVncm91bmQtYmFzZSwgJG1hdC1yaXBwbGUtY29sb3Itb3BhY2l0eSk7XG4gIH1cbn1cblxuXG5cbi8vIFV0aWxpdHkgZm9yIGZldGNoaW5nIGEgbmVzdGVkIHZhbHVlIGZyb20gYSB0eXBvZ3JhcGh5IGNvbmZpZy5cbkBmdW5jdGlvbiBfbWF0LWdldC10eXBlLXZhbHVlKCRjb25maWcsICRsZXZlbCwgJG5hbWUpIHtcbiAgQHJldHVybiBtYXAtZ2V0KG1hcC1nZXQoJGNvbmZpZywgJGxldmVsKSwgJG5hbWUpO1xufVxuXG4vLyBHZXRzIHRoZSBmb250IHNpemUgZm9yIGEgbGV2ZWwgaW5zaWRlIGEgdHlwb2dyYXBoeSBjb25maWcuXG5AZnVuY3Rpb24gbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCAkbGV2ZWwpIHtcbiAgQHJldHVybiBfbWF0LWdldC10eXBlLXZhbHVlKCRjb25maWcsICRsZXZlbCwgZm9udC1zaXplKTtcbn1cblxuLy8gR2V0cyB0aGUgbGluZSBoZWlnaHQgZm9yIGEgbGV2ZWwgaW5zaWRlIGEgdHlwb2dyYXBoeSBjb25maWcuXG5AZnVuY3Rpb24gbWF0LWxpbmUtaGVpZ2h0KCRjb25maWcsICRsZXZlbCkge1xuICBAcmV0dXJuIF9tYXQtZ2V0LXR5cGUtdmFsdWUoJGNvbmZpZywgJGxldmVsLCBsaW5lLWhlaWdodCk7XG59XG5cbi8vIEdldHMgdGhlIGZvbnQgd2VpZ2h0IGZvciBhIGxldmVsIGluc2lkZSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuQGZ1bmN0aW9uIG1hdC1mb250LXdlaWdodCgkY29uZmlnLCAkbGV2ZWwpIHtcbiAgQHJldHVybiBfbWF0LWdldC10eXBlLXZhbHVlKCRjb25maWcsICRsZXZlbCwgZm9udC13ZWlnaHQpO1xufVxuXG4vLyBHZXRzIHRoZSBsZXR0ZXIgc3BhY2luZyBmb3IgYSBsZXZlbCBpbnNpZGUgYSB0eXBvZ3JhcGh5IGNvbmZpZy5cbkBmdW5jdGlvbiBtYXQtbGV0dGVyLXNwYWNpbmcoJGNvbmZpZywgJGxldmVsKSB7XG4gIEByZXR1cm4gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGxldHRlci1zcGFjaW5nKTtcbn1cblxuLy8gR2V0cyB0aGUgZm9udC1mYW1pbHkgZnJvbSBhIHR5cG9ncmFwaHkgY29uZmlnIGFuZCByZW1vdmVzIHRoZSBxdW90ZXMgYXJvdW5kIGl0LlxuQGZ1bmN0aW9uIG1hdC1mb250LWZhbWlseSgkY29uZmlnLCAkbGV2ZWw6IG51bGwpIHtcbiAgJGZvbnQtZmFtaWx5OiBtYXAtZ2V0KCRjb25maWcsIGZvbnQtZmFtaWx5KTtcblxuICBAaWYgJGxldmVsICE9IG51bGwge1xuICAgICRmb250LWZhbWlseTogX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGZvbnQtZmFtaWx5KTtcbiAgfVxuXG4gIC8vIEd1YXJkIGFnYWluc3QgdW5xdW90aW5nIG5vbi1zdHJpbmcgdmFsdWVzLCBiZWNhdXNlIGl0J3MgZGVwcmVjYXRlZC5cbiAgQHJldHVybiBpZih0eXBlLW9mKCRmb250LWZhbWlseSkgPT0gc3RyaW5nLCB1bnF1b3RlKCRmb250LWZhbWlseSksICRmb250LWZhbWlseSk7XG59XG5cbi8vIE91dHB1dHMgdGhlIHNob3J0aGFuZCBgZm9udGAgQ1NTIHByb3BlcnR5LCBiYXNlZCBvbiBhIHNldCBvZiB0eXBvZ3JhcGh5IHZhbHVlcy4gRmFsbHMgYmFjayB0b1xuLy8gdGhlIGluZGl2aWR1YWwgcHJvcGVydGllcyBpZiBhIHZhbHVlIHRoYXQgaXNuJ3QgYWxsb3dlZCBpbiB0aGUgc2hvcnRoYW5kIGlzIHBhc3NlZCBpbi5cbkBtaXhpbiBtYXQtdHlwb2dyYXBoeS1mb250LXNob3J0aGFuZCgkZm9udC1zaXplLCAkZm9udC13ZWlnaHQsICRsaW5lLWhlaWdodCwgJGZvbnQtZmFtaWx5KSB7XG4gIC8vIElmIGFueSBvZiB0aGUgdmFsdWVzIGFyZSBzZXQgdG8gYGluaGVyaXRgLCB3ZSBjYW4ndCB1c2UgdGhlIHNob3J0aGFuZFxuICAvLyBzbyB3ZSBmYWxsIGJhY2sgdG8gcGFzc2luZyBpbiB0aGUgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzLlxuICBAaWYgKCRmb250LXNpemUgPT0gaW5oZXJpdCBvclxuICAgICAgICRmb250LXdlaWdodCA9PSBpbmhlcml0IG9yXG4gICAgICAgJGxpbmUtaGVpZ2h0ID09IGluaGVyaXQgb3JcbiAgICAgICAkZm9udC1mYW1pbHkgPT0gaW5oZXJpdCBvclxuICAgICAgICRmb250LXNpemUgPT0gbnVsbCBvclxuICAgICAgICRmb250LXdlaWdodCA9PSBudWxsIG9yXG4gICAgICAgJGxpbmUtaGVpZ2h0ID09IG51bGwgb3JcbiAgICAgICAkZm9udC1mYW1pbHkgPT0gbnVsbCkge1xuXG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICAgIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQ7XG4gICAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodDtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2UgdXNlIHRoZSBzaG9ydGhhbmQgYGZvbnRgLCBiZWNhdXNlIGl0J3MgdGhlIGxlYXN0IGFtb3VudCBvZiBieXRlcy4gTm90ZVxuICAgIC8vIHRoYXQgd2UgbmVlZCB0byB1c2UgaW50ZXJwb2xhdGlvbiBmb3IgYGZvbnQtc2l6ZS9saW5lLWhlaWdodGAgaW4gb3JkZXIgdG8gcHJldmVudFxuICAgIC8vIFNhc3MgZnJvbSBkaXZpZGluZyB0aGUgdHdvIHZhbHVlcy5cbiAgICBmb250OiAkZm9udC13ZWlnaHQgI3skZm9udC1zaXplfS8jeyRsaW5lLWhlaWdodH0gJGZvbnQtZmFtaWx5O1xuICB9XG59XG5cbi8vIENvbnZlcnRzIGEgdHlwb2dyYXBoeSBsZXZlbCBpbnRvIENTUyBzdHlsZXMuXG5AbWl4aW4gbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsICRsZXZlbCkge1xuICAkZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsICRsZXZlbCk7XG4gICRmb250LXdlaWdodDogbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsICRsZXZlbCk7XG4gICRsaW5lLWhlaWdodDogbWF0LWxpbmUtaGVpZ2h0KCRjb25maWcsICRsZXZlbCk7XG4gICRmb250LWZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcsICRsZXZlbCk7XG5cbiAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktZm9udC1zaG9ydGhhbmQoJGZvbnQtc2l6ZSwgJGZvbnQtd2VpZ2h0LCAkbGluZS1oZWlnaHQsICRmb250LWZhbWlseSk7XG4gIGxldHRlci1zcGFjaW5nOiBtYXQtbGV0dGVyLXNwYWNpbmcoJGNvbmZpZywgJGxldmVsKTtcbn1cblxuXG5AbWl4aW4gbWF0LW9wdGlvbi10aGVtZSgkdGhlbWUpIHtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG5cbiAgLm1hdC1vcHRpb24ge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gICAgJjpob3Zlcjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpLFxuICAgICY6Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSB7XG4gICAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGhvdmVyKTtcbiAgICB9XG5cbiAgICAvLyBJbiBtdWx0aXBsZSBtb2RlIHRoZXJlIGlzIGEgY2hlY2tib3ggdG8gc2hvdyB0aGF0IHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQuXG4gICAgJi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgIH1cblxuICAgICYubWF0LWFjdGl2ZSB7XG4gICAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGhvdmVyKTtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIH1cblxuICAgICYubWF0LW9wdGlvbi1kaXNhYmxlZCB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBoaW50LXRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtcHJpbWFyeSAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSk7XG4gIH1cblxuICAubWF0LWFjY2VudCAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkYWNjZW50KTtcbiAgfVxuXG4gIC5tYXQtd2FybiAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkd2Fybik7XG4gIH1cbn1cblxuQG1peGluIG1hdC1vcHRpb24tdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtb3B0aW9uIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgICAgIHNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgc3ViaGVhZGluZy0yKTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5AbWl4aW4gbWF0LW9wdGdyb3VwLXRoZW1lKCR0aGVtZSkge1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtb3B0Z3JvdXAtbGFiZWwge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtb3B0Z3JvdXAtZGlzYWJsZWQgLm1hdC1vcHRncm91cC1sYWJlbCB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgaGludC10ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LW9wdGdyb3VwLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LW9wdGdyb3VwLWxhYmVsIHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgYm9keS0yKTtcbiAgfVxufVxuXG5cblxuQG1peGluIG1hdC1wc2V1ZG8tY2hlY2tib3gtdGhlbWUoJHRoZW1lKSB7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAtZ2V0KCR0aGVtZSwgaXMtZGFyayk7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuXG4gIC8vIE5PVEUodHJhdmlza2F1Zm1hbik6IFdoaWxlIHRoZSBzcGVjIGNhbGxzIGZvciB0cmFuc2x1Y2VudCBibGFja3Mvd2hpdGVzIGZvciBkaXNhYmxlZCBjb2xvcnMsXG4gIC8vIHRoaXMgZG9lcyBub3Qgd29yayB3ZWxsIHdpdGggZWxlbWVudHMgbGF5ZXJlZCBvbiB0b3Agb2Ygb25lIGFub3RoZXIuIFRvIGdldCBhcm91bmQgdGhpcyB3ZVxuICAvLyBibGVuZCB0aGUgY29sb3JzIHRvZ2V0aGVyIGJhc2VkIG9uIHRoZSBiYXNlIGNvbG9yIGFuZCB0aGUgdGhlbWUgYmFja2dyb3VuZC5cbiAgJHdoaXRlLTMwcGN0LW9wYWNpdHktb24tZGFyazogIzY4Njg2ODtcbiAgJGJsYWNrLTI2cGN0LW9wYWNpdHktb24tbGlnaHQ6ICNiMGIwYjA7XG4gICRkaXNhYmxlZC1jb2xvcjogaWYoJGlzLWRhcmstdGhlbWUsICR3aGl0ZS0zMHBjdC1vcGFjaXR5LW9uLWRhcmssICRibGFjay0yNnBjdC1vcGFjaXR5LW9uLWxpZ2h0KTtcbiAgJGNvbG9yZWQtYm94LXNlbGVjdG9yOiAnLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSc7XG5cbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gge1xuICAgIGNvbG9yOiBtYXQtY29sb3IobWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpLCBzZWNvbmRhcnktdGV4dCk7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kKTtcbiAgICB9XG4gIH1cblxuICAvLyBEZWZhdWx0IHRvIHRoZSBhY2NlbnQgY29sb3IuIE5vdGUgdGhhdCB0aGUgcHNldWRvIGNoZWNrYm94ZXMgYXJlIG1lYW50IHRvIGluaGVyaXQgdGhlXG4gIC8vIHRoZW1lIGZyb20gdGhlaXIgcGFyZW50LCByYXRoZXIgdGhhbiBpbXBsZW1lbnRpbmcgdGhlaXIgb3duIHRoZW1pbmcsIHdoaWNoIGlzIHdoeSB3ZVxuICAvLyBkb24ndCBhdHRhY2ggdG8gdGhlIGBtYXQtKmAgY2xhc3Nlcy5cbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSxcbiAgLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSB7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpKTtcbiAgfVxuXG4gIC5tYXQtcHJpbWFyeSAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLFxuICAubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSB7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KSk7XG4gIH1cblxuICAubWF0LXdhcm4gLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcihtYXAtZ2V0KCR0aGVtZSwgd2FybikpO1xuICB9XG5cbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSB7XG4gICAgJi5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkIHtcbiAgICAgIGJhY2tncm91bmQ6ICRkaXNhYmxlZC1jb2xvcjtcbiAgICB9XG4gIH1cbn1cblxuXG5cbi8vIFJlcHJlc2VudHMgYSB0eXBvZ3JhcGh5IGxldmVsIGZyb20gdGhlIE1hdGVyaWFsIGRlc2lnbiBzcGVjLlxuQGZ1bmN0aW9uIG1hdC10eXBvZ3JhcGh5LWxldmVsKFxuICAkZm9udC1zaXplLFxuICAkbGluZS1oZWlnaHQ6ICRmb250LXNpemUsXG4gICRmb250LXdlaWdodDogNDAwLFxuICAkZm9udC1mYW1pbHk6IG51bGwsXG4gICRsZXR0ZXItc3BhY2luZzogbnVsbCkge1xuXG4gIEByZXR1cm4gKFxuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZSxcbiAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LFxuICAgIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQsXG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseSxcbiAgICBsZXR0ZXItc3BhY2luZzogJGxldHRlci1zcGFjaW5nXG4gICk7XG59XG5cbi8vIFJlcHJlc2VudHMgYSBjb2xsZWN0aW9uIG9mIHR5cG9ncmFwaHkgbGV2ZWxzLlxuLy8gRGVmYXVsdHMgY29tZSBmcm9tIGh0dHBzOi8vbWF0ZXJpYWwuaW8vZ3VpZGVsaW5lcy9zdHlsZS90eXBvZ3JhcGh5Lmh0bWxcbkBmdW5jdGlvbiBtYXQtdHlwb2dyYXBoeS1jb25maWcoXG4gICRmb250LWZhbWlseTogICAnUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWYnLFxuICAkZGlzcGxheS00OiAgICAgbWF0LXR5cG9ncmFwaHktbGV2ZWwoMTEycHgsIDExMnB4LCAzMDApLFxuICAkZGlzcGxheS0zOiAgICAgbWF0LXR5cG9ncmFwaHktbGV2ZWwoNTZweCwgNTZweCwgNDAwKSxcbiAgJGRpc3BsYXktMjogICAgIG1hdC10eXBvZ3JhcGh5LWxldmVsKDQ1cHgsIDQ4cHgsIDQwMCksXG4gICRkaXNwbGF5LTE6ICAgICBtYXQtdHlwb2dyYXBoeS1sZXZlbCgzNHB4LCA0MHB4LCA0MDApLFxuICAkaGVhZGxpbmU6ICAgICAgbWF0LXR5cG9ncmFwaHktbGV2ZWwoMjRweCwgMzJweCwgNDAwKSxcbiAgJHRpdGxlOiAgICAgICAgIG1hdC10eXBvZ3JhcGh5LWxldmVsKDIwcHgsIDMycHgsIDUwMCksXG4gICRzdWJoZWFkaW5nLTI6ICBtYXQtdHlwb2dyYXBoeS1sZXZlbCgxNnB4LCAyOHB4LCA0MDApLFxuICAkc3ViaGVhZGluZy0xOiAgbWF0LXR5cG9ncmFwaHktbGV2ZWwoMTVweCwgMjRweCwgNDAwKSxcbiAgJGJvZHktMjogICAgICAgIG1hdC10eXBvZ3JhcGh5LWxldmVsKDE0cHgsIDI0cHgsIDUwMCksXG4gICRib2R5LTE6ICAgICAgICBtYXQtdHlwb2dyYXBoeS1sZXZlbCgxNHB4LCAyMHB4LCA0MDApLFxuICAkY2FwdGlvbjogICAgICAgbWF0LXR5cG9ncmFwaHktbGV2ZWwoMTJweCwgMjBweCwgNDAwKSxcbiAgJGJ1dHRvbjogICAgICAgIG1hdC10eXBvZ3JhcGh5LWxldmVsKDE0cHgsIDE0cHgsIDUwMCksXG4gIC8vIExpbmUtaGVpZ2h0IG11c3QgYmUgdW5pdC1sZXNzIGZyYWN0aW9uIG9mIHRoZSBmb250LXNpemUuXG4gICRpbnB1dDogICAgICAgICBtYXQtdHlwb2dyYXBoeS1sZXZlbChpbmhlcml0LCAxLjEyNSwgNDAwKVxuKSB7XG5cbiAgLy8gRGVjbGFyZSBhbiBpbml0aWFsIG1hcCB3aXRoIGFsbCBvZiB0aGUgbGV2ZWxzLlxuICAkY29uZmlnOiAoXG4gICAgZGlzcGxheS00OiAgICAgICRkaXNwbGF5LTQsXG4gICAgZGlzcGxheS0zOiAgICAgICRkaXNwbGF5LTMsXG4gICAgZGlzcGxheS0yOiAgICAgICRkaXNwbGF5LTIsXG4gICAgZGlzcGxheS0xOiAgICAgICRkaXNwbGF5LTEsXG4gICAgaGVhZGxpbmU6ICAgICAgICRoZWFkbGluZSxcbiAgICB0aXRsZTogICAgICAgICAgJHRpdGxlLFxuICAgIHN1YmhlYWRpbmctMjogICAkc3ViaGVhZGluZy0yLFxuICAgIHN1YmhlYWRpbmctMTogICAkc3ViaGVhZGluZy0xLFxuICAgIGJvZHktMjogICAgICAgICAkYm9keS0yLFxuICAgIGJvZHktMTogICAgICAgICAkYm9keS0xLFxuICAgIGNhcHRpb246ICAgICAgICAkY2FwdGlvbixcbiAgICBidXR0b246ICAgICAgICAgJGJ1dHRvbixcbiAgICBpbnB1dDogICAgICAgICAgJGlucHV0LFxuICApO1xuXG4gIC8vIExvb3AgdGhyb3VnaCB0aGUgbGV2ZWxzIGFuZCBzZXQgdGhlIGBmb250LWZhbWlseWAgb2YgdGhlIG9uZXMgdGhhdCBkb24ndCBoYXZlIG9uZSB0byB0aGUgYmFzZS5cbiAgLy8gTm90ZSB0aGF0IFNhc3MgY2FuJ3QgbW9kaWZ5IG1hcHMgaW4gcGxhY2UsIHdoaWNoIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBtZXJnZSBhbmQgcmUtYXNzaWduLlxuICBAZWFjaCAka2V5LCAkbGV2ZWwgaW4gJGNvbmZpZyB7XG4gICAgQGlmIG1hcC1nZXQoJGxldmVsLCBmb250LWZhbWlseSkgPT0gbnVsbCB7XG4gICAgICAkbmV3LWxldmVsOiBtYXAtbWVyZ2UoJGxldmVsLCAoZm9udC1mYW1pbHk6ICRmb250LWZhbWlseSkpO1xuICAgICAgJGNvbmZpZzogbWFwLW1lcmdlKCRjb25maWcsICgka2V5OiAkbmV3LWxldmVsKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIHRoZSBiYXNlIGZvbnQgZmFtaWx5IHRvIHRoZSBjb25maWcuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRjb25maWcsIChmb250LWZhbWlseTogJGZvbnQtZmFtaWx5KSk7XG59XG5cbi8vIEFkZHMgdGhlIGJhc2UgdHlwb2dyYXBoeSBzdHlsZXMsIGJhc2VkIG9uIGEgY29uZmlnLlxuQG1peGluIG1hdC1iYXNlLXR5cG9ncmFwaHkoJGNvbmZpZywgJHNlbGVjdG9yOiAnLm1hdC10eXBvZ3JhcGh5Jykge1xuICAubWF0LWgxLCAubWF0LWhlYWRsaW5lLCAjeyRzZWxlY3Rvcn0gaDEge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCBoZWFkbGluZSk7XG4gICAgbWFyZ2luOiAwIDAgMTZweDtcbiAgfVxuXG4gIC5tYXQtaDIsIC5tYXQtdGl0bGUsICN7JHNlbGVjdG9yfSBoMiB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIHRpdGxlKTtcbiAgICBtYXJnaW46IDAgMCAxNnB4O1xuICB9XG5cbiAgLm1hdC1oMywgLm1hdC1zdWJoZWFkaW5nLTIsICN7JHNlbGVjdG9yfSBoMyB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIHN1YmhlYWRpbmctMik7XG4gICAgbWFyZ2luOiAwIDAgMTZweDtcbiAgfVxuXG4gIC5tYXQtaDQsIC5tYXQtc3ViaGVhZGluZy0xLCAjeyRzZWxlY3Rvcn0gaDQge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCBzdWJoZWFkaW5nLTEpO1xuICAgIG1hcmdpbjogMCAwIDE2cHg7XG4gIH1cblxuICAvLyBOb3RlOiB0aGUgc3BlYyBkb2Vzbid0IGhhdmUgYW55dGhpbmcgdGhhdCB3b3VsZCBjb3JyZXNwb25kIHRvIGg1IGFuZCBoNiwgYnV0IHdlIGFkZCB0aGVzZSBmb3JcbiAgLy8gY29uc2lzdGVuY3kuIFRoZSBmb250IHNpemVzIGNvbWUgZnJvbSB0aGUgQ2hyb21lIHVzZXIgYWdlbnQgc3R5bGVzIHdoaWNoIGhhdmUgaDUgYXQgMC44M2VtXG4gIC8vIGFuZCBoNiBhdCAwLjY3ZW0uXG4gIC5tYXQtaDUsICN7JHNlbGVjdG9yfSBoNSB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktZm9udC1zaG9ydGhhbmQoXG4gICAgICBtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMSkgKiAwLjgzLFxuICAgICAgbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMSksXG4gICAgICBtYXQtbGluZS1oZWlnaHQoJGNvbmZpZywgYm9keS0xKSxcbiAgICAgIG1hdC1mb250LWZhbWlseSgkY29uZmlnLCBib2R5LTEpXG4gICAgKTtcblxuICAgIG1hcmdpbjogMCAwIDEycHg7XG4gIH1cblxuICAubWF0LWg2LCAjeyRzZWxlY3Rvcn0gaDYge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWZvbnQtc2hvcnRoYW5kKFxuICAgICAgbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpICogMC42NyxcbiAgICAgIG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpLFxuICAgICAgbWF0LWxpbmUtaGVpZ2h0KCRjb25maWcsIGJvZHktMSksXG4gICAgICBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZywgYm9keS0xKVxuICAgICk7XG5cbiAgICBtYXJnaW46IDAgMCAxMnB4O1xuICB9XG5cbiAgLm1hdC1ib2R5LXN0cm9uZywgLm1hdC1ib2R5LTIge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCBib2R5LTIpO1xuICB9XG5cbiAgLm1hdC1ib2R5LCAubWF0LWJvZHktMSwgI3skc2VsZWN0b3J9IHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgYm9keS0xKTtcblxuICAgIHAge1xuICAgICAgbWFyZ2luOiAwIDAgMTJweDtcbiAgICB9XG4gIH1cblxuICAubWF0LXNtYWxsLCAubWF0LWNhcHRpb24ge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCBjYXB0aW9uKTtcbiAgfVxuXG4gIC8vIE5vdGU6IFRoZSBzcGVjIGRvZXNuJ3QgbWVudGlvbiBsZXR0ZXIgc3BhY2luZy4gVGhlIHZhbHVlIGNvbWVzIGZyb21cbiAgLy8gZXllYmFsbGluZyBpdCB1bnRpbCBpdCBsb29rZWQgZXhhY3RseSBsaWtlIHRoZSBzcGVjIGV4YW1wbGVzLlxuICAubWF0LWRpc3BsYXktNCwgI3skc2VsZWN0b3J9IC5tYXQtZGlzcGxheS00IHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgZGlzcGxheS00KTtcbiAgICBtYXJnaW46IDAgMCA1NnB4O1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wNWVtO1xuICB9XG5cbiAgLm1hdC1kaXNwbGF5LTMsICN7JHNlbGVjdG9yfSAubWF0LWRpc3BsYXktMyB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIGRpc3BsYXktMyk7XG4gICAgbWFyZ2luOiAwIDAgNjRweDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgfVxuXG4gIC5tYXQtZGlzcGxheS0yLCAjeyRzZWxlY3Rvcn0gLm1hdC1kaXNwbGF5LTIge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCBkaXNwbGF5LTIpO1xuICAgIG1hcmdpbjogMCAwIDY0cHg7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAwNWVtO1xuICB9XG5cbiAgLm1hdC1kaXNwbGF5LTEsICN7JHNlbGVjdG9yfSAubWF0LWRpc3BsYXktMSB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIGRpc3BsYXktMSk7XG4gICAgbWFyZ2luOiAwIDAgNjRweDtcbiAgfVxufVxuXG5cblxuXG5AbWl4aW4gbWF0LWF1dG9jb21wbGV0ZS10aGVtZSgkdGhlbWUpIHtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcblxuICAubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCB7XG4gICAgQGluY2x1ZGUgX21hdC10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oNCwgJHRoZW1lKTtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGNhcmQpO1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gICAgLy8gU2VsZWN0ZWQgb3B0aW9ucyBpbiBhdXRvY29tcGxldGVzIHNob3VsZCBub3QgYmUgZ3JheSwgYnV0IHdlXG4gICAgLy8gb25seSB3YW50IHRvIG92ZXJyaWRlIHRoZSBiYWNrZ3JvdW5kIGZvciBzZWxlY3RlZCBvcHRpb25zIGlmXG4gICAgLy8gdGhleSBhcmUgKm5vdCogaW4gaG92ZXIgb3IgZm9jdXMgc3RhdGUuIFRoaXMgY2hhbmdlIGhhcyB0byBiZVxuICAgIC8vIG1hZGUgaGVyZSBiZWNhdXNlIGJhc2Ugb3B0aW9uIHN0eWxlcyBhcmUgc2hhcmVkIGJldHdlZW4gdGhlXG4gICAgLy8gYXV0b2NvbXBsZXRlIGFuZCB0aGUgc2VsZWN0LlxuICAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgY2FyZCk7XG5cbiAgICAgICY6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSB7XG4gICAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG5cbkBtaXhpbiBtYXQtYXV0b2NvbXBsZXRlLXR5cG9ncmFwaHkoJGNvbmZpZykgeyB9XG5cbi8vIFRoaXMgY29udGFpbnMgYWxsIG9mIHRoZSBzdHlsZXMgZm9yIHRoZSBiYWRnZVxuLy8gcmF0aGVyIHRoYW4ganVzdCB0aGUgY29sb3IvdGhlbWUgYmVjYXVzZSBvZlxuLy8gbm8gc3R5bGUgc2hlZXQgc3VwcG9ydCBmb3IgZGlyZWN0aXZlcy5cblxuXG5cblxuXG4kbWF0LWJhZGdlLWZvbnQtc2l6ZTogMTJweDtcbiRtYXQtYmFkZ2UtZm9udC13ZWlnaHQ6IDYwMDtcbiRtYXQtYmFkZ2UtZGVmYXVsdC1zaXplOiAyMnB4ICFkZWZhdWx0O1xuJG1hdC1iYWRnZS1zbWFsbC1zaXplOiAkbWF0LWJhZGdlLWRlZmF1bHQtc2l6ZSAtIDY7XG4kbWF0LWJhZGdlLWxhcmdlLXNpemU6ICRtYXQtYmFkZ2UtZGVmYXVsdC1zaXplICsgNjtcblxuLy8gTWl4aW4gZm9yIGJ1aWxkaW5nIG9mZnNldCBnaXZlbiBkaWZmZXJlbnQgc2l6ZXNcbkBtaXhpbiBfbWF0LWJhZGdlLXNpemUoJHNpemUpIHtcbiAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICB3aWR0aDogJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogJHNpemU7XG4gIH1cblxuICAmLm1hdC1iYWRnZS1hYm92ZSB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIHRvcDogLSRzaXplIC8gMjtcbiAgICB9XG4gIH1cblxuICAmLm1hdC1iYWRnZS1iZWxvdyB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIGJvdHRvbTogLSRzaXplIC8gMjtcbiAgICB9XG4gIH1cblxuICAmLm1hdC1iYWRnZS1iZWZvcmUge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICBsZWZ0OiAtJHNpemU7XG4gICAgfVxuICB9XG5cbiAgW2Rpcj0ncnRsJ10gJi5tYXQtYmFkZ2UtYmVmb3JlIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgbGVmdDogYXV0bztcbiAgICAgIHJpZ2h0OiAtJHNpemU7XG4gICAgfVxuICB9XG5cbiAgJi5tYXQtYmFkZ2UtYWZ0ZXIge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICByaWdodDogLSRzaXplO1xuICAgIH1cbiAgfVxuXG4gIFtkaXI9J3J0bCddICYubWF0LWJhZGdlLWFmdGVyIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICBsZWZ0OiAtJHNpemU7XG4gICAgfVxuICB9XG5cbiAgJi5tYXQtYmFkZ2Utb3ZlcmxhcCB7XG4gICAgJi5tYXQtYmFkZ2UtYmVmb3JlIHtcbiAgICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICAgIGxlZnQ6IC0kc2l6ZSAvIDI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgW2Rpcj0ncnRsJ10gJi5tYXQtYmFkZ2UtYmVmb3JlIHtcbiAgICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgIHJpZ2h0OiAtJHNpemUgLyAyO1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWF0LWJhZGdlLWFmdGVyIHtcbiAgICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICAgIHJpZ2h0OiAtJHNpemUgLyAyO1xuICAgICAgfVxuICAgIH1cblxuICAgIFtkaXI9J3J0bCddICYubWF0LWJhZGdlLWFmdGVyIHtcbiAgICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICBsZWZ0OiAtJHNpemUgLyAyO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LWJhZGdlLXRoZW1lKCR0aGVtZSkge1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJHByaW1hcnksIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkcHJpbWFyeSk7XG5cbiAgICBAaW5jbHVkZSBjZGstaGlnaC1jb250cmFzdCB7XG4gICAgICBvdXRsaW5lOiBzb2xpZCAxcHg7XG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYmFkZ2UtYWNjZW50IHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRhY2NlbnQpO1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkYWNjZW50LCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJhZGdlLXdhcm4ge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCR3YXJuLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkd2Fybik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1iYWRnZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgLm1hdC1iYWRnZS1oaWRkZW4ge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYmFkZ2UtZGlzYWJsZWQge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICAvLyBUaGUgZGlzYWJsZWQgY29sb3IgdXN1YWxseSBoYXMgc29tZSBraW5kIG9mIG9wYWNpdHksIGJ1dCBiZWNhdXNlIHRoZSBiYWRnZSBpcyBvdmVybGF5ZWRcbiAgICAgIC8vIG9uIHRvcCBvZiBzb21ldGhpbmcgZWxzZSwgaXQgd29uJ3QgbG9vayBnb29kIGlmIGl0J3Mgb3BhcXVlLiBXZSBjb252ZXJ0IGl0IGludG8gYSBzb2xpZFxuICAgICAgLy8gY29sb3IgYnkgdGFraW5nIHRoZSBvcGFjaXR5IGZyb20gdGhlIHJnYmEgdmFsdWUgYW5kIHVzaW5nIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgdGhlXG4gICAgICAvLyBwZXJjZW50YWdlIG9mIHRoZSBiYWNrZ3JvdW5kIHRvIHB1dCBpbnRvIGZvcmVncm91bmQgd2hlbiBtaXhpbmcgdGhlIGNvbG9ycyB0b2dldGhlci5cbiAgICAgICRhcHAtYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCAnYmFja2dyb3VuZCcpO1xuICAgICAgJGJhZGdlLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkLWJ1dHRvbik7XG4gICAgICAkYmFkZ2Utb3BhY2l0eTogb3BhY2l0eSgkYmFkZ2UtY29sb3IpO1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRhcHAtYmFja2dyb3VuZCwgcmdiYSgkYmFkZ2UtY29sb3IsIDEpLCAoMSAtICRiYWRnZS1vcGFjaXR5KSAqIDEwMCUpO1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDIwMG1zIGVhc2UtaW4tb3V0O1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC42KTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cblxuICAvLyBUaGUgYWN0aXZlIGNsYXNzIGlzIGFkZGVkIGFmdGVyIHRoZSBlbGVtZW50IGlzIGFkZGVkXG4gIC8vIHNvIGl0IGNhbiBhbmltYXRlIHNjYWxlIHRvIGRlZmF1bHRcbiAgLm1hdC1iYWRnZS1jb250ZW50Lm1hdC1iYWRnZS1hY3RpdmUge1xuICAgIC8vIFNjYWxlIHRvIGBub25lYCBpbnN0ZWFkIG9mIGAxYCB0byBhdm9pZCBibHVycnkgdGV4dCBpbiBzb21lIGJyb3dzZXJzLlxuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuXG4gIC5tYXQtYmFkZ2Utc21hbGwge1xuICAgIEBpbmNsdWRlIF9tYXQtYmFkZ2Utc2l6ZSgkbWF0LWJhZGdlLXNtYWxsLXNpemUpO1xuICB9XG4gIC5tYXQtYmFkZ2UtbWVkaXVtIHtcbiAgICBAaW5jbHVkZSBfbWF0LWJhZGdlLXNpemUoJG1hdC1iYWRnZS1kZWZhdWx0LXNpemUpO1xuICB9XG4gIC5tYXQtYmFkZ2UtbGFyZ2Uge1xuICAgIEBpbmNsdWRlIF9tYXQtYmFkZ2Utc2l6ZSgkbWF0LWJhZGdlLWxhcmdlLXNpemUpO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtYmFkZ2UtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgZm9udC13ZWlnaHQ6ICRtYXQtYmFkZ2UtZm9udC13ZWlnaHQ7XG4gICAgZm9udC1zaXplOiAkbWF0LWJhZGdlLWZvbnQtc2l6ZTtcbiAgICBmb250LWZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1iYWRnZS1zbWFsbCAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIGZvbnQtc2l6ZTogJG1hdC1iYWRnZS1mb250LXNpemUgLyAyO1xuICB9XG5cbiAgLm1hdC1iYWRnZS1sYXJnZSAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIGZvbnQtc2l6ZTogJG1hdC1iYWRnZS1mb250LXNpemUgKiAyO1xuICB9XG59XG5cblxuXG5cblxuQG1peGluIG1hdC1ib3R0b20tc2hlZXQtdGhlbWUoJHRoZW1lKSB7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLWVsZXZhdGlvbigxNiwgJHRoZW1lKTtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGRpYWxvZyk7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cbn1cblxuQG1peGluIG1hdC1ib3R0b20tc2hlZXQtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIGJvZHktMSk7XG4gIH1cbn1cblxuXG5cblxuXG4kX21hdC1idXR0b24tcmlwcGxlLW9wYWNpdHk6IDAuMTtcblxuLy8gQXBwbGllcyBhIGZvY3VzIHN0eWxlIHRvIGFuIG1hdC1idXR0b24gZWxlbWVudCBmb3IgZWFjaCBvZiB0aGUgc3VwcG9ydGVkIHBhbGV0dGVzLlxuQG1peGluIF9tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXktY29sb3IoJHRoZW1lKSB7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuXG4gICYubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5KTtcbiAgfVxuXG4gICYubWF0LWFjY2VudCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGFjY2VudCk7XG4gIH1cblxuICAmLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkd2Fybik7XG4gIH1cblxuICAmW2Rpc2FibGVkXSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxufVxuXG5AbWl4aW4gX21hdC1idXR0b24tcmlwcGxlLWNvbG9yKCR0aGVtZSwgJGh1ZSwgJG9wYWNpdHk6ICRfbWF0LWJ1dHRvbi1yaXBwbGUtb3BhY2l0eSkge1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcblxuICAmLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSwgJGh1ZSwgJG9wYWNpdHkpO1xuICB9XG5cbiAgJi5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYWNjZW50LCAkaHVlLCAkb3BhY2l0eSk7XG4gIH1cblxuICAmLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkd2FybiwgJGh1ZSwgJG9wYWNpdHkpO1xuICB9XG59XG5cbi8vIEFwcGxpZXMgYSBwcm9wZXJ0eSB0byBhbiBtYXQtYnV0dG9uIGVsZW1lbnQgZm9yIGVhY2ggb2YgdGhlIHN1cHBvcnRlZCBwYWxldHRlcy5cbkBtaXhpbiBfbWF0LWJ1dHRvbi10aGVtZS1wcm9wZXJ0eSgkdGhlbWUsICRwcm9wZXJ0eSwgJGh1ZSkge1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAmLm1hdC1wcmltYXJ5IHtcbiAgICAjeyRwcm9wZXJ0eX06IG1hdC1jb2xvcigkcHJpbWFyeSwgJGh1ZSk7XG4gIH1cbiAgJi5tYXQtYWNjZW50IHtcbiAgICAjeyRwcm9wZXJ0eX06IG1hdC1jb2xvcigkYWNjZW50LCAkaHVlKTtcbiAgfVxuICAmLm1hdC13YXJuIHtcbiAgICAjeyRwcm9wZXJ0eX06IG1hdC1jb2xvcigkd2FybiwgJGh1ZSk7XG4gIH1cblxuICAmLm1hdC1wcmltYXJ5LCAmLm1hdC1hY2NlbnQsICYubWF0LXdhcm4sICZbZGlzYWJsZWRdIHtcbiAgICAmW2Rpc2FibGVkXSB7XG4gICAgICAkcGFsZXR0ZTogaWYoJHByb3BlcnR5ID09ICdjb2xvcicsICRmb3JlZ3JvdW5kLCAkYmFja2dyb3VuZCk7XG4gICAgICAjeyRwcm9wZXJ0eX06IG1hdC1jb2xvcigkcGFsZXR0ZSwgZGlzYWJsZWQtYnV0dG9uKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1idXR0b24tdGhlbWUoJHRoZW1lKSB7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtYnV0dG9uLCAubWF0LWljb24tYnV0dG9uLCAubWF0LXN0cm9rZWQtYnV0dG9uIHtcbiAgICAvLyBCdXR0b25zIHdpdGhvdXQgYSBiYWNrZ3JvdW5kIGNvbG9yIHNob3VsZCBpbmhlcml0IHRoZSBmb250IGNvbG9yLiBUaGlzIGlzIG5lY2Vzc2FyeSB0b1xuICAgIC8vIGVuc3VyZSB0aGF0IHRoZSBidXR0b24gaXMgcmVhZGFibGUgb24gY3VzdG9tIGJhY2tncm91bmQgY29sb3JzLiBJdCdzIHdyb25nIHRvIGFsd2F5cyBhc3N1bWVcbiAgICAvLyB0aGF0IHRob3NlIGJ1dHRvbnMgYXJlIGFsd2F5cyBwbGFjZWQgaW5zaWRlIG9mIGNvbnRhaW5lcnMgd2l0aCB0aGUgZGVmYXVsdCBiYWNrZ3JvdW5kXG4gICAgLy8gY29sb3Igb2YgdGhlIHRoZW1lIChlLmcuIHRoZW1lZCB0b29sYmFycykuXG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cbiAgICBAaW5jbHVkZSBfbWF0LWJ1dHRvbi10aGVtZS1wcm9wZXJ0eSgkdGhlbWUsICdjb2xvcicsIGRlZmF1bHQpO1xuICAgIEBpbmNsdWRlIF9tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXktY29sb3IoJHRoZW1lKTtcblxuICAgIC8vIFNldHVwIHRoZSByaXBwbGUgY29sb3IgdG8gYmUgYmFzZWQgb24gdGhlIHRleHQgY29sb3IuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSByaXBwbGVzXG4gICAgLy8gYXJlIG1hdGNoaW5nIHdpdGggdGhlIGN1cnJlbnQgdGhlbWUgcGFsZXR0ZSBhbmQgYXJlIGluIGNvbnRyYXN0IHRvIHRoZSBiYWNrZ3JvdW5kIGNvbG9yXG4gICAgLy8gKGUuZyBpbiB0aGVtZWQgdG9vbGJhcnMpLlxuICAgIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgICAgb3BhY2l0eTogJF9tYXQtYnV0dG9uLXJpcHBsZS1vcGFjaXR5O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkge1xuICAgIGJhY2tncm91bmQ6IG1hcF9nZXQoJGZvcmVncm91bmQsIGJhc2UpO1xuICB9XG5cbiAgLy8gTm90ZTogdGhpcyBuZWVkcyBhIGJpdCBleHRyYSBzcGVjaWZpY2l0eSwgYmVjYXVzZSB3ZSdyZSBub3QgZ3VhcmFudGVlZCB0aGUgaW5jbHVzaW9uXG4gIC8vIG9yZGVyIG9mIHRoZSB0aGVtZSBzdHlsZXMgYW5kIHRoZSBidXR0b24gcmVzZXQgbWF5IGVuZCB1cCByZXNldHRpbmcgdGhpcyBhcyB3ZWxsLlxuICAubWF0LXN0cm9rZWQtYnV0dG9uOm5vdChbZGlzYWJsZWRdKSB7XG4gICAgYm9yZGVyLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG5cbiAgLm1hdC1mbGF0LWJ1dHRvbiwgLm1hdC1yYWlzZWQtYnV0dG9uLCAubWF0LWZhYiwgLm1hdC1taW5pLWZhYiB7XG4gICAgLy8gRGVmYXVsdCBmb250IGFuZCBiYWNrZ3JvdW5kIGNvbG9yIHdoZW4gbm90IHVzaW5nIGFueSBjb2xvciBwYWxldHRlLlxuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgcmFpc2VkLWJ1dHRvbik7XG5cbiAgICBAaW5jbHVkZSBfbWF0LWJ1dHRvbi10aGVtZS1wcm9wZXJ0eSgkdGhlbWUsICdjb2xvcicsIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIEBpbmNsdWRlIF9tYXQtYnV0dG9uLXRoZW1lLXByb3BlcnR5KCR0aGVtZSwgJ2JhY2tncm91bmQtY29sb3InLCBkZWZhdWx0KTtcbiAgICBAaW5jbHVkZSBfbWF0LWJ1dHRvbi1yaXBwbGUtY29sb3IoJHRoZW1lLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgfVxuXG4gIC5tYXQtc3Ryb2tlZC1idXR0b24sIC5tYXQtZmxhdC1idXR0b24ge1xuICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDAsICR0aGVtZSk7XG4gIH1cblxuICAubWF0LXJhaXNlZC1idXR0b24ge1xuICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDIsICR0aGVtZSk7XG5cbiAgICAmOm5vdChbZGlzYWJsZWRdKTphY3RpdmUge1xuICAgICAgQGluY2x1ZGUgX21hdC10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oOCwgJHRoZW1lKTtcbiAgICB9XG5cbiAgICAmW2Rpc2FibGVkXSB7XG4gICAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigwLCAkdGhlbWUpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZmFiLCAubWF0LW1pbmktZmFiIHtcbiAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbig2LCAkdGhlbWUpO1xuXG4gICAgJjpub3QoW2Rpc2FibGVkXSk6YWN0aXZlIHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDEyLCAkdGhlbWUpO1xuICAgIH1cblxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDAsICR0aGVtZSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtYnV0dG9uLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LWJ1dHRvbiwgLm1hdC1yYWlzZWQtYnV0dG9uLCAubWF0LWljb24tYnV0dG9uLCAubWF0LXN0cm9rZWQtYnV0dG9uLFxuICAubWF0LWZsYXQtYnV0dG9uLCAubWF0LWZhYiwgLm1hdC1taW5pLWZhYiB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZywgYnV0dG9uKTtcbiAgICAgIHNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgYnV0dG9uKTtcbiAgICAgIHdlaWdodDogbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIGJ1dHRvbik7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuXG5AbWl4aW4gbWF0LWJ1dHRvbi10b2dnbGUtdGhlbWUoJHRoZW1lKSB7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRkaXZpZGVyLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLFxuICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAge1xuICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtZWxldmF0aW9uKDIsICR0aGVtZSk7XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLFxuICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZSB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgaGludC10ZXh0KTtcblxuICAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgZm9jdXNlZC1idXR0b24pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGNhcmQpO1xuXG4gICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBmb2N1c2VkLWJ1dHRvbiwgMSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlICsgLm1hdC1idXR0b24tdG9nZ2xlIHtcbiAgICBib3JkZXItbGVmdDogc29saWQgMXB4ICRkaXZpZGVyLWNvbG9yO1xuICB9XG5cbiAgW2Rpcj0ncnRsJ10gLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlICsgLm1hdC1idXR0b24tdG9nZ2xlIHtcbiAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICBib3JkZXItcmlnaHQ6IHNvbGlkIDFweCAkZGl2aWRlci1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsIHtcbiAgICAubWF0LWJ1dHRvbi10b2dnbGUgKyAubWF0LWJ1dHRvbi10b2dnbGUge1xuICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgICBib3JkZXItdG9wOiBzb2xpZCAxcHggJGRpdmlkZXItY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgc2VsZWN0ZWQtYnV0dG9uKTtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG5cbiAgICAmLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC1idXR0b24pO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgZGlzYWJsZWQtYnV0dG9uLXRvZ2dsZSk7XG5cbiAgICAmLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICAgICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICB9XG5cbiAgICAmLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBzZWxlY3RlZC1kaXNhYmxlZC1idXR0b24pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcbiAgICBib3JkZXI6IHNvbGlkIDFweCAkZGl2aWRlci1jb2xvcjtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LWJ1dHRvbi10b2dnbGUtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtYnV0dG9uLXRvZ2dsZSB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxufVxuXG5cblxuXG5cblxuXG5AbWl4aW4gbWF0LWNhcmQtdGhlbWUoJHRoZW1lKSB7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1jYXJkIHtcbiAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigxLCAkdGhlbWUpO1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgY2FyZCk7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAvLyBOZWVkcyBleHRyYSBzcGVjaWZpY2l0eSB0byBiZSBhYmxlIHRvIG92ZXJyaWRlIHRoZSBlbGV2YXRpb24gc2VsZWN0b3JzLlxuICAgICYubWF0LWNhcmQtZmxhdCB7XG4gICAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigwLCAkdGhlbWUpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2FyZC1zdWJ0aXRsZSB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtY2FyZC10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC1jYXJkIHtcbiAgICBmb250LWZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1jYXJkLXRpdGxlIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGhlYWRsaW5lKTtcbiAgICAgIHdlaWdodDogbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIHRpdGxlKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWNhcmQtaGVhZGVyIC5tYXQtY2FyZC10aXRsZSB7XG4gICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIHRpdGxlKTtcbiAgfVxuXG4gIC5tYXQtY2FyZC1zdWJ0aXRsZSxcbiAgLm1hdC1jYXJkLWNvbnRlbnQge1xuICAgIGZvbnQtc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpO1xuICB9XG59XG5cblxuXG5cblxuXG5AbWl4aW4gbWF0LWNoZWNrYm94LXRoZW1lKCR0aGVtZSkge1xuICAkaXMtZGFyay10aGVtZTogbWFwLWdldCgkdGhlbWUsIGlzLWRhcmspO1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuXG4gIC8vIFRoZSBjb2xvciBvZiB0aGUgY2hlY2tib3gncyBjaGVja21hcmsgLyBtaXhlZG1hcmsuXG4gICRjaGVja2JveC1tYXJrLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGJhY2tncm91bmQpO1xuXG4gIC8vIE5PVEUodHJhdmlza2F1Zm1hbik6IFdoaWxlIHRoZSBzcGVjIGNhbGxzIGZvciB0cmFuc2x1Y2VudCBibGFja3Mvd2hpdGVzIGZvciBkaXNhYmxlZCBjb2xvcnMsXG4gIC8vIHRoaXMgZG9lcyBub3Qgd29yayB3ZWxsIHdpdGggZWxlbWVudHMgbGF5ZXJlZCBvbiB0b3Agb2Ygb25lIGFub3RoZXIuIFRvIGdldCBhcm91bmQgdGhpcyB3ZVxuICAvLyBibGVuZCB0aGUgY29sb3JzIHRvZ2V0aGVyIGJhc2VkIG9uIHRoZSBiYXNlIGNvbG9yIGFuZCB0aGUgdGhlbWUgYmFja2dyb3VuZC5cbiAgJHdoaXRlLTMwcGN0LW9wYWNpdHktb24tZGFyazogIzY4Njg2ODtcbiAgJGJsYWNrLTI2cGN0LW9wYWNpdHktb24tbGlnaHQ6ICNiMGIwYjA7XG4gICRkaXNhYmxlZC1jb2xvcjogaWYoJGlzLWRhcmstdGhlbWUsICR3aGl0ZS0zMHBjdC1vcGFjaXR5LW9uLWRhcmssICRibGFjay0yNnBjdC1vcGFjaXR5LW9uLWxpZ2h0KTtcblxuICAubWF0LWNoZWNrYm94LWZyYW1lIHtcbiAgICBib3JkZXItY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1jaGVja2JveC1jaGVja21hcmsge1xuICAgIGZpbGw6ICRjaGVja2JveC1tYXJrLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aCB7XG4gICAgLy8gIWltcG9ydGFudCBpcyBuZWVkZWQgaGVyZSBiZWNhdXNlIGEgc3Ryb2tlIG11c3QgYmUgc2V0IGFzIGFuXG4gICAgLy8gYXR0cmlidXRlIG9uIHRoZSBTVkcgaW4gb3JkZXIgZm9yIGxpbmUgYW5pbWF0aW9uIHRvIHdvcmsgcHJvcGVybHkuXG4gICAgc3Ryb2tlOiAkY2hlY2tib3gtbWFyay1jb2xvciAhaW1wb3J0YW50O1xuXG4gICAgQGluY2x1ZGUgY2RrLWhpZ2gtY29udHJhc3QoYmxhY2stb24td2hpdGUpIHtcbiAgICAgIC8vIEhhdmluZyB0aGUgb25lIGFib3ZlIGJlICFpbXBvcnRhbnQgZW5kcyB1cCBvdmVycmlkaW5nIHRoZSBicm93c2VyJ3MgYXV0b21hdGljXG4gICAgICAvLyBjb2xvciBpbnZlcnNpb24gc28gd2UgbmVlZCB0byByZS1pbnZlcnQgaXQgb3Vyc2VsdmVzIGZvciBibGFjay1vbi13aGl0ZS5cbiAgICAgIHN0cm9rZTogIzAwMCAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJrIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2hlY2tib3gtbWFyay1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSwgLm1hdC1jaGVja2JveC1jaGVja2VkIHtcbiAgICAmLm1hdC1wcmltYXJ5IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCAubWF0LWNoZWNrYm94LWJhY2tncm91bmQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4gLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkd2Fybik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jaGVja2JveC1kaXNhYmxlZCB7XG4gICAgJi5tYXQtY2hlY2tib3gtY2hlY2tlZCxcbiAgICAmLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIHtcbiAgICAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpIHtcbiAgICAgIC5tYXQtY2hlY2tib3gtZnJhbWUge1xuICAgICAgICBib3JkZXItY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LWNoZWNrYm94LWxhYmVsIHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBjZGstaGlnaC1jb250cmFzdCB7XG4gICAgICBvcGFjaXR5OiAwLjU7XG4gICAgfVxuICB9XG5cbiAgLy8gVGhpcyBvbmUgaXMgbW92ZWQgZG93biBoZXJlIHNvIGl0IGNhbiB0YXJnZXQgYm90aFxuICAvLyB0aGUgdGhlbWUgY29sb3JzIGFuZCB0aGUgZGlzYWJsZWQgc3RhdGUuXG4gIEBpbmNsdWRlIGNkay1oaWdoLWNvbnRyYXN0IHtcbiAgICAubWF0LWNoZWNrYm94LWJhY2tncm91bmQge1xuICAgICAgLy8gTmVlZHMgdG8gYmUgcmVtb3ZlZCBiZWNhdXNlIGl0IGhpZGVzIHRoZSBjaGVja2JveCBvdXRsaW5lLlxuICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICB9XG4gIH1cblxuICAubWF0LWNoZWNrYm94Om5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKSB7XG4gICAgJi5tYXQtcHJpbWFyeSAubWF0LWNoZWNrYm94LXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IC5tYXQtY2hlY2tib3gtcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4gLm1hdC1jaGVja2JveC1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHdhcm4pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LWNoZWNrYm94LXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LWNoZWNrYm94IHtcbiAgICBmb250LWZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLy8gVE9ETyhrYXJhKTogUmVtb3ZlIHRoaXMgc3R5bGUgd2hlbiBmaXhpbmcgdmVydGljYWwgYmFzZWxpbmVcbiAgLm1hdC1jaGVja2JveC1sYXlvdXQgLm1hdC1jaGVja2JveC1sYWJlbCB7XG4gICAgbGluZS1oZWlnaHQ6IG1hdC1saW5lLWhlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuICB9XG59XG5cblxuXG5cblxuXG4kbWF0LWNoaXAtcmVtb3ZlLWZvbnQtc2l6ZTogMThweDtcblxuQG1peGluIG1hdC1jaGlwcy1jb2xvcigkZm9yZWdyb3VuZCwgJGJhY2tncm91bmQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gIGNvbG9yOiAkZm9yZWdyb3VuZDtcblxuICAubWF0LWNoaXAtcmVtb3ZlIHtcbiAgICBjb2xvcjogJGZvcmVncm91bmQ7XG4gICAgb3BhY2l0eTogMC40O1xuICB9XG59XG5cbkBtaXhpbiBtYXQtY2hpcHMtdGhlbWUtY29sb3IoJHBhbGV0dGUpIHtcbiAgQGluY2x1ZGUgbWF0LWNoaXBzLWNvbG9yKG1hdC1jb2xvcigkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCksIG1hdC1jb2xvcigkcGFsZXR0ZSkpO1xuXG4gIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCwgMC4xKTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LWNoaXBzLXRoZW1lKCR0aGVtZSkge1xuICAkaXMtZGFyay10aGVtZTogbWFwLWdldCgkdGhlbWUsIGlzLWRhcmspO1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAkdW5zZWxlY3RlZC1iYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIHVuc2VsZWN0ZWQtY2hpcCk7XG4gICR1bnNlbGVjdGVkLWZvcmVncm91bmQ6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwIHtcbiAgICBAaW5jbHVkZSBtYXQtY2hpcHMtY29sb3IoJHVuc2VsZWN0ZWQtZm9yZWdyb3VuZCwgJHVuc2VsZWN0ZWQtYmFja2dyb3VuZCk7XG5cbiAgICAmOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpIHtcbiAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgQGluY2x1ZGUgX21hdC10aGVtZS1lbGV2YXRpb24oMywgJHRoZW1lKTtcbiAgICAgIH1cblxuICAgICAgLm1hdC1jaGlwLXJlbW92ZTpob3ZlciB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5tYXQtY2hpcC1kaXNhYmxlZCB7XG4gICAgICBvcGFjaXR5OiAwLjQ7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZDogbWFwX2dldCgkZm9yZWdyb3VuZCwgYmFzZSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkIHtcbiAgICAmLm1hdC1wcmltYXJ5IHtcbiAgICAgIEBpbmNsdWRlIG1hdC1jaGlwcy10aGVtZS1jb2xvcigkcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBAaW5jbHVkZSBtYXQtY2hpcHMtdGhlbWUtY29sb3IoJHdhcm4pO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBAaW5jbHVkZSBtYXQtY2hpcHMtdGhlbWUtY29sb3IoJGFjY2VudCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtY2hpcHMtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtY2hpcCB7XG4gICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMik7XG4gICAgZm9udC13ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuXG4gICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb24sXG4gICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbiB7XG4gICAgICBmb250LXNpemU6ICRtYXQtY2hpcC1yZW1vdmUtZm9udC1zaXplO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cbkBtaXhpbiBtYXQtdGFibGUtdGhlbWUoJHRoZW1lKSB7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC10YWJsZSB7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCAnY2FyZCcpO1xuICB9XG5cbiAgLm1hdC10YWJsZSB0aGVhZCwgLm1hdC10YWJsZSB0Ym9keSwgLm1hdC10YWJsZSB0Zm9vdCxcbiAgbWF0LWhlYWRlci1yb3csIG1hdC1yb3csIG1hdC1mb290ZXItcm93LFxuICBbbWF0LWhlYWRlci1yb3ddLCBbbWF0LXJvd10sIFttYXQtZm9vdGVyLXJvd10sXG4gIC5tYXQtdGFibGUtc3RpY2t5IHtcbiAgICBiYWNrZ3JvdW5kOiBpbmhlcml0O1xuICB9XG5cbiAgbWF0LXJvdywgbWF0LWhlYWRlci1yb3csIG1hdC1mb290ZXItcm93LFxuICB0aC5tYXQtaGVhZGVyLWNlbGwsIHRkLm1hdC1jZWxsLCB0ZC5tYXQtZm9vdGVyLWNlbGwge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWhlYWRlci1jZWxsIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LWNlbGwsIC5tYXQtZm9vdGVyLWNlbGwge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtdGFibGUtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtdGFibGUge1xuICAgIGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LWhlYWRlci1jZWxsIHtcbiAgICBmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgZm9udC13ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuICB9XG5cbiAgLm1hdC1jZWxsLCAubWF0LWZvb3Rlci1jZWxsIHtcbiAgICBmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5cblxuXG5cblxuXG4kbWF0LWRhdGVwaWNrZXItc2VsZWN0ZWQtdG9kYXktYm94LXNoYWRvdy13aWR0aDogMXB4O1xuJG1hdC1kYXRlcGlja2VyLXNlbGVjdGVkLWZhZGUtYW1vdW50OiAwLjY7XG4kbWF0LWRhdGVwaWNrZXItdG9kYXktZmFkZS1hbW91bnQ6IDAuMjtcbiRtYXQtY2FsZW5kYXItYm9keS1mb250LXNpemU6IDEzcHggIWRlZmF1bHQ7XG4kbWF0LWNhbGVuZGFyLXdlZWtkYXktdGFibGUtZm9udC1zaXplOiAxMXB4ICFkZWZhdWx0O1xuXG5AbWl4aW4gX21hdC1kYXRlcGlja2VyLWNvbG9yKCRwYWxldHRlKSB7XG4gIC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRwYWxldHRlKTtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRwYWxldHRlLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogZmFkZS1vdXQobWF0LWNvbG9yKCRwYWxldHRlKSwgJG1hdC1kYXRlcGlja2VyLXNlbGVjdGVkLWZhZGUtYW1vdW50KTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCB7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgJG1hdC1kYXRlcGlja2VyLXNlbGVjdGVkLXRvZGF5LWJveC1zaGFkb3ctd2lkdGhcbiAgICAgICAgICAgICAgICBtYXQtY29sb3IoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtZGF0ZXBpY2tlci10aGVtZSgkdGhlbWUpIHtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcblxuICAubWF0LWNhbGVuZGFyLWFycm93IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGljb24pO1xuICB9XG5cbiAgLy8gVGhlIHByZXYvbmV4dCBidXR0b25zIG5lZWQgYSBiaXQgbW9yZSBzcGVjaWZpY2l0eSB0b1xuICAvLyBhdm9pZCBiZWluZyBvdmVyd3JpdHRlbiBieSB0aGUgLm1hdC1pY29uLWJ1dHRvbi5cbiAgLm1hdC1kYXRlcGlja2VyLXRvZ2dsZSxcbiAgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQgLm1hdC1jYWxlbmRhci1uZXh0LWJ1dHRvbixcbiAgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b24ge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGljb24pO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXIge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlci1kaXZpZGVyOjphZnRlciB7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1sYWJlbCB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudCB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCkge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWNlbGw6bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXIsXG4gIC5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlLFxuICAuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlIHtcbiAgICAmID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGhvdmVyKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCkge1xuICAgIC8vIE5vdGU6IHRob3VnaCBpdCdzIG5vdCB0ZXh0LCB0aGUgYm9yZGVyIGlzIGEgaGludCBhYm91dCB0aGUgZmFjdCB0aGF0IHRoaXMgaXMgdG9kYXkncyBkYXRlLFxuICAgIC8vIHNvIHdlIHVzZSB0aGUgaGludCBjb2xvci5cbiAgICBib3JkZXItY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgaGludC10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCA+IC5tYXQtY2FsZW5kYXItYm9keS10b2RheTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKSB7XG4gICAgYm9yZGVyLWNvbG9yOiBmYWRlLW91dChtYXQtY29sb3IoJGZvcmVncm91bmQsIGhpbnQtdGV4dCksICRtYXQtZGF0ZXBpY2tlci10b2RheS1mYWRlLWFtb3VudCk7XG4gIH1cblxuICBAaW5jbHVkZSBfbWF0LWRhdGVwaWNrZXItY29sb3IobWFwLWdldCgkdGhlbWUsIHByaW1hcnkpKTtcblxuICAubWF0LWRhdGVwaWNrZXItY29udGVudCB7XG4gICAgQGluY2x1ZGUgX21hdC10aGVtZS1lbGV2YXRpb24oNCwgJHRoZW1lKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGNhcmQpO1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gICAgJi5tYXQtYWNjZW50IHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtZGF0ZXBpY2tlci1jb2xvcihtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KSk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBAaW5jbHVkZSBfbWF0LWRhdGVwaWNrZXItY29sb3IobWFwLWdldCgkdGhlbWUsIHdhcm4pKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaCB7XG4gICAgQGluY2x1ZGUgX21hdC10aGVtZS1lbGV2YXRpb24oMCwgJHRoZW1lKTtcbiAgfVxuXG4gIC5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KSk7XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcihtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KSk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKG1hcC1nZXQoJHRoZW1lLCB3YXJuKSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtZGF0ZXBpY2tlci10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC1jYWxlbmRhciB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keSB7XG4gICAgZm9udC1zaXplOiAkbWF0LWNhbGVuZGFyLWJvZHktZm9udC1zaXplO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsLFxuICAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b24ge1xuICAgIGZvbnQ6IHtcbiAgICAgIHNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgYnV0dG9uKTtcbiAgICAgIHdlaWdodDogbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIGJ1dHRvbik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXIgdGgge1xuICAgIGZvbnQ6IHtcbiAgICAgIHNpemU6ICRtYXQtY2FsZW5kYXItd2Vla2RheS10YWJsZS1mb250LXNpemU7XG4gICAgICB3ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cblxuXG5AbWl4aW4gbWF0LWRpYWxvZy10aGVtZSgkdGhlbWUpIHtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWRpYWxvZy1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtZWxldmF0aW9uKDI0LCAkdGhlbWUpO1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgZGlhbG9nKTtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LWRpYWxvZy10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC1kaWFsb2ctdGl0bGUge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCB0aXRsZSk7XG4gIH1cbn1cblxuXG5cblxuXG5cbkBtaXhpbiBtYXQtZXhwYW5zaW9uLXBhbmVsLXRoZW1lKCR0aGVtZSkge1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtZXhwYW5zaW9uLXBhbmVsIHtcbiAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigyLCAkdGhlbWUpO1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgY2FyZCk7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cblxuICAubWF0LWFjdGlvbi1yb3cge1xuICAgIGJvcmRlci10b3AtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCkgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIHtcbiAgICAmOm5vdChbYXJpYS1kaXNhYmxlZD0ndHJ1ZSddKSB7XG4gICAgICAmLmNkay1rZXlib2FyZC1mb2N1c2VkLFxuICAgICAgJi5jZGstcHJvZ3JhbS1mb2N1c2VkLFxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIERpc2FibGUgdGhlIGhvdmVyIG9uIHRvdWNoIGRldmljZXMgc2luY2UgaXQgY2FuIGFwcGVhciBsaWtlIGl0IGlzIHN0dWNrLiBXZSBjYW4ndCB1c2VcbiAgLy8gYEBtZWRpYSAoaG92ZXIpYCBhYm92ZSwgYmVjYXVzZSB0aGUgZGVza3RvcCBzdXBwb3J0IGJyb3dzZXIgc3VwcG9ydCBpc24ndCBncmVhdC5cbiAgQG1lZGlhIChob3Zlcjogbm9uZSkge1xuICAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsOm5vdCgubWF0LWV4cGFuZGVkKTpub3QoW2FyaWEtZGlzYWJsZWQ9J3RydWUnXSlcbiAgICAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGNhcmQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZSB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb24sXG4gIC5tYXQtZXhwYW5zaW9uLWluZGljYXRvcjo6YWZ0ZXIge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPSd0cnVlJ10ge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkLWJ1dHRvbik7XG5cbiAgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGUsXG4gICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uIHtcbiAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LWV4cGFuc2lvbi1wYW5lbC10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnLCBzdWJoZWFkaW5nLTEpO1xuICAgICAgc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBzdWJoZWFkaW5nLTEpO1xuICAgICAgd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgc3ViaGVhZGluZy0xKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50IHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5cblxuXG4vLyBUaGlzIG1peGluIHdpbGwgZW5zdXJlIHRoYXQgbGluZXMgdGhhdCBvdmVyZmxvdyB0aGUgY29udGFpbmVyIHdpbGwgaGlkZSB0aGUgb3ZlcmZsb3cgYW5kXG4vLyB0cnVuY2F0ZSBuZWF0bHkgd2l0aCBhbiBlbGxpcHNpcy5cbkBtaXhpbiBtYXQtdHJ1bmNhdGUtbGluZSgpIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbi8vIE1peGluIHRvIHByb3ZpZGUgYWxsIG1hdC1saW5lIHN0eWxlcywgY2hhbmdpbmcgc2Vjb25kYXJ5IGZvbnQgc2l6ZSBiYXNlZCBvbiB3aGV0aGVyIHRoZSBsaXN0XG4vLyBpcyBpbiBkZW5zZSBtb2RlLlxuQG1peGluIG1hdC1saW5lLWJhc2UoJHNlY29uZGFyeS1mb250LXNpemUpIHtcbiAgLm1hdC1saW5lIHtcbiAgICBAaW5jbHVkZSBtYXQtdHJ1bmNhdGUtbGluZSgpO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgICAvLyBhbGwgbGluZXMgYnV0IHRoZSB0b3AgbGluZSBzaG91bGQgaGF2ZSBzbWFsbGVyIHRleHRcbiAgICAmOm50aC1jaGlsZChuKzIpIHtcbiAgICAgIGZvbnQtc2l6ZTogJHNlY29uZGFyeS1mb250LXNpemU7XG4gICAgfVxuICB9XG59XG5cbi8vIFRoaXMgbWl4aW4gbm9ybWFsaXplcyBkZWZhdWx0IGVsZW1lbnQgc3R5bGVzLCBlLmcuIGZvbnQgd2VpZ2h0IGZvciBoZWFkaW5nIHRleHQuXG5AbWl4aW4gbWF0LW5vcm1hbGl6ZS10ZXh0KCkge1xuICAmID4gKiB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gIH1cbn1cblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNlIHN0eWxlcyBmb3IgdGhlIHdyYXBwZXIgYXJvdW5kIG1hdC1saW5lIGVsZW1lbnRzIGluIGEgbGlzdC5cbkBtaXhpbiBtYXQtbGluZS13cmFwcGVyLWJhc2UoKSB7XG4gIEBpbmNsdWRlIG1hdC1ub3JtYWxpemUtdGV4dCgpO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHdpZHRoOiAxMDAlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIC8vIE11c3QgcmVtb3ZlIHdyYXBwZXIgd2hlbiBsaW5lcyBhcmUgZW1wdHkgb3IgaXQgdGFrZXMgdXAgaG9yaXpvbnRhbFxuICAvLyBzcGFjZSBhbmQgcHVzaGVzIG90aGVyIGVsZW1lbnRzIHRvIHRoZSByaWdodC5cbiAgJjplbXB0eSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG5cblxuLy8gSW5jbHVkZSB0aGlzIGVtcHR5IG1peGluIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZSBvdGhlciBjb21wb25lbnRzLlxuQG1peGluIG1hdC1ncmlkLWxpc3QtdGhlbWUoJHRoZW1lKSB7IH1cblxuQG1peGluIG1hdC1ncmlkLWxpc3QtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtZ3JpZC10aWxlLWhlYWRlcixcbiAgLm1hdC1ncmlkLXRpbGUtZm9vdGVyIHtcbiAgICBAaW5jbHVkZSBtYXQtbGluZS1iYXNlKG1hdC1mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbikpO1xuICAgIGZvbnQtc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpO1xuICB9XG59XG5cblxuXG5cbi8vIEluY2x1ZGUgdGhpcyBlbXB0eSBtaXhpbiBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUgb3RoZXIgY29tcG9uZW50cy5cbkBtaXhpbiBtYXQtaWNvbi10aGVtZSgkdGhlbWUpIHtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1pY29uIHtcbiAgICAmLm1hdC1wcmltYXJ5IHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkd2Fybik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtaWNvbi10eXBvZ3JhcGh5KCRjb25maWcpIHsgfVxuXG5cblxuXG5cbi8vIFJlbmRlcnMgYSBncmFkaWVudCBmb3Igc2hvd2luZyB0aGUgZGFzaGVkIGxpbmUgd2hlbiB0aGUgaW5wdXQgaXMgZGlzYWJsZWQuXG4vLyBVbmxpa2UgdXNpbmcgYSBib3JkZXIsIGEgZ3JhZGllbnQgYWxsb3dzIHVzIHRvIGFkanVzdCB0aGUgc3BhY2luZyBvZiB0aGUgZG90dGVkIGxpbmVcbi8vIHRvIG1hdGNoIHRoZSBNYXRlcmlhbCBEZXNpZ24gc3BlYy5cbkBtaXhpbiBtYXQtY29udHJvbC1kaXNhYmxlZC11bmRlcmxpbmUoJGNvbG9yKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJGNvbG9yIDAlLCAkY29sb3IgMzMlLCB0cmFuc3BhcmVudCAwJSk7XG4gIGJhY2tncm91bmQtc2l6ZTogNHB4IDEwMCU7XG4gIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbn1cblxuLy8gRmlndXJlcyBvdXQgdGhlIGNvbG9yIG9mIHRoZSBwbGFjZWhvbGRlciBmb3IgYSBmb3JtIGNvbnRyb2wuXG4vLyBVc2VkIHByaW1hcmlseSB0byBwcmV2ZW50IHRoZSB2YXJpb3VzIGZvcm0gY29udHJvbHMgZnJvbVxuLy8gYmVjb21pbmcgb3V0IG9mIHN5bmMgc2luY2UgdGhlc2UgY29sb3JzIGFyZW4ndCBpbiBhIHBhbGV0dGUuXG5AZnVuY3Rpb24gX21hdC1jb250cm9sLXBsYWNlaG9sZGVyLWNvbG9yKCR0aGVtZSkge1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLWdldCgkdGhlbWUsIGlzLWRhcmspO1xuICBAcmV0dXJuIG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjUsIDAuNDIpKTtcbn1cblxuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBtYXRlcmlhbC9uby1wcmVmaXhlcyAqL1xuQG1peGluIHVzZXItc2VsZWN0KCR2YWx1ZSkge1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiAkdmFsdWU7XG4gIC1tb3otdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbiAgLW1zLXVzZXItc2VsZWN0OiAkdmFsdWU7XG4gIHVzZXItc2VsZWN0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBpbnB1dC1wbGFjZWhvbGRlciB7XG4gICY6OnBsYWNlaG9sZGVyIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG4gICY6Oi1tb3otcGxhY2Vob2xkZXIge1xuICAgIEBjb250ZW50O1xuICB9XG5cbiAgJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGN1cnNvci1ncmFiIHtcbiAgY3Vyc29yOiAtd2Via2l0LWdyYWI7XG4gIGN1cnNvcjogZ3JhYjtcbn1cblxuQG1peGluIGN1cnNvci1ncmFiYmluZyB7XG4gIGN1cnNvcjogLXdlYmtpdC1ncmFiYmluZztcbiAgY3Vyc29yOiBncmFiYmluZztcbn1cblxuQG1peGluIGJhY2tmYWNlLXZpc2liaWxpdHkoJHZhbHVlKSB7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogJHZhbHVlO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiAkdmFsdWU7XG59XG4vKiBzdHlsZWxpbnQtZW5hYmxlICovXG5cblxuXG5AbWl4aW4gbWF0LWlucHV0LXRoZW1lKCR0aGVtZSkge1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVyIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LWlucHV0LWVsZW1lbnQ6ZGlzYWJsZWQsXG4gIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICB9XG5cbiAgLm1hdC1pbnB1dC1lbGVtZW50IHtcbiAgICBjYXJldC1jb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5KTtcblxuICAgIEBpbmNsdWRlIGlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiBfbWF0LWNvbnRyb2wtcGxhY2Vob2xkZXItY29sb3IoJHRoZW1lKTtcbiAgICB9XG5cbiAgICAvLyBPbiBkYXJrIHRoZW1lcyB3ZSBzZXQgdGhlIG5hdGl2ZSBgc2VsZWN0YCBjb2xvciB0byBzb21lIHNoYWRlIG9mIHdoaXRlLFxuICAgIC8vIGhvd2V2ZXIgdGhlIGNvbG9yIHByb3BhZ2F0ZXMgdG8gYWxsIG9mIHRoZSBgb3B0aW9uYCBlbGVtZW50cywgd2hpY2ggYXJlXG4gICAgLy8gYWx3YXlzIG9uIGEgd2hpdGUgYmFja2dyb3VuZCBpbnNpZGUgdGhlIGRyb3Bkb3duLCBjYXVzaW5nIHRoZW0gdG8gYmxlbmQgaW4uXG4gICAgLy8gU2luY2Ugd2UgY2FuJ3QgY2hhbmdlIGJhY2tncm91bmQgb2YgdGhlIGRyb3Bkb3duLCB3ZSBuZWVkIHRvIGV4cGxpY2l0bHlcbiAgICAvLyByZXNldCB0aGUgY29sb3Igb2YgdGhlIG9wdGlvbnMgdG8gc29tZXRoaW5nIGRhcmsuXG4gICAgQGlmIChtYXAtZ2V0KCR0aGVtZSwgaXMtZGFyaykpIHtcbiAgICAgIG9wdGlvbiB7XG4gICAgICAgIGNvbG9yOiAkZGFyay1wcmltYXJ5LXRleHQ7XG4gICAgICB9XG5cbiAgICAgIG9wdGlvbjpkaXNhYmxlZCB7XG4gICAgICAgIGNvbG9yOiAkZGFyay1kaXNhYmxlZC10ZXh0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tYXQtYWNjZW50IC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gICAgY2FyZXQtY29sb3I6IG1hdC1jb2xvcigkYWNjZW50KTtcbiAgfVxuXG4gIC5tYXQtd2FybiAubWF0LWlucHV0LWVsZW1lbnQsXG4gIC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gICAgY2FyZXQtY29sb3I6IG1hdC1jb2xvcigkd2Fybik7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJHdhcm4pO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtaW5wdXQtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC8vIFRoZSB1bml0LWxlc3MgbGluZS1oZWlnaHQgZnJvbSB0aGUgZm9udCBjb25maWcuXG4gICRsaW5lLWhlaWdodDogbWF0LWxpbmUtaGVpZ2h0KCRjb25maWcsIGlucHV0KTtcblxuICAvLyBUaGUgYW1vdW50IG9mIHNwYWNlIGJldHdlZW4gdGhlIHRvcCBvZiB0aGUgbGluZSBhbmQgdGhlIHRvcCBvZiB0aGUgYWN0dWFsIHRleHRcbiAgLy8gKGFzIGEgZnJhY3Rpb24gb2YgdGhlIGZvbnQtc2l6ZSkuXG4gICRsaW5lLXNwYWNpbmc6ICgkbGluZS1oZWlnaHQgLSAxKSAvIDI7XG5cbiAgLy8gPGlucHV0PiBlbGVtZW50cyBzZWVtIHRvIGhhdmUgdGhlaXIgaGVpZ2h0IHNldCBzbGlnaHRseSB0b28gbGFyZ2Ugb24gU2FmYXJpIGNhdXNpbmcgdGhlIHRleHQgdG9cbiAgLy8gYmUgbWlzYWxpZ25lZCB3LnIudC4gdGhlIHBsYWNlaG9sZGVyLiBBZGRpbmcgdGhpcyBtYXJnaW4gY29ycmVjdHMgaXQuXG4gIGlucHV0Lm1hdC1pbnB1dC1lbGVtZW50IHtcbiAgICBtYXJnaW4tdG9wOiAtJGxpbmUtc3BhY2luZyAqIDFlbTtcbiAgfVxufVxuXG5cblxuXG5cblxuXG5AbWl4aW4gbWF0LWxpc3QtdGhlbWUoJHRoZW1lKSB7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1saXN0LWJhc2Uge1xuICAgIC5tYXQtbGlzdC1pdGVtIHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIH1cblxuICAgIC5tYXQtbGlzdC1vcHRpb24ge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdWJoZWFkZXIge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtbGlzdC1pdGVtLWRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGRpc2FibGVkLWxpc3Qtb3B0aW9uKTtcbiAgfVxuXG4gIC5tYXQtbGlzdC1vcHRpb24sXG4gIC5tYXQtbmF2LWxpc3QgLm1hdC1saXN0LWl0ZW0ge1xuICAgICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCAnaG92ZXInKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1saXN0LXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAkZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcblxuICAubWF0LWxpc3QtaXRlbSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgfVxuXG4gIC5tYXQtbGlzdC1vcHRpb24ge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gIH1cblxuICAvLyBEZWZhdWx0IGxpc3RcbiAgLm1hdC1saXN0LWJhc2Uge1xuICAgIC5tYXQtbGlzdC1pdGVtIHtcbiAgICAgIGZvbnQtc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBzdWJoZWFkaW5nLTIpO1xuICAgICAgQGluY2x1ZGUgbWF0LWxpbmUtYmFzZShtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMSkpO1xuICAgIH1cblxuICAgIC5tYXQtbGlzdC1vcHRpb24ge1xuICAgICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIHN1YmhlYWRpbmctMik7XG4gICAgICBAaW5jbHVkZSBtYXQtbGluZS1iYXNlKG1hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0xKSk7XG4gICAgfVxuXG4gICAgLm1hdC1zdWJoZWFkZXIge1xuICAgICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnLCBib2R5LTIpO1xuICAgICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMik7XG4gICAgICBmb250LXdlaWdodDogbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gICAgfVxuICB9XG5cbiAgLy8gRGVuc2UgbGlzdFxuICAubWF0LWxpc3QtYmFzZVtkZW5zZV0ge1xuICAgIC5tYXQtbGlzdC1pdGVtIHtcbiAgICAgIGZvbnQtc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICAgIEBpbmNsdWRlIG1hdC1saW5lLWJhc2UobWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKSk7XG4gICAgfVxuXG4gICAgLm1hdC1saXN0LW9wdGlvbiB7XG4gICAgICBmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgICBAaW5jbHVkZSBtYXQtbGluZS1iYXNlKG1hdC1mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbikpO1xuICAgIH1cblxuICAgIC5tYXQtc3ViaGVhZGVyIHtcbiAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gICAgICBmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgICBmb250LXdlaWdodDogbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuXG5cbkBtaXhpbiBtYXQtbWVudS10aGVtZSgkdGhlbWUpIHtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LW1lbnUtcGFuZWwge1xuICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDQsICR0aGVtZSk7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCAnY2FyZCcpO1xuICB9XG5cbiAgLm1hdC1tZW51LWl0ZW0ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsICd0ZXh0Jyk7XG5cbiAgICAmW2Rpc2FibGVkXSB7XG4gICAgICAmLCAmOjphZnRlciB7XG4gICAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsICdkaXNhYmxlZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbi1uby1jb2xvcixcbiAgLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyOjphZnRlciB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgJ2ljb24nKTtcbiAgfVxuXG4gIC5tYXQtbWVudS1pdGVtOmhvdmVyLFxuICAubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkLFxuICAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZCxcbiAgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWQge1xuICAgICY6bm90KFtkaXNhYmxlZF0pIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgJ2hvdmVyJyk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtbWVudS10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC1tZW51LWl0ZW0ge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcsIGJvZHktMSk7XG4gICAgICBzaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gICAgICB3ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cblxuQG1peGluIG1hdC1wYWdpbmF0b3ItdGhlbWUoJHRoZW1lKSB7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG5cbiAgLm1hdC1wYWdpbmF0b3Ige1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgJ2NhcmQnKTtcbiAgfVxuXG4gIC5tYXQtcGFnaW5hdG9yLFxuICAubWF0LXBhZ2luYXRvci1wYWdlLXNpemUgLm1hdC1zZWxlY3QtdHJpZ2dlciB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50LFxuICAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnQge1xuICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCBtYXQtY29sb3IoJGZvcmVncm91bmQsICdpY29uJyk7XG4gICAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCAnaWNvbicpO1xuICB9XG5cbiAgLm1hdC1wYWdpbmF0b3ItZmlyc3QsXG4gIC5tYXQtcGFnaW5hdG9yLWxhc3Qge1xuICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCBtYXQtY29sb3IoJGZvcmVncm91bmQsICdpY29uJyk7XG4gIH1cblxuICAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXSB7XG4gICAgLm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50LFxuICAgIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudCxcbiAgICAubWF0LXBhZ2luYXRvci1maXJzdCxcbiAgICAubWF0LXBhZ2luYXRvci1sYXN0IHtcbiAgICAgIGJvcmRlci1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCAnZGlzYWJsZWQnKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1wYWdpbmF0b3ItdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtcGFnaW5hdG9yLFxuICAubWF0LXBhZ2luYXRvci1wYWdlLXNpemUgLm1hdC1zZWxlY3QtdHJpZ2dlciB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgICBzaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cbkBtaXhpbiBtYXQtcHJvZ3Jlc3MtYmFyLXRoZW1lKCR0aGVtZSkge1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcblxuICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kIHtcbiAgICBmaWxsOiBtYXQtY29sb3IoJHByaW1hcnksIGxpZ2h0ZXIpO1xuICB9XG5cbiAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHByaW1hcnksIGxpZ2h0ZXIpO1xuICB9XG5cbiAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSk7XG4gIH1cblxuICAubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50IHtcbiAgICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kIHtcbiAgICAgIGZpbGw6IG1hdC1jb2xvcigkYWNjZW50LCBsaWdodGVyKTtcbiAgICB9XG5cbiAgICAubWF0LXByb2dyZXNzLWJhci1idWZmZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRhY2NlbnQsIGxpZ2h0ZXIpO1xuICAgIH1cblxuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYWNjZW50KTtcbiAgICB9XG4gIH1cblxuICAubWF0LXByb2dyZXNzLWJhci5tYXQtd2FybiB7XG4gICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZCB7XG4gICAgICBmaWxsOiBtYXQtY29sb3IoJHdhcm4sIGxpZ2h0ZXIpO1xuICAgIH1cblxuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHdhcm4sIGxpZ2h0ZXIpO1xuICAgIH1cblxuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkd2Fybik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtcHJvZ3Jlc3MtYmFyLXR5cG9ncmFwaHkoJGNvbmZpZykgeyB9XG5cblxuXG5cblxuXG5AbWl4aW4gbWF0LXByb2dyZXNzLXNwaW5uZXItdGhlbWUoJHRoZW1lKSB7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuXG4gIC5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciwgLm1hdC1zcGlubmVyIHtcbiAgICBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiBtYXQtY29sb3IoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiBtYXQtY29sb3IoJGFjY2VudCk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiBtYXQtY29sb3IoJHdhcm4pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LXByb2dyZXNzLXNwaW5uZXItdHlwb2dyYXBoeSgkY29uZmlnKSB7IH1cblxuXG5cblxuXG5AbWl4aW4gX21hdC1yYWRpby1jb2xvcigkcGFsZXR0ZSkge1xuICAmLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlIHtcbiAgICBib3JkZXItY29sb3I6IG1hdC1jb2xvcigkcGFsZXR0ZSk7XG4gIH1cblxuICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSxcbiAgLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksXG4gICYubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSxcbiAgJjphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRwYWxldHRlKTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXJhZGlvLXRoZW1lKCR0aGVtZSkge1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZSB7XG4gICAgYm9yZGVyLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtcmFkaW8tYnV0dG9uIHtcbiAgICAmLm1hdC1wcmltYXJ5IHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtcmFkaW8tY29sb3IoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBAaW5jbHVkZSBfbWF0LXJhZGlvLWNvbG9yKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgQGluY2x1ZGUgX21hdC1yYWRpby1jb2xvcigkd2Fybik7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBuZWVkcyBleHRyYSBzcGVjaWZpY2l0eSwgYmVjYXVzZSB0aGUgY2xhc3NlcyBhYm92ZSBhcmUgY29tYmluZWRcbiAgICAvLyAoZS5nLiBgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudGApIHdoaWNoIGluY3JlYXNlcyB0aGVpciBzcGVjaWZpY2l0eSBhIGxvdC5cbiAgICAvLyBUT0RPOiBjb25zaWRlciBtYWtpbmcgdGhlIHNlbGVjdG9ycyBpbnRvIGRlc2NlbmRhbnRzIChgLm1hdC1wcmltYXJ5IC5tYXQtcmFkaW8tYnV0dG9uYCkuXG4gICAgJi5tYXQtcmFkaW8tZGlzYWJsZWQge1xuICAgICAgJi5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZSxcbiAgICAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkKTtcbiAgICAgIH1cblxuICAgICAgLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudCxcbiAgICAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZCk7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudCB7XG4gICAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTd2l0Y2ggdGhpcyB0byBhIHNvbGlkIGNvbG9yIHNpbmNlIHdlJ3JlIHVzaW5nIGBvcGFjaXR5YFxuICAgIC8vIHRvIGNvbnRyb2wgaG93IG9wYXF1ZSB0aGUgcmlwcGxlIHNob3VsZCBiZS5cbiAgICAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hcF9nZXQoJGZvcmVncm91bmQsIGJhc2UpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LXJhZGlvLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LXJhZGlvLWJ1dHRvbiB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxufVxuXG5cblxuXG5cblxuXG5cbkBtaXhpbiBtYXQtc2VsZWN0LXRoZW1lKCR0aGVtZSkge1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcblxuICAubWF0LXNlbGVjdC12YWx1ZSB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cblxuICAubWF0LXNlbGVjdC1wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IF9tYXQtY29udHJvbC1wbGFjZWhvbGRlci1jb2xvcigkdGhlbWUpO1xuICB9XG5cbiAgLm1hdC1zZWxlY3QtZGlzYWJsZWQgLm1hdC1zZWxlY3QtdmFsdWUge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICB9XG5cbiAgLm1hdC1zZWxlY3QtYXJyb3cge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtc2VsZWN0LXBhbmVsIHtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGNhcmQpO1xuICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDQsICR0aGVtZSk7XG5cbiAgICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKSB7XG4gICAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGhvdmVyLCAwLjEyKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQge1xuICAgICYubWF0LWZvY3VzZWQge1xuICAgICAgJi5tYXQtcHJpbWFyeSAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgICAgIGNvbG9yOiBtYXQtY29sb3IoJHByaW1hcnkpO1xuICAgICAgfVxuXG4gICAgICAmLm1hdC1hY2NlbnQgLm1hdC1zZWxlY3QtYXJyb3cge1xuICAgICAgICBjb2xvcjogbWF0LWNvbG9yKCRhY2NlbnQpO1xuICAgICAgfVxuXG4gICAgICAmLm1hdC13YXJuIC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICAgICAgY29sb3I6IG1hdC1jb2xvcigkd2Fybik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1pbnZhbGlkIC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJHdhcm4pO1xuICAgIH1cblxuICAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZGlzYWJsZWQgLm1hdC1zZWxlY3QtYXJyb3cge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtc2VsZWN0LXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAvLyBUaGUgdW5pdC1sZXNzIGxpbmUtaGVpZ2h0IGZyb20gdGhlIGZvbnQgY29uZmlnLlxuICAkbGluZS1oZWlnaHQ6IG1hdC1saW5lLWhlaWdodCgkY29uZmlnLCBpbnB1dCk7XG5cbiAgLm1hdC1zZWxlY3Qge1xuICAgIGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LXNlbGVjdC10cmlnZ2VyIHtcbiAgICBoZWlnaHQ6ICRsaW5lLWhlaWdodCAqIDFlbTtcbiAgfVxufVxuXG5cblxuXG5cblxuQG1peGluIG1hdC1zaWRlbmF2LXRoZW1lKCR0aGVtZSkge1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAvLyBXZSB1c2UgaW52ZXJ0KCkgaGVyZSB0byBoYXZlIHRoZSBkYXJrZW4gdGhlIGJhY2tncm91bmQgY29sb3IgZXhwZWN0ZWQgdG8gYmUgdXNlZC4gSWYgdGhlXG4gIC8vIGJhY2tncm91bmQgaXMgbGlnaHQsIHdlIHVzZSBhIGRhcmsgYmFja2Ryb3AuIElmIHRoZSBiYWNrZ3JvdW5kIGlzIGRhcmssXG4gIC8vIHdlIHVzZSBhIGxpZ2h0IGJhY2tkcm9wLlxuICAkZHJhd2VyLWJhY2tkcm9wLWNvbG9yOiBpbnZlcnQobWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBjYXJkLCAwLjYpKTtcbiAgJGRyYXdlci1iYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGRpYWxvZyk7XG4gICRkcmF3ZXItY29udGFpbmVyLWJhY2tncm91bmQtY29sb3I6ICBtYXQtY29sb3IoJGJhY2tncm91bmQsIGJhY2tncm91bmQpO1xuICAkZHJhd2VyLXB1c2gtYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBkaWFsb2cpO1xuICAkZHJhd2VyLXNpZGUtYm9yZGVyOiBzb2xpZCAxcHggbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcblxuICAubWF0LWRyYXdlci1jb250YWluZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkcmF3ZXItY29udGFpbmVyLWJhY2tncm91bmQtY29sb3I7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cblxuICAubWF0LWRyYXdlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGRyYXdlci1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gICAgJi5tYXQtZHJhd2VyLXB1c2gge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGRyYXdlci1wdXNoLWJhY2tncm91bmQtY29sb3I7XG4gICAgfVxuXG4gICAgJjpub3QoLm1hdC1kcmF3ZXItc2lkZSkge1xuICAgICAgLy8gVGhlIGVsZXZhdGlvbiBvZiB6LTE2IGlzIG5vdGVkIGluIHRoZSBkZXNpZ24gc3BlY2lmaWNhdGlvbnMuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vY29tcG9uZW50cy9uYXZpZ2F0aW9uLWRyYXdlci5odG1sXG4gICAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLWVsZXZhdGlvbigxNiwgJHRoZW1lKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWRyYXdlci1zaWRlIHtcbiAgICBib3JkZXItcmlnaHQ6ICRkcmF3ZXItc2lkZS1ib3JkZXI7XG5cbiAgICAmLm1hdC1kcmF3ZXItZW5kIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkZHJhd2VyLXNpZGUtYm9yZGVyO1xuICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIFtkaXI9J3J0bCddIC5tYXQtZHJhd2VyLXNpZGUge1xuICAgIGJvcmRlci1sZWZ0OiAkZHJhd2VyLXNpZGUtYm9yZGVyO1xuICAgIGJvcmRlci1yaWdodDogbm9uZTtcblxuICAgICYubWF0LWRyYXdlci1lbmQge1xuICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgICBib3JkZXItcmlnaHQ6ICRkcmF3ZXItc2lkZS1ib3JkZXI7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1kcmF3ZXItYmFja2Ryb3AubWF0LWRyYXdlci1zaG93biB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGRyYXdlci1iYWNrZHJvcC1jb2xvcjtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXNpZGVuYXYtdHlwb2dyYXBoeSgkY29uZmlnKSB7IH1cblxuXG5cblxuXG5cbkBtaXhpbiBfbWF0LXNsaWRlLXRvZ2dsZS1jaGVja2VkKCRwYWxldHRlLCAkdGh1bWItY2hlY2tlZC1odWUpIHtcbiAgJi5tYXQtY2hlY2tlZCB7XG4gICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRwYWxldHRlLCAkdGh1bWItY2hlY2tlZC1odWUpO1xuICAgIH1cblxuICAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhciB7XG4gICAgICAvLyBPcGFjaXR5IGlzIGRldGVybWluZWQgZnJvbSB0aGUgc3BlY3MgZm9yIHRoZSBzZWxlY3Rpb24gY29udHJvbHMuXG4gICAgICAvLyBTZWU6IGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL2NvbXBvbmVudHMvc2VsZWN0aW9uLWNvbnRyb2xzLmh0bWwjc3BlY3NcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcGFsZXR0ZSwgJHRodW1iLWNoZWNrZWQtaHVlLCAwLjU0KTtcbiAgICB9XG5cbiAgICAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICAgIC8vIFNldCBubyBvcGFjaXR5IGZvciB0aGUgcmlwcGxlcyBiZWNhdXNlIHRoZSByaXBwbGUgb3BhY2l0eSB3aWxsIGJlIGFkanVzdGVkIGR5bmFtaWNhbGx5XG4gICAgICAvLyBiYXNlZCBvbiB0aGUgdHlwZSBvZiBpbnRlcmFjdGlvbiB3aXRoIHRoZSBzbGlkZS10b2dnbGUgKGUuZy4gZm9yIGhvdmVyLCBmb2N1cylcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcGFsZXR0ZSwgJHRodW1iLWNoZWNrZWQtaHVlKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1zbGlkZS10b2dnbGUtdGhlbWUoJHRoZW1lKSB7XG4gICRpcy1kYXJrOiBtYXBfZ2V0KCR0aGVtZSwgaXMtZGFyayk7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gIC8vIENvbG9yIGh1ZXMgYXJlIGJhc2VkIG9uIHRoZSBzcGVjcyB3aGljaCBicmllZmx5IHNob3cgdGhlIGh1ZXMgdGhhdCBhcmUgYXBwbGllZCB0byBhIHN3aXRjaC5cbiAgLy8gVGhlIDIwMTggc3BlY3Mgbm8gbG9uZ2VyIGRlc2NyaWJlIGhvdyBkYXJrIHN3aXRjaGVzIHNob3VsZCBsb29rIGxpa2UuIER1ZSB0byB0aGUgbGFjayBvZlxuICAvLyBpbmZvcm1hdGlvbiBmb3IgZGFyayB0aGVtZWQgc3dpdGNoZXMsIHdlIGtlZXAgdGhlIG9sZCBiZWhhdmlvciB0aGF0IGlzIGJhc2VkIG9uIHRoZSBwcmV2aW91c1xuICAvLyBzcGVjaWZpY2F0aW9ucy4gU2VlOiBodHRwczovL21hdGVyaWFsLmlvL2Rlc2lnbi9jb21wb25lbnRzL3NlbGVjdGlvbi1jb250cm9scy5odG1sI3NwZWNzXG4gICR0aHVtYi11bmNoZWNrZWQtaHVlOiBpZigkaXMtZGFyaywgNDAwLCA1MCk7XG4gICR0aHVtYi1jaGVja2VkLWh1ZTogaWYoJGlzLWRhcmssIDIwMCwgZGVmYXVsdCk7XG5cbiAgJGJhci11bmNoZWNrZWQtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGlzYWJsZWQpO1xuICAkcmlwcGxlLXVuY2hlY2tlZC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBiYXNlKTtcblxuICAubWF0LXNsaWRlLXRvZ2dsZSB7XG4gICAgQGluY2x1ZGUgX21hdC1zbGlkZS10b2dnbGUtY2hlY2tlZCgkYWNjZW50LCAkdGh1bWItY2hlY2tlZC1odWUpO1xuXG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBAaW5jbHVkZSBfbWF0LXNsaWRlLXRvZ2dsZS1jaGVja2VkKCRwcmltYXJ5LCAkdGh1bWItY2hlY2tlZC1odWUpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgQGluY2x1ZGUgX21hdC1zbGlkZS10b2dnbGUtY2hlY2tlZCgkd2FybiwgJHRodW1iLWNoZWNrZWQtaHVlKTtcbiAgICB9XG5cbiAgICAmOm5vdCgubWF0LWNoZWNrZWQpIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgICAgLy8gU2V0IG5vIG9wYWNpdHkgZm9yIHRoZSByaXBwbGVzIGJlY2F1c2UgdGhlIHJpcHBsZSBvcGFjaXR5IHdpbGwgYmUgYWRqdXN0ZWQgZHluYW1pY2FsbHlcbiAgICAgIC8vIGJhc2VkIG9uIHRoZSB0eXBlIG9mIGludGVyYWN0aW9uIHdpdGggdGhlIHNsaWRlLXRvZ2dsZSAoZS5nLiBmb3IgaG92ZXIsIGZvY3VzKVxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHJpcHBsZS11bmNoZWNrZWQtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWIge1xuICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtZWxldmF0aW9uKDEsICR0aGVtZSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRtYXQtZ3JleSwgJHRodW1iLXVuY2hlY2tlZC1odWUpO1xuICB9XG5cbiAgLm1hdC1zbGlkZS10b2dnbGUtYmFyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFyLXVuY2hlY2tlZC1jb2xvcjtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXNsaWRlLXRvZ2dsZS10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC1zbGlkZS10b2dnbGUtY29udGVudCB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxufVxuXG5cblxuXG5cbkBtaXhpbiBfbWF0LXNsaWRlci1pbm5lci1jb250ZW50LXRoZW1lKCRwYWxldHRlKSB7XG4gIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsXG4gIC5tYXQtc2xpZGVyLXRodW1iLFxuICAubWF0LXNsaWRlci10aHVtYi1sYWJlbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRwYWxldHRlKTtcbiAgfVxuXG4gIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHQge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtc2xpZGVyLXRoZW1lKCR0aGVtZSkge1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAkbWF0LXNsaWRlci1vZmYtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2xpZGVyLW9mZik7XG4gICRtYXQtc2xpZGVyLW9mZi1mb2N1c2VkLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNsaWRlci1vZmYtYWN0aXZlKTtcbiAgJG1hdC1zbGlkZXItZGlzYWJsZWQtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2xpZGVyLW9mZik7XG4gICRtYXQtc2xpZGVyLWxhYmVsZWQtbWluLXZhbHVlLXRodW1iLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNsaWRlci1taW4pO1xuICAkbWF0LXNsaWRlci1sYWJlbGVkLW1pbi12YWx1ZS10aHVtYi1sYWJlbC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzbGlkZXItb2ZmKTtcbiAgJG1hdC1zbGlkZXItZm9jdXMtcmluZy1jb2xvcjogbWF0LWNvbG9yKCRhY2NlbnQsIGRlZmF1bHQsIDAuMik7XG4gICRtYXQtc2xpZGVyLWZvY3VzLXJpbmctbWluLXZhbHVlLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGJhc2UsIDAuMTIpO1xuICAkbWF0LXNsaWRlci10aWNrLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGJhc2UsIDAuNyk7XG4gICRtYXQtc2xpZGVyLXRpY2stc2l6ZTogMnB4O1xuXG4gIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLW9mZi1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtcHJpbWFyeSB7XG4gICAgQGluY2x1ZGUgX21hdC1zbGlkZXItaW5uZXItY29udGVudC10aGVtZSgkcHJpbWFyeSk7XG4gIH1cblxuICAubWF0LWFjY2VudCB7XG4gICAgQGluY2x1ZGUgX21hdC1zbGlkZXItaW5uZXItY29udGVudC10aGVtZSgkYWNjZW50KTtcbiAgfVxuXG4gIC5tYXQtd2FybiB7XG4gICAgQGluY2x1ZGUgX21hdC1zbGlkZXItaW5uZXItY29udGVudC10aGVtZSgkd2Fybik7XG4gIH1cblxuICAubWF0LXNsaWRlci1mb2N1cy1yaW5nIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWF0LXNsaWRlci1mb2N1cy1yaW5nLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1zbGlkZXI6aG92ZXIsXG4gIC5jZGstZm9jdXNlZCB7XG4gICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWF0LXNsaWRlci1vZmYtZm9jdXNlZC1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LXNsaWRlci1kaXNhYmxlZCB7XG4gICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCxcbiAgICAubWF0LXNsaWRlci10cmFjay1maWxsLFxuICAgIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLWRpc2FibGVkLWNvbG9yO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLWRpc2FibGVkLWNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLW1pbi12YWx1ZSB7XG4gICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZyB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWF0LXNsaWRlci1mb2N1cy1yaW5nLW1pbi12YWx1ZS1jb2xvcjtcbiAgICB9XG5cbiAgICAmLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyB7XG4gICAgICAubWF0LXNsaWRlci10aHVtYixcbiAgICAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItbGFiZWxlZC1taW4tdmFsdWUtdGh1bWItY29sb3I7XG4gICAgICB9XG5cbiAgICAgICYuY2RrLWZvY3VzZWQge1xuICAgICAgICAubWF0LXNsaWRlci10aHVtYixcbiAgICAgICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLWxhYmVsZWQtbWluLXZhbHVlLXRodW1iLWxhYmVsLWNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykge1xuICAgICAgLm1hdC1zbGlkZXItdGh1bWIge1xuICAgICAgICBib3JkZXItY29sb3I6ICRtYXQtc2xpZGVyLW9mZi1jb2xvcjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIsXG4gICAgICAmLmNkay1mb2N1c2VkIHtcbiAgICAgICAgLm1hdC1zbGlkZXItdGh1bWIge1xuICAgICAgICAgIGJvcmRlci1jb2xvcjogJG1hdC1zbGlkZXItb2ZmLWZvY3VzZWQtY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICAmLm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdGh1bWIge1xuICAgICAgICAgIGJvcmRlci1jb2xvcjogJG1hdC1zbGlkZXItZGlzYWJsZWQtY29sb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWF0LXNsaWRlci1oYXMtdGlja3MgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXIge1xuICAgIGJvcmRlci1jb2xvcjogJG1hdC1zbGlkZXItdGljay1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGlja3Mge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRtYXQtc2xpZGVyLXRpY2stY29sb3IsXG4gICAgICAgICRtYXQtc2xpZGVyLXRpY2stY29sb3IgJG1hdC1zbGlkZXItdGljay1zaXplLCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7XG4gICAgLy8gRmlyZWZveCBkb2Vzbid0IGRyYXcgdGhlIGdyYWRpZW50IGNvcnJlY3RseSB3aXRoICd0byByaWdodCdcbiAgICAvLyAoc2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTQzMTkpLlxuICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsICRtYXQtc2xpZGVyLXRpY2stY29sb3IsXG4gICAgICAgICRtYXQtc2xpZGVyLXRpY2stY29sb3IgJG1hdC1zbGlkZXItdGljay1zaXplLCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7XG4gIH1cblxuICAubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aWNrcyB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICRtYXQtc2xpZGVyLXRpY2stY29sb3IsXG4gICAgICAgICRtYXQtc2xpZGVyLXRpY2stY29sb3IgJG1hdC1zbGlkZXItdGljay1zaXplLCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7XG4gIH1cbn1cblxuQG1peGluIG1hdC1zbGlkZXItdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHQge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcpO1xuICAgICAgc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICAgIHdlaWdodDogbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuQG1peGluIG1hdC1zdGVwcGVyLXRoZW1lKCR0aGVtZSkge1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuXG4gIC5tYXQtc3RlcC1oZWFkZXIge1xuICAgICYuY2RrLWtleWJvYXJkLWZvY3VzZWQsXG4gICAgJi5jZGstcHJvZ3JhbS1mb2N1c2VkLFxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBob3Zlcik7XG4gICAgfVxuXG4gICAgLy8gT24gdG91Y2ggZGV2aWNlcyB0aGUgOmhvdmVyIHN0YXRlIHdpbGwgbGluZ2VyIG9uIHRoZSBlbGVtZW50IGFmdGVyIGEgdGFwLlxuICAgIC8vIFJlc2V0IGl0IHZpYSBgQG1lZGlhYCBhZnRlciB0aGUgZGVjbGFyYXRpb24sIGJlY2F1c2UgdGhlIG1lZGlhIHF1ZXJ5IGlzbid0XG4gICAgLy8gc3VwcG9ydGVkIGJ5IGFsbCBicm93c2VycyB5ZXQuXG4gICAgQG1lZGlhIChob3Zlcjogbm9uZSkge1xuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwLWxhYmVsLFxuICAgIC5tYXQtc3RlcC1vcHRpb25hbCB7XG4gICAgICAvLyBUT0RPKGpvc2VwaHBlcnJvdHQpOiBVcGRhdGUgdG8gdXNpbmcgYSBjb3JyZWN0ZWQgZGlzYWJsZWQtdGV4dCBjb250cmFzdFxuICAgICAgLy8gaW5zdGVhZCBvZiBzZWNvbmRhcnktdGV4dC5cbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgICB9XG5cbiAgICAubWF0LXN0ZXAtaWNvbiB7XG4gICAgICAvLyBUT0RPKGpvc2VwaHBlcnJvdHQpOiBVcGRhdGUgdG8gdXNpbmcgYSBjb3JyZWN0ZWQgZGlzYWJsZWQtdGV4dCBjb250cmFzdFxuICAgICAgLy8gaW5zdGVhZCBvZiBzZWNvbmRhcnktdGV4dC5cbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsXG4gICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZSxcbiAgICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSk7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5LCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICB9XG5cbiAgICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJHdhcm4pO1xuICAgIH1cblxuICAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1hY3RpdmUge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yIHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJHdhcm4pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLCAubWF0LXN0ZXBwZXItdmVydGljYWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgY2FyZCk7XG4gIH1cblxuICAubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3JlIHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxuXG4gIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YmVmb3JlLFxuICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmFmdGVyLFxuICAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtc3RlcHBlci10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC1zdGVwcGVyLXZlcnRpY2FsLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbCB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtc3RlcC1sYWJlbCB7XG4gICAgZm9udDoge1xuICAgICAgc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpO1xuICAgICAgd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0xKTtcbiAgICB9O1xuICB9XG5cbiAgLm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvciB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgfVxuXG4gIC5tYXQtc3RlcC1sYWJlbC1lcnJvciB7XG4gICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMik7XG4gIH1cblxuICAubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWQge1xuICAgIGZvbnQ6IHtcbiAgICAgIHNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgICAgIHdlaWdodDogbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gICAgfTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXNvcnQtdGhlbWUoJHRoZW1lKSB7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1zb3J0LWhlYWRlci1hcnJvdyB7XG4gICAgLy8gQmVjYXVzZSB0aGUgYXJyb3cgaXMgbWFkZSB1cCBvZiBtdWx0aXBsZSBlbGVtZW50cyB0aGF0IGFyZSBzdGFja2VkIG9uIHRvcCBvZiBlYWNoIG90aGVyLFxuICAgIC8vIHdlIGNhbid0IHVzZSB0aGUgc2VtaS10cmFzcGFyZW50IGNvbG9yIGZyb20gdGhlIHRoZW1lIGRpcmVjdGx5LiBXZSBjb252ZXJ0IGl0IGludG8gYSBzb2xpZFxuICAgIC8vIGNvbG9yIGJ5IHRha2luZyB0aGUgb3BhY2l0eSBmcm9tIHRoZSByZ2JhIHZhbHVlIGFuZCB1c2luZyB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIHRoZVxuICAgIC8vIHBlcmNlbnRhZ2Ugb2YgdGhlIGJhY2tncm91bmQgdG8gcHV0IGludG8gZm9yZWdyb3VuZCB3aGVuIG1peGluZyB0aGUgY29sb3JzIHRvZ2V0aGVyLlxuICAgICR0YWJsZS1iYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsICdjYXJkJyk7XG4gICAgJHRleHQtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICAgICR0ZXh0LW9wYWNpdHk6IG9wYWNpdHkoJHRleHQtY29sb3IpO1xuICAgIGNvbG9yOiBtaXgoJHRhYmxlLWJhY2tncm91bmQsIHJnYmEoJHRleHQtY29sb3IsIDEpLCAoMSAtICR0ZXh0LW9wYWNpdHkpICogMTAwJSk7XG4gIH1cbn1cblxuQG1peGluIG1hdC1zb3J0LXR5cG9ncmFwaHkoJGNvbmZpZykgeyB9XG5cblxuXG5cblxuQG1peGluIG1hdC10YWJzLXRoZW1lKCR0aGVtZSkge1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcbiAgJGhlYWRlci1ib3JkZXI6IDFweCBzb2xpZCBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuXG4gIC5tYXQtdGFiLW5hdi1iYXIsXG4gIC5tYXQtdGFiLWhlYWRlciB7XG4gICAgYm9yZGVyLWJvdHRvbTogJGhlYWRlci1ib3JkZXI7XG4gIH1cblxuICAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIge1xuICAgIC5tYXQtdGFiLW5hdi1iYXIsXG4gICAgLm1hdC10YWItaGVhZGVyIHtcbiAgICAgIGJvcmRlci10b3A6ICRoZWFkZXItYm9yZGVyO1xuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAubWF0LXRhYi1sYWJlbCwgLm1hdC10YWItbGluayB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAmLm1hdC10YWItZGlzYWJsZWQge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICB9XG5cbiAgLy8gUmVtb3ZlIGhlYWRlciBib3JkZXIgd2hlbiB0aGVyZSBpcyBhIGJhY2tncm91bmQgY29sb3JcbiAgLm1hdC10YWItZ3JvdXBbY2xhc3MqPSdtYXQtYmFja2dyb3VuZC0nXSAubWF0LXRhYi1oZWFkZXIsXG4gIC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPSdtYXQtYmFja2dyb3VuZC0nXSB7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICBib3JkZXItdG9wOiBub25lO1xuICB9XG5cbiAgLm1hdC10YWItZ3JvdXAsIC5tYXQtdGFiLW5hdi1iYXIge1xuICAgICR0aGVtZS1jb2xvcnM6IChcbiAgICAgIHByaW1hcnk6ICRwcmltYXJ5LFxuICAgICAgYWNjZW50OiAkYWNjZW50LFxuICAgICAgd2FybjogJHdhcm5cbiAgICApO1xuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkdGhlbWUtY29sb3JzIHtcbiAgICAgIC8vIFNldCB0aGUgZm9yZWdyb3VuZCBjb2xvciBvZiB0aGUgdGFic1xuICAgICAgJi5tYXQtI3skbmFtZX0ge1xuICAgICAgICBAaW5jbHVkZSBfbWF0LXRhYi1sYWJlbC1mb2N1cygkY29sb3IpO1xuICAgICAgICBAaW5jbHVkZSBfbWF0LWluay1iYXIoJGNvbG9yKTtcblxuICAgICAgICAvLyBPdmVycmlkZSBpbmsgYmFyIHdoZW4gYmFja2dyb3VuZCBjb2xvciBpcyB0aGUgc2FtZVxuICAgICAgICAmLm1hdC1iYWNrZ3JvdW5kLSN7JG5hbWV9IHtcbiAgICAgICAgICBAaW5jbHVkZSBfbWF0LWluay1iYXIoJGNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJHRoZW1lLWNvbG9ycyB7XG4gICAgICAvLyBTZXQgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgdGFicyBhbmQgb3ZlcnJpZGUgZm9jdXMgY29sb3JcbiAgICAgICYubWF0LWJhY2tncm91bmQtI3skbmFtZX0ge1xuICAgICAgICBAaW5jbHVkZSBfbWF0LXRhYi1sYWJlbC1mb2N1cygkY29sb3IpO1xuICAgICAgICBAaW5jbHVkZSBfbWF0LXRhYnMtYmFja2dyb3VuZCgkY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX21hdC1pbmstYmFyKCRjb2xvciwgJGh1ZTogZGVmYXVsdCkge1xuICAubWF0LWluay1iYXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkY29sb3IsICRodWUpO1xuICB9XG59XG5cbkBtaXhpbiBfbWF0LXRhYi1sYWJlbC1mb2N1cygkdGFiLWZvY3VzLWNvbG9yKSB7XG4gIC5tYXQtdGFiLWxhYmVsLFxuICAubWF0LXRhYi1saW5rIHtcbiAgICAmLmNkay1rZXlib2FyZC1mb2N1c2VkLFxuICAgICYuY2RrLXByb2dyYW0tZm9jdXNlZCB7XG4gICAgICAmOm5vdCgubWF0LXRhYi1kaXNhYmxlZCkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHRhYi1mb2N1cy1jb2xvciwgbGlnaHRlciwgMC4zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9tYXQtdGFicy1iYWNrZ3JvdW5kKCRiYWNrZ3JvdW5kLWNvbG9yKSB7XG4gIC8vIFNldCBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgdGFiIGdyb3VwXG4gIC5tYXQtdGFiLWhlYWRlciwgLm1hdC10YWItbGlua3Mge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZC1jb2xvcik7XG4gIH1cblxuICAvLyBTZXQgbGFiZWxzIHRvIGNvbnRyYXN0IGFnYWluc3QgYmFja2dyb3VuZFxuICAubWF0LXRhYi1sYWJlbCwgLm1hdC10YWItbGluayB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZC1jb2xvciwgZGVmYXVsdC1jb250cmFzdCk7XG5cbiAgICAmLm1hdC10YWItZGlzYWJsZWQge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZC1jb2xvciwgZGVmYXVsdC1jb250cmFzdCwgMC40KTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXQgcGFnaW5hdGlvbiBjaGV2cm9ucyB0byBjb250cmFzdCBiYWNrZ3JvdW5kXG4gIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24ge1xuICAgIGJvcmRlci1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLWNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgfVxuXG4gIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24ge1xuICAgIGJvcmRlci1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLWNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0LCAwLjQpO1xuICB9XG5cbiAgLy8gU2V0IHJpcHBsZXMgY29sb3IgdG8gYmUgdGhlIGNvbnRyYXN0IGNvbG9yIG9mIHRoZSBuZXcgYmFja2dyb3VuZC4gT3RoZXJ3aXNlIHRoZSByaXBwbGVcbiAgLy8gY29sb3Igd2lsbCBiZSBiYXNlZCBvbiB0aGUgYXBwIGJhY2tncm91bmQgY29sb3IuXG4gIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZC1jb2xvciwgZGVmYXVsdC1jb250cmFzdCwgMC4xMik7XG4gIH1cbn1cblxuQG1peGluIG1hdC10YWJzLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LXRhYi1ncm91cCB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtdGFiLWxhYmVsLCAubWF0LXRhYi1saW5rIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYnV0dG9uKTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5cbkBtaXhpbiBfbWF0LXRvb2xiYXItY29sb3IoJHBhbGV0dGUpIHtcbiAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRwYWxldHRlKTtcbiAgY29sb3I6IG1hdC1jb2xvcigkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCk7XG59XG5cbkBtaXhpbiBfbWF0LXRvb2xiYXItZm9ybS1maWVsZC1vdmVycmlkZXMge1xuICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lLFxuICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLFxuICAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAubWF0LXNlbGVjdC12YWx1ZSxcbiAgLm1hdC1zZWxlY3QtYXJyb3csXG4gIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gIH1cblxuICAubWF0LWlucHV0LWVsZW1lbnQge1xuICAgIGNhcmV0LWNvbG9yOiBjdXJyZW50Q29sb3I7XG4gIH1cbn1cblxuQG1peGluIG1hdC10b29sYmFyLXRoZW1lKCR0aGVtZSkge1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LXRvb2xiYXIge1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgYXBwLWJhcik7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAmLm1hdC1wcmltYXJ5IHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtdG9vbGJhci1jb2xvcigkcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtdG9vbGJhci1jb2xvcigkYWNjZW50KTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtdG9vbGJhci1jb2xvcigkd2Fybik7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgX21hdC10b29sYmFyLWZvcm0tZmllbGQtb3ZlcnJpZGVzO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtdG9vbGJhci10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC10b29sYmFyLFxuICAubWF0LXRvb2xiYXIgaDEsXG4gIC5tYXQtdG9vbGJhciBoMixcbiAgLm1hdC10b29sYmFyIGgzLFxuICAubWF0LXRvb2xiYXIgaDQsXG4gIC5tYXQtdG9vbGJhciBoNSxcbiAgLm1hdC10b29sYmFyIGg2IHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgdGl0bGUpO1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuXG5cblxuXG5cbiRtYXQtdG9vbHRpcC10YXJnZXQtaGVpZ2h0OiAyMnB4O1xuJG1hdC10b29sdGlwLWZvbnQtc2l6ZTogMTBweDtcbiRtYXQtdG9vbHRpcC12ZXJ0aWNhbC1wYWRkaW5nOiAoJG1hdC10b29sdGlwLXRhcmdldC1oZWlnaHQgLSAkbWF0LXRvb2x0aXAtZm9udC1zaXplKSAvIDI7XG5cbiRtYXQtdG9vbHRpcC1oYW5kc2V0LXRhcmdldC1oZWlnaHQ6IDMwcHg7XG4kbWF0LXRvb2x0aXAtaGFuZHNldC1mb250LXNpemU6IDE0cHg7XG4kbWF0LXRvb2x0aXAtaGFuZHNldC12ZXJ0aWNhbC1wYWRkaW5nOlxuICAgICgkbWF0LXRvb2x0aXAtaGFuZHNldC10YXJnZXQtaGVpZ2h0IC0gJG1hdC10b29sdGlwLWhhbmRzZXQtZm9udC1zaXplKSAvIDI7XG5cbkBtaXhpbiBtYXQtdG9vbHRpcC10aGVtZSgkdGhlbWUpIHtcbiAgLm1hdC10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJG1hdC1ncmV5LCA3MDAsIDAuOSk7XG4gIH1cbn1cblxuQG1peGluIG1hdC10b29sdGlwLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LXRvb2x0aXAge1xuICAgIGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gICAgZm9udC1zaXplOiAkbWF0LXRvb2x0aXAtZm9udC1zaXplO1xuICAgIHBhZGRpbmctdG9wOiAkbWF0LXRvb2x0aXAtdmVydGljYWwtcGFkZGluZztcbiAgICBwYWRkaW5nLWJvdHRvbTogJG1hdC10b29sdGlwLXZlcnRpY2FsLXBhZGRpbmc7XG4gIH1cblxuICAubWF0LXRvb2x0aXAtaGFuZHNldCB7XG4gICAgZm9udC1zaXplOiAkbWF0LXRvb2x0aXAtaGFuZHNldC1mb250LXNpemU7XG4gICAgcGFkZGluZy10b3A6ICRtYXQtdG9vbHRpcC1oYW5kc2V0LXZlcnRpY2FsLXBhZGRpbmc7XG4gICAgcGFkZGluZy1ib3R0b206ICRtYXQtdG9vbHRpcC1oYW5kc2V0LXZlcnRpY2FsLXBhZGRpbmc7XG4gIH1cbn1cblxuXG5cblxuXG5AbWl4aW4gbWF0LXNuYWNrLWJhci10aGVtZSgkdGhlbWUpIHtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC1nZXQoJHRoZW1lLCBpcy1kYXJrKTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG5cbiAgLm1hdC1zbmFjay1iYXItY29udGFpbmVyIHtcbiAgICAvLyBVc2UgdGhlIHByaW1hcnkgdGV4dCBvbiB0aGUgZGFyayB0aGVtZSwgZXZlbiB0aG91Z2ggdGhlIGxpZ2h0ZXIgb25lIHVzZXNcbiAgICAvLyBhIHNlY29uZGFyeSwgYmVjYXVzZSB0aGUgY29udHJhc3Qgb24gdGhlIGxpZ2h0IHByaW1hcnkgdGV4dCBpcyBwb29yLlxuICAgIGNvbG9yOiBpZigkaXMtZGFyay10aGVtZSwgJGRhcmstcHJpbWFyeS10ZXh0LCAkbGlnaHQtc2Vjb25kYXJ5LXRleHQpO1xuICAgIGJhY2tncm91bmQ6IGlmKCRpcy1kYXJrLXRoZW1lLCBtYXAtZ2V0KCRtYXQtZ3JleSwgNTApLCAjMzIzMjMyKTtcblxuICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtZWxldmF0aW9uKDYsICR0aGVtZSk7XG4gIH1cblxuICAubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb24ge1xuICAgIGNvbG9yOiBpZigkaXMtZGFyay10aGVtZSwgaW5oZXJpdCwgbWF0LWNvbG9yKCRhY2NlbnQpKTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXNuYWNrLWJhci10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC1zaW1wbGUtc25hY2tiYXIge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcsIGJvZHktMSk7XG4gICAgICBzaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uIHtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IGluaGVyaXQ7XG4gICAgICBzaXplOiBpbmhlcml0O1xuICAgICAgd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYnV0dG9uKTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4vLyBUaGVtZSBzdHlsZXMgdGhhdCBvbmx5IGFwcGx5IHRvIHRoZSBmaWxsIGFwcGVhcmFuY2Ugb2YgdGhlIGZvcm0tZmllbGQuXG5cbkBtaXhpbiBtYXQtZm9ybS1maWVsZC1maWxsLXRoZW1lKCR0aGVtZSkge1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLWdldCgkdGhlbWUsIGlzLWRhcmspO1xuXG4gICRmaWxsLWJhY2tncm91bmQ6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgYmFzZSwgaWYoJGlzLWRhcmstdGhlbWUsIDAuMSwgMC4wNCkpO1xuICAkZmlsbC1kaXNhYmxlZC1iYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGJhc2UsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjA1LCAwLjAyKSk7XG4gICR1bmRlcmxpbmUtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDAuNSwgMC40MikpO1xuICAkbGFiZWwtZGlzYWJsZWQtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWZsZXgge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZpbGwtYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1mbGV4IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRmaWxsLWRpc2FibGVkLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3JlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR1bmRlcmxpbmUtY29sb3I7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCB7XG4gICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBjb2xvcjogJGxhYmVsLWRpc2FibGVkLWNvbG9yO1xuICAgICAgfVxuXG4gICAgICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gVXNlZCB0byBtYWtlIGluc3RhbmNlcyBvZiB0aGUgX21hdC1mb3JtLWZpZWxkLWxhYmVsLWZsb2F0aW5nIG1peGluIG5lZ2xpZ2libHkgZGlmZmVyZW50LFxuLy8gYW5kIHByZXZlbnQgR29vZ2xlJ3MgQ1NTIE9wdGltaXplciBmcm9tIGNvbGxhcHNpbmcgdGhlIGRlY2xhcmF0aW9ucy4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb21lXG4vLyBvZiB0aGUgc2VsZWN0b3JzIGNvbnRhaW4gcHNldWRvLWNsYXNzZXMgbm90IHJlY29nbml6ZWQgaW4gYWxsIGJyb3dzZXJzLiBJZiBhIGJyb3dzZXIgZW5jb3VudGVyc1xuLy8gYW4gdW5rbm93biBwc2V1ZG8tY2xhc3MgaXQgd2lsbCBkaXNjYXJkIHRoZSBlbnRpcmUgcnVsZSBzZXQuXG4kbWF0LWZvcm0tZmllbGQtZmlsbC1kZWR1cGU6IDA7XG5cbi8vIEFwcGxpZXMgYSBmbG9hdGluZyBsYWJlbCBhYm92ZSB0aGUgZm9ybSBmaWVsZCBjb250cm9sIGl0c2VsZi5cbkBtaXhpbiBfbWF0LWZvcm0tZmllbGQtZmlsbC1sYWJlbC1mbG9hdGluZygkZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJGluZml4LW1hcmdpbi10b3AgLSAkaW5maXgtcGFkZGluZyArICRtYXQtZm9ybS1maWVsZC1maWxsLWRlZHVwZSlcbiAgICAgICAgICAgICBzY2FsZSgkZm9udC1zY2FsZSk7XG4gIHdpZHRoOiAxMDAlIC8gJGZvbnQtc2NhbGUgKyAkbWF0LWZvcm0tZmllbGQtZmlsbC1kZWR1cGU7XG5cbiAgJG1hdC1mb3JtLWZpZWxkLWZpbGwtZGVkdXBlOiAkbWF0LWZvcm0tZmllbGQtZmlsbC1kZWR1cGUgKyAwLjAwMDAxICFnbG9iYWw7XG59XG5cbkBtaXhpbiBtYXQtZm9ybS1maWVsZC1maWxsLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAvLyBUaGUgdW5pdC1sZXNzIGxpbmUtaGVpZ2h0IGZyb20gdGhlIGZvbnQgY29uZmlnLlxuICAkbGluZS1oZWlnaHQ6IG1hdC1saW5lLWhlaWdodCgkY29uZmlnLCBpbnB1dCk7XG4gIC8vIFRoZSBhbW91bnQgdG8gc2NhbGUgdGhlIGZvbnQgZm9yIHRoZSBmbG9hdGluZyBsYWJlbCBhbmQgc3Vic2NyaXB0LlxuICAkc3Vic2NyaXB0LWZvbnQtc2NhbGU6IDAuNzU7XG4gIC8vIFRoZSBwYWRkaW5nIG9uIHRvcCBvZiB0aGUgaW5maXguXG4gICRpbmZpeC1wYWRkaW5nLXRvcDogMC4yNWVtO1xuICAvLyBUaGUgcGFkZGluZyBiZWxvdyB0aGUgaW5maXguXG4gICRpbmZpeC1wYWRkaW5nLWJvdHRvbTogMC43NWVtO1xuICAvLyBUaGUgbWFyZ2luIGFwcGxpZWQgdG8gdGhlIGZvcm0tZmllbGQtaW5maXggdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIGZsb2F0aW5nIGxhYmVsLlxuICAkaW5maXgtbWFyZ2luLXRvcDogMWVtICogJGxpbmUtaGVpZ2h0ICogJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuICAvLyBUaGUgYW1vdW50IHdlIG9mZnNldCB0aGUgbGFiZWwgZnJvbSB0aGUgaW5wdXQgdGV4dCBpbiB0aGUgZmlsbCBhcHBlYXJhbmNlLlxuICAkZmlsbC1hcHBlYXJhbmNlLWxhYmVsLW9mZnNldDogLTAuNWVtO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwge1xuICAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeCB7XG4gICAgICBwYWRkaW5nOiAkaW5maXgtcGFkZGluZy10b3AgMCAkaW5maXgtcGFkZGluZy1ib3R0b20gMDtcbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgdG9wOiAkaW5maXgtbWFyZ2luLXRvcCArICRpbmZpeC1wYWRkaW5nLXRvcDtcbiAgICAgIG1hcmdpbi10b3A6ICRmaWxsLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0O1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAgICYubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbiAgICAgIC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgX21hdC1mb3JtLWZpZWxkLWZpbGwtbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZy10b3AgKyAkZmlsbC1hcHBlYXJhbmNlLWxhYmVsLW9mZnNldCxcbiAgICAgICAgICAgICAgICAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNlcnZlci1zaWRlIHJlbmRlcmVkIG1hdElucHV0IHdpdGggYSBsYWJlbCBhdHRyaWJ1dGUgYnV0IGxhYmVsIG5vdCBzaG93blxuICAgICAgLy8gKHVzZWQgYXMgYSBwdXJlIENTUyBzdGFuZC1pbiBmb3IgbWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0KS5cbiAgICAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyXG4gICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbWF0LWZvcm0tZmllbGQtZmlsbC1sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLXRvcCArICRmaWxsLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0LFxuICAgICAgICAgICAgICAgICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5cblxuLy8gVGhlbWUgc3R5bGVzIHRoYXQgb25seSBhcHBseSB0byB0aGUgbGVnYWN5IGFwcGVhcmFuY2Ugb2YgdGhlIGZvcm0tZmllbGQuXG5cbkBtaXhpbiBtYXQtZm9ybS1maWVsZC1sZWdhY3ktdGhlbWUoJHRoZW1lKSB7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAtZ2V0KCR0aGVtZSwgaXMtZGFyayk7XG5cbiAgJGxhYmVsLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgJHVuZGVybGluZS1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyLCBpZigkaXMtZGFyay10aGVtZSwgMC43LCAwLjQyKSk7XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IHtcbiAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgY29sb3I6ICRsYWJlbC1jb2xvcjtcbiAgICB9XG5cbiAgICAubWF0LWhpbnQge1xuICAgICAgY29sb3I6ICRsYWJlbC1jb2xvcjtcbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR1bmRlcmxpbmUtY29sb3I7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIHtcbiAgICAgIEBpbmNsdWRlIG1hdC1jb250cm9sLWRpc2FibGVkLXVuZGVybGluZSgkdW5kZXJsaW5lLWNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gVXNlZCB0byBtYWtlIGluc3RhbmNlcyBvZiB0aGUgX21hdC1mb3JtLWZpZWxkLWxhYmVsLWZsb2F0aW5nIG1peGluIG5lZ2xpZ2libHkgZGlmZmVyZW50LFxuLy8gYW5kIHByZXZlbnQgR29vZ2xlJ3MgQ1NTIE9wdGltaXplciBmcm9tIGNvbGxhcHNpbmcgdGhlIGRlY2xhcmF0aW9ucy4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb21lXG4vLyBvZiB0aGUgc2VsZWN0b3JzIGNvbnRhaW4gcHNldWRvLWNsYXNzZXMgbm90IHJlY29nbml6ZWQgaW4gYWxsIGJyb3dzZXJzLiBJZiBhIGJyb3dzZXIgZW5jb3VudGVyc1xuLy8gYW4gdW5rbm93biBwc2V1ZG8tY2xhc3MgaXQgd2lsbCBkaXNjYXJkIHRoZSBlbnRpcmUgcnVsZSBzZXQuXG4kbWF0LWZvcm0tZmllbGQtbGVnYWN5LWRlZHVwZTogMDtcblxuLy8gQXBwbGllcyBhIGZsb2F0aW5nIGxhYmVsIGFib3ZlIHRoZSBmb3JtIGZpZWxkIGNvbnRyb2wgaXRzZWxmLlxuQG1peGluIF9tYXQtZm9ybS1maWVsZC1sZWdhY3ktbGFiZWwtZmxvYXRpbmcoJGZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCkge1xuICAvLyBXZSB1c2UgcGVyc3BlY3RpdmUgdG8gZml4IHRoZSB0ZXh0IGJsdXJyaW5lc3MgYXMgZGVzY3JpYmVkIGhlcmU6XG4gIC8vIGh0dHA6Ly93d3cudXNlcmFnZW50bWFuLmNvbS9ibG9nLzIwMTQvMDUvMDQvZml4aW5nLXR5cG9ncmFwaHktaW5zaWRlLW9mLTItZC1jc3MtdHJhbnNmb3Jtcy9cbiAgLy8gVGhpcyByZXN1bHRzIGluIGEgc21hbGwgaml0dGVyIGFmdGVyIHRoZSBsYWJlbCBmbG9hdHMgb24gRmlyZWZveCwgd2hpY2ggdGhlXG4gIC8vIHRyYW5zbGF0ZVogZml4ZXMuXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJGluZml4LW1hcmdpbi10b3AgLSAkaW5maXgtcGFkZGluZykgc2NhbGUoJGZvbnQtc2NhbGUpIHBlcnNwZWN0aXZlKDEwMHB4KVxuICB0cmFuc2xhdGVaKDAuMDAxcHggKyAkbWF0LWZvcm0tZmllbGQtbGVnYWN5LWRlZHVwZSk7XG4gIC8vIFRoZSB0cmlja3MgYWJvdmUgdXNlZCB0byBzbW9vdGggb3V0IHRoZSBhbmltYXRpb24gb24gY2hyb21lIGFuZCBmaXJlZm94IGFjdHVhbGx5IG1ha2UgdGhpbmdzXG4gIC8vIHdvcnNlIG9uIElFLCBzbyB3ZSBkb24ndCBpbmNsdWRlIHRoZW0gaW4gdGhlIElFIHZlcnNpb24uXG4gIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRpbmZpeC1tYXJnaW4tdG9wIC0gJGluZml4LXBhZGRpbmcgKyAkbWF0LWZvcm0tZmllbGQtbGVnYWN5LWRlZHVwZSlcbiAgICAgICAgICAgICAgICAgIHNjYWxlKCRmb250LXNjYWxlKTtcblxuICB3aWR0aDogMTAwJSAvICRmb250LXNjYWxlICsgJG1hdC1mb3JtLWZpZWxkLWxlZ2FjeS1kZWR1cGU7XG5cbiAgJG1hdC1mb3JtLWZpZWxkLWxlZ2FjeS1kZWR1cGU6ICRtYXQtZm9ybS1maWVsZC1sZWdhY3ktZGVkdXBlICsgMC4wMDAwMSAhZ2xvYmFsO1xufVxuXG4vLyBTYW1lIGFzIG1peGluIGFib3ZlLCBidXQgb21pdHMgdGhlIHRyYW5zbGF0ZVogZm9yIHByaW50aW5nIHB1cnBvc2VzLlxuQG1peGluIF9tYXQtZm9ybS1maWVsZC1sZWdhY3ktbGFiZWwtZmxvYXRpbmctcHJpbnQoJGZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCkge1xuICAvLyBUaGlzIHJlc3VsdHMgaW4gYSBzbWFsbCBqaXR0ZXIgYWZ0ZXIgdGhlIGxhYmVsIGZsb2F0cyBvbiBGaXJlZm94LCB3aGljaCB0aGVcbiAgLy8gdHJhbnNsYXRlWiBmaXhlcy5cbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJG1hdC1mb3JtLWZpZWxkLWxlZ2FjeS1kZWR1cGUpXG4gICAgICAgICAgICAgICAgICBzY2FsZSgkZm9udC1zY2FsZSk7XG4gIC8vIFRoZSB0cmlja3MgYWJvdmUgdXNlZCB0byBzbW9vdGggb3V0IHRoZSBhbmltYXRpb24gb24gY2hyb21lIGFuZCBmaXJlZm94IGFjdHVhbGx5IG1ha2UgdGhpbmdzXG4gIC8vIHdvcnNlIG9uIElFLCBzbyB3ZSBkb24ndCBpbmNsdWRlIHRoZW0gaW4gdGhlIElFIHZlcnNpb24uXG4gICRtYXQtZm9ybS1maWVsZC1sZWdhY3ktZGVkdXBlOiAkbWF0LWZvcm0tZmllbGQtbGVnYWN5LWRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuQG1peGluIG1hdC1mb3JtLWZpZWxkLWxlZ2FjeS10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLy8gVGhlIHVuaXQtbGVzcyBsaW5lLWhlaWdodCBmcm9tIHRoZSBmb250IGNvbmZpZy5cbiAgJGxpbmUtaGVpZ2h0OiBtYXQtbGluZS1oZWlnaHQoJGNvbmZpZywgaW5wdXQpO1xuICAvLyBUaGUgYW1vdW50IHRvIHNjYWxlIHRoZSBmb250IGZvciB0aGUgZmxvYXRpbmcgbGFiZWwgYW5kIHN1YnNjcmlwdC5cbiAgJHN1YnNjcmlwdC1mb250LXNjYWxlOiAwLjc1O1xuICAvLyBUaGUgYW1vdW50IG9mIHNwYWNlIGJldHdlZW4gdGhlIHRvcCBvZiB0aGUgbGluZSBhbmQgdGhlIHRvcCBvZiB0aGUgYWN0dWFsIHRleHRcbiAgLy8gKGFzIGEgZnJhY3Rpb24gb2YgdGhlIGZvbnQtc2l6ZSkuXG4gICRsaW5lLXNwYWNpbmc6ICgkbGluZS1oZWlnaHQgLSAxKSAvIDI7XG4gIC8vIFRoZSBwYWRkaW5nIG9uIHRoZSBpbmZpeC4gTW9ja3Mgc2hvdyBoYWxmIG9mIHRoZSB0ZXh0IHNpemUsIGJ1dCBzZWVtIHRvIG1lYXN1cmUgZnJvbSB0aGUgZWRnZVxuICAvLyBvZiB0aGUgdGV4dCBpdHNlbGYsIG5vdCB0aGUgZWRnZSBvZiB0aGUgbGluZTsgdGhlcmVmb3JlIHdlIHN1YnRyYWN0IG9mZiB0aGUgbGluZSBzcGFjaW5nLlxuICAkaW5maXgtcGFkZGluZzogMC41ZW0gLSAkbGluZS1zcGFjaW5nO1xuICAvLyBUaGUgbWFyZ2luIGFwcGxpZWQgdG8gdGhlIGZvcm0tZmllbGQtaW5maXggdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIGZsb2F0aW5nIGxhYmVsLlxuICAkaW5maXgtbWFyZ2luLXRvcDogMWVtICogJGxpbmUtaGVpZ2h0ICogJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuICAvLyBUaGUgc3BhY2UgYmV0d2VlbiB0aGUgYm90dG9tIG9mIHRoZSAubWF0LWZvcm0tZmllbGQtZmxleCBhcmVhIGFuZCB0aGUgc3Vic2NyaXB0IHdyYXBwZXIuXG4gIC8vIE1vY2tzIHNob3cgaGFsZiBvZiB0aGUgdGV4dCBzaXplLCBidXQgdGhpcyBtYXJnaW4gaXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHdpdGggdGhlIHN1YnNjcmlwdFxuICAvLyB0ZXh0IGZvbnQgc2l6ZSwgc28gd2UgbmVlZCB0byBkaXZpZGUgYnkgdGhlIHNjYWxlIGZhY3RvciB0byBtYWtlIGl0IGhhbGYgb2YgdGhlIG9yaWdpbmFsIHRleHRcbiAgLy8gc2l6ZS4gV2UgYWdhaW4gbmVlZCB0byBzdWJ0cmFjdCBvZmYgdGhlIGxpbmUgc3BhY2luZyBzaW5jZSB0aGUgbW9ja3MgbWVhc3VyZSB0byB0aGUgZWRnZSBvZiB0aGVcbiAgLy8gdGV4dCwgbm90IHRoZSAgZWRnZSBvZiB0aGUgbGluZS5cbiAgJHN1YnNjcmlwdC1tYXJnaW4tdG9wOiAwLjVlbSAvICRzdWJzY3JpcHQtZm9udC1zY2FsZSAtICgkbGluZS1zcGFjaW5nICogMik7XG4gIC8vIFRoZSBwYWRkaW5nIGFwcGxpZWQgdG8gdGhlIGZvcm0tZmllbGQtd3JhcHBlciB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgc3Vic2NyaXB0LCBzaW5jZSBpdCdzXG4gIC8vIGFic29sdXRlbHkgcG9zaXRpb25lZC4gVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBzdWJzY3JpcHQncyBtYXJnaW4gYW5kIGxpbmUtaGVpZ2h0LCBidXQgd2VcbiAgLy8gbmVlZCB0byBtdWx0aXBseSBieSB0aGUgc3Vic2NyaXB0IGZvbnQgc2NhbGUgZmFjdG9yIHNpbmNlIHRoZSB3cmFwcGVyIGhhcyBhIGxhcmdlciBmb250IHNpemUuXG4gICR3cmFwcGVyLXBhZGRpbmctYm90dG9tOiAoJHN1YnNjcmlwdC1tYXJnaW4tdG9wICsgJGxpbmUtaGVpZ2h0KSAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kge1xuICAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkd3JhcHBlci1wYWRkaW5nLWJvdHRvbTtcbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtaW5maXgge1xuICAgICAgcGFkZGluZzogJGluZml4LXBhZGRpbmcgMDtcbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCB7XG4gICAgICAmLm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsXG4gICAgICAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9tYXQtZm9ybS1maWVsZC1sZWdhY3ktbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgfVxuXG4gICAgICAvLyBAYnJlYWtpbmctY2hhbmdlIDguMC4wIHdpbGwgcmVseSBvbiBBdXRvZmlsbE1vbml0b3IgaW5zdGVhZC5cbiAgICAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgX21hdC1mb3JtLWZpZWxkLWxlZ2FjeS1sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNlcnZlci1zaWRlIHJlbmRlcmVkIG1hdElucHV0IHdpdGggYSBsYWJlbCBhdHRyaWJ1dGUgYnV0IGxhYmVsIG5vdCBzaG93blxuICAgICAgLy8gKHVzZWQgYXMgYSBwdXJlIENTUyBzdGFuZC1pbiBmb3IgbWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0KS5cbiAgICAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyXG4gICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbWF0LWZvcm0tZmllbGQtbGVnYWN5LWxhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgdG9wOiAkaW5maXgtbWFyZ2luLXRvcCArICRpbmZpeC1wYWRkaW5nO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUge1xuICAgICAgLy8gV2Ugd2FudCB0aGUgdW5kZXJsaW5lIHRvIHN0YXJ0IGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgYm94LCBub3QgdGhlIHBhZGRpbmcgYm94LFxuICAgICAgLy8gc28gd2UgbW92ZSBpdCB1cCBieSB0aGUgcGFkZGluZyBhbW91bnQuXG4gICAgICBib3R0b206ICR3cmFwcGVyLXBhZGRpbmctYm90dG9tO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlciB7XG4gICAgICBtYXJnaW4tdG9wOiAkc3Vic2NyaXB0LW1hcmdpbi10b3A7XG5cbiAgICAgIC8vIFdlIHdhbnQgdGhlIHN1YnNjcmlwdCB0byBzdGFydCBhdCB0aGUgZW5kIG9mIHRoZSBjb250ZW50IGJveCwgbm90IHRoZSBwYWRkaW5nIGJveCxcbiAgICAgIC8vIHNvIHdlIG1vdmUgaXQgdXAgYnkgdGhlIHBhZGRpbmcgYW1vdW50IChhZGp1c3RlZCBmb3IgdGhlIHNtYWxsZXIgZm9udCBzaXplKTtcbiAgICAgIHRvcDogY2FsYygxMDAlIC0gI3skd3JhcHBlci1wYWRkaW5nLWJvdHRvbSAvICRzdWJzY3JpcHQtZm9udC1zY2FsZX0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIHRyYW5zbGF0ZVogY2F1c2VzIHRoZSBsYWJlbCB0byBub3QgYXBwZWFyIHdoaWxlIHByaW50aW5nLCBzbyB3ZSBvdmVycmlkZSBpdCB0byBub3RcbiAgLy8gYXBwbHkgdHJhbnNsYXRlWiB3aGlsZSBwcmludGluZ1xuICBAbWVkaWEgcHJpbnQge1xuICAgIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSB7XG4gICAgICAmLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCB7XG4gICAgICAgICYubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbiAgICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICAgIEBpbmNsdWRlIF9tYXQtZm9ybS1maWVsZC1sZWdhY3ktbGFiZWwtZmxvYXRpbmctcHJpbnQoXG4gICAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBAYnJlYWtpbmctY2hhbmdlIDguMC4wIHdpbGwgcmVseSBvbiBBdXRvZmlsbE1vbml0b3IgaW5zdGVhZC5cbiAgICAgICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyXG4gICAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgICAgQGluY2x1ZGUgX21hdC1mb3JtLWZpZWxkLWxlZ2FjeS1sYWJlbC1mbG9hdGluZy1wcmludChcbiAgICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNlcnZlci1zaWRlIHJlbmRlcmVkIG1hdElucHV0IHdpdGggYSBsYWJlbCBhdHRyaWJ1dGUgYnV0IGxhYmVsIG5vdCBzaG93blxuICAgICAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgICAgICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICAgIEBpbmNsdWRlIF9tYXQtZm9ybS1maWVsZC1sZWdhY3ktbGFiZWwtZmxvYXRpbmctcHJpbnQoXG4gICAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5cblxuLy8gVGhlbWUgc3R5bGVzIHRoYXQgb25seSBhcHBseSB0byB0aGUgb3V0bGluZSBhcHBlYXJhbmNlIG9mIHRoZSBmb3JtLWZpZWxkLlxuXG5AbWl4aW4gbWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGVtZSgkdGhlbWUpIHtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAtZ2V0KCR0aGVtZSwgaXMtZGFyayk7XG5cbiAgJGxhYmVsLWRpc2FibGVkLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICAkb3V0bGluZS1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyLCBpZigkaXMtZGFyay10aGVtZSwgMC4zLCAwLjEyKSk7XG4gICRvdXRsaW5lLWNvbG9yLWhvdmVyOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAxLCAwLjg3KSk7XG4gICRvdXRsaW5lLWNvbG9yLXByaW1hcnk6IG1hdC1jb2xvcigkcHJpbWFyeSk7XG4gICRvdXRsaW5lLWNvbG9yLWFjY2VudDogbWF0LWNvbG9yKCRhY2NlbnQpO1xuICAkb3V0bGluZS1jb2xvci13YXJuOiBtYXQtY29sb3IoJHdhcm4pO1xuICAkb3V0bGluZS1jb2xvci1kaXNhYmxlZDogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyLCBpZigkaXMtZGFyay10aGVtZSwgMC4xNSwgMC4wNikpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUge1xuICAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lIHtcbiAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvcjtcbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayB7XG4gICAgICBjb2xvcjogJG91dGxpbmUtY29sb3ItaG92ZXI7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9jdXNlZCB7XG4gICAgICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayB7XG4gICAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvci1wcmltYXJ5O1xuICAgICAgfVxuXG4gICAgICAmLm1hdC1hY2NlbnQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sge1xuICAgICAgICBjb2xvcjogJG91dGxpbmUtY29sb3ItYWNjZW50O1xuICAgICAgfVxuXG4gICAgICAmLm1hdC13YXJuIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIHtcbiAgICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yLXdhcm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2xhc3MgcmVwZWF0ZWQgc28gdGhhdCBydWxlIGlzIHNwZWNpZmljIGVub3VnaCB0byBvdmVycmlkZSBmb2N1c2VkIGFjY2VudCBjb2xvciBjYXNlLlxuICAgICYubWF0LWZvcm0tZmllbGQtaW52YWxpZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIHtcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIHtcbiAgICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yLXdhcm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCB7XG4gICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBjb2xvcjogJGxhYmVsLWRpc2FibGVkLWNvbG9yO1xuICAgICAgfVxuXG4gICAgICAubWF0LWZvcm0tZmllbGQtb3V0bGluZSB7XG4gICAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvci1kaXNhYmxlZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gVXNlZCB0byBtYWtlIGluc3RhbmNlcyBvZiB0aGUgX21hdC1mb3JtLWZpZWxkLWxhYmVsLWZsb2F0aW5nIG1peGluIG5lZ2xpZ2libHkgZGlmZmVyZW50LFxuLy8gYW5kIHByZXZlbnQgR29vZ2xlJ3MgQ1NTIE9wdGltaXplciBmcm9tIGNvbGxhcHNpbmcgdGhlIGRlY2xhcmF0aW9ucy4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb21lXG4vLyBvZiB0aGUgc2VsZWN0b3JzIGNvbnRhaW4gcHNldWRvLWNsYXNzZXMgbm90IHJlY29nbml6ZWQgaW4gYWxsIGJyb3dzZXJzLiBJZiBhIGJyb3dzZXIgZW5jb3VudGVyc1xuLy8gYW4gdW5rbm93biBwc2V1ZG8tY2xhc3MgaXQgd2lsbCBkaXNjYXJkIHRoZSBlbnRpcmUgcnVsZSBzZXQuXG4kbWF0LWZvcm0tZmllbGQtb3V0bGluZS1kZWR1cGU6IDA7XG5cbi8vIEFwcGxpZXMgYSBmbG9hdGluZyBsYWJlbCBhYm92ZSB0aGUgZm9ybSBmaWVsZCBjb250cm9sIGl0c2VsZi5cbkBtaXhpbiBfbWF0LWZvcm0tZmllbGQtb3V0bGluZS1sYWJlbC1mbG9hdGluZygkZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJGluZml4LW1hcmdpbi10b3AgLSAkaW5maXgtcGFkZGluZyArICRtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWRlZHVwZSlcbiAgc2NhbGUoJGZvbnQtc2NhbGUpO1xuICB3aWR0aDogMTAwJSAvICRmb250LXNjYWxlICsgJG1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZGVkdXBlO1xuXG4gICRtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWRlZHVwZTogJG1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZGVkdXBlICsgMC4wMDAwMSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gbWF0LWZvcm0tZmllbGQtb3V0bGluZS10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLy8gVGhlIHVuaXQtbGVzcyBsaW5lLWhlaWdodCBmcm9tIHRoZSBmb250IGNvbmZpZy5cbiAgJGxpbmUtaGVpZ2h0OiBtYXQtbGluZS1oZWlnaHQoJGNvbmZpZywgaW5wdXQpO1xuICAvLyBUaGUgYW1vdW50IHRvIHNjYWxlIHRoZSBmb250IGZvciB0aGUgZmxvYXRpbmcgbGFiZWwgYW5kIHN1YnNjcmlwdC5cbiAgJHN1YnNjcmlwdC1mb250LXNjYWxlOiAwLjc1O1xuICAvLyBUaGUgcGFkZGluZyBhYm92ZSBhbmQgYmVsb3cgdGhlIGluZml4LlxuICAkaW5maXgtcGFkZGluZzogMWVtO1xuICAvLyBUaGUgbWFyZ2luIGFwcGxpZWQgdG8gdGhlIGZvcm0tZmllbGQtaW5maXggdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIGZsb2F0aW5nIGxhYmVsLlxuICAkaW5maXgtbWFyZ2luLXRvcDogMWVtICogJGxpbmUtaGVpZ2h0ICogJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuICAvLyBUaGUgc3BhY2UgYmV0d2VlbiB0aGUgYm90dG9tIG9mIHRoZSAubWF0LWZvcm0tZmllbGQtZmxleCBhcmVhIGFuZCB0aGUgc3Vic2NyaXB0IHdyYXBwZXIuXG4gIC8vIE1vY2tzIHNob3cgaGFsZiBvZiB0aGUgdGV4dCBzaXplLCBidXQgdGhpcyBtYXJnaW4gaXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHdpdGggdGhlIHN1YnNjcmlwdFxuICAvLyB0ZXh0IGZvbnQgc2l6ZSwgc28gd2UgbmVlZCB0byBkaXZpZGUgYnkgdGhlIHNjYWxlIGZhY3RvciB0byBtYWtlIGl0IGhhbGYgb2YgdGhlIG9yaWdpbmFsIHRleHRcbiAgLy8gc2l6ZS5cbiAgJHN1YnNjcmlwdC1tYXJnaW4tdG9wOiAwLjVlbSAvICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIHBhZGRpbmcgYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC13cmFwcGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBzdWJzY3JpcHQsIHNpbmNlIGl0J3NcbiAgLy8gYWJzb2x1dGVseSBwb3NpdGlvbmVkLiBUaGlzIGlzIGEgY29tYmluYXRpb24gb2YgdGhlIHN1YnNjcmlwdCdzIG1hcmdpbiBhbmQgbGluZS1oZWlnaHQsIGJ1dCB3ZVxuICAvLyBuZWVkIHRvIG11bHRpcGx5IGJ5IHRoZSBzdWJzY3JpcHQgZm9udCBzY2FsZSBmYWN0b3Igc2luY2UgdGhlIHdyYXBwZXIgaGFzIGEgbGFyZ2VyIGZvbnQgc2l6ZS5cbiAgJHdyYXBwZXItcGFkZGluZy1ib3R0b206ICgkc3Vic2NyaXB0LW1hcmdpbi10b3AgKyAkbGluZS1oZWlnaHQpICogJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuICAvLyBUaGUgYW1vdW50IHdlIG9mZnNldCB0aGUgbGFiZWwgZnJvbSB0aGUgaW5wdXQgdGV4dCBpbiB0aGUgb3V0bGluZSBhcHBlYXJhbmNlLlxuICAkb3V0bGluZS1hcHBlYXJhbmNlLWxhYmVsLW9mZnNldDogLTAuMjVlbTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIHtcbiAgICAubWF0LWZvcm0tZmllbGQtaW5maXgge1xuICAgICAgcGFkZGluZzogJGluZml4LXBhZGRpbmcgMCAkaW5maXgtcGFkZGluZyAwO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICB0b3A6ICRpbmZpeC1tYXJnaW4tdG9wICsgJGluZml4LXBhZGRpbmc7XG4gICAgICBtYXJnaW4tdG9wOiAkb3V0bGluZS1hcHBlYXJhbmNlLWxhYmVsLW9mZnNldDtcbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCB7XG4gICAgICAmLm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsXG4gICAgICAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWxhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcgKyAkb3V0bGluZS1hcHBlYXJhbmNlLWxhYmVsLW9mZnNldCxcbiAgICAgICAgICAgICAgICAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNlcnZlci1zaWRlIHJlbmRlcmVkIG1hdElucHV0IHdpdGggYSBsYWJlbCBhdHRyaWJ1dGUgYnV0IGxhYmVsIG5vdCBzaG93blxuICAgICAgLy8gKHVzZWQgYXMgYSBwdXJlIENTUyBzdGFuZC1pbiBmb3IgbWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0KS5cbiAgICAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyXG4gICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbWF0LWZvcm0tZmllbGQtb3V0bGluZS1sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nICsgJG91dGxpbmUtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQsXG4gICAgICAgICAgICAgICAgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cblxuXG4vLyBUaGVtZSBzdHlsZXMgdGhhdCBvbmx5IGFwcGx5IHRvIHRoZSBzdGFuZGFyZCBhcHBlYXJhbmNlIG9mIHRoZSBmb3JtLWZpZWxkLlxuXG5AbWl4aW4gbWF0LWZvcm0tZmllbGQtc3RhbmRhcmQtdGhlbWUoJHRoZW1lKSB7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAtZ2V0KCR0aGVtZSwgaXMtZGFyayk7XG5cbiAgJHVuZGVybGluZS1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyLCBpZigkaXMtZGFyay10aGVtZSwgMC43LCAwLjQyKSk7XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1jb2xvcjtcbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUge1xuICAgICAgQGluY2x1ZGUgbWF0LWNvbnRyb2wtZGlzYWJsZWQtdW5kZXJsaW5lKCR1bmRlcmxpbmUtY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LWZvcm0tZmllbGQtc3RhbmRhcmQtdHlwb2dyYXBoeSgkY29uZmlnKSB7fVxuXG5cbi8vIFRoZW1lIHN0eWxlcyB0aGF0IGFwcGx5IHRvIGFsbCBhcHBlYXJhbmNlcyBvZiB0aGUgZm9ybS1maWVsZC5cbkBtaXhpbiBtYXQtZm9ybS1maWVsZC10aGVtZSgkdGhlbWUpIHtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAtZ2V0KCR0aGVtZSwgaXMtZGFyayk7XG5cbiAgLy8gTGFiZWwgY29sb3JzLiBSZXF1aXJlZCBpcyB1c2VkIGZvciB0aGUgYCpgIHN0YXIgc2hvd24gaW4gdGhlIGxhYmVsLlxuICAkbGFiZWwtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjcsIDAuNikpO1xuICAkZm9jdXNlZC1sYWJlbC1jb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5KTtcbiAgJHJlcXVpcmVkLWxhYmVsLWNvbG9yOiBtYXQtY29sb3IoJGFjY2VudCk7XG5cbiAgLy8gVW5kZXJsaW5lIGNvbG9ycy5cbiAgJHVuZGVybGluZS1jb2xvci1iYXNlOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAxLCAwLjg3KSk7XG4gICR1bmRlcmxpbmUtY29sb3ItYWNjZW50OiBtYXQtY29sb3IoJGFjY2VudCk7XG4gICR1bmRlcmxpbmUtY29sb3Itd2FybjogbWF0LWNvbG9yKCR3YXJuKTtcbiAgJHVuZGVybGluZS1mb2N1c2VkLWNvbG9yOiBtYXQtY29sb3IoJHByaW1hcnkpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgY29sb3I6ICRsYWJlbC1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtaGludCB7XG4gICAgY29sb3I6ICRsYWJlbC1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgIGNvbG9yOiAkZm9jdXNlZC1sYWJlbC1jb2xvcjtcblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci1hY2NlbnQ7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyIHtcbiAgICBjb2xvcjogJHJlcXVpcmVkLWxhYmVsLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1jb2xvci1iYXNlO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIHtcbiAgICAubWF0LWZvcm0tZmllbGQtcmlwcGxlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR1bmRlcmxpbmUtZm9jdXNlZC1jb2xvcjtcblxuICAgICAgJi5tYXQtYWNjZW50IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1jb2xvci1hY2NlbnQ7XG4gICAgICB9XG5cbiAgICAgICYubWF0LXdhcm4ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWQ6bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlciB7XG4gICAgICBjb2xvcjogJHVuZGVybGluZS1mb2N1c2VkLWNvbG9yO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVyIHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLWFjY2VudDtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgICB9XG4gIH1cblxuICAvLyBTdHlsaW5nIGZvciB0aGUgZXJyb3Igc3RhdGUgb2YgdGhlIGZvcm0gZmllbGQuIE5vdGUgdGhhdCB3aGlsZSB0aGUgc2FtZSBjYW4gYmVcbiAgLy8gYWNoaWV2ZWQgd2l0aCB0aGUgbmctKiBjbGFzc2VzLCB3ZSB1c2UgdGhpcyBhcHByb2FjaCBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCB0aGUgc2FtZVxuICAvLyBsb2dpYyBpcyB1c2VkIHRvIHN0eWxlIHRoZSBlcnJvciBzdGF0ZSBhbmQgdG8gc2hvdyB0aGUgZXJyb3IgbWVzc2FnZXMuXG4gIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIHtcbiAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcblxuICAgICAgJi5tYXQtYWNjZW50LFxuICAgICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlciB7XG4gICAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSxcbiAgICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZXJyb3Ige1xuICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG4gIH1cblxuICBAaW5jbHVkZSBtYXQtZm9ybS1maWVsZC1sZWdhY3ktdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWZvcm0tZmllbGQtc3RhbmRhcmQtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWZvcm0tZmllbGQtZmlsbC10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoZW1lKCR0aGVtZSk7XG59XG5cbi8vIFVzZWQgdG8gbWFrZSBpbnN0YW5jZXMgb2YgdGhlIF9tYXQtZm9ybS1maWVsZC1sYWJlbC1mbG9hdGluZyBtaXhpbiBuZWdsaWdpYmx5IGRpZmZlcmVudCxcbi8vIGFuZCBwcmV2ZW50IEdvb2dsZSdzIENTUyBPcHRpbWl6ZXIgZnJvbSBjb2xsYXBzaW5nIHRoZSBkZWNsYXJhdGlvbnMuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZVxuLy8gb2YgdGhlIHNlbGVjdG9ycyBjb250YWluIHBzZXVkby1jbGFzc2VzIG5vdCByZWNvZ25pemVkIGluIGFsbCBicm93c2Vycy4gSWYgYSBicm93c2VyIGVuY291bnRlcnNcbi8vIGFuIHVua25vd24gcHNldWRvLWNsYXNzIGl0IHdpbGwgZGlzY2FyZCB0aGUgZW50aXJlIHJ1bGUgc2V0LlxuJG1hdC1mb3JtLWZpZWxkLWRlZHVwZTogMDtcblxuLy8gQXBwbGllcyBhIGZsb2F0aW5nIGxhYmVsIGFib3ZlIHRoZSBmb3JtIGZpZWxkIGNvbnRyb2wgaXRzZWxmLlxuQG1peGluIF9tYXQtZm9ybS1maWVsZC1sYWJlbC1mbG9hdGluZygkZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJGluZml4LW1hcmdpbi10b3AgLSAkaW5maXgtcGFkZGluZyArICRtYXQtZm9ybS1maWVsZC1kZWR1cGUpXG4gICAgICAgICAgICAgc2NhbGUoJGZvbnQtc2NhbGUpO1xuICB3aWR0aDogMTAwJSAvICRmb250LXNjYWxlICsgJG1hdC1mb3JtLWZpZWxkLWRlZHVwZTtcblxuICAkbWF0LWZvcm0tZmllbGQtZGVkdXBlOiAkbWF0LWZvcm0tZmllbGQtZGVkdXBlICsgMC4wMDAwMSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gbWF0LWZvcm0tZmllbGQtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC8vIFRoZSB1bml0LWxlc3MgbGluZS1oZWlnaHQgZnJvbSB0aGUgZm9udCBjb25maWcuXG4gICRsaW5lLWhlaWdodDogbWF0LWxpbmUtaGVpZ2h0KCRjb25maWcsIGlucHV0KTtcblxuICAvLyBUaGUgYW1vdW50IHRvIHNjYWxlIHRoZSBmb250IGZvciB0aGUgZmxvYXRpbmcgbGFiZWwgYW5kIHN1YnNjcmlwdC5cbiAgJHN1YnNjcmlwdC1mb250LXNjYWxlOiAwLjc1O1xuICAvLyBUaGUgYW1vdW50IHRvIHNjYWxlIHRoZSBmb250IGZvciB0aGUgcHJlZml4IGFuZCBzdWZmaXggaWNvbnMuXG4gICRwcmVmaXgtc3VmZml4LWljb24tZm9udC1zY2FsZTogMS41O1xuXG4gIC8vIFRoZSBwYWRkaW5nIG9uIHRoZSBpbmZpeC4gTW9ja3Mgc2hvdyBoYWxmIG9mIHRoZSB0ZXh0IHNpemUuXG4gICRpbmZpeC1wYWRkaW5nOiAwLjVlbTtcbiAgLy8gVGhlIG1hcmdpbiBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLWluZml4IHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBmbG9hdGluZyBsYWJlbC5cbiAgJGluZml4LW1hcmdpbi10b3A6IDFlbSAqICRsaW5lLWhlaWdodCAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gRm9udCBzaXplIHRvIHVzZSBmb3IgdGhlIGxhYmVsIGFuZCBzdWJzY3JpcHQgdGV4dC5cbiAgJHN1YnNjcmlwdC1mb250LXNpemU6ICRzdWJzY3JpcHQtZm9udC1zY2FsZSAqIDEwMCU7XG4gIC8vIEZvbnQgc2l6ZSB0byB1c2UgZm9yIHRoZSBmb3IgdGhlIHByZWZpeCBhbmQgc3VmZml4IGljb25zLlxuICAkcHJlZml4LXN1ZmZpeC1pY29uLWZvbnQtc2l6ZTogJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNjYWxlICogMTAwJTtcbiAgLy8gVGhlIHNwYWNlIGJldHdlZW4gdGhlIGJvdHRvbSBvZiB0aGUgLm1hdC1mb3JtLWZpZWxkLWZsZXggYXJlYSBhbmQgdGhlIHN1YnNjcmlwdCB3cmFwcGVyLlxuICAvLyBNb2NrcyBzaG93IGhhbGYgb2YgdGhlIHRleHQgc2l6ZSwgYnV0IHRoaXMgbWFyZ2luIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHRoZSBzdWJzY3JpcHRcbiAgLy8gdGV4dCBmb250IHNpemUsIHNvIHdlIG5lZWQgdG8gZGl2aWRlIGJ5IHRoZSBzY2FsZSBmYWN0b3IgdG8gbWFrZSBpdCBoYWxmIG9mIHRoZSBvcmlnaW5hbCB0ZXh0XG4gIC8vIHNpemUuXG4gICRzdWJzY3JpcHQtbWFyZ2luLXRvcDogMC41ZW0gLyAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBwYWRkaW5nIGFwcGxpZWQgdG8gdGhlIGZvcm0tZmllbGQtd3JhcHBlciB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgc3Vic2NyaXB0LCBzaW5jZSBpdCdzXG4gIC8vIGFic29sdXRlbHkgcG9zaXRpb25lZC4gVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBzdWJzY3JpcHQncyBtYXJnaW4gYW5kIGxpbmUtaGVpZ2h0LCBidXQgd2VcbiAgLy8gbmVlZCB0byBtdWx0aXBseSBieSB0aGUgc3Vic2NyaXB0IGZvbnQgc2NhbGUgZmFjdG9yIHNpbmNlIHRoZSB3cmFwcGVyIGhhcyBhIGxhcmdlciBmb250IHNpemUuXG4gICR3cmFwcGVyLXBhZGRpbmctYm90dG9tOiAoJHN1YnNjcmlwdC1tYXJnaW4tdG9wICsgJGxpbmUtaGVpZ2h0KSAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcblxuICAubWF0LWZvcm0tZmllbGQge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCBpbnB1dCk7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtd3JhcHBlciB7XG4gICAgcGFkZGluZy1ib3R0b206ICR3cmFwcGVyLXBhZGRpbmctYm90dG9tO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCxcbiAgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCB7XG4gICAgLy8gQWxsb3cgaWNvbnMgaW4gYSBwcmVmaXggb3Igc3VmZml4IHRvIGFkYXB0IHRvIHRoZSBjb3JyZWN0IHNpemUuXG4gICAgLm1hdC1pY29uIHtcbiAgICAgIGZvbnQtc2l6ZTogJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNpemU7XG4gICAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICAgIH1cblxuICAgIC8vIEFsbG93IGljb24gYnV0dG9ucyBpbiBhIHByZWZpeCBvciBzdWZmaXggdG8gYWRhcHQgdG8gdGhlIGNvcnJlY3Qgc2l6ZS5cbiAgICAubWF0LWljb24tYnV0dG9uIHtcbiAgICAgIGhlaWdodDogJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNjYWxlICogMWVtO1xuICAgICAgd2lkdGg6ICRwcmVmaXgtc3VmZml4LWljb24tZm9udC1zY2FsZSAqIDFlbTtcblxuICAgICAgLm1hdC1pY29uIHtcbiAgICAgICAgaGVpZ2h0OiAkbGluZS1oZWlnaHQgKiAxZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWluZml4IHtcbiAgICBwYWRkaW5nOiAkaW5maXgtcGFkZGluZyAwO1xuICAgIC8vIFRocm93cyBvZmYgdGhlIGJhc2VsaW5lIGlmIHdlIGRvIGl0IGFzIGEgcmVhbCBtYXJnaW4sIHNvIHdlIGRvIGl0IGFzIGEgYm9yZGVyIGluc3RlYWQuXG4gICAgYm9yZGVyLXRvcDogJGluZml4LW1hcmdpbi10b3Agc29saWQgdHJhbnNwYXJlbnQ7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAmLm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsXG4gICAgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgQGluY2x1ZGUgX21hdC1mb3JtLWZpZWxkLWxhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgfVxuXG4gICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgLy8gKHVzZWQgYXMgYSBwdXJlIENTUyBzdGFuZC1pbiBmb3IgbWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0KS5cbiAgICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgQGluY2x1ZGUgX21hdC1mb3JtLWZpZWxkLWxhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIge1xuICAgIHRvcDogLSRpbmZpeC1tYXJnaW4tdG9wO1xuICAgIHBhZGRpbmctdG9wOiAkaW5maXgtbWFyZ2luLXRvcDtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgdG9wOiAkaW5maXgtbWFyZ2luLXRvcCArICRpbmZpeC1wYWRkaW5nO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgLy8gV2Ugd2FudCB0aGUgdW5kZXJsaW5lIHRvIHN0YXJ0IGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgYm94LCBub3QgdGhlIHBhZGRpbmcgYm94LFxuICAgIC8vIHNvIHdlIG1vdmUgaXQgdXAgYnkgdGhlIHBhZGRpbmcgYW1vdW50LlxuICAgIGJvdHRvbTogJHdyYXBwZXItcGFkZGluZy1ib3R0b207XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXIge1xuICAgIGZvbnQtc2l6ZTogJHN1YnNjcmlwdC1mb250LXNpemU7XG4gICAgbWFyZ2luLXRvcDogJHN1YnNjcmlwdC1tYXJnaW4tdG9wO1xuXG4gICAgLy8gV2Ugd2FudCB0aGUgc3Vic2NyaXB0IHRvIHN0YXJ0IGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgYm94LCBub3QgdGhlIHBhZGRpbmcgYm94LFxuICAgIC8vIHNvIHdlIG1vdmUgaXQgdXAgYnkgdGhlIHBhZGRpbmcgYW1vdW50IChhZGp1c3RlZCBmb3IgdGhlIHNtYWxsZXIgZm9udCBzaXplKTtcbiAgICB0b3A6IGNhbGMoMTAwJSAtICN7JHdyYXBwZXItcGFkZGluZy1ib3R0b20gLyAkc3Vic2NyaXB0LWZvbnQtc2NhbGV9KTtcbiAgfVxuXG4gIEBpbmNsdWRlIG1hdC1mb3JtLWZpZWxkLWxlZ2FjeS10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtZm9ybS1maWVsZC1zdGFuZGFyZC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtZm9ybS1maWVsZC1maWxsLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdHlwb2dyYXBoeSgkY29uZmlnKTtcbn1cblxuXG5cblxuXG5AbWl4aW4gbWF0LXRyZWUtdGhlbWUoJHRoZW1lKSB7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC10cmVlIHtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsICdjYXJkJyk7XG4gIH1cblxuICAubWF0LXRyZWUtbm9kZSxcbiAgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXRyZWUtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtdHJlZSB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtdHJlZS1ub2RlLFxuICAubWF0LW5lc3RlZC10cmVlLW5vZGUge1xuICAgIGZvbnQtd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0xKTtcbiAgICBmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5cblxuLy8gSW5jbHVkZXMgYWxsIG9mIHRoZSB0eXBvZ3JhcGhpYyBzdHlsZXMuXG5AbWl4aW4gYW5ndWxhci1tYXRlcmlhbC10eXBvZ3JhcGh5KCRjb25maWc6IG51bGwpIHtcbiAgQGlmICRjb25maWcgPT0gbnVsbCB7XG4gICAgJGNvbmZpZzogbWF0LXR5cG9ncmFwaHktY29uZmlnKCk7XG4gIH1cblxuICBAaW5jbHVkZSBtYXQtYmFkZ2UtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWJhc2UtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWF1dG9jb21wbGV0ZS10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtYm90dG9tLXNoZWV0LXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1idXR0b24tdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWJ1dHRvbi10b2dnbGUtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWNhcmQtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWNoZWNrYm94LXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1jaGlwcy10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtdGFibGUtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWRhdGVwaWNrZXItdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWRpYWxvZy10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtZXhwYW5zaW9uLXBhbmVsLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1mb3JtLWZpZWxkLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1ncmlkLWxpc3QtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWljb24tdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWlucHV0LXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1tZW51LXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wYWdpbmF0b3ItdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXByb2dyZXNzLWJhci10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcmFkaW8tdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXNlbGVjdC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtc2lkZW5hdi10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtc2xpZGUtdG9nZ2xlLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1zbGlkZXItdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXN0ZXBwZXItdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXNvcnQtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXRhYnMtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXRvb2xiYXItdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXRvb2x0aXAtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWxpc3QtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LW9wdGlvbi10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtb3B0Z3JvdXAtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXNuYWNrLWJhci10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtdHJlZS10eXBvZ3JhcGh5KCRjb25maWcpO1xufVxuXG5cbi8vIE1peGluIHRoYXQgcmVuZGVycyBhbGwgb2YgdGhlIGNvcmUgc3R5bGVzIHRoYXQgYXJlIG5vdCB0aGVtZS1kZXBlbmRlbnQuXG5AbWl4aW4gbWF0LWNvcmUoJHR5cG9ncmFwaHktY29uZmlnOiBudWxsKSB7XG4gIEBpbmNsdWRlIGFuZ3VsYXItbWF0ZXJpYWwtdHlwb2dyYXBoeSgkdHlwb2dyYXBoeS1jb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcmlwcGxlKCk7XG4gIEBpbmNsdWRlIGNkay1hMTF5KCk7XG4gIEBpbmNsdWRlIGNkay1vdmVybGF5KCk7XG4gIEBpbmNsdWRlIGNkay10ZXh0LWZpZWxkKCk7XG59XG5cbi8vIE1peGluIHRoYXQgcmVuZGVycyBhbGwgb2YgdGhlIGNvcmUgc3R5bGVzIHRoYXQgZGVwZW5kIG9uIHRoZSB0aGVtZS5cbkBtaXhpbiBtYXQtY29yZS10aGVtZSgkdGhlbWUpIHtcbiAgQGluY2x1ZGUgbWF0LXJpcHBsZS10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtb3B0aW9uLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1vcHRncm91cC10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtcHNldWRvLWNoZWNrYm94LXRoZW1lKCR0aGVtZSk7XG5cbiAgLy8gUHJvdmlkZXMgZXh0ZXJuYWwgQ1NTIGNsYXNzZXMgZm9yIGVhY2ggZWxldmF0aW9uIHZhbHVlLiBFYWNoIENTUyBjbGFzcyBpcyBmb3JtYXR0ZWQgYXNcbiAgLy8gYG1hdC1lbGV2YXRpb24teiR6VmFsdWVgIHdoZXJlIGAkelZhbHVlYCBjb3JyZXNwb25kcyB0byB0aGUgei1zcGFjZSB0byB3aGljaCB0aGUgZWxlbWVudCBpc1xuICAvLyBlbGV2YXRlZC5cbiAgQGZvciAkelZhbHVlIGZyb20gMCB0aHJvdWdoIDI0IHtcbiAgICAuI3skX21hdC1lbGV2YXRpb24tcHJlZml4fSN7JHpWYWx1ZX0ge1xuICAgICAgQGluY2x1ZGUgX21hdC10aGVtZS1lbGV2YXRpb24oJHpWYWx1ZSwgJHRoZW1lKTtcbiAgICB9XG4gIH1cblxuICAvLyBXcmFwcGVyIGVsZW1lbnQgdGhhdCBwcm92aWRlcyB0aGUgdGhlbWUgYmFja2dyb3VuZCB3aGVuIHRoZSB1c2VyJ3MgY29udGVudCBpc24ndFxuICAvLyBpbnNpZGUgb2YgYSBgbWF0LXNpZGVuYXYtY29udGFpbmVyYC4gTm90ZSB0aGF0IHdlIG5lZWQgdG8gZXhjbHVkZSB0aGUgYW1wZXJzYW5kXG4gIC8vIHNlbGVjdG9yIGluIGNhc2UgdGhlIG1peGluIGlzIGluY2x1ZGVkIGF0IHRoZSB0b3AgbGV2ZWwuXG4gIC5tYXQtYXBwLWJhY2tncm91bmQje2lmKCYsICcsICYubWF0LWFwcC1iYWNrZ3JvdW5kJywgJycpfSB7XG4gICAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kKTtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgfVxuXG4gIC8vIE1hcmtlciB0aGF0IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHVzZXIgaGFzIGFkZGVkIGEgdGhlbWUgdG8gdGhlaXIgcGFnZS5cbiAgQGF0LXJvb3Qge1xuICAgIC5tYXQtdGhlbWUtbG9hZGVkLW1hcmtlciB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5AbWl4aW4gbWF0LWRpdmlkZXItdGhlbWUoJHRoZW1lKSB7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1kaXZpZGVyIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG5cbiAgLm1hdC1kaXZpZGVyLXZlcnRpY2FsIHtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cbn1cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLy8gQ3JlYXRlIGEgdGhlbWUuXG5AbWl4aW4gYW5ndWxhci1tYXRlcmlhbC10aGVtZSgkdGhlbWUpIHtcbiAgQGluY2x1ZGUgbWF0LWNvcmUtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWF1dG9jb21wbGV0ZS10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtYmFkZ2UtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWJvdHRvbS1zaGVldC10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtYnV0dG9uLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1idXR0b24tdG9nZ2xlLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1jYXJkLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1jaGVja2JveC10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtY2hpcHMtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LXRhYmxlLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1kYXRlcGlja2VyLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1kaWFsb2ctdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWRpdmlkZXItdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWV4cGFuc2lvbi1wYW5lbC10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtZm9ybS1maWVsZC10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtZ3JpZC1saXN0LXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1pY29uLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1pbnB1dC10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtbGlzdC10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtbWVudS10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtcGFnaW5hdG9yLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1wcm9ncmVzcy1iYXItdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LXByb2dyZXNzLXNwaW5uZXItdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LXJhZGlvLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1zZWxlY3QtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LXNpZGVuYXYtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LXNsaWRlLXRvZ2dsZS10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtc2xpZGVyLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1zdGVwcGVyLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1zb3J0LXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC10YWJzLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC10b29sYmFyLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC10b29sdGlwLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC10cmVlLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1zbmFjay1iYXItdGhlbWUoJHRoZW1lKTtcbn1cbiIsIkBpbXBvcnQgJy4uL3RoZW1lJztcclxuXHJcbjpob3N0IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLm1hdC1saXN0LWl0ZW0ge1xyXG4gIHBhZGRpbmc6IDhweCAwO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgd2lkdGg6IDkwcHg7XHJcbiAgLnJvdXRlSWNvbiB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDQwcHg7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLmRpc3BsYXlJY29uLmFjdGl2ZXtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTMxMmEyOyBcclxufVxyXG5cclxuLmFwcC1tZW51LWxpc3QtaXRlbSBsaS5hY3RpdmUgLmV4cGFuZGVkLW1lbnV7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzBkMWQ0ZTtcclxufVxyXG4uZXhwYW5kZWQtbWVudSAuc2lkZS1tZW51LWl0ZW0uYWN0aXZlOjpiZWZvcmUsLmV4cGFuZGVkLW1lbnUgLnNpZGUtbWVudS1pdGVtOmhvdmVyOjpiZWZvcmV7XHJcbiAgY29udGVudDogJyc7XHJcbiAgY29udGVudDogJyc7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgd2lkdGg6IDE1cHg7XHJcbiAgaGVpZ2h0OiAzcHg7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogNDYlO1xyXG4gIGxlZnQ6IDFweDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWE1NTBkO1xyXG59XHJcbi5leHBhbmRlZC1tZW51IC5leHBhbmRlZC1tZW51e1xyXG4gIHBhZGRpbmc6IDA7XHJcbn1cclxuLmV4cGFuZGVkLW1lbnUgbGkgaSB7XHJcbiAgZm9udC1zaXplOiAyNHB4ICFpbXBvcnRhbnQ7XHJcbiAgaGVpZ2h0OiAzOXB4O1xyXG4gIGNsZWFyOiBib3RoO1xyXG59XHJcbi5hcHAtbWVudS1saXN0LWl0ZW0gLm1hdC1saXN0LWl0ZW0tY29udGVudCB7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcclxufVxyXG4uc2lkZS1tZW51LWl0ZW17XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIG1hcmdpbi10b3A6IC0xMnB4ICFpbXBvcnRhbnQ7XHJcbiAgaGVpZ2h0OiAzNnB4ICFpbXBvcnRhbnQ7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBwYWRkaW5nOiAwO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcbi5zaWRlLW1lbnUtaXRlbSAubWVudU5hbWV7XHJcbiAgbGluZS1oZWlnaHQ6IDE4cHg7XHJcbiAgcGFkZGluZzogMCA0cHghaW1wb3J0YW50O1xyXG4gIGNvbG9yOiAjOTlhM2VmO1xyXG59XHJcbi5zaWRlLW1lbnUtaXRlbSAubWVudU5hbWUubWVudS1wYWRkaW5nNXtcclxuICBwYWRkaW5nOiAwIDhweCFpbXBvcnRhbnQ7XHJcbn1cclxuLnNpZGUtbWVudS1pdGVtIC5tZW51TmFtZS5tZW51LXBhZGRpbmcxMCB7XHJcbiAgcGFkZGluZzogMCAxMHB4ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi50cmlnZ2VyLWljb257XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogMjVweDtcclxuICByaWdodDogMHB4O1xyXG59XHJcblxyXG4uc2lkZS1tZW51LWl0ZW0uYWN0aXZlIC5tZW51TmFtZSwgLnNpZGUtbWVudS1pdGVtIC5tZW51TmFtZTpob3ZlcntcclxuICBjb2xvcjogI2ZmZjtcclxufVxyXG4iXX0= */\"","import { Component, HostBinding, Input, OnInit } from '@angular/core';\r\nimport { NavItem } from '../nav-item';\r\nimport { Router } from '@angular/router';\r\nimport { NavService } from '../nav.service';\r\nimport { menuAnimations } from '@shared/animations/activity-log-animations';\r\nimport { Subscription } from 'rxjs';\r\nimport { AdminDynamicHeaderService } from '@shared/services/admin-dynamic-header.service';\r\nimport { CommonService } from '@shared/services/common.service';\r\n@Component({\r\n selector: 'app-menu-list-item',\r\n templateUrl: './menu-list-item.component.html',\r\n styleUrls: ['./menu-list-item.component.scss'],\r\n animations: [menuAnimations]\r\n})\r\nexport class MenuListItemComponent implements OnInit {\r\n expanded: boolean;\r\n activeMenu: string;\r\n expandedMenu: string;\r\n propertiesSubscription: Subscription;\r\n // private userPermission: Subscription;\r\n menuPermisions: any = [];\r\n tempMenu: any[] = [];\r\n @HostBinding('attr.aria-expanded') ariaExpanded = this.expanded;\r\n @Input() item: NavItem;\r\n @Input() depth: number;\r\n\r\n constructor(\r\n public navService: NavService,\r\n private dynamicHeader: AdminDynamicHeaderService,\r\n public router: Router,\r\n public commonService: CommonService\r\n ) {\r\n if (this.depth === undefined) {\r\n this.depth = 0;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.navService.currentUrl.subscribe((url: string) => {\r\n if (this.item.route && url) {\r\n this.expanded = url.indexOf(`/${this.item.route}`) === 0;\r\n this.ariaExpanded = this.expanded;\r\n }\r\n this.checkItemOpened(url, this.item);\r\n });\r\n this.propertiesSubscription = this.dynamicHeader.properties.subscribe(updatedProperties => {\r\n if (updatedProperties.activeMenu) {\r\n /* to set the active menu (submenu or main menu) in case of reload */\r\n this.activeMenu = updatedProperties.activeMenu;\r\n }\r\n if (updatedProperties.expandedMenu) {\r\n /* to set the expanded menu (main menu) in case of reload ----------- mainly for sub menu inner pages */\r\n this.commonService.expandedMenu = updatedProperties.expandedMenu;\r\n }\r\n });\r\n if (this.item && this.item.children && this.item.children.filter(e => e.menuName === this.activeMenu).length > 0) {\r\n /* to set the expanded menu ------------------ for sub menu*/\r\n this.commonService.expandedMenu = this.item.menuName;\r\n }\r\n }\r\n\r\n checkItemOpened(activeUrl, item) {\r\n /* find the expanded menu when navigating through side menu */\r\n if (item.children && item.children.length && activeUrl) {\r\n if (item.children.filter(e => e.route === activeUrl).length > 0) {\r\n this.expanded = true;\r\n }\r\n }\r\n }\r\n\r\n onItemSelected(item: NavItem) {\r\n /* navigating throgh side menu */\r\n if (this.commonService.expandedMenu == item.parentMenu && !this.depth) {\r\n this.commonService.expandedMenu = '';\r\n } else {\r\n if (item.children && item.children.length) {\r\n this.commonService.expandedMenu = '';\r\n }\r\n if (!item.children || !item.children.length) {\r\n this.router.navigate([item.route]);\r\n if (!this.depth) {\r\n this.commonService.expandedMenu = '';\r\n }\r\n }\r\n if (item.children && item.children.length) {\r\n this.commonService.expandedMenu = item.menuName;\r\n }\r\n }\r\n }\r\n\r\n getActiveMenu(item) {\r\n /* get theactive menu (main menu or side menu) */\r\n if (item.children && item.children.length) {\r\n if (item.children.filter(e => e.menuName === this.activeMenu).length > 0) {\r\n return true;\r\n }\r\n }\r\n if (item) {\r\n if (item.menuName == this.activeMenu) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n onChangeRoute(e: Event) {\r\n e.preventDefault();\r\n }\r\n}\r\n","import {EventEmitter, Injectable} from '@angular/core';\r\nimport {Event, NavigationEnd, Router} from '@angular/router';\r\nimport {BehaviorSubject} from 'rxjs';\r\n\r\n@Injectable()\r\nexport class NavService {\r\n public appDrawer: any;\r\n public currentUrl = new BehaviorSubject(undefined);\r\n\r\n constructor(private router: Router) {\r\n this.router.events.subscribe((event: Event) => {\r\n if (event instanceof NavigationEnd) {\r\n this.currentUrl.next(event.urlAfterRedirects);\r\n }\r\n });\r\n }\r\n\r\n public closeNav() {\r\n //this.appDrawer.close();\r\n }\r\n\r\n public openNav() {\r\n this.appDrawer.open();\r\n }\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvc2hhcmVkL2xheW91dC9hbGVydHMvYWxlcnRzLmNvbXBvbmVudC5jc3MifQ== */\"","module.exports = \"\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Payment Success

    \\r\\n
    \\r\\n
    \\r\\n

    {{data.message}}

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n
    \\r\\n
    \\r\\n

    Do you want to refresh the page? ?

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Discard Changes

    \\r\\n
    \\r\\n
    \\r\\n

    Any changes made will be discarded. Are you sure ?

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Delete Banner AD

    \\r\\n
    \\r\\n
    \\r\\n

    Are you sure you want to delete this banner Ad?

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n Confirm\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Delete FAQ

    \\r\\n
    \\r\\n
    \\r\\n

    Are you sure you want to delete this FAQ?

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Pay Now

    \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n Sorry! This feature has not been implemented yet....!!!\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Equipment BuyOut

    \\r\\n
    \\r\\n
    \\r\\n

    Sorry! This feature has not been implemented yet....!!!

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Sorry! Only 4 Lease Terms options can be selected.

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Sorry! Only 2 Advance Rental options can be selected.

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    Request for Additional Financing

    \\r\\n
    \\r\\n
    \\r\\n

    Are you sure you want to send additional financing request?

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n Confirm\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    There is no payment to request.

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    {{data.selector | titlecase }} Signup Customer

    \\r\\n
    \\r\\n
    \\r\\n

    Are you sure you want to {{data.selector}} this signup customer?

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n Confirm\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"","import { Component, OnInit, Inject, Output, EventEmitter } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';\r\nimport { FaqService } from '@shared/services/faq.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { FaqComponent } from '@app/modules/admin/faq/faq.component';\r\nimport { BannerService } from '@shared/services/banner.service';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { CustomerService } from '@shared/services/customer.service';\r\nimport { SignUPStatus } from '@shared/interfaces/common';\r\n\r\n@Component({\r\n selector: 'app-alerts',\r\n templateUrl: './alerts.component.html',\r\n styleUrls: ['./alerts.component.css']\r\n})\r\nexport class AlertsComponent implements OnInit {\r\n onDiscrad = new EventEmitter();\r\n isFaqDeleted: string;\r\n constructor(\r\n public dialogRef: MatDialogRef,\r\n public faqService: FaqService,\r\n public toastrService: ToastrService,\r\n private BannerService: BannerService,\r\n private customerService: CustomerService,\r\n private spinner: NgxSpinnerService,\r\n // public faqComponent:FaqComponent,\r\n @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n this.faqService.currentDeleteStatus.subscribe(message => this.isFaqDeleted = message);\r\n }\r\n\r\n closeDialog() {\r\n this.dialogRef.close();\r\n }\r\n\r\n discardChanges() {\r\n this.onDiscrad.emit();\r\n this.closeDialog();\r\n }\r\n\r\n deleteBanner(banner) {\r\n this.spinner.show();\r\n this.BannerService.deleteBanner(banner.id).subscribe(result => {\r\n if (result.result.status == \"success\") {\r\n this.dialogRef.close(true);\r\n this.spinner.hide();\r\n this.toastrService.success('Banner deleted successfully!', 'Success!');\r\n\r\n }\r\n else {\r\n this.spinner.hide();\r\n this.dialogRef.close(false);\r\n this.toastrService.error('Banner deletion failed!', 'Error!');\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n deleteFAQ(faq) {\r\n this.spinner.show();\r\n this.closeDialog();\r\n this.faqService.deleteFaq(faq.id).subscribe(result => {\r\n if (result.result.status == \"success\") {\r\n this.spinner.hide();\r\n this.dialogRef.close(true);\r\n this.toastrService.success('FAQ deleted successfully!', 'Success!');\r\n this.faqService.changeDeleteStatus(\"true\");\r\n }\r\n else {\r\n this.spinner.hide();\r\n this.dialogRef.close(false);\r\n this.toastrService.error(\"Could not delete the FAQ, please try deleting it after sometime.\", 'Error!');\r\n }\r\n\r\n });\r\n }\r\n\r\n contractConfirmPay(data?:any) {\r\n this.toastrService.success('Payment successful!', 'Success!');\r\n this.dialogRef.close();\r\n }\r\n\r\n contractConfirmBuy(data?:any){\r\n this.toastrService.error(\"We couldn't process your buyout request. Please try again after sometime.\", 'Error!');\r\n this.dialogRef.close();\r\n }\r\n\r\n financeRequestConfirm(data?:any) {\r\n this.toastrService.success('Request sent successfully..!', 'Success!');\r\n this.dialogRef.close();\r\n }\r\n\r\n updateRequestStatus(element: any, selector: string) {\r\n this.spinner.show();\r\n let requestStatus = selector === 'approve' ? SignUPStatus.Admin_Approved : SignUPStatus.Rejected ;\r\n let params = {\r\n id: element.id,\r\n signUpStatus: requestStatus\r\n }\r\n this.customerService.updateSignupCustomerStatus(params).subscribe(result => {\r\n if (result.result.status == \"success\") {\r\n this.toastrService.success('Status udated successfully!', 'Success!');\r\n } else {\r\n this.toastrService.error(\"Could not update the status, please try again later.\", 'Error!');\r\n }\r\n this.dialogRef.close(true);\r\n this.spinner.hide();\r\n }, error => {\r\n this.spinner.hide();\r\n this.dialogRef.close(true);\r\n if(error.message=='InvalidCustomer'){\r\n this.toastrService.error('Customer Account Number does not exist', \"Error!\");\r\n }\r\n else if(error.message=='DuplicateEmail')\r\n this.toastrService.error(\"It looks like this email is already in use. Please try with another email ID.\", \"Error!\");\r\n else\r\n {\r\n this.toastrService.error('Something went wrong!', 'Error!');\r\n }\r\n \r\n });\r\n\r\n }\r\n\r\n}\r\n","import {\r\n trigger,\r\n animate,\r\n transition,\r\n style,\r\n group,\r\n stagger,\r\n keyframes,\r\n query,\r\n state,\r\n animateChild,\r\n sequence\r\n} from '@angular/animations';\r\n\r\nexport const fadeAnimation = trigger('fadeAnimation', [\r\n // The '* => *' will trigger the animation to change between any two states\r\n // transition('* <=> *', [\r\n // /* order */\r\n // query(':enter, :leave', style({ position: 'fixed', width: '100%', height: '100%' }), { optional: true }),\r\n\r\n // query(':enter', [style({ opacity: 0 })], { optional: true }),\r\n // query(':leave', [style({ opacity: 1 }), animate('0.4s ease-in-out', style({ opacity: 0 }))], { optional: true }),\r\n // query(':enter', [style({ opacity: 0 }), animate('0.4s 0.8s ease-in-out', style({ opacity: 1 }))], { optional: true }),\r\n\r\n // ])\r\n\r\n transition(\r\n '* => *',\r\n group([\r\n query(\r\n ':enter, :leave ',\r\n [\r\n style({\r\n position: 'fixed',\r\n width: '100%',\r\n height: '100%'\r\n })\r\n ],\r\n { optional: true }\r\n ),\r\n\r\n query(':enter', [style({ opacity: 0, visibility: 'hidden', pointerEvents: 'none' })], { optional: true }),\r\n query(\r\n ':leave',\r\n [\r\n style({\r\n opacity: 1,\r\n visibility: 'visible'\r\n }),\r\n animate(\r\n '0.6s cubic-bezier(0.0, 0.0, 0.2, 1)',\r\n style({\r\n opacity: 0,\r\n visibility: 'hidden'\r\n })\r\n )\r\n ],\r\n { optional: true }\r\n ),\r\n query(\r\n ':enter',\r\n [\r\n style({\r\n opacity: 0,\r\n visibility: 'hidden'\r\n }),\r\n animate(\r\n '1.4s 0.6s cubic-bezier(0.0, 0.0, 0.2, 1)',\r\n style({\r\n opacity: 1,\r\n visibility: 'visible'\r\n })\r\n )\r\n ],\r\n { optional: true }\r\n ),\r\n query(':enter', animateChild(), { optional: true }),\r\n query(':leave', animateChild(), { optional: true })\r\n ])\r\n )\r\n\r\n // transition('* => *', [\r\n // query(':enter, :leave', [\r\n // style({\r\n // position: 'absolute',\r\n // top : 0,\r\n // bottom : 0,\r\n // left : 0,\r\n // right : 0\r\n // })\r\n // ], {optional: true}),\r\n // query(':enter', [\r\n // style({\r\n // transform: 'translateY(-100%)',\r\n // opacity : 0\r\n // })\r\n // ], {optional: true}),\r\n // sequence([\r\n // group([\r\n // query(':leave', [\r\n // style({\r\n // transform: 'translateY(0)',\r\n // opacity : 1\r\n // }),\r\n // animate('0.6s cubic-bezier(0.0, 0.0, 0.2, 1)',\r\n // style({\r\n // transform: 'translateY(100%)',\r\n // opacity : 0\r\n // }))\r\n // ], {optional: true}),\r\n // query(':enter', [\r\n // style({transform: 'translateY(-100%)'}),\r\n // animate('0.6s 0.8s cubic-bezier(0.0, 0.0, 0.2, 1)',\r\n // style({\r\n // transform: 'translateY(0%)',\r\n // opacity : 1\r\n // }))\r\n // ], {optional: true})\r\n // ]),\r\n // query(':leave', animateChild(), {optional: true}),\r\n // query(':enter', animateChild(), {optional: true})\r\n // ])\r\n // ])\r\n]);\r\n\r\nexport const fadeAnimationIE = trigger('fadeAnimationIE', [\r\n transition(\r\n '* => *',\r\n group([\r\n query(\r\n ':enter, :leave ',\r\n [\r\n style({\r\n position: 'fixed',\r\n width: '100%',\r\n height: '100%'\r\n })\r\n ],\r\n { optional: true }\r\n ),\r\n\r\n query(':enter', [style({ opacity: 0, visibility: 'hidden', position: 'relative' })], { optional: true }),\r\n query(\r\n ':leave',\r\n [\r\n style({\r\n opacity: 1,\r\n visibility: 'visible'\r\n }),\r\n animate(\r\n '0.6s cubic-bezier(0.0, 0.0, 0.2, 1)',\r\n style({\r\n opacity: 0,\r\n visibility: 'hidden'\r\n })\r\n )\r\n ],\r\n { optional: true }\r\n ),\r\n query(\r\n ':enter',\r\n [\r\n style({\r\n opacity: 0,\r\n visibility: 'hidden'\r\n }),\r\n animate(\r\n '1.4s 0.6s cubic-bezier(0.0, 0.0, 0.2, 1)',\r\n style({\r\n opacity: 1,\r\n visibility: 'visible'\r\n })\r\n )\r\n ],\r\n { optional: true }\r\n ),\r\n query(':enter', animateChild(), { optional: true }),\r\n query(':leave', animateChild(), { optional: true })\r\n ])\r\n )\r\n]);\r\n\r\nexport const enterAnimation = trigger('enterAnimation', [\r\n transition(':enter', [\r\n style({ opacity: 0 }),\r\n animate('.4s', style({ opacity: 1 })),\r\n animate('500ms', style({ transform: 'translateX(0)', opacity: 1 }))\r\n ]),\r\n transition(':leave', [\r\n style({ opacity: 1 }),\r\n animate('0.0s', style({ opacity: 0 })),\r\n animate('0ms', style({ transform: 'translateX(100%)', opacity: 0 }))\r\n ])\r\n]);\r\n\r\nexport const entryleaveAnimation = trigger('entryleaveAnimation', [\r\n transition(':enter', [\r\n style({ opacity: 0 }),\r\n animate('.4s', style({ opacity: 1 })),\r\n animate('500ms', style({ transform: 'translateX(0)', opacity: 1 }))\r\n ]),\r\n transition(':leave', [\r\n style({ opacity: 1 }),\r\n animate('0.4s', style({ opacity: 0 })),\r\n animate('500ms', style({ transform: 'translateX(100%)', opacity: 0 }))\r\n ])\r\n]);\r\n\r\nexport const childAnimation = trigger('childAnimation', [\r\n transition(':enter', [\r\n style({ opacity: 0 }),\r\n animate(\r\n '.6s ease-in',\r\n keyframes([\r\n style({ opacity: 0, transform: 'translateY(-75%)', offset: 0 }),\r\n style({ opacity: 0.5, transform: 'translateY(35px)', offset: 0.3 }),\r\n style({ opacity: 1, transform: 'translateY(0)', offset: 1.0 })\r\n ])\r\n )\r\n ])\r\n]);\r\n\r\nexport const shakeAnimation = trigger('shakeAnimation', [\r\n transition(':enter', [\r\n style({ opacity: 0 }),\r\n animate(\r\n '1.0s ease-in',\r\n keyframes([\r\n style({ opacity: 0, transform: 'translateY(0%)', offset: 0 }),\r\n style({ opacity: 0.5, transform: 'translateY(15px)', offset: 0.3 }),\r\n style({ opacity: 1, transform: 'translateY(0)', offset: 1.0 })\r\n ])\r\n )\r\n ]),\r\n transition(':leave', [\r\n style({ opacity: 1 }),\r\n animate(\r\n '1.0s ease-out',\r\n keyframes([\r\n style({ opacity: 1, transform: 'translateY(15px)', offset: 0 }),\r\n style({ opacity: 0.5, transform: 'translateY(0)', offset: 0.3 }),\r\n style({ opacity: 0, transform: 'translateY(-20%)', offset: 1.0 })\r\n ])\r\n )\r\n ])\r\n]);\r\n\r\nexport const loginAnimation = trigger('loginAnimation', [\r\n transition(':enter', [\r\n style({ opacity: 0 }),\r\n animate(\r\n '0.2s ease-in',\r\n keyframes([\r\n // style({ opacity: 0, transform: 'translateY(-75%)', offset: 0 }),\r\n // style({ opacity: .5, transform: 'translateY(35px)', offset: 0.3 }),\r\n style({ opacity: 1, transform: 'translateY(0)', offset: 1.0 })\r\n ])\r\n )\r\n ])\r\n]);\r\nexport const rowAnimation = trigger('rowAnimation', [\r\n transition(':enter', [\r\n style({ height: '*', opacity: '0', transform: 'translateX(-550px)', 'box-shadow': 'none' }),\r\n sequence([\r\n animate('0.45s ease', style({ height: '*', opacity: '.2', transform: 'translateX(0)', 'box-shadow': 'none' })),\r\n animate('0.45s ease', style({ height: '*', opacity: 1, transform: 'translateX(0)' }))\r\n ])\r\n ]),\r\n transition(':leave', [\r\n style({ height: '*', opacity: '1', transform: 'translateX(0)', 'box-shadow': 'none' }),\r\n sequence([\r\n animate('0.35s ease', style({ height: '*', opacity: '.5', transform: 'translateX(0)', 'box-shadow': 'none' })),\r\n // animate(\"0.45s ease\", style({ height: '*', opacity: 0, transform: 'translateX(550px)' }))\r\n animate('0.45s ease', style({ height: '*', opacity: 0 }))\r\n ])\r\n ])\r\n]);\r\n\r\nexport const columnAnimation = trigger('columnAnimation', [\r\n transition(':enter', [\r\n style({ opacity: 0 }),\r\n animate(\r\n '0.8s ease-in',\r\n keyframes([\r\n // style({ opacity: 0, transform: 'translateY(-75%)', offset: 0 }),\r\n // style({ opacity: .5, transform: 'translateY(35px)', offset: 0.3 }),\r\n style({ opacity: 1, transform: 'translateY(0)', offset: 1.0 })\r\n ])\r\n )\r\n ])\r\n]);\r\n\r\nexport const easeAnimation = trigger('easeAnimation', [\r\n transition(':enter', [\r\n style({ opacity: 0 }),\r\n animate('.5s ease-in', keyframes([style({ opacity: 1, transform: 'translateY(0)', offset: 1.0 })]))\r\n ]),\r\n transition(':leave', [\r\n style({ opacity: 1 }),\r\n animate('.2s ease-out', keyframes([style({ opacity: 0, transform: 'translateY(0)', offset: 1.0 })]))\r\n ])\r\n]);\r\n\r\nexport const logincardAnimation = trigger('logincardAnimation', [\r\n state(\r\n 'login',\r\n style({\r\n transform: 'rotateY(0)'\r\n })\r\n ),\r\n state(\r\n 'forgotPassword',\r\n style({\r\n transform: 'rotateY(180deg)'\r\n })\r\n ),\r\n state(\r\n 'signupCustomer',\r\n style({\r\n transform: 'rotateY(180deg)'\r\n })\r\n ),\r\n transition('login => forgotPassword', animate('500ms ease-out')),\r\n transition('forgotPassword => login', animate('500ms ease-in')),\r\n transition('login => signupCustomer', animate('500ms ease-out')),\r\n transition('signupCustomer => login', animate('500ms ease-in'))\r\n]);\r\n\r\nexport const easeAnimationGrid = trigger('easeAnimationGrid', [\r\n transition(':enter', [\r\n style({ opacity: 0 }),\r\n animate('.6s ease-in', keyframes([style({ opacity: 1, transform: 'translateY(0)', offset: 1.0 })]))\r\n ])\r\n // transition(':leave', [\r\n // style({ opacity: 1 }),\r\n // animate('.0s ease-out', keyframes([\r\n // style({ opacity: 0, transform: 'translateY(0)', offset: 1.0 }),\r\n // ]))\r\n // ])\r\n]);\r\n","module.exports = \".btn-save.btn-round.pull-right:disabled{\\r\\n background: #ccc;\\r\\n cursor: default;\\r\\n pointer-events: none;\\r\\n}\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zaGFyZWQvbGF5b3V0L2NoYW5nZS1wYXNzd29yZC9jaGFuZ2UtcGFzc3dvcmQuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIscUJBQXFCO0NBQ3hCIiwiZmlsZSI6InNyYy9zaGFyZWQvbGF5b3V0L2NoYW5nZS1wYXNzd29yZC9jaGFuZ2UtcGFzc3dvcmQuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5idG4tc2F2ZS5idG4tcm91bmQucHVsbC1yaWdodDpkaXNhYmxlZHtcclxuICAgIGJhY2tncm91bmQ6ICNjY2M7XHJcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XHJcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxufSJdfQ== */\"","module.exports = \"
    \\r\\n
    X
    \\r\\n

    Change Password

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n

    Old password is required

    \\r\\n

    Incorrect Password

    \\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n

    New password is required

    \\r\\n

    New password must have atleast 8 characters

    \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n

    Confirm password is required

    \\r\\n

    \\r\\n New Password and confirm password are not matching\\r\\n

    \\r\\n
    \\r\\n \\r\\n\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n\\r\\n\"","import { Component, OnInit, Input, SimpleChanges, HostListener } from '@angular/core';\r\nimport { FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { PasswordValidation } from '@shared/validators/password-validator';\r\nimport { UserService } from '@shared/services/user.service';\r\nimport { UserPasswordDetails } from '@shared/interfaces/common';\r\nimport { DialogService } from '@shared/services/dialog.service';\r\n\r\n@Component({\r\n selector: 'app-change-password',\r\n templateUrl: './change-password.component.html',\r\n styleUrls: ['./change-password.component.css']\r\n})\r\nexport class ChangePasswordComponent implements OnInit {\r\n\r\n @Input() userId;\r\n\r\n form = new FormGroup({\r\n id: new FormControl(''),\r\n oldPassword: new FormControl('', [Validators.required]),\r\n newPassword: new FormControl('', [Validators.required, Validators.minLength(8)]),\r\n confirmPassword: new FormControl('', [Validators.required])\r\n },\r\n {validators: PasswordValidation.MatchPassword }\r\n );\r\noldPasswordError:boolean=false;\r\n userPassWordDetails={} as UserPasswordDetails\r\n constructor(\r\n public toastrService: ToastrService,\r\n public userService:UserService,\r\n private dialogService: DialogService\r\n ) { }\r\n\r\n ngOnInit() {\r\n \r\n this.userPassWordDetails={} as UserPasswordDetails;\r\n \r\n }\r\n @HostListener('document:keydown.escape', ['$event']) onKeydownHandler(event: KeyboardEvent) {\r\n this.closeSidePanel();\r\n }\r\n get e() {\r\n return this.form.controls;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['userId']) { \r\n this.userPassWordDetails.UserId = changes['userId'].currentValue;\r\n this.e['id'].setValue(this.userPassWordDetails.UserId);\r\n this.form.controls['id'].setValue(this.userId)\r\n }\r\n }\r\n\r\n closeSidePanel() {\r\n if (this.form.dirty) {\r\n this.dialogService.confirm('Confirm', 'You have unsaved changes. Do you want to ignore the changes?').subscribe(res => {\r\n if (res) {\r\n this.clearForm();\r\n }\r\n })\r\n } else {\r\n this.clearForm();\r\n }\r\n }\r\n clearForm() {\r\n $('body').removeClass('show-sidepanel');\r\n $('.side-panel-right-password').removeClass('active');\r\n this.form.reset();\r\n this.form.controls['id'].setValue(this.userId);\r\n }\r\n\r\n\r\n onSubmit() {\r\n this.form.value.id=this.userPassWordDetails.UserId;\r\n this.userPassWordDetails.ConfirmNewPassword=this.form.value.confirmPassword;\r\n this.userPassWordDetails.NewPassword=this.form.value.newPassword;\r\n this.userPassWordDetails.OldPassword=this.form.value.oldPassword;\r\n this.userPassWordDetails.UserId= this.userId;\r\n this.userPassWordDetails.IsAgree=true;\r\n this.userService.changePassword(this.userPassWordDetails).subscribe(result=>\r\n {\r\n if (result.result.status == \"success\") {\r\n if(result.result.data)\r\n {\r\n //this.oldPasswordError=false;\r\n this.form.reset();\r\n this.closeSidePanel();\r\n this.toastrService.success('Password updated successfully.', 'Success!')\r\n }\r\n else\r\n {\r\n this.form.controls.oldPassword.setErrors({'incorrect': true})\r\n //this.oldPasswordError=true;\r\n }\r\n \r\n } \r\n })\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n","module.exports = \".menu-dropdown-icon {\\r\\n float: right !important;\\r\\n}\\r\\naside.user-profile {\\r\\n padding-top: 7px;\\r\\n}\\r\\n.profile-photo {\\r\\n border-radius: 0;\\r\\n width: 40px;\\r\\n height: 40px;\\r\\n overflow: hidden;\\r\\n margin: 0 10px 0 0;\\r\\n}\\r\\n.profile-menu.customer .mat-icon {\\r\\n margin-right: 10px !important;\\r\\n}\\r\\n.customer-admin .profile-photo .profile-image {\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n background-size: cover;\\r\\n}\\r\\n.company-name {\\r\\n float: right;\\r\\n margin-top: 25px;\\r\\n border-left: 0;\\r\\n padding-left: 15px;\\r\\n color: #030891;\\r\\n font-weight: 500;\\r\\n font-size: 15px;\\r\\n margin-right: 15px;\\r\\n}\\r\\n.customer-notification-btn {\\r\\n background-color: #fff;\\r\\n float: right;\\r\\n position: relative;\\r\\n top: 13px;\\r\\n margin-right: 15px !important;\\r\\n border: none;\\r\\n}\\r\\n.notification-img {\\r\\n width: 16px;\\r\\n height: 16px;\\r\\n float: right;\\r\\n position: relative;\\r\\n top: 4px;\\r\\n}\\r\\n.notification-panel {\\r\\n transition: all 0.3s ease-in-out;\\r\\n position: relative;\\r\\n float: right;\\r\\n background-color: #fff;\\r\\n top: 54px;\\r\\n left: 140px;\\r\\n width: 250px;\\r\\n height: auto;\\r\\n border: 1px solid #c5ddef;\\r\\n z-index: 200;\\r\\n box-shadow: 0 0px 10px 4px rgba(0, 0, 0, 0.15);\\r\\n}\\r\\n.notification-panel hr {\\r\\n margin-top: 0px;\\r\\n margin-bottom: 0px;\\r\\n}\\r\\n.notify-list {\\r\\n padding: 20px;\\r\\n}\\r\\n.notification-panel .notify-heading {\\r\\n padding: 10px 15px;\\r\\n}\\r\\n.notification-panel li {\\r\\n word-break: break-all;\\r\\n margin-bottom: 15px;\\r\\n cursor: pointer;\\r\\n}\\r\\n.notification-div-show {\\r\\n display: block;\\r\\n animation: fadein 1s;\\r\\n -moz-animation: fadein 1s; /* Firefox */\\r\\n -webkit-animation: fadein 1s; /* Safari and Chrome */\\r\\n -o-animation: fadein 1s; /* Opera */\\r\\n}\\r\\n.notification-div-hide {\\r\\n display: none;\\r\\n}\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zaGFyZWQvbGF5b3V0L2N1c3RvbWVyLWhlYWRlci9jdXN0b21lci1oZWFkZXIuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLHdCQUF3QjtDQUN6QjtBQUNEO0VBQ0UsaUJBQWlCO0NBQ2xCO0FBQ0Q7RUFDRSxpQkFBaUI7RUFDakIsWUFBWTtFQUNaLGFBQWE7RUFDYixpQkFBaUI7RUFDakIsbUJBQW1CO0NBQ3BCO0FBQ0Q7RUFDRSw4QkFBOEI7Q0FDL0I7QUFFRDtFQUNFLFlBQVk7RUFDWixhQUFhO0VBQ2IsdUJBQXVCO0NBQ3hCO0FBRUQ7RUFDRSxhQUFhO0VBQ2IsaUJBQWlCO0VBQ2pCLGVBQWU7RUFDZixtQkFBbUI7RUFDbkIsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixnQkFBZ0I7RUFDaEIsbUJBQW1CO0NBQ3BCO0FBQ0Q7RUFDRSx1QkFBdUI7RUFDdkIsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixVQUFVO0VBQ1YsOEJBQThCO0VBQzlCLGFBQWE7Q0FDZDtBQUNEO0VBQ0UsWUFBWTtFQUNaLGFBQWE7RUFDYixhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLFNBQVM7Q0FDVjtBQUVEO0VBQ0UsaUNBQWlDO0VBQ2pDLG1CQUFtQjtFQUNuQixhQUFhO0VBQ2IsdUJBQXVCO0VBQ3ZCLFVBQVU7RUFDVixZQUFZO0VBQ1osYUFBYTtFQUNiLGFBQWE7RUFDYiwwQkFBMEI7RUFDMUIsYUFBYTtFQUNiLCtDQUErQztDQUNoRDtBQUNEO0VBQ0UsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtDQUNwQjtBQUNEO0VBQ0UsY0FBYztDQUNmO0FBQ0Q7RUFDRSxtQkFBbUI7Q0FDcEI7QUFDRDtFQUNFLHNCQUFzQjtFQUN0QixvQkFBb0I7RUFDcEIsZ0JBQWdCO0NBQ2pCO0FBQ0Q7RUFDRSxlQUFlO0VBQ2YscUJBQXFCO0VBQ3JCLDBCQUEwQixDQUFDLGFBQWE7RUFDeEMsNkJBQTZCLENBQUMsdUJBQXVCO0VBQ3JELHdCQUF3QixDQUFDLFdBQVc7Q0FDckM7QUFDRDtFQUNFLGNBQWM7Q0FDZiIsImZpbGUiOiJzcmMvc2hhcmVkL2xheW91dC9jdXN0b21lci1oZWFkZXIvY3VzdG9tZXItaGVhZGVyLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIubWVudS1kcm9wZG93bi1pY29uIHtcclxuICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDtcclxufVxyXG5hc2lkZS51c2VyLXByb2ZpbGUge1xyXG4gIHBhZGRpbmctdG9wOiA3cHg7XHJcbn1cclxuLnByb2ZpbGUtcGhvdG8ge1xyXG4gIGJvcmRlci1yYWRpdXM6IDA7XHJcbiAgd2lkdGg6IDQwcHg7XHJcbiAgaGVpZ2h0OiA0MHB4O1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgbWFyZ2luOiAwIDEwcHggMCAwO1xyXG59XHJcbi5wcm9maWxlLW1lbnUuY3VzdG9tZXIgLm1hdC1pY29uIHtcclxuICBtYXJnaW4tcmlnaHQ6IDEwcHggIWltcG9ydGFudDtcclxufVxyXG5cclxuLmN1c3RvbWVyLWFkbWluIC5wcm9maWxlLXBob3RvIC5wcm9maWxlLWltYWdlIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxufVxyXG5cclxuLmNvbXBhbnktbmFtZSB7XHJcbiAgZmxvYXQ6IHJpZ2h0O1xyXG4gIG1hcmdpbi10b3A6IDI1cHg7XHJcbiAgYm9yZGVyLWxlZnQ6IDA7XHJcbiAgcGFkZGluZy1sZWZ0OiAxNXB4O1xyXG4gIGNvbG9yOiAjMDMwODkxO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgZm9udC1zaXplOiAxNXB4O1xyXG4gIG1hcmdpbi1yaWdodDogMTVweDtcclxufVxyXG4uY3VzdG9tZXItbm90aWZpY2F0aW9uLWJ0biB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcclxuICBmbG9hdDogcmlnaHQ7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHRvcDogMTNweDtcclxuICBtYXJnaW4tcmlnaHQ6IDE1cHggIWltcG9ydGFudDtcclxuICBib3JkZXI6IG5vbmU7XHJcbn1cclxuLm5vdGlmaWNhdGlvbi1pbWcge1xyXG4gIHdpZHRoOiAxNnB4O1xyXG4gIGhlaWdodDogMTZweDtcclxuICBmbG9hdDogcmlnaHQ7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHRvcDogNHB4O1xyXG59XHJcblxyXG4ubm90aWZpY2F0aW9uLXBhbmVsIHtcclxuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZmxvYXQ6IHJpZ2h0O1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcbiAgdG9wOiA1NHB4O1xyXG4gIGxlZnQ6IDE0MHB4O1xyXG4gIHdpZHRoOiAyNTBweDtcclxuICBoZWlnaHQ6IGF1dG87XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2M1ZGRlZjtcclxuICB6LWluZGV4OiAyMDA7XHJcbiAgYm94LXNoYWRvdzogMCAwcHggMTBweCA0cHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcclxufVxyXG4ubm90aWZpY2F0aW9uLXBhbmVsIGhyIHtcclxuICBtYXJnaW4tdG9wOiAwcHg7XHJcbiAgbWFyZ2luLWJvdHRvbTogMHB4O1xyXG59XHJcbi5ub3RpZnktbGlzdCB7XHJcbiAgcGFkZGluZzogMjBweDtcclxufVxyXG4ubm90aWZpY2F0aW9uLXBhbmVsIC5ub3RpZnktaGVhZGluZyB7XHJcbiAgcGFkZGluZzogMTBweCAxNXB4O1xyXG59XHJcbi5ub3RpZmljYXRpb24tcGFuZWwgbGkge1xyXG4gIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcclxuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG4ubm90aWZpY2F0aW9uLWRpdi1zaG93IHtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICBhbmltYXRpb246IGZhZGVpbiAxcztcclxuICAtbW96LWFuaW1hdGlvbjogZmFkZWluIDFzOyAvKiBGaXJlZm94ICovXHJcbiAgLXdlYmtpdC1hbmltYXRpb246IGZhZGVpbiAxczsgLyogU2FmYXJpIGFuZCBDaHJvbWUgKi9cclxuICAtby1hbmltYXRpb246IGZhZGVpbiAxczsgLyogT3BlcmEgKi9cclxufVxyXG4ubm90aWZpY2F0aW9uLWRpdi1oaWRlIHtcclxuICBkaXNwbGF5OiBub25lO1xyXG59XHJcbiJdfQ== */\"","module.exports = \"
    \\r\\n \\r\\n
    {{ ellipsVal(customerName, 50) }}
    \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n
    \\r\\n\"","import { Component, OnInit, ViewEncapsulation, ViewChild, ElementRef, Renderer2, AfterViewInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '@shared/services/auth.service';\r\nimport { environment } from 'environments/environment';\r\nimport { AdminDynamicHeaderService } from '@shared/services/admin-dynamic-header.service';\r\nimport { UserService } from '@shared/services/user.service';\r\nimport { headreAnimations, menuAnimations } from '@shared/animations/activity-log-animations';\r\nimport { MatDialog } from '@angular/material';\r\nimport { AlertBoxComponent } from '@shared/common/alertbox/alertbox.component';\r\n\r\n@Component({\r\n selector: 'app-customer-header',\r\n templateUrl: './customer-header.component.html',\r\n styleUrls: ['./customer-header.component.css'],\r\n encapsulation: ViewEncapsulation.None,\r\n animations: [headreAnimations, menuAnimations]\r\n})\r\nexport class CustomerHeaderComponent implements OnInit {\r\n loggedUserName: string;\r\n userName: string;\r\n userImage: string;\r\n customerName: string;\r\n userId: number;\r\n // showNotification: string;\r\n\r\n // @ViewChild('toggleButton') toggleButton: ElementRef;\r\n // @ViewChild('divPanel') divPanel: ElementRef;\r\n\r\n constructor(\r\n public router: Router,\r\n private authService: AuthService,\r\n private userService: UserService,\r\n public dynamicHeader: AdminDynamicHeaderService,\r\n private renderer: Renderer2,\r\n public dialog: MatDialog\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.loggedUserName = localStorage.getItem('userName');\r\n this.userId = parseInt(localStorage.getItem('userId'));\r\n this.userName = localStorage.getItem('userName');\r\n\r\n // this.showNotification = localStorage.getItem('showNotification');\r\n\r\n if (localStorage.getItem('userImageName') == '') {\r\n this.userImage = environment.baseUrl + 'Images/DefaultImages/default-user.jpg';\r\n } else {\r\n this.userImage = environment.baseUrl + 'Images/UserProfile/' + localStorage.getItem('userImageName');\r\n }\r\n\r\n this.dynamicHeader.userProperty.subscribe(UserImage => {\r\n this.loggedUserName = localStorage.getItem('userName');\r\n if (localStorage.getItem('userImageName') == '') {\r\n this.userImage = environment.baseUrl + 'Images/DefaultImages/default-user.jpg';\r\n } else {\r\n this.userImage = environment.baseUrl + 'Images/UserProfile/' + localStorage.getItem('userImageName');\r\n }\r\n });\r\n // this.renderer.listen('window', 'click', (e: Event) => {\r\n // if (e.target !== this.toggleButton.nativeElement && e.target !== this.divPanel.nativeElement) {\r\n // this.showNotification = false;\r\n // }\r\n // });\r\n\r\n this.getProfileDetails();\r\n }\r\n\r\n // ngAfterViewInit() {\r\n // if (this.showNotification == 'true') {\r\n // setTimeout(() =>\r\n // this.dialog.open(AlertBoxComponent, {\r\n // width: '520px',\r\n // height: 'auto',\r\n // data: { AlertType: 'customer-notification-status' }\r\n // })\r\n // );\r\n // this.showNotification = 'false';\r\n // localStorage.removeItem(this.showNotification);\r\n // }\r\n // }\r\n ellipsVal(val, args) {\r\n if (val) {\r\n if (args === undefined) {\r\n return val;\r\n }\r\n\r\n if (val.length > args) {\r\n return val.substring(0, args) + '...';\r\n } else {\r\n return val;\r\n }\r\n }\r\n }\r\n getProfileDetails() {\r\n this.userService.getUser(this.userId).subscribe(data => {\r\n if (data.result.status == 'success') {\r\n this.customerName = data.result.data.customerName;\r\n var imageName = '';\r\n if (data.result.data.document) {\r\n imageName = data.result.data.document.thumbImageFileName ? data.result.data.document.thumbImageFileName : '';\r\n }\r\n localStorage.setItem('userImageName', imageName);\r\n localStorage.setItem('userName', data.result.data.fullName);\r\n if (data.result.data.document) {\r\n localStorage.setItem('S3BucketImagePath', data.result.data.document.url);\r\n }\r\n }\r\n }); \r\n }\r\n\r\n onMenuChange(event) {\r\n switch (event) {\r\n case 'account':\r\n this.router.navigateByUrl('/app/customer/myprofile');\r\n break;\r\n case 'logout':\r\n localStorage.clear();\r\n localStorage.clear();\r\n this.router.navigateByUrl('');\r\n \r\n this.authService.logout().subscribe(\r\n result => {\r\n \r\n },\r\n error => {\r\n console.log('Error while logging out.', error);\r\n }\r\n );\r\n\r\n break;\r\n }\r\n }\r\n // selectNotifications() {\r\n // this.showNotification = !this.showNotification;\r\n // }\r\n goToDetails() {\r\n let ref = this.dialog.open(AlertBoxComponent, {\r\n width: '520px',\r\n height: 'auto',\r\n data: { AlertType: 'paynow-details' }\r\n });\r\n }\r\n}\r\n","module.exports = \".menu-toggle-arrow i,\\r\\n.menu-toggle {\\r\\n cursor: pointer;\\r\\n}\\r\\n.nav-menu.folded {\\r\\n width: 0;\\r\\n}\\r\\nnav {\\r\\n transition: all 0.3s ease;\\r\\n}\\r\\nnav.folded {\\r\\n width: 57px;\\r\\n}\\r\\nnav.folded .icon-customer-menu {\\r\\n color: #fff;\\r\\n transition: all 0.3s ease;\\r\\n}\\r\\n.nav-menu {\\r\\n height: 100%;\\r\\n transition: all 0.3s ease;\\r\\n overflow: hidden;\\r\\n}\\r\\n.nav-menu ul li {\\r\\n /* to remove bug in menu sliding animation */\\r\\n white-space: nowrap;\\r\\n}\\r\\n/* .mat-tooltip {\\r\\n color: #000249 !important;\\r\\n background-color: #fff !important;\\r\\n} */\\r\\n.nav-icons ul li .info-label {\\r\\n display: none;\\r\\n width: 0;\\r\\n position: absolute;\\r\\n left: 100%;\\r\\n background: #fff;\\r\\n padding: 0 10px;\\r\\n color: #000;\\r\\n height: 40px;\\r\\n line-height: 40px;\\r\\n top: 10px;\\r\\n width: auto;\\r\\n white-space: nowrap;\\r\\n box-shadow: 3px 0px 15px 0px rgba(0, 0, 0, 0.75);\\r\\n border: 1px solid #dadada;\\r\\n}\\r\\nnav.folded .nav-icons ul li:hover .info-label {\\r\\n display: block;\\r\\n}\\r\\n.nav-menu ul li a {\\r\\n color: #000249 !important;\\r\\n}\\r\\n/* **** user profile css **** */\\r\\n.customer-admin aside.user-profile {\\r\\n max-width: 100%;\\r\\n padding-top: 0px;\\r\\n display: block;\\r\\n min-width: 100%;\\r\\n cursor: pointer;\\r\\n margin-right: 0;\\r\\n float: none;\\r\\n}\\r\\n.menu-dropdown-icon {\\r\\n float: right !important;\\r\\n}\\r\\n.customer-admin .profile-photo {\\r\\n width: 60px;\\r\\n height: 60px;\\r\\n overflow: hidden;\\r\\n margin: 0 auto;\\r\\n display: block;\\r\\n border-radius: 50px;\\r\\n}\\r\\n.profile-menu.customer .mat-icon {\\r\\n margin-right: 10px !important;\\r\\n}\\r\\n.customer-admin .profile-photo .profile-image {\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n background-size: cover;\\r\\n}\\r\\n.customer-admin .profile-name {\\r\\n color: #3e3e3e;\\r\\n font-size: 16px;\\r\\n font-weight: 700;\\r\\n float: none;\\r\\n line-height: 22px;\\r\\n clear: both;\\r\\n width: 88%;\\r\\n text-align: center;\\r\\n overflow: hidden;\\r\\n height: 21px;\\r\\n text-overflow: ellipsis;\\r\\n white-space: nowrap;\\r\\n margin: 0 auto;\\r\\n display: block;\\r\\n margin-bottom: 7px;\\r\\n margin-top: 3px;\\r\\n}\\r\\n.log-out-btn {\\r\\n color: #88a5cb;\\r\\n font-size: 17px;\\r\\n font-weight: 600;\\r\\n float: none;\\r\\n line-height: 0px;\\r\\n width: 100%;\\r\\n text-align: center;\\r\\n}\\r\\n.log-out-btn:hover {\\r\\n color: #0c0f87;\\r\\n}\\r\\n.customer-admin .customer-profile-icon {\\r\\n visibility: hidden !important;\\r\\n opacity: 0;\\r\\n padding: 10px;\\r\\n text-align: center;\\r\\n margin-top: 60px;\\r\\n height: 48px;\\r\\n transition: all 0.3s ease;\\r\\n}\\r\\n.customer-admin .folded .customer-profile-icon {\\r\\n padding: 10px;\\r\\n height: 48px;\\r\\n visibility: visible !important;\\r\\n opacity: 1;\\r\\n margin: 8px 0;\\r\\n margin-top: 0px !important;\\r\\n cursor: pointer;\\r\\n transition: all 0.3s ease;\\r\\n}\\r\\n.customer-profile-icon .icon-necprofile {\\r\\n font-size: 23px;\\r\\n font-size: 23px;\\r\\n position: relative;\\r\\n top: 2px;\\r\\n}\\r\\n.customer-profile-icon .icon-necprofile:hover {\\r\\n color: #fff;\\r\\n}\\r\\n.customer-profile-icon.active {\\r\\n color: #fff;\\r\\n background-color: #164376;\\r\\n}\\r\\n.disable-customer-menu {\\r\\n pointer-events: none;\\r\\n}\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zaGFyZWQvbGF5b3V0L2N1c3RvbWVyLW1lbnUvY3VzdG9tZXItbWVudS5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztFQUVFLGdCQUFnQjtDQUNqQjtBQUNEO0VBQ0UsU0FBUztDQUNWO0FBQ0Q7RUFDRSwwQkFBMEI7Q0FDM0I7QUFDRDtFQUNFLFlBQVk7Q0FDYjtBQUNEO0VBQ0UsWUFBWTtFQUNaLDBCQUEwQjtDQUMzQjtBQUNEO0VBQ0UsYUFBYTtFQUNiLDBCQUEwQjtFQUMxQixpQkFBaUI7Q0FDbEI7QUFDRDtFQUNFLGdEQUFnRDtFQUNoRCxvQkFBb0I7Q0FDckI7QUFDRDs7O0lBR0k7QUFDSjtFQUNFLGNBQWM7RUFDZCxTQUFTO0VBQ1QsbUJBQW1CO0VBQ25CLFdBQVc7RUFDWCxpQkFBaUI7RUFDakIsZ0JBQWdCO0VBQ2hCLFlBQVk7RUFDWixhQUFhO0VBQ2Isa0JBQWtCO0VBQ2xCLFVBQVU7RUFDVixZQUFZO0VBQ1osb0JBQW9CO0VBR3BCLGlEQUFpRDtFQUNqRCwwQkFBMEI7Q0FDM0I7QUFDRDtFQUNFLGVBQWU7Q0FDaEI7QUFFRDtFQUNFLDBCQUEwQjtDQUMzQjtBQUVELGdDQUFnQztBQUVoQztFQUNFLGdCQUFnQjtFQUNoQixpQkFBaUI7RUFDakIsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQixnQkFBZ0I7RUFDaEIsZ0JBQWdCO0VBQ2hCLFlBQVk7Q0FDYjtBQUNEO0VBQ0Usd0JBQXdCO0NBQ3pCO0FBQ0Q7RUFDRSxZQUFZO0VBQ1osYUFBYTtFQUNiLGlCQUFpQjtFQUNqQixlQUFlO0VBQ2YsZUFBZTtFQUNmLG9CQUFvQjtDQUNyQjtBQUNEO0VBQ0UsOEJBQThCO0NBQy9CO0FBRUQ7RUFDRSxZQUFZO0VBQ1osYUFBYTtFQUNiLHVCQUF1QjtDQUN4QjtBQUNEO0VBQ0UsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQixpQkFBaUI7RUFDakIsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1osV0FBVztFQUNYLG1CQUFtQjtFQUNuQixpQkFBaUI7RUFDakIsYUFBYTtFQUNiLHdCQUF3QjtFQUN4QixvQkFBb0I7RUFDcEIsZUFBZTtFQUNmLGVBQWU7RUFDZixtQkFBbUI7RUFDbkIsZ0JBQWdCO0NBQ2pCO0FBRUQ7RUFDRSxlQUFlO0VBQ2YsZ0JBQWdCO0VBQ2hCLGlCQUFpQjtFQUNqQixZQUFZO0VBQ1osaUJBQWlCO0VBQ2pCLFlBQVk7RUFDWixtQkFBbUI7Q0FDcEI7QUFDRDtFQUNFLGVBQWU7Q0FDaEI7QUFDRDtFQUNFLDhCQUE4QjtFQUM5QixXQUFXO0VBQ1gsY0FBYztFQUNkLG1CQUFtQjtFQUNuQixpQkFBaUI7RUFDakIsYUFBYTtFQUNiLDBCQUEwQjtDQUMzQjtBQUNEO0VBQ0UsY0FBYztFQUNkLGFBQWE7RUFDYiwrQkFBK0I7RUFDL0IsV0FBVztFQUNYLGNBQWM7RUFDZCwyQkFBMkI7RUFDM0IsZ0JBQWdCO0VBQ2hCLDBCQUEwQjtDQUMzQjtBQUNEO0VBQ0UsZ0JBQWdCO0VBQ2hCLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIsU0FBUztDQUNWO0FBQ0Q7RUFDRSxZQUFZO0NBQ2I7QUFFRDtFQUNFLFlBQVk7RUFDWiwwQkFBMEI7Q0FDM0I7QUFDRDtFQUNFLHFCQUFxQjtDQUN0QiIsImZpbGUiOiJzcmMvc2hhcmVkL2xheW91dC9jdXN0b21lci1tZW51L2N1c3RvbWVyLW1lbnUuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5tZW51LXRvZ2dsZS1hcnJvdyBpLFxyXG4ubWVudS10b2dnbGUge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG4ubmF2LW1lbnUuZm9sZGVkIHtcclxuICB3aWR0aDogMDtcclxufVxyXG5uYXYge1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XHJcbn1cclxubmF2LmZvbGRlZCB7XHJcbiAgd2lkdGg6IDU3cHg7XHJcbn1cclxubmF2LmZvbGRlZCAuaWNvbi1jdXN0b21lci1tZW51IHtcclxuICBjb2xvcjogI2ZmZjtcclxuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xyXG59XHJcbi5uYXYtbWVudSB7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG4ubmF2LW1lbnUgdWwgbGkge1xyXG4gIC8qICAgIHRvIHJlbW92ZSBidWcgaW4gbWVudSBzbGlkaW5nIGFuaW1hdGlvbiAqL1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbn1cclxuLyogLm1hdC10b29sdGlwIHtcclxuICAgIGNvbG9yOiAjMDAwMjQ5ICFpbXBvcnRhbnQ7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XHJcbn0gKi9cclxuLm5hdi1pY29ucyB1bCBsaSAuaW5mby1sYWJlbCB7XHJcbiAgZGlzcGxheTogbm9uZTtcclxuICB3aWR0aDogMDtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgbGVmdDogMTAwJTtcclxuICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gIHBhZGRpbmc6IDAgMTBweDtcclxuICBjb2xvcjogIzAwMDtcclxuICBoZWlnaHQ6IDQwcHg7XHJcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XHJcbiAgdG9wOiAxMHB4O1xyXG4gIHdpZHRoOiBhdXRvO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAzcHggMHB4IDE1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC43NSk7XHJcbiAgLW1vei1ib3gtc2hhZG93OiAzcHggMHB4IDE1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC43NSk7XHJcbiAgYm94LXNoYWRvdzogM3B4IDBweCAxNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuNzUpO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkYWRhZGE7XHJcbn1cclxubmF2LmZvbGRlZCAubmF2LWljb25zIHVsIGxpOmhvdmVyIC5pbmZvLWxhYmVsIHtcclxuICBkaXNwbGF5OiBibG9jaztcclxufVxyXG5cclxuLm5hdi1tZW51IHVsIGxpIGEge1xyXG4gIGNvbG9yOiAjMDAwMjQ5ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qICoqKiogdXNlciBwcm9maWxlIGNzcyAqKioqICovXHJcblxyXG4uY3VzdG9tZXItYWRtaW4gYXNpZGUudXNlci1wcm9maWxlIHtcclxuICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgcGFkZGluZy10b3A6IDBweDtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICBtaW4td2lkdGg6IDEwMCU7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIG1hcmdpbi1yaWdodDogMDtcclxuICBmbG9hdDogbm9uZTtcclxufVxyXG4ubWVudS1kcm9wZG93bi1pY29uIHtcclxuICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDtcclxufVxyXG4uY3VzdG9tZXItYWRtaW4gLnByb2ZpbGUtcGhvdG8ge1xyXG4gIHdpZHRoOiA2MHB4O1xyXG4gIGhlaWdodDogNjBweDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIG1hcmdpbjogMCBhdXRvO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwcHg7XHJcbn1cclxuLnByb2ZpbGUtbWVudS5jdXN0b21lciAubWF0LWljb24ge1xyXG4gIG1hcmdpbi1yaWdodDogMTBweCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uY3VzdG9tZXItYWRtaW4gLnByb2ZpbGUtcGhvdG8gLnByb2ZpbGUtaW1hZ2Uge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG59XHJcbi5jdXN0b21lci1hZG1pbiAucHJvZmlsZS1uYW1lIHtcclxuICBjb2xvcjogIzNlM2UzZTtcclxuICBmb250LXNpemU6IDE2cHg7XHJcbiAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICBmbG9hdDogbm9uZTtcclxuICBsaW5lLWhlaWdodDogMjJweDtcclxuICBjbGVhcjogYm90aDtcclxuICB3aWR0aDogODglO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIGhlaWdodDogMjFweDtcclxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gIG1hcmdpbjogMCBhdXRvO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIG1hcmdpbi1ib3R0b206IDdweDtcclxuICBtYXJnaW4tdG9wOiAzcHg7XHJcbn1cclxuXHJcbi5sb2ctb3V0LWJ0biB7XHJcbiAgY29sb3I6ICM4OGE1Y2I7XHJcbiAgZm9udC1zaXplOiAxN3B4O1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZmxvYXQ6IG5vbmU7XHJcbiAgbGluZS1oZWlnaHQ6IDBweDtcclxuICB3aWR0aDogMTAwJTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbn1cclxuLmxvZy1vdXQtYnRuOmhvdmVyIHtcclxuICBjb2xvcjogIzBjMGY4NztcclxufVxyXG4uY3VzdG9tZXItYWRtaW4gLmN1c3RvbWVyLXByb2ZpbGUtaWNvbiB7XHJcbiAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7XHJcbiAgb3BhY2l0eTogMDtcclxuICBwYWRkaW5nOiAxMHB4O1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBtYXJnaW4tdG9wOiA2MHB4O1xyXG4gIGhlaWdodDogNDhweDtcclxuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xyXG59XHJcbi5jdXN0b21lci1hZG1pbiAuZm9sZGVkIC5jdXN0b21lci1wcm9maWxlLWljb24ge1xyXG4gIHBhZGRpbmc6IDEwcHg7XHJcbiAgaGVpZ2h0OiA0OHB4O1xyXG4gIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcclxuICBvcGFjaXR5OiAxO1xyXG4gIG1hcmdpbjogOHB4IDA7XHJcbiAgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XHJcbn1cclxuLmN1c3RvbWVyLXByb2ZpbGUtaWNvbiAuaWNvbi1uZWNwcm9maWxlIHtcclxuICBmb250LXNpemU6IDIzcHg7XHJcbiAgZm9udC1zaXplOiAyM3B4O1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB0b3A6IDJweDtcclxufVxyXG4uY3VzdG9tZXItcHJvZmlsZS1pY29uIC5pY29uLW5lY3Byb2ZpbGU6aG92ZXIge1xyXG4gIGNvbG9yOiAjZmZmO1xyXG59XHJcblxyXG4uY3VzdG9tZXItcHJvZmlsZS1pY29uLmFjdGl2ZSB7XHJcbiAgY29sb3I6ICNmZmY7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE2NDM3NjtcclxufVxyXG4uZGlzYWJsZS1jdXN0b21lci1tZW51IHtcclxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxufVxyXG4iXX0= */\"","module.exports = \"\\r\\n\"","import { Component, OnInit, ViewEncapsulation, HostListener } from '@angular/core';\r\nimport { CustomerCommonService } from '@shared/services/customer-common.service';\r\nimport { MenuItem, CustomerActiveMenu } from '@shared/interfaces/customer-menu';\r\nimport { Router } from '@angular/router';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\nimport { listAnimations, menuAnimations } from '@shared/animations/activity-log-animations';\r\nimport { AuthService } from '@shared/services/auth.service';\r\nimport { AdminDynamicHeaderService } from '@shared/services/admin-dynamic-header.service';\r\nimport { UserService } from '@shared/services/user.service';\r\nimport { environment } from 'environments/environment';\r\n\r\n@Component({\r\n selector: 'app-customer-menu',\r\n templateUrl: './customer-menu.component.html',\r\n styleUrls: ['./customer-menu.component.css'],\r\n encapsulation: ViewEncapsulation.None,\r\n animations: [listAnimations, menuAnimations]\r\n})\r\nexport class CustomerMenuComponent implements OnInit {\r\n private onDestroy$ = new Subject();\r\n foldedMenu: boolean = true;\r\n activeMenu: CustomerActiveMenu;\r\n menuList: MenuItem[];\r\n innerWidth: any;\r\n innerScreenWidth: any;\r\n isSmallScreen: boolean = false;\r\n\r\n loggedUserName: string;\r\n userName: string;\r\n userImage: string;\r\n customerName: string;\r\n userId: number;\r\n isProfilePath: boolean = false;\r\n public url: any;\r\n\r\n constructor(\r\n public customerCommonService: CustomerCommonService,\r\n public router: Router,\r\n public dynamicHeader: AdminDynamicHeaderService,\r\n private userService: UserService,\r\n private authService: AuthService\r\n ) {}\r\n\r\n @HostListener('window:resize', ['$event']) onResize(event) {\r\n this.innerScreenWidth = window.innerWidth;\r\n this.getScreenWidth(this.innerScreenWidth); // on page resize\r\n }\r\n\r\n ngOnInit() {\r\n this.loggedUserName = localStorage.getItem('userName');\r\n this.userId = parseInt(localStorage.getItem('userId'));\r\n this.userName = localStorage.getItem('userName');\r\n if (localStorage.getItem('userImageName') == '') {\r\n this.userImage = environment.baseUrl + 'Images/DefaultImages/default-user.jpg';\r\n } else {\r\n this.userImage = environment.S3StorageService?localStorage.getItem('S3BucketImagePath'): environment.baseUrl + 'Images/UserProfile/' + localStorage.getItem('userImageName');\r\n }\r\n this.dynamicHeader.userProperty.subscribe(UserImage => {\r\n this.loggedUserName = localStorage.getItem('userName');\r\n if (localStorage.getItem('userImageName') == '') {\r\n this.userImage = environment.baseUrl + 'Images/DefaultImages/default-user.jpg';\r\n } else {\r\n this.userImage = environment.S3StorageService?localStorage.getItem('S3BucketImagePath'):environment.baseUrl + 'Images/UserProfile/' + localStorage.getItem('userImageName');\r\n }\r\n });\r\n this.getProfileDetails();\r\n\r\n this.innerWidth = window.innerWidth;\r\n this.getScreenSize(this.innerWidth); // to fold menu bar on small screen size\r\n this.getScreenWidth(this.innerWidth);\r\n\r\n this.customerCommonService.activeMenuSubject.pipe(takeUntil(this.onDestroy$)).subscribe(property => {\r\n this.activeMenu = property;\r\n });\r\n\r\n this.menuList = [\r\n {\r\n Icon: 'icon-customer-dash',\r\n RouterLink: '/app/customer/',\r\n MenuName: 'dashboard',\r\n DisplayName: 'Dashboard'\r\n },\r\n // {\r\n // Icon: 'icon-customer-contract',\r\n // RouterLink: '/app/customer/contracts',\r\n // MenuName: 'contracts',\r\n // DisplayName: 'Contracts'\r\n // },\r\n {\r\n Icon: 'icon-user-management',\r\n RouterLink: '/app/customer/users',\r\n MenuName: 'userManagement',\r\n DisplayName: 'User Management'\r\n },\r\n {\r\n Icon: 'icon-customer-profile',\r\n RouterLink: '/app/customer/profile',\r\n MenuName: 'customerProfile',\r\n DisplayName: 'Customer Profile'\r\n },\r\n {\r\n Icon: 'icon-customer-docs',\r\n RouterLink: '/app/customer/forms',\r\n MenuName: 'forms',\r\n DisplayName: 'Forms and Documents'\r\n },\r\n {\r\n Icon: 'icon-customer-request',\r\n RouterLink: '/app/customer/request',\r\n MenuName: 'requests',\r\n DisplayName: 'Requests'\r\n },\r\n {\r\n Icon: 'icon-customer-faq',\r\n RouterLink: '/app/customer/faqs',\r\n MenuName: 'faqs',\r\n DisplayName: 'FAQs'\r\n },\r\n {\r\n Icon: 'icon-additional-financing',\r\n RouterLink: '/app/customer/financing',\r\n MenuName: 'additionalFinancing',\r\n DisplayName: 'Additional Financing'\r\n }\r\n ];\r\n\r\n this.url = window.location.href;\r\n if (this.url.match(/myprofile/)) {\r\n this.isProfilePath = true;\r\n } else {\r\n this.isProfilePath = false;\r\n }\r\n }\r\n\r\n getScreenWidth(innerWidth) {\r\n innerWidth < 991 ? (this.isSmallScreen = true) : (this.isSmallScreen = false); //to hide toggle button\r\n }\r\n\r\n getScreenSize(innerWidth) {\r\n innerWidth < 990 ? (this.foldedMenu = true) : (this.foldedMenu = false);\r\n this.customerCommonService.foldedMenu.next(this.foldedMenu);\r\n }\r\n\r\n toggleMenu() {\r\n this.foldedMenu = !this.foldedMenu;\r\n this.customerCommonService.foldedMenu.next(this.foldedMenu);\r\n }\r\n\r\n navigateMenu(item: MenuItem) {\r\n this.isProfilePath = false;\r\n if (item.RouterLink) {\r\n this.router.navigate([item.RouterLink]);\r\n }\r\n }\r\n\r\n isMenuActive(MenuName: string) {\r\n return MenuName === (typeof this.activeMenu != 'undefined' ? this.activeMenu.ActiveMenu : '');\r\n }\r\n getProfileDetails() {\r\n this.loggedUserName = localStorage.getItem('userName');\r\n if (localStorage.getItem('userImageName') == '') {\r\n this.userImage = environment.baseUrl + 'Images/DefaultImages/default-user.jpg';\r\n } else {\r\n this.userImage = environment.S3StorageService?localStorage.getItem('S3BucketImagePath'):environment.baseUrl + 'Images/UserProfile/' + localStorage.getItem('userImageName');\r\n }\r\n }\r\n\r\n onMenuChange(event) {\r\n switch (event) {\r\n case 'account':\r\n this.isProfilePath = true;\r\n this.router.navigateByUrl('/app/customer/myprofile');\r\n break;\r\n case 'logout':\r\n localStorage.clear();\r\n localStorage.clear();\r\n this.router.navigateByUrl('/app/login');\r\n this.authService.logout().subscribe(\r\n result => {\r\n $('').appendTo(\"head\");\r\n },\r\n error => {\r\n console.log('Error while logging out.', error);\r\n }\r\n );\r\n\r\n break;\r\n }\r\n }\r\n onChangeRoute(e: Event) {\r\n e.preventDefault();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.onDestroy$.next(true);\r\n this.onDestroy$.complete();\r\n }\r\n}\r\n","module.exports = \".col-md-12.save-edit-button {\\r\\n margin-bottom: 15px !important;\\r\\n}\\r\\n.btn-save.btn-round.pull-right:disabled {\\r\\n background: #ccc;\\r\\n cursor: default;\\r\\n pointer-events: none;\\r\\n}\\r\\n.side-panel-right .row .row.gutter-6 {\\r\\n margin: 0 -3px;\\r\\n height: auto;\\r\\n}\\r\\n.row.gutter-6 [class*='col-'] {\\r\\n padding-left: 3px;\\r\\n padding-right: 3px;\\r\\n}\\r\\n.error-info {\\r\\n color: brown;\\r\\n display: inline;\\r\\n}\\r\\n.upload-document.form-group {\\r\\n margin-bottom: 10px !important;\\r\\n}\\r\\n.side-panel-right.profile-side-panel .form-group {\\r\\n width: 100% !important;\\r\\n flex: initial;\\r\\n margin-bottom: 30px;\\r\\n}\\r\\n@media only screen and (max-width: 990px) {\\r\\n .preview-container .preview-name {\\r\\n max-width: 86% !important;\\r\\n white-space: pre;\\r\\n margin-right: 2px !important;\\r\\n }\\r\\n}\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zaGFyZWQvbGF5b3V0L3Byb2ZpbGUtZWRpdC9wcm9maWxlLWVkaXQuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLCtCQUErQjtDQUNoQztBQUNEO0VBQ0UsaUJBQWlCO0VBQ2pCLGdCQUFnQjtFQUNoQixxQkFBcUI7Q0FDdEI7QUFFRDtFQUNFLGVBQWU7RUFDZixhQUFhO0NBQ2Q7QUFDRDtFQUNFLGtCQUFrQjtFQUNsQixtQkFBbUI7Q0FDcEI7QUFDRDtFQUNFLGFBQWE7RUFDYixnQkFBZ0I7Q0FDakI7QUFDRDtFQUNFLCtCQUErQjtDQUNoQztBQUNEO0VBQ0UsdUJBQXVCO0VBQ3ZCLGNBQWM7RUFDZCxvQkFBb0I7Q0FDckI7QUFHRDtFQUNFO0lBQ0UsMEJBQTBCO0lBQzFCLGlCQUFpQjtJQUNqQiw2QkFBNkI7R0FDOUI7Q0FDRiIsImZpbGUiOiJzcmMvc2hhcmVkL2xheW91dC9wcm9maWxlLWVkaXQvcHJvZmlsZS1lZGl0LmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuY29sLW1kLTEyLnNhdmUtZWRpdC1idXR0b24ge1xyXG4gIG1hcmdpbi1ib3R0b206IDE1cHggIWltcG9ydGFudDtcclxufVxyXG4uYnRuLXNhdmUuYnRuLXJvdW5kLnB1bGwtcmlnaHQ6ZGlzYWJsZWQge1xyXG4gIGJhY2tncm91bmQ6ICNjY2M7XHJcbiAgY3Vyc29yOiBkZWZhdWx0O1xyXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG59XHJcblxyXG4uc2lkZS1wYW5lbC1yaWdodCAucm93IC5yb3cuZ3V0dGVyLTYge1xyXG4gIG1hcmdpbjogMCAtM3B4O1xyXG4gIGhlaWdodDogYXV0bztcclxufVxyXG4ucm93Lmd1dHRlci02IFtjbGFzcyo9J2NvbC0nXSB7XHJcbiAgcGFkZGluZy1sZWZ0OiAzcHg7XHJcbiAgcGFkZGluZy1yaWdodDogM3B4O1xyXG59XHJcbi5lcnJvci1pbmZvIHtcclxuICBjb2xvcjogYnJvd247XHJcbiAgZGlzcGxheTogaW5saW5lO1xyXG59XHJcbi51cGxvYWQtZG9jdW1lbnQuZm9ybS1ncm91cCB7XHJcbiAgbWFyZ2luLWJvdHRvbTogMTBweCAhaW1wb3J0YW50O1xyXG59XHJcbi5zaWRlLXBhbmVsLXJpZ2h0LnByb2ZpbGUtc2lkZS1wYW5lbCAuZm9ybS1ncm91cCB7XHJcbiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcclxuICBmbGV4OiBpbml0aWFsO1xyXG4gIG1hcmdpbi1ib3R0b206IDMwcHg7XHJcbn1cclxuXHJcblxyXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk5MHB4KSB7XHJcbiAgLnByZXZpZXctY29udGFpbmVyIC5wcmV2aWV3LW5hbWUge1xyXG4gICAgbWF4LXdpZHRoOiA4NiUgIWltcG9ydGFudDtcclxuICAgIHdoaXRlLXNwYWNlOiBwcmU7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDJweCAhaW1wb3J0YW50O1xyXG4gIH1cclxufVxyXG4iXX0= */\"","module.exports = \"\\r\\n
    \\r\\n
    X
    \\r\\n

    Edit Profile

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n

    First name is required

    \\r\\n

    \\r\\n Please enter a valid text\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n

    Last name is required

    \\r\\n

    \\r\\n Please enter a valid text\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n

    Contact number is required

    \\r\\n

    Please enter a valid phone number

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n

    Title is required

    \\r\\n

    \\r\\n Please enter a valid text\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n {{ uploadedDocuments.name }}\\r\\n

    \\r\\n \\r\\n

    \\r\\n \\r\\n

    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \"","import { Component, OnInit, Input, SimpleChanges, EventEmitter, Output, HostListener } from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { ApiService } from '@shared/services/api.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { UserService } from '@shared/services/user.service';\r\nimport { CustomerUserDto } from '@shared/interfaces/nec-user';\r\nimport { DocumentInfo, Address, FileType, ObjectType } from '@shared/interfaces/common';\r\nimport { UserDto } from '@shared/interfaces/nec-user';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\n//import { Address } from 'cluster';\r\nimport { environment } from 'environments/environment';\r\nimport { blankSpaceFirst } from '@shared/validators/blank-space-validator';\r\nimport { CommonService } from '@shared/services/common.service';\r\nimport { DialogService } from '@shared/services/dialog.service';\r\n@Component({\r\n selector: 'app-profile-edit',\r\n templateUrl: './profile-edit.component.html',\r\n styleUrls: ['./profile-edit.component.css']\r\n})\r\nexport class ProfileEditComponent implements OnInit {\r\n @Input() editData;\r\n public emailExpression = \"[a-zA-Z0-9_\\\\.\\\\+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z0-9-\\\\.]+\";\r\n\r\n editCustomerProfile = new FormGroup({\r\n firstName: new FormControl('', [Validators.required, blankSpaceFirst.blankSpaceFirst]),\r\n lastName: new FormControl('', [Validators.required, blankSpaceFirst.blankSpaceFirst]),\r\n contactNumber: new FormControl('', [Validators.required, Validators.minLength(10)]),\r\n emailId: new FormControl('', [Validators.required, Validators.email, Validators.pattern(this.emailExpression)]),\r\n title: new FormControl('', [Validators.required, blankSpaceFirst.blankSpaceFirst]),\r\n contactNumberExt: new FormControl('')\r\n });\r\n\r\n editForm = new FormGroup({\r\n id: new FormControl('', [Validators.required]),\r\n firstName: new FormControl('', [Validators.required, blankSpaceFirst.blankSpaceFirst]),\r\n lastName: new FormControl('', [Validators.required, blankSpaceFirst.blankSpaceFirst]),\r\n title: new FormControl('', [Validators.required, blankSpaceFirst.blankSpaceFirst]),\r\n contactNumber: new FormControl('', [Validators.required, Validators.minLength(10)]),\r\n role: new FormControl('', [Validators.required]),\r\n street: new FormControl('', [blankSpaceFirst.blankSpaceFirst]),\r\n state: new FormControl('', [blankSpaceFirst.blankSpaceFirst]),\r\n country: new FormControl('',[blankSpaceFirst.blankSpaceFirst]),\r\n city: new FormControl('',[blankSpaceFirst.blankSpaceFirst]),\r\n zip: new FormControl(''),\r\n userImage: new FormControl(''),\r\n contactNumberExt: new FormControl('')\r\n });\r\n public mobileNumberMask = ['(', /[0-9]/, /\\d/, /\\d/, ')', ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/];\r\n baseImageUrl = environment.baseUrl + 'Images/UserProfile/';\r\n roles;\r\n emailAddress: string;\r\n isDirty = false;\r\n userDto: CustomerUserDto;\r\n imageDocument: DocumentInfo;\r\n documentId: number;\r\n imageRemover: boolean;\r\n uploadedDocuments: any = [];\r\n @Output() profileUpdate: EventEmitter = new EventEmitter();\r\n @Output() customerProfileUpdate: EventEmitter = new EventEmitter();\r\n constructor(\r\n private apiService: ApiService,\r\n public toastrService: ToastrService,\r\n private UserService: UserService,\r\n private spinner: NgxSpinnerService,\r\n private commonService: CommonService,\r\n private dialogService: DialogService\r\n ) {\r\n //this.apiService.getAsObservable('./assets/mock-files/mock-roles.json').subscribe(data => {\r\n // this.roles = data;\r\n\r\n //})\r\n this.getRoles();\r\n }\r\n\r\n ngOnInit() {\r\n this.userDto = {} as CustomerUserDto;\r\n this.UserService.IsDirtyClear.subscribe((paymentDetails: object[]) => {\r\n this.closeSidePanel();\r\n });\r\n }\r\n\r\n @HostListener('document:keydown.escape', ['$event']) onKeydownHandler(event: KeyboardEvent) {\r\n this.closeSidePanel();\r\n }\r\n\r\n detectFiles(event) {\r\n let files = event.target.files;\r\n if (files) {\r\n var i = 0;\r\n let allowed = ['image/x-png', 'image/gif', 'image/jpeg', 'image/jpg', 'image/png'];\r\n var error = false;\r\n for (let file of files) {\r\n if (allowed.indexOf(file.type) !== -1) {\r\n this.imageReader(file).then(x => {\r\n this.imageDocument = {} as DocumentInfo;\r\n this.imageDocument.file = x.replace(/^data:image\\/[a-z]+;base64,/, '');\r\n this.imageDocument.FileName = file.name;\r\n this.imageDocument.FileType = FileType.Image;\r\n var userDetails = this.editForm.value;\r\n this.imageDocument.ObjectId = userDetails.id;\r\n this.imageDocument.ObjectType = ObjectType.None;\r\n this.imageRemover = false;\r\n });\r\n i++;\r\n } else {\r\n /* not allowed extensions */\r\n error = true;\r\n }\r\n }\r\n }\r\n if (error) {\r\n this.toastrService.error('only images are allowed', 'Error!');\r\n }\r\n }\r\n\r\n imageReader(file): Promise {\r\n return new Promise((resoleve, reject) => {\r\n let reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onloadend = (e: any) => {\r\n const dataUrl = e.target.result;\r\n let fileDetails = {\r\n url: dataUrl,\r\n name: file.name,\r\n preview: 0,\r\n userfile: file\r\n };\r\n this.uploadedDocuments = fileDetails;\r\n resoleve(reader.result);\r\n };\r\n\r\n reader.onerror = x => {\r\n reject(x);\r\n };\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.editData = changes['editData'].currentValue;\r\n this.setSidePannal();\r\n }\r\n\r\n setSidePannal() {\r\n this.editForm.controls['id'].setValue(this.editData.id);\r\n this.editForm.controls['firstName'].setValue(this.editData.name);\r\n this.editForm.controls['lastName'].setValue(this.editData.surname);\r\n this.editForm.controls['title'].setValue(this.editData.title);\r\n this.editForm.controls['contactNumber'].setValue(this.editData.phoneNumber);\r\n this.editForm.controls['role'].setValue(this.editData.roleId);\r\n this.editForm.controls['contactNumberExt'].setValue(this.editData.phoneExtension);\r\n if (this.editData.address) {\r\n this.editForm.controls['street'].setValue(this.editData.address.street);\r\n this.editForm.controls['state'].setValue(this.editData.address.state);\r\n this.editForm.controls['country'].setValue(this.editData.address.country);\r\n this.editForm.controls['city'].setValue(this.editData.address.city);\r\n this.editForm.controls['zip'].setValue(this.editData.address.zip);\r\n }\r\n this.emailAddress = this.editData.emailAddress;\r\n this.documentId = this.editData.documentId;\r\n this.imageDocument = null;\r\n if (this.editData.document) {\r\n let tempImage = {\r\n url: environment.S3StorageService?this.editData.document.url: this.baseImageUrl + this.editData.document.thumbImageFileName,\r\n name: this.editData.document.displayName,\r\n preview: 0,\r\n userfile: ''\r\n };\r\n this.uploadedDocuments = tempImage;\r\n }\r\n }\r\n checkIsDirty() {\r\n if (this.editForm.dirty) this.isDirty = !this.isDirty;\r\n else this.closeSidePanel();\r\n }\r\n onIsDirtyCancelClick() {\r\n this.isDirty = false;\r\n }\r\n closeSidePanel() {\r\n if (this.editForm.dirty) {\r\n this.dialogService\r\n .confirm('Confirm', 'You have unsaved changes. Do you want to ignore the changes?')\r\n .subscribe(res => {\r\n if (res) {\r\n this.clearForm();\r\n }\r\n });\r\n } else {\r\n this.clearForm();\r\n\r\n }\r\n }\r\n\r\n clearForm() {\r\n this.editForm.reset();\r\n $('body').removeClass('show-sidepanel');\r\n $('.side-panel-right').removeClass('active');\r\n this.setSidePannal();\r\n $('.side-panel-right').scrollTop(0);\r\n this.uploadedDocuments=[];\r\n }\r\n\r\n get e() {\r\n return this.editForm.controls;\r\n }\r\n\r\n getRoles() {\r\n this.UserService.GetAdminRoles().subscribe(data => {\r\n this.roles = data.result.data;\r\n });\r\n }\r\n\r\n removeImage() {\r\n this.uploadedDocuments = [];\r\n this.imageDocument = {} as DocumentInfo;\r\n this.imageRemover = true;\r\n this.editForm.controls['userImage'].setValue('');\r\n }\r\n numberOnly(event: any, flag: string) {\r\n return this.commonService.numberOnly(event, flag);\r\n }\r\n\r\n onSubmit() {\r\n // if(\"profileData?.roleNames[0]=='NECMaster' || profileData?.roleNames[0]=='NECAdmin' || profileData?.roleNames[0]=='NECSupport'\") {\r\n if (\r\n this.editData.roleNames[0] == 'NECMaster' ||\r\n this.editData.roleNames[0] == 'NECAdmin' ||\r\n this.editData.roleNames[0] == 'NECSupport'\r\n ) {\r\n this.editForm.valid;\r\n var userDetails = this.editForm.value;\r\n var userAddDetails = {} as UserDto;\r\n userAddDetails.address = {} as Address;\r\n userAddDetails.id = userDetails.id;\r\n userAddDetails.firstName = userDetails.firstName.trim();\r\n userAddDetails.lastName = userDetails.lastName.trim();\r\n userAddDetails.emailAddress = this.emailAddress;\r\n userAddDetails.title = userDetails.title.trim();\r\n userAddDetails.phoneNumber = userDetails.contactNumber;\r\n userAddDetails.roleId = userDetails.role;\r\n userAddDetails.address.Street = userDetails.street?userDetails.street.trim():'';\r\n userAddDetails.address.State = userDetails.state?userDetails.state.trim():'';\r\n userAddDetails.address.Country = userDetails.country?userDetails.country.trim():'';\r\n userAddDetails.address.City = userDetails.city?userDetails.city.trim():'';\r\n userAddDetails.address.Zip = userDetails.zip?userDetails.zip.trim():'';\r\n userAddDetails.documentInfo = this.imageDocument;\r\n userAddDetails.documentId = this.documentId;\r\n userAddDetails.userImageIsDeleted = this.imageRemover;\r\n userAddDetails.PhoneExtension = userDetails.contactNumberExt;\r\n this.spinner.show();\r\n this.UserService.UpdateUser(userAddDetails).subscribe(data => {\r\n this.spinner.hide();\r\n if (data != '0') {\r\n this.profileUpdate.emit();\r\n this.editForm.reset();\r\n this.toastrService.success('Profile details updated successfully.', 'Success!');\r\n this.clearForm();\r\n }\r\n });\r\n }\r\n\r\n if (this.editData.roleNames[0] == 'CustomerUser' || this.editData.roleNames[0] == 'CustomerAdmin') {\r\n this.spinner.show();\r\n var userDetails = this.editForm.value;\r\n var userAddDetails = {} as UserDto;\r\n userAddDetails.address = {} as Address;\r\n userAddDetails.id = userDetails.id;\r\n userAddDetails.firstName = userDetails.firstName.trim();\r\n userAddDetails.lastName = userDetails.lastName.trim();\r\n userAddDetails.emailAddress = this.emailAddress;\r\n userAddDetails.title = userDetails.title.trim();\r\n userAddDetails.phoneNumber = userDetails.contactNumber;\r\n userAddDetails.roleId = userDetails.role;\r\n if (this.editData.addressId) {\r\n userAddDetails.addressId = this.editData.addressId;\r\n userAddDetails.address.id = this.editData.addressId;\r\n }\r\n userAddDetails.address.Street = userDetails.street?userDetails.street.trim():'';\r\n userAddDetails.address.State = userDetails.state?userDetails.state.trim():'';\r\n userAddDetails.address.Country = userDetails.country?userDetails.country.trim():'';\r\n userAddDetails.address.City = userDetails.city?userDetails.city.trim():'';\r\n userAddDetails.address.Zip = userDetails.zip?userDetails.zip.trim():'';\r\n userAddDetails.documentInfo = this.imageDocument;\r\n userAddDetails.documentId = this.documentId;\r\n userAddDetails.userImageIsDeleted = this.imageRemover;\r\n userAddDetails.PhoneExtension = userDetails.contactNumberExt;\r\n this.spinner.show();\r\n this.UserService.UpdateCustomerUser(userAddDetails).subscribe(data => {\r\n if (data != '0') {\r\n if (data.result.status == 'success') {\r\n this.customerProfileUpdate.emit();\r\n this.spinner.hide();\r\n this.editForm.reset();\r\n this.clearForm();\r\n this.toastrService.success('User details updated successfully!', 'Success!');\r\n } else {\r\n this.spinner.hide();\r\n this.editForm.reset();\r\n this.clearForm();\r\n this.toastrService.warning(\"Oops something went wrong, it's not you it is us! We are working on getting it back.\", 'danger!');\r\n }\r\n } else {\r\n this.spinner.hide();\r\n this.toastrService.warning('Sorry!. Email is already registered !', 'Error!');\r\n }\r\n this.spinner.hide();\r\n });\r\n // this.toastrService.success('Profile details updated successfully.', 'Success!')\r\n this.clearForm();\r\n }\r\n }\r\n}\r\n","module.exports = \"/*slider*/\\r\\n.contracts-slider {\\r\\n padding: 25px 0;\\r\\n}\\r\\n.contracts-slider-inner {\\r\\n padding: 20px 60px;\\r\\n position: relative;\\r\\n}\\r\\n.contracts-slider-inner .slick-arrow {\\r\\n position: absolute;\\r\\n left: 0;\\r\\n top: 0;\\r\\n bottom: 0;\\r\\n margin: auto;\\r\\n height: 35px;\\r\\n cursor: pointer;\\r\\n background-color: #ced9e7;\\r\\n width: 35px;\\r\\n border-radius: 50%;\\r\\n box-shadow: none;\\r\\n border: 0;\\r\\n font-size: 0;\\r\\n}\\r\\n.contracts-slider-inner .slick-arrow::before {\\r\\n width: 22px;\\r\\n height: 17px;\\r\\n display: inline-block;\\r\\n content: '\\\\e918';\\r\\n line-height: 1;\\r\\n font-family: 'icomoon' !important;\\r\\n font-size: 20px;\\r\\n position: absolute;\\r\\n left: 0;\\r\\n top: 0;\\r\\n right: 0;\\r\\n margin: auto;\\r\\n -webkit-transform: rotate(90deg);\\r\\n transform: rotate(90deg);\\r\\n bottom: 0;\\r\\n}\\r\\n.contracts-slider-inner .slick-next.slick-arrow::before {\\r\\n -webkit-transform: rotate(270deg);\\r\\n transform: rotate(270deg);\\r\\n}\\r\\n.contracts-slider-inner .slick-prev.slick-arrow::before {\\r\\n -webkit-transform: rotate(90deg);\\r\\n transform: rotate(90deg);\\r\\n}\\r\\n.contracts-slider-inner .slick-next.slick-arrow {\\r\\n left: inherit;\\r\\n right: 0;\\r\\n}\\r\\n.contracts-slider-inner .slick-arrow.slick-disabled {\\r\\n opacity: 0.4;\\r\\n}\\r\\n.contracts-slider-inner .slick-slide img {\\r\\n display: block;\\r\\n width: 100%;\\r\\n border-radius: 10px;\\r\\n}\\r\\n/*******new css*************/\\r\\n.customer_profile_page .card-header {\\r\\n background: #2c4b8b;\\r\\n color: #fff;\\r\\n padding-top: 15px;\\r\\n}\\r\\n.customer_profile_page .card .icon-edit:before {\\r\\n content: '\\\\e92a';\\r\\n color: #fff;\\r\\n}\\r\\n.action-icons {\\r\\n text-align: right;\\r\\n margin-top: 2px;\\r\\n}\\r\\n.action-icons ul li {\\r\\n display: inline-block;\\r\\n margin-left: 15px;\\r\\n margin-top: 8px;\\r\\n cursor: pointer;\\r\\n}\\r\\n.action-icons ul li i {\\r\\n font-size: 15px;\\r\\n}\\r\\n.customer_profile_page .profile-pic {\\r\\n width: 85px;\\r\\n height: 85px;\\r\\n border-radius: 100%;\\r\\n overflow: hidden;\\r\\n position: absolute;\\r\\n top: 0px;\\r\\n}\\r\\n.customer_profile_page .profile-pic img {\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n -o-object-fit: cover;\\r\\n object-fit: cover;\\r\\n}\\r\\n.pro-name {\\r\\n padding-left: 120px;\\r\\n}\\r\\n.pro-name p {\\r\\n font-size: 16px;\\r\\n font-weight: 600;\\r\\n position: relative;\\r\\n top: 14px;\\r\\n margin-bottom: 4px;\\r\\n}\\r\\n.pro-name .role {\\r\\n font-size: 12px;\\r\\n margin-bottom: 4px;\\r\\n}\\r\\n.customer_profile_page .card-body {\\r\\n padding-left: 102px;\\r\\n}\\r\\n.customer_profile_page .card-left-icon {\\r\\n text-align: right;\\r\\n}\\r\\n.customer_profile_page .card-left-icon i {\\r\\n font-size: 40px;\\r\\n position: relative;\\r\\n top: 12px;\\r\\n /*left: 12px;*/\\r\\n}\\r\\n.customer_profile_page .card-value {\\r\\n font-weight: 600;\\r\\n word-break: break-all;\\r\\n white-space: pre-line;\\r\\n}\\r\\n.customer_profile_page .card-value.one-line {\\r\\n font-weight: 600;\\r\\n word-break: initial;\\r\\n white-space: nowrap;\\r\\n overflow: auto;\\r\\n}\\r\\n.customer_profile_page .card-label {\\r\\n margin-top: 10px;\\r\\n margin-bottom: 5px;\\r\\n}\\r\\n.my-profile-image img {\\r\\n background-size: cover;\\r\\n height: 100%;\\r\\n width: 100%;\\r\\n}\\r\\n.profile-photo img {\\r\\n -o-object-fit: cover;\\r\\n object-fit: cover;\\r\\n height: 100%;\\r\\n width: 100%;\\r\\n}\\r\\n.icon-location_icon:before {\\r\\n color: #a5bbca;\\r\\n}\\r\\n@media (max-width: 1650px) {\\r\\n .customer_profile_page .card-body {\\r\\n padding-left: 135px;\\r\\n }\\r\\n}\\r\\n@media screen and (max-width: 991px) {\\r\\n .card-body .card-right-content {\\r\\n padding-left: 25px;\\r\\n }\\r\\n}\\r\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9zaGFyZWQvbGF5b3V0L3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVjtFQUNFLGdCQUFnQjtDQUNqQjtBQUNEO0VBQ0UsbUJBQW1CO0VBQ25CLG1CQUFtQjtDQUNwQjtBQUNEO0VBQ0UsbUJBQW1CO0VBQ25CLFFBQVE7RUFDUixPQUFPO0VBQ1AsVUFBVTtFQUNWLGFBQWE7RUFDYixhQUFhO0VBQ2IsZ0JBQWdCO0VBQ2hCLDBCQUEwQjtFQUMxQixZQUFZO0VBQ1osbUJBQW1CO0VBQ25CLGlCQUFpQjtFQUNqQixVQUFVO0VBQ1YsYUFBYTtDQUNkO0FBQ0Q7RUFDRSxZQUFZO0VBQ1osYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixpQkFBaUI7RUFDakIsZUFBZTtFQUNmLGtDQUFrQztFQUNsQyxnQkFBZ0I7RUFDaEIsbUJBQW1CO0VBQ25CLFFBQVE7RUFDUixPQUFPO0VBQ1AsU0FBUztFQUNULGFBQWE7RUFDYixpQ0FBeUI7VUFBekIseUJBQXlCO0VBQ3pCLFVBQVU7Q0FDWDtBQUVEO0VBQ0Usa0NBQTBCO1VBQTFCLDBCQUEwQjtDQUMzQjtBQUVEO0VBQ0UsaUNBQXlCO1VBQXpCLHlCQUF5QjtDQUMxQjtBQUNEO0VBQ0UsY0FBYztFQUNkLFNBQVM7Q0FDVjtBQUNEO0VBQ0UsYUFBYTtDQUNkO0FBQ0Q7RUFDRSxlQUFlO0VBQ2YsWUFBWTtFQUNaLG9CQUFvQjtDQUNyQjtBQUNELDZCQUE2QjtBQUU3QjtFQUNFLG9CQUFvQjtFQUNwQixZQUFZO0VBQ1osa0JBQWtCO0NBQ25CO0FBRUQ7RUFDRSxpQkFBaUI7RUFDakIsWUFBWTtDQUNiO0FBQ0Q7RUFDRSxrQkFBa0I7RUFDbEIsZ0JBQWdCO0NBQ2pCO0FBQ0Q7RUFDRSxzQkFBc0I7RUFDdEIsa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQixnQkFBZ0I7Q0FDakI7QUFFRDtFQUNFLGdCQUFnQjtDQUNqQjtBQUNEO0VBQ0UsWUFBWTtFQUNaLGFBQWE7RUFDYixvQkFBb0I7RUFDcEIsaUJBQWlCO0VBQ2pCLG1CQUFtQjtFQUNuQixTQUFTO0NBQ1Y7QUFDRDtFQUNFLFlBQVk7RUFDWixhQUFhO0VBQ2IscUJBQWtCO0tBQWxCLGtCQUFrQjtDQUNuQjtBQUNEO0VBQ0Usb0JBQW9CO0NBQ3JCO0FBQ0Q7RUFDRSxnQkFBZ0I7RUFDaEIsaUJBQWlCO0VBQ2pCLG1CQUFtQjtFQUNuQixVQUFVO0VBQ1YsbUJBQW1CO0NBQ3BCO0FBQ0Q7RUFDRSxnQkFBZ0I7RUFDaEIsbUJBQW1CO0NBQ3BCO0FBRUQ7RUFDRSxvQkFBb0I7Q0FDckI7QUFDRDtFQUNFLGtCQUFrQjtDQUNuQjtBQUNEO0VBQ0UsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtFQUNuQixVQUFVO0VBQ1YsZUFBZTtDQUNoQjtBQUNEO0VBQ0UsaUJBQWlCO0VBQ2pCLHNCQUFzQjtFQUN0QixzQkFBc0I7Q0FDdkI7QUFDRDtFQUNFLGlCQUFpQjtFQUNqQixvQkFBb0I7RUFDcEIsb0JBQW9CO0VBQ3BCLGVBQWU7Q0FDaEI7QUFDRDtFQUNFLGlCQUFpQjtFQUNqQixtQkFBbUI7Q0FDcEI7QUFFRDtFQUNFLHVCQUF1QjtFQUN2QixhQUFhO0VBQ2IsWUFBWTtDQUNiO0FBRUQ7RUFDRSxxQkFBa0I7S0FBbEIsa0JBQWtCO0VBQ2xCLGFBQWE7RUFDYixZQUFZO0NBQ2I7QUFDRDtFQUNFLGVBQWU7Q0FDaEI7QUFFRDtFQUNFO0lBQ0Usb0JBQW9CO0dBQ3JCO0NBQ0Y7QUFFRDtFQUNFO0lBQ0UsbUJBQW1CO0dBQ3BCO0NBQ0YiLCJmaWxlIjoic3JjL3NoYXJlZC9sYXlvdXQvcHJvZmlsZS9wcm9maWxlLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKnNsaWRlciovXHJcbi5jb250cmFjdHMtc2xpZGVyIHtcclxuICBwYWRkaW5nOiAyNXB4IDA7XHJcbn1cclxuLmNvbnRyYWN0cy1zbGlkZXItaW5uZXIge1xyXG4gIHBhZGRpbmc6IDIwcHggNjBweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuLmNvbnRyYWN0cy1zbGlkZXItaW5uZXIgLnNsaWNrLWFycm93IHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgbGVmdDogMDtcclxuICB0b3A6IDA7XHJcbiAgYm90dG9tOiAwO1xyXG4gIG1hcmdpbjogYXV0bztcclxuICBoZWlnaHQ6IDM1cHg7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNjZWQ5ZTc7XHJcbiAgd2lkdGg6IDM1cHg7XHJcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgYm9yZGVyOiAwO1xyXG4gIGZvbnQtc2l6ZTogMDtcclxufVxyXG4uY29udHJhY3RzLXNsaWRlci1pbm5lciAuc2xpY2stYXJyb3c6OmJlZm9yZSB7XHJcbiAgd2lkdGg6IDIycHg7XHJcbiAgaGVpZ2h0OiAxN3B4O1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICBjb250ZW50OiAnXFxlOTE4JztcclxuICBsaW5lLWhlaWdodDogMTtcclxuICBmb250LWZhbWlseTogJ2ljb21vb24nICFpbXBvcnRhbnQ7XHJcbiAgZm9udC1zaXplOiAyMHB4O1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBsZWZ0OiAwO1xyXG4gIHRvcDogMDtcclxuICByaWdodDogMDtcclxuICBtYXJnaW46IGF1dG87XHJcbiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xyXG4gIGJvdHRvbTogMDtcclxufVxyXG5cclxuLmNvbnRyYWN0cy1zbGlkZXItaW5uZXIgLnNsaWNrLW5leHQuc2xpY2stYXJyb3c6OmJlZm9yZSB7XHJcbiAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTtcclxufVxyXG5cclxuLmNvbnRyYWN0cy1zbGlkZXItaW5uZXIgLnNsaWNrLXByZXYuc2xpY2stYXJyb3c6OmJlZm9yZSB7XHJcbiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xyXG59XHJcbi5jb250cmFjdHMtc2xpZGVyLWlubmVyIC5zbGljay1uZXh0LnNsaWNrLWFycm93IHtcclxuICBsZWZ0OiBpbmhlcml0O1xyXG4gIHJpZ2h0OiAwO1xyXG59XHJcbi5jb250cmFjdHMtc2xpZGVyLWlubmVyIC5zbGljay1hcnJvdy5zbGljay1kaXNhYmxlZCB7XHJcbiAgb3BhY2l0eTogMC40O1xyXG59XHJcbi5jb250cmFjdHMtc2xpZGVyLWlubmVyIC5zbGljay1zbGlkZSBpbWcge1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XHJcbn1cclxuLyoqKioqKipuZXcgY3NzKioqKioqKioqKioqKi9cclxuXHJcbi5jdXN0b21lcl9wcm9maWxlX3BhZ2UgLmNhcmQtaGVhZGVyIHtcclxuICBiYWNrZ3JvdW5kOiAjMmM0YjhiO1xyXG4gIGNvbG9yOiAjZmZmO1xyXG4gIHBhZGRpbmctdG9wOiAxNXB4O1xyXG59XHJcblxyXG4uY3VzdG9tZXJfcHJvZmlsZV9wYWdlIC5jYXJkIC5pY29uLWVkaXQ6YmVmb3JlIHtcclxuICBjb250ZW50OiAnXFxlOTJhJztcclxuICBjb2xvcjogI2ZmZjtcclxufVxyXG4uYWN0aW9uLWljb25zIHtcclxuICB0ZXh0LWFsaWduOiByaWdodDtcclxuICBtYXJnaW4tdG9wOiAycHg7XHJcbn1cclxuLmFjdGlvbi1pY29ucyB1bCBsaSB7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIG1hcmdpbi1sZWZ0OiAxNXB4O1xyXG4gIG1hcmdpbi10b3A6IDhweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5hY3Rpb24taWNvbnMgdWwgbGkgaSB7XHJcbiAgZm9udC1zaXplOiAxNXB4O1xyXG59XHJcbi5jdXN0b21lcl9wcm9maWxlX3BhZ2UgLnByb2ZpbGUtcGljIHtcclxuICB3aWR0aDogODVweDtcclxuICBoZWlnaHQ6IDg1cHg7XHJcbiAgYm9yZGVyLXJhZGl1czogMTAwJTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDBweDtcclxufVxyXG4uY3VzdG9tZXJfcHJvZmlsZV9wYWdlIC5wcm9maWxlLXBpYyBpbWcge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBvYmplY3QtZml0OiBjb3ZlcjtcclxufVxyXG4ucHJvLW5hbWUge1xyXG4gIHBhZGRpbmctbGVmdDogMTIwcHg7XHJcbn1cclxuLnByby1uYW1lIHAge1xyXG4gIGZvbnQtc2l6ZTogMTZweDtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB0b3A6IDE0cHg7XHJcbiAgbWFyZ2luLWJvdHRvbTogNHB4O1xyXG59XHJcbi5wcm8tbmFtZSAucm9sZSB7XHJcbiAgZm9udC1zaXplOiAxMnB4O1xyXG4gIG1hcmdpbi1ib3R0b206IDRweDtcclxufVxyXG5cclxuLmN1c3RvbWVyX3Byb2ZpbGVfcGFnZSAuY2FyZC1ib2R5IHtcclxuICBwYWRkaW5nLWxlZnQ6IDEwMnB4O1xyXG59XHJcbi5jdXN0b21lcl9wcm9maWxlX3BhZ2UgLmNhcmQtbGVmdC1pY29uIHtcclxuICB0ZXh0LWFsaWduOiByaWdodDtcclxufVxyXG4uY3VzdG9tZXJfcHJvZmlsZV9wYWdlIC5jYXJkLWxlZnQtaWNvbiBpIHtcclxuICBmb250LXNpemU6IDQwcHg7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHRvcDogMTJweDtcclxuICAvKmxlZnQ6IDEycHg7Ki9cclxufVxyXG4uY3VzdG9tZXJfcHJvZmlsZV9wYWdlIC5jYXJkLXZhbHVlIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcclxuICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XHJcbn1cclxuLmN1c3RvbWVyX3Byb2ZpbGVfcGFnZSAuY2FyZC12YWx1ZS5vbmUtbGluZSB7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICB3b3JkLWJyZWFrOiBpbml0aWFsO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgb3ZlcmZsb3c6IGF1dG87XHJcbn1cclxuLmN1c3RvbWVyX3Byb2ZpbGVfcGFnZSAuY2FyZC1sYWJlbCB7XHJcbiAgbWFyZ2luLXRvcDogMTBweDtcclxuICBtYXJnaW4tYm90dG9tOiA1cHg7XHJcbn1cclxuXHJcbi5teS1wcm9maWxlLWltYWdlIGltZyB7XHJcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5wcm9maWxlLXBob3RvIGltZyB7XHJcbiAgb2JqZWN0LWZpdDogY292ZXI7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcbi5pY29uLWxvY2F0aW9uX2ljb246YmVmb3JlIHtcclxuICBjb2xvcjogI2E1YmJjYTtcclxufVxyXG5cclxuQG1lZGlhIChtYXgtd2lkdGg6IDE2NTBweCkge1xyXG4gIC5jdXN0b21lcl9wcm9maWxlX3BhZ2UgLmNhcmQtYm9keSB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDEzNXB4O1xyXG4gIH1cclxufVxyXG5cclxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTkxcHgpIHtcclxuICAuY2FyZC1ib2R5IC5jYXJkLXJpZ2h0LWNvbnRlbnQge1xyXG4gICAgcGFkZGluZy1sZWZ0OiAyNXB4O1xyXG4gIH1cclxufVxyXG4iXX0= */\"","module.exports = \"\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n

    {{ profileData?.name + ' ' + profileData?.surname }}

    \\r\\n

    {{ (profileData?.roleNames)[0] }}

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
      \\r\\n
    • \\r\\n
    • \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n

    Email Address

    \\r\\n 20 ? profileData?.emailAddress : '' }}\\\"\\r\\n >\\r\\n {{ profileData?.emailAddress | ellipsis: 20 }}\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n

    Contact Number

    \\r\\n

    {{ profileData?.phoneNumber }}

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n

    Title

    \\r\\n

    {{ profileData?.title }}

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n
    Name
    \\r\\n
    {{ profileData?.firstName }} {{ profileData?.lastName }}
    \\r\\n
    Email Address
    \\r\\n
    {{ profileData?.emailAddress }}
    \\r\\n
    Contact Number
    \\r\\n
    {{ profileData?.phoneNumber }}
    \\r\\n
    Title
    \\r\\n
    {{ profileData?.title }}
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n\"","import { Component, OnInit, Input, SimpleChanges, HostListener, EventEmitter, Output, ViewChild } from '@angular/core';\r\nimport { MatDialog } from '@angular/material';\r\nimport { environment } from 'environments/environment';\r\nimport { enterAnimation } from '@shared/layout/animations';\r\nimport { ProfileEditComponent } from '../profile-edit/profile-edit.component';\r\nimport { ChangePasswordComponent } from '../change-password/change-password.component';\r\n@Component({\r\n selector: 'app-common-profile',\r\n templateUrl: './profile.component.html',\r\n styleUrls: ['./profile.component.css'],\r\n animations: [enterAnimation]\r\n})\r\nexport class CommonProfileComponent implements OnInit {\r\n @Input() profileData;\r\n userId: number;\r\n @ViewChild(ProfileEditComponent)\r\n profileEditComponent: ProfileEditComponent;\r\n @ViewChild(ChangePasswordComponent)\r\n changePasswordComponent: ChangePasswordComponent;\r\n constructor(public dialog: MatDialog) {}\r\n // @HostListener('document:keydown.escape', ['$event']) onKeydownHandler(event: KeyboardEvent) {\r\n // /* close all side panels on pressing escape key */\r\n // this.closeSidePanel();\r\n // }\r\n\r\n DefaultImage = environment.baseUrl + 'Images/DefaultImages/default-user.jpg';\r\n baseImageUrl =environment.S3StorageService?\"\": environment.baseUrl + 'Images/UserProfile/';\r\n ngOnInit() {\r\n // console.log(this.profileData);\r\n }\r\n\r\n @Output() profileUpdated: EventEmitter = new EventEmitter();\r\n @Output() userProfileUpdated: EventEmitter = new EventEmitter();\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.profileData = changes['profileData'].currentValue;\r\n if (this.profileData) {\r\n this.userId = this.profileData.id;\r\n if (!environment.S3StorageService)\r\n {\r\n if (this.profileData.document) {\r\n this.profileData.document.url=environment.baseUrl + 'Images/UserProfile/'+this.profileData.document.thumbImageFileName\r\n }\r\n }\r\n else\r\n {\r\n if (this.profileData.document) {\r\n localStorage.setItem('S3BucketImagePath', this.profileData.document.url);\r\n }\r\n }\r\n }\r\n }\r\n refresCustomerUser() {\r\n this.userProfileUpdated.emit();\r\n }\r\n\r\n refreshData() {\r\n this.profileUpdated.emit();\r\n }\r\n openSidePanel(selector) {\r\n $('body').addClass('show-sidepanel');\r\n $('.side-panel-right.active').removeClass('active');\r\n $('#' + selector).addClass('active');\r\n }\r\n\r\n closeSidePanel() {\r\n $('body').removeClass('show-sidepanel');\r\n $('.side-panel-right').removeClass('active');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AppConsts } from '@shared/AppConsts';\r\nimport { AppSessionService } from '../session/app-session.service';\r\n\r\n@Injectable()\r\nexport class AppUrlService {\r\n\r\n static tenancyNamePlaceHolder: string = '{TENANCY_NAME}';\r\n\r\n constructor(\r\n private readonly _appSessionService: AppSessionService\r\n ) {\r\n\r\n }\r\n\r\n get appRootUrl(): string {\r\n if (this._appSessionService.tenant) {\r\n return this.getAppRootUrlOfTenant(this._appSessionService.tenant.tenancyName);\r\n } else {\r\n return this.getAppRootUrlOfTenant(null);\r\n }\r\n }\r\n\r\n /**\r\n * Returning url ends with '/'.\r\n */\r\n getAppRootUrlOfTenant(tenancyName?: string): string {\r\n let baseUrl = this.ensureEndsWith(AppConsts.appBaseUrl, '/');\r\n\r\n if (baseUrl.indexOf(AppUrlService.tenancyNamePlaceHolder) < 0) {\r\n return baseUrl;\r\n }\r\n\r\n if (baseUrl.indexOf(AppUrlService.tenancyNamePlaceHolder + '.') >= 0) {\r\n baseUrl = baseUrl.replace(AppUrlService.tenancyNamePlaceHolder + \".\", AppUrlService.tenancyNamePlaceHolder);\r\n if (tenancyName) {\r\n tenancyName = tenancyName + '.';\r\n }\r\n }\r\n\r\n if (!tenancyName) {\r\n return baseUrl.replace(AppUrlService.tenancyNamePlaceHolder, '');\r\n }\r\n\r\n return baseUrl.replace(AppUrlService.tenancyNamePlaceHolder, tenancyName);\r\n }\r\n\r\n private ensureEndsWith(str: string, c: string) {\r\n if (str.charAt(str.length - 1) !== c) {\r\n str = str + c;\r\n }\r\n\r\n return str;\r\n }\r\n\r\n private removeFromEnd(str: string, c: string) {\r\n if (str.charAt(str.length - 1) === c) {\r\n str = str.substr(0, str.length - 1);\r\n }\r\n\r\n return str;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Pipe({\r\n name: 'customDate',\r\n pure: true\r\n})\r\n\r\nexport class customDatePipe extends DatePipe {\r\n transform(value: any, pattern: string = \"mediumDate\"): string|null {\r\n let result = super.transform(value, pattern);\r\n result += \" \" + this.map[Intl.DateTimeFormat().resolvedOptions().timeZone];\r\n return result;\r\n }\r\n map = {\r\n \"Asia/Calcutta\": \"IST\"\r\n };\r\n}\r\n\r\n\r\nexport class Constants {\r\n static readonly DATE_FMT = 'dd/MMM/yyyy';\r\n static readonly DATE_TIME_FMT = `${Constants.DATE_FMT} hh:mm:ss`;\r\n }","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'customerFilter',\r\n pure: false\r\n})\r\nexport class CustomerFilterPipe implements PipeTransform {\r\n transform(value: any, args?: any): any {\r\n if (!value || !args) {\r\n return value;\r\n }\r\n return value.filter(item => item.CompanyId == args);\r\n }\r\n}\r\n","import { Pipe } from '@angular/core';\r\n@Pipe({\r\n name: 'ellipsis'\r\n})\r\nexport class EllipsisPipe {\r\n transform(val, args) {\r\n if (val) {\r\n if (args === undefined) {\r\n return val;\r\n }\r\n\r\n if (val.length > args) {\r\n return val.substring(0, args) + '...';\r\n } else {\r\n return val;\r\n }\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'phone'\r\n})\r\nexport class PhonePipe {\r\n transform(val) {\r\n if (val != null&& val !='-') {\r\n let newStr = '';\r\n if (val.length <= 10) {\r\n newStr = '(' + val.substr(0, 3) + ') ' + val.substr(3, 3) + ' - ' + val.substr(6);\r\n } else {\r\n newStr = val;\r\n }\r\n return newStr \r\n }\r\n else\r\n {\r\n return '-'\r\n }\r\n //(999) 999 - 9999; \r\n \r\n }\r\n}\r\n","import { Pipe } from '@angular/core';\r\n@Pipe({\r\n name: 'truncate'\r\n})\r\nexport class TruncateZero {\r\n transform(val) {\r\n if (val) {\r\n var res=val.toString().replace(/^0+/, '');\r\n if (res=='') {\r\n return 0;\r\n } else {\r\n return res;\r\n }\r\n }\r\n \r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'userFilter',\r\n pure: false\r\n})\r\nexport class UserFilterPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n if (!value || !args) {\r\n return value;\r\n }\r\n return value.filter(item => item.RoleId == args);\r\n }\r\n\r\n}\r\n","/* tslint:disable */\r\n//----------------------\r\n// \r\n// Generated using the NSwag toolchain v11.17.14.0 (NJsonSchema v9.10.52.0 (Newtonsoft.Json v9.0.0.0)) (http://NSwag.org)\r\n// \r\n//----------------------\r\n// ReSharper disable InconsistentNaming\r\n\r\nimport { mergeMap as _observableMergeMap, catchError as _observableCatch } from 'rxjs/operators';\r\nimport { Observable, from as _observableFrom, throwError as _observableThrow, of as _observableOf } from 'rxjs';\r\nimport { Injectable, Inject, Optional, InjectionToken } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\r\n\r\nimport * as moment from 'moment';\r\n\r\nexport const API_BASE_URL = new InjectionToken('API_BASE_URL');\r\n\r\n@Injectable()\r\nexport class AccountServiceProxy {\r\n private http: HttpClient;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\r\n this.http = http;\r\n this.baseUrl = baseUrl ? baseUrl : \"\";\r\n }\r\n\r\n /**\r\n * @input (optional) \r\n * @return Success\r\n */\r\n isTenantAvailable(input: IsTenantAvailableInput | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/Account/IsTenantAvailable\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(input);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processIsTenantAvailable(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processIsTenantAvailable(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processIsTenantAvailable(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? IsTenantAvailableOutput.fromJS(resultData200) : new IsTenantAvailableOutput();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n\r\n /**\r\n * @input (optional) \r\n * @return Success\r\n */\r\n register(input: RegisterInput | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/Account/Register\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(input);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processRegister(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processRegister(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processRegister(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? RegisterOutput.fromJS(resultData200) : new RegisterOutput();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class ConfigurationServiceProxy {\r\n private http: HttpClient;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\r\n this.http = http;\r\n this.baseUrl = baseUrl ? baseUrl : \"\";\r\n }\r\n\r\n /**\r\n * @input (optional) \r\n * @return Success\r\n */\r\n changeUiTheme(input: ChangeUiThemeInput | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/Configuration/ChangeUiTheme\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(input);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processChangeUiTheme(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processChangeUiTheme(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processChangeUiTheme(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return _observableOf(null);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class RoleServiceProxy {\r\n private http: HttpClient;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\r\n this.http = http;\r\n this.baseUrl = baseUrl ? baseUrl : \"\";\r\n }\r\n\r\n /**\r\n * @input (optional) \r\n * @return Success\r\n */\r\n create(input: CreateRoleDto | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/Role/Create\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(input);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processCreate(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processCreate(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processCreate(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? RoleDto.fromJS(resultData200) : new RoleDto();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status === 403) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n\r\n /**\r\n * @input (optional) \r\n * @return Success\r\n */\r\n update(input: RoleDto | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/Role/Update\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(input);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processUpdate(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processUpdate(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processUpdate(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? RoleDto.fromJS(resultData200) : new RoleDto();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status === 403) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n\r\n /**\r\n * @id (optional) \r\n * @return Success\r\n */\r\n delete(id: number | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/Role/Delete?\";\r\n if (id !== undefined)\r\n url_ += \"Id=\" + encodeURIComponent(\"\" + id) + \"&\"; \r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n })\r\n };\r\n\r\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processDelete(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processDelete(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processDelete(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return _observableOf(null);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status === 403) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getAllPermissions(): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/Role/GetAllPermissions\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processGetAllPermissions(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processGetAllPermissions(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processGetAllPermissions(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? ListResultDtoOfPermissionDto.fromJS(resultData200) : new ListResultDtoOfPermissionDto();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status === 403) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n\r\n /**\r\n * @id (optional) \r\n * @return Success\r\n */\r\n getRoleForEdit(id: number | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/Role/GetRoleForEdit?\";\r\n if (id !== undefined)\r\n url_ += \"Id=\" + encodeURIComponent(\"\" + id) + \"&\"; \r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processGetRoleForEdit(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processGetRoleForEdit(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processGetRoleForEdit(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? GetRoleForEditOutput.fromJS(resultData200) : new GetRoleForEditOutput();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status === 403) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n\r\n /**\r\n * @id (optional) \r\n * @return Success\r\n */\r\n get(id: number | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/Role/Get?\";\r\n if (id !== undefined)\r\n url_ += \"Id=\" + encodeURIComponent(\"\" + id) + \"&\"; \r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processGet(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processGet(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processGet(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? RoleDto.fromJS(resultData200) : new RoleDto();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status === 403) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n\r\n /**\r\n * @skipCount (optional) \r\n * @maxResultCount (optional) \r\n * @return Success\r\n */\r\n getAll(skipCount: number | null | undefined, maxResultCount: number | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/Role/GetAll?\";\r\n if (skipCount !== undefined)\r\n url_ += \"SkipCount=\" + encodeURIComponent(\"\" + skipCount) + \"&\"; \r\n if (maxResultCount !== undefined)\r\n url_ += \"MaxResultCount=\" + encodeURIComponent(\"\" + maxResultCount) + \"&\"; \r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processGetAll(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processGetAll(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processGetAll(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? PagedResultDtoOfRoleDto.fromJS(resultData200) : new PagedResultDtoOfRoleDto();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status === 403) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class SessionServiceProxy {\r\n private http: HttpClient;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\r\n this.http = http;\r\n this.baseUrl = baseUrl ? baseUrl : \"\";\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getCurrentLoginInformations(): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/Session/GetCurrentLoginInformations\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processGetCurrentLoginInformations(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processGetCurrentLoginInformations(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processGetCurrentLoginInformations(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? GetCurrentLoginInformationsOutput.fromJS(resultData200) : new GetCurrentLoginInformationsOutput();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class TenantServiceProxy {\r\n private http: HttpClient;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\r\n this.http = http;\r\n this.baseUrl = baseUrl ? baseUrl : \"\";\r\n }\r\n\r\n /**\r\n * @input (optional) \r\n * @return Success\r\n */\r\n create(input: CreateTenantDto | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/Tenant/Create\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(input);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processCreate(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processCreate(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processCreate(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? TenantDto.fromJS(resultData200) : new TenantDto();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status === 403) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n\r\n /**\r\n * @id (optional) \r\n * @return Success\r\n */\r\n delete(id: number | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/Tenant/Delete?\";\r\n if (id !== undefined)\r\n url_ += \"Id=\" + encodeURIComponent(\"\" + id) + \"&\"; \r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n })\r\n };\r\n\r\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processDelete(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processDelete(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processDelete(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return _observableOf(null);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status === 403) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n\r\n /**\r\n * @id (optional) \r\n * @return Success\r\n */\r\n get(id: number | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/Tenant/Get?\";\r\n if (id !== undefined)\r\n url_ += \"Id=\" + encodeURIComponent(\"\" + id) + \"&\"; \r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processGet(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processGet(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processGet(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? TenantDto.fromJS(resultData200) : new TenantDto();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status === 403) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n\r\n /**\r\n * @skipCount (optional) \r\n * @maxResultCount (optional) \r\n * @return Success\r\n */\r\n getAll(skipCount: number | null | undefined, maxResultCount: number | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/Tenant/GetAll?\";\r\n if (skipCount !== undefined)\r\n url_ += \"SkipCount=\" + encodeURIComponent(\"\" + skipCount) + \"&\"; \r\n if (maxResultCount !== undefined)\r\n url_ += \"MaxResultCount=\" + encodeURIComponent(\"\" + maxResultCount) + \"&\"; \r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processGetAll(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processGetAll(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processGetAll(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? PagedResultDtoOfTenantDto.fromJS(resultData200) : new PagedResultDtoOfTenantDto();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status === 403) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n\r\n /**\r\n * @input (optional) \r\n * @return Success\r\n */\r\n update(input: TenantDto | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/Tenant/Update\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(input);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processUpdate(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processUpdate(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processUpdate(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? TenantDto.fromJS(resultData200) : new TenantDto();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status === 403) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class TokenAuthServiceProxy {\r\n private http: HttpClient;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\r\n this.http = http;\r\n this.baseUrl = baseUrl ? baseUrl : \"\";\r\n }\r\n\r\n /**\r\n * @model (optional) \r\n * @return Success\r\n */\r\n authenticate(model: AuthenticateModel | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/TokenAuth/Authenticate\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(model);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processAuthenticate(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processAuthenticate(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processAuthenticate(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? AuthenticateResultModel.fromJS(resultData200) : new AuthenticateResultModel();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getExternalAuthenticationProviders(): Observable {\r\n let url_ = this.baseUrl + \"/api/TokenAuth/GetExternalAuthenticationProviders\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processGetExternalAuthenticationProviders(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processGetExternalAuthenticationProviders(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processGetExternalAuthenticationProviders(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (resultData200 && resultData200.constructor === Array) {\r\n result200 = [];\r\n for (let item of resultData200)\r\n result200.push(ExternalLoginProviderInfoModel.fromJS(item));\r\n }\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n\r\n /**\r\n * @model (optional) \r\n * @return Success\r\n */\r\n externalAuthenticate(model: ExternalAuthenticateModel | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/TokenAuth/ExternalAuthenticate\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(model);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processExternalAuthenticate(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processExternalAuthenticate(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processExternalAuthenticate(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? ExternalAuthenticateResultModel.fromJS(resultData200) : new ExternalAuthenticateResultModel();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class UserServiceProxy {\r\n private http: HttpClient;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\r\n this.http = http;\r\n this.baseUrl = baseUrl ? baseUrl : \"\";\r\n }\r\n\r\n /**\r\n * @input (optional) \r\n * @return Success\r\n */\r\n create(input: CreateUserDto | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/User/Create\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(input);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processCreate(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processCreate(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processCreate(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? UserDto.fromJS(resultData200) : new UserDto();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status === 403) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n\r\n /**\r\n * @input (optional) \r\n * @return Success\r\n */\r\n update(input: UserDto | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/User/Update\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(input);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processUpdate(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processUpdate(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processUpdate(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? UserDto.fromJS(resultData200) : new UserDto();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status === 403) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n\r\n /**\r\n * @id (optional) \r\n * @return Success\r\n */\r\n delete(id: number | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/User/Delete?\";\r\n if (id !== undefined)\r\n url_ += \"Id=\" + encodeURIComponent(\"\" + id) + \"&\"; \r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n })\r\n };\r\n\r\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processDelete(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processDelete(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processDelete(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return _observableOf(null);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status === 403) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getRoles(): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/User/GetRoles\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processGetRoles(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processGetRoles(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processGetRoles(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? ListResultDtoOfRoleDto.fromJS(resultData200) : new ListResultDtoOfRoleDto();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status === 403) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n\r\n /**\r\n * @input (optional) \r\n * @return Success\r\n */\r\n changeLanguage(input: ChangeUserLanguageDto | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/User/ChangeLanguage\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(input);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processChangeLanguage(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processChangeLanguage(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processChangeLanguage(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return _observableOf(null);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status === 403) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n\r\n /**\r\n * @id (optional) \r\n * @return Success\r\n */\r\n get(id: number | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/User/Get?\";\r\n if (id !== undefined)\r\n url_ += \"Id=\" + encodeURIComponent(\"\" + id) + \"&\"; \r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processGet(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processGet(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processGet(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? UserDto.fromJS(resultData200) : new UserDto();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status === 403) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n\r\n /**\r\n * @skipCount (optional) \r\n * @maxResultCount (optional) \r\n * @return Success\r\n */\r\n getAll(skipCount: number | null | undefined, maxResultCount: number | null | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/services/app/User/GetAll?\";\r\n if (skipCount !== undefined)\r\n url_ += \"SkipCount=\" + encodeURIComponent(\"\" + skipCount) + \"&\"; \r\n if (maxResultCount !== undefined)\r\n url_ += \"MaxResultCount=\" + encodeURIComponent(\"\" + maxResultCount) + \"&\"; \r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\", \r\n \"Accept\": \"application/json\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processGetAll(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processGetAll(response_);\r\n } catch (e) {\r\n return >_observableThrow(e);\r\n }\r\n } else\r\n return >_observableThrow(response_);\r\n }));\r\n }\r\n\r\n protected processGetAll(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob = \r\n response instanceof HttpResponse ? response.body : \r\n (response).error instanceof Blob ? (response).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 ? PagedResultDtoOfUserDto.fromJS(resultData200) : new PagedResultDtoOfUserDto();\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 401) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status === 403) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"A server error occurred.\", status, _responseText, _headers);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null);\r\n }\r\n}\r\n\r\nexport class IsTenantAvailableInput implements IIsTenantAvailableInput {\r\n tenancyName: string;\r\n\r\n constructor(data?: IIsTenantAvailableInput) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.tenancyName = data[\"tenancyName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): IsTenantAvailableInput {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new IsTenantAvailableInput();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"tenancyName\"] = this.tenancyName;\r\n return data; \r\n }\r\n\r\n clone(): IsTenantAvailableInput {\r\n const json = this.toJSON();\r\n let result = new IsTenantAvailableInput();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IIsTenantAvailableInput {\r\n tenancyName: string;\r\n}\r\n\r\nexport class IsTenantAvailableOutput implements IIsTenantAvailableOutput {\r\n state: IsTenantAvailableOutputState | undefined;\r\n tenantId: number | undefined;\r\n\r\n constructor(data?: IIsTenantAvailableOutput) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.state = data[\"state\"];\r\n this.tenantId = data[\"tenantId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): IsTenantAvailableOutput {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new IsTenantAvailableOutput();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"state\"] = this.state;\r\n data[\"tenantId\"] = this.tenantId;\r\n return data; \r\n }\r\n\r\n clone(): IsTenantAvailableOutput {\r\n const json = this.toJSON();\r\n let result = new IsTenantAvailableOutput();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IIsTenantAvailableOutput {\r\n state: IsTenantAvailableOutputState | undefined;\r\n tenantId: number | undefined;\r\n}\r\n\r\nexport class RegisterInput implements IRegisterInput {\r\n name: string;\r\n surname: string;\r\n userName: string;\r\n emailAddress: string;\r\n password: string;\r\n captchaResponse: string | undefined;\r\n\r\n constructor(data?: IRegisterInput) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.name = data[\"name\"];\r\n this.surname = data[\"surname\"];\r\n this.userName = data[\"userName\"];\r\n this.emailAddress = data[\"emailAddress\"];\r\n this.password = data[\"password\"];\r\n this.captchaResponse = data[\"captchaResponse\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): RegisterInput {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new RegisterInput();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"name\"] = this.name;\r\n data[\"surname\"] = this.surname;\r\n data[\"userName\"] = this.userName;\r\n data[\"emailAddress\"] = this.emailAddress;\r\n data[\"password\"] = this.password;\r\n data[\"captchaResponse\"] = this.captchaResponse;\r\n return data; \r\n }\r\n\r\n clone(): RegisterInput {\r\n const json = this.toJSON();\r\n let result = new RegisterInput();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IRegisterInput {\r\n name: string;\r\n surname: string;\r\n userName: string;\r\n emailAddress: string;\r\n password: string;\r\n captchaResponse: string | undefined;\r\n}\r\n\r\nexport class RegisterOutput implements IRegisterOutput {\r\n canLogin: boolean | undefined;\r\n\r\n constructor(data?: IRegisterOutput) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.canLogin = data[\"canLogin\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): RegisterOutput {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new RegisterOutput();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"canLogin\"] = this.canLogin;\r\n return data; \r\n }\r\n\r\n clone(): RegisterOutput {\r\n const json = this.toJSON();\r\n let result = new RegisterOutput();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IRegisterOutput {\r\n canLogin: boolean | undefined;\r\n}\r\n\r\nexport class ChangeUiThemeInput implements IChangeUiThemeInput {\r\n theme: string;\r\n\r\n constructor(data?: IChangeUiThemeInput) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.theme = data[\"theme\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ChangeUiThemeInput {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ChangeUiThemeInput();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"theme\"] = this.theme;\r\n return data; \r\n }\r\n\r\n clone(): ChangeUiThemeInput {\r\n const json = this.toJSON();\r\n let result = new ChangeUiThemeInput();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IChangeUiThemeInput {\r\n theme: string;\r\n}\r\n\r\nexport class CreateRoleDto implements ICreateRoleDto {\r\n name: string;\r\n displayName: string;\r\n normalizedName: string | undefined;\r\n description: string | undefined;\r\n isStatic: boolean | undefined;\r\n permissions: string[] | undefined;\r\n\r\n constructor(data?: ICreateRoleDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.name = data[\"name\"];\r\n this.displayName = data[\"displayName\"];\r\n this.normalizedName = data[\"normalizedName\"];\r\n this.description = data[\"description\"];\r\n this.isStatic = data[\"isStatic\"];\r\n if (data[\"permissions\"] && data[\"permissions\"].constructor === Array) {\r\n this.permissions = [];\r\n for (let item of data[\"permissions\"])\r\n this.permissions.push(item);\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): CreateRoleDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateRoleDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"name\"] = this.name;\r\n data[\"displayName\"] = this.displayName;\r\n data[\"normalizedName\"] = this.normalizedName;\r\n data[\"description\"] = this.description;\r\n data[\"isStatic\"] = this.isStatic;\r\n if (this.permissions && this.permissions.constructor === Array) {\r\n data[\"permissions\"] = [];\r\n for (let item of this.permissions)\r\n data[\"permissions\"].push(item);\r\n }\r\n return data; \r\n }\r\n\r\n clone(): CreateRoleDto {\r\n const json = this.toJSON();\r\n let result = new CreateRoleDto();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface ICreateRoleDto {\r\n name: string;\r\n displayName: string;\r\n normalizedName: string | undefined;\r\n description: string | undefined;\r\n isStatic: boolean | undefined;\r\n permissions: string[] | undefined;\r\n}\r\n\r\nexport class RoleDto implements IRoleDto {\r\n name: string;\r\n displayName: string;\r\n normalizedName: string | undefined;\r\n description: string | undefined;\r\n isStatic: boolean | undefined;\r\n permissions: string[] | undefined;\r\n id: number | undefined;\r\n\r\n constructor(data?: IRoleDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.name = data[\"name\"];\r\n this.displayName = data[\"displayName\"];\r\n this.normalizedName = data[\"normalizedName\"];\r\n this.description = data[\"description\"];\r\n this.isStatic = data[\"isStatic\"];\r\n if (data[\"permissions\"] && data[\"permissions\"].constructor === Array) {\r\n this.permissions = [];\r\n for (let item of data[\"permissions\"])\r\n this.permissions.push(item);\r\n }\r\n this.id = data[\"id\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): RoleDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new RoleDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"name\"] = this.name;\r\n data[\"displayName\"] = this.displayName;\r\n data[\"normalizedName\"] = this.normalizedName;\r\n data[\"description\"] = this.description;\r\n data[\"isStatic\"] = this.isStatic;\r\n if (this.permissions && this.permissions.constructor === Array) {\r\n data[\"permissions\"] = [];\r\n for (let item of this.permissions)\r\n data[\"permissions\"].push(item);\r\n }\r\n data[\"id\"] = this.id;\r\n return data; \r\n }\r\n\r\n clone(): RoleDto {\r\n const json = this.toJSON();\r\n let result = new RoleDto();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IRoleDto {\r\n name: string;\r\n displayName: string;\r\n normalizedName: string | undefined;\r\n description: string | undefined;\r\n isStatic: boolean | undefined;\r\n permissions: string[] | undefined;\r\n id: number | undefined;\r\n}\r\n\r\nexport class ListResultDtoOfPermissionDto implements IListResultDtoOfPermissionDto {\r\n items: PermissionDto[] | undefined;\r\n\r\n constructor(data?: IListResultDtoOfPermissionDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n if (data[\"items\"] && data[\"items\"].constructor === Array) {\r\n this.items = [];\r\n for (let item of data[\"items\"])\r\n this.items.push(PermissionDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): ListResultDtoOfPermissionDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ListResultDtoOfPermissionDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (this.items && this.items.constructor === Array) {\r\n data[\"items\"] = [];\r\n for (let item of this.items)\r\n data[\"items\"].push(item.toJSON());\r\n }\r\n return data; \r\n }\r\n\r\n clone(): ListResultDtoOfPermissionDto {\r\n const json = this.toJSON();\r\n let result = new ListResultDtoOfPermissionDto();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IListResultDtoOfPermissionDto {\r\n items: PermissionDto[] | undefined;\r\n}\r\n\r\nexport class PermissionDto implements IPermissionDto {\r\n name: string | undefined;\r\n displayName: string | undefined;\r\n description: string | undefined;\r\n id: number | undefined;\r\n\r\n constructor(data?: IPermissionDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.name = data[\"name\"];\r\n this.displayName = data[\"displayName\"];\r\n this.description = data[\"description\"];\r\n this.id = data[\"id\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): PermissionDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new PermissionDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"name\"] = this.name;\r\n data[\"displayName\"] = this.displayName;\r\n data[\"description\"] = this.description;\r\n data[\"id\"] = this.id;\r\n return data; \r\n }\r\n\r\n clone(): PermissionDto {\r\n const json = this.toJSON();\r\n let result = new PermissionDto();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IPermissionDto {\r\n name: string | undefined;\r\n displayName: string | undefined;\r\n description: string | undefined;\r\n id: number | undefined;\r\n}\r\n\r\nexport class GetRoleForEditOutput implements IGetRoleForEditOutput {\r\n role: RoleEditDto | undefined;\r\n permissions: FlatPermissionDto[] | undefined;\r\n grantedPermissionNames: string[] | undefined;\r\n\r\n constructor(data?: IGetRoleForEditOutput) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.role = data[\"role\"] ? RoleEditDto.fromJS(data[\"role\"]) : undefined;\r\n if (data[\"permissions\"] && data[\"permissions\"].constructor === Array) {\r\n this.permissions = [];\r\n for (let item of data[\"permissions\"])\r\n this.permissions.push(FlatPermissionDto.fromJS(item));\r\n }\r\n if (data[\"grantedPermissionNames\"] && data[\"grantedPermissionNames\"].constructor === Array) {\r\n this.grantedPermissionNames = [];\r\n for (let item of data[\"grantedPermissionNames\"])\r\n this.grantedPermissionNames.push(item);\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): GetRoleForEditOutput {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new GetRoleForEditOutput();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"role\"] = this.role ? this.role.toJSON() : undefined;\r\n if (this.permissions && this.permissions.constructor === Array) {\r\n data[\"permissions\"] = [];\r\n for (let item of this.permissions)\r\n data[\"permissions\"].push(item.toJSON());\r\n }\r\n if (this.grantedPermissionNames && this.grantedPermissionNames.constructor === Array) {\r\n data[\"grantedPermissionNames\"] = [];\r\n for (let item of this.grantedPermissionNames)\r\n data[\"grantedPermissionNames\"].push(item);\r\n }\r\n return data; \r\n }\r\n\r\n clone(): GetRoleForEditOutput {\r\n const json = this.toJSON();\r\n let result = new GetRoleForEditOutput();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IGetRoleForEditOutput {\r\n role: RoleEditDto | undefined;\r\n permissions: FlatPermissionDto[] | undefined;\r\n grantedPermissionNames: string[] | undefined;\r\n}\r\n\r\nexport class RoleEditDto implements IRoleEditDto {\r\n name: string;\r\n displayName: string;\r\n description: string | undefined;\r\n isStatic: boolean | undefined;\r\n id: number | undefined;\r\n\r\n constructor(data?: IRoleEditDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.name = data[\"name\"];\r\n this.displayName = data[\"displayName\"];\r\n this.description = data[\"description\"];\r\n this.isStatic = data[\"isStatic\"];\r\n this.id = data[\"id\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): RoleEditDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new RoleEditDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"name\"] = this.name;\r\n data[\"displayName\"] = this.displayName;\r\n data[\"description\"] = this.description;\r\n data[\"isStatic\"] = this.isStatic;\r\n data[\"id\"] = this.id;\r\n return data; \r\n }\r\n\r\n clone(): RoleEditDto {\r\n const json = this.toJSON();\r\n let result = new RoleEditDto();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IRoleEditDto {\r\n name: string;\r\n displayName: string;\r\n description: string | undefined;\r\n isStatic: boolean | undefined;\r\n id: number | undefined;\r\n}\r\n\r\nexport class FlatPermissionDto implements IFlatPermissionDto {\r\n name: string | undefined;\r\n displayName: string | undefined;\r\n description: string | undefined;\r\n\r\n constructor(data?: IFlatPermissionDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.name = data[\"name\"];\r\n this.displayName = data[\"displayName\"];\r\n this.description = data[\"description\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): FlatPermissionDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new FlatPermissionDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"name\"] = this.name;\r\n data[\"displayName\"] = this.displayName;\r\n data[\"description\"] = this.description;\r\n return data; \r\n }\r\n\r\n clone(): FlatPermissionDto {\r\n const json = this.toJSON();\r\n let result = new FlatPermissionDto();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IFlatPermissionDto {\r\n name: string | undefined;\r\n displayName: string | undefined;\r\n description: string | undefined;\r\n}\r\n\r\nexport class PagedResultDtoOfRoleDto implements IPagedResultDtoOfRoleDto {\r\n totalCount: number | undefined;\r\n items: RoleDto[] | undefined;\r\n\r\n constructor(data?: IPagedResultDtoOfRoleDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.totalCount = data[\"totalCount\"];\r\n if (data[\"items\"] && data[\"items\"].constructor === Array) {\r\n this.items = [];\r\n for (let item of data[\"items\"])\r\n this.items.push(RoleDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): PagedResultDtoOfRoleDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new PagedResultDtoOfRoleDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"totalCount\"] = this.totalCount;\r\n if (this.items && this.items.constructor === Array) {\r\n data[\"items\"] = [];\r\n for (let item of this.items)\r\n data[\"items\"].push(item.toJSON());\r\n }\r\n return data; \r\n }\r\n\r\n clone(): PagedResultDtoOfRoleDto {\r\n const json = this.toJSON();\r\n let result = new PagedResultDtoOfRoleDto();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IPagedResultDtoOfRoleDto {\r\n totalCount: number | undefined;\r\n items: RoleDto[] | undefined;\r\n}\r\n\r\nexport class GetCurrentLoginInformationsOutput implements IGetCurrentLoginInformationsOutput {\r\n application: ApplicationInfoDto | undefined;\r\n user: UserLoginInfoDto | undefined;\r\n tenant: TenantLoginInfoDto | undefined;\r\n\r\n constructor(data?: IGetCurrentLoginInformationsOutput) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.application = data[\"application\"] ? ApplicationInfoDto.fromJS(data[\"application\"]) : undefined;\r\n this.user = data[\"user\"] ? UserLoginInfoDto.fromJS(data[\"user\"]) : undefined;\r\n this.tenant = data[\"tenant\"] ? TenantLoginInfoDto.fromJS(data[\"tenant\"]) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): GetCurrentLoginInformationsOutput {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new GetCurrentLoginInformationsOutput();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"application\"] = this.application ? this.application.toJSON() : undefined;\r\n data[\"user\"] = this.user ? this.user.toJSON() : undefined;\r\n data[\"tenant\"] = this.tenant ? this.tenant.toJSON() : undefined;\r\n return data; \r\n }\r\n\r\n clone(): GetCurrentLoginInformationsOutput {\r\n const json = this.toJSON();\r\n let result = new GetCurrentLoginInformationsOutput();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IGetCurrentLoginInformationsOutput {\r\n application: ApplicationInfoDto | undefined;\r\n user: UserLoginInfoDto | undefined;\r\n tenant: TenantLoginInfoDto | undefined;\r\n}\r\n\r\nexport class ApplicationInfoDto implements IApplicationInfoDto {\r\n version: string | undefined;\r\n releaseDate: moment.Moment | undefined;\r\n features: { [key: string] : boolean; } | undefined;\r\n\r\n constructor(data?: IApplicationInfoDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.version = data[\"version\"];\r\n this.releaseDate = data[\"releaseDate\"] ? moment(data[\"releaseDate\"].toString()) : undefined;\r\n if (data[\"features\"]) {\r\n this.features = {};\r\n for (let key in data[\"features\"]) {\r\n if (data[\"features\"].hasOwnProperty(key))\r\n this.features[key] = data[\"features\"][key];\r\n }\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): ApplicationInfoDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ApplicationInfoDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"version\"] = this.version;\r\n data[\"releaseDate\"] = this.releaseDate ? this.releaseDate.toISOString() : undefined;\r\n if (this.features) {\r\n data[\"features\"] = {};\r\n for (let key in this.features) {\r\n if (this.features.hasOwnProperty(key))\r\n data[\"features\"][key] = this.features[key];\r\n }\r\n }\r\n return data; \r\n }\r\n\r\n clone(): ApplicationInfoDto {\r\n const json = this.toJSON();\r\n let result = new ApplicationInfoDto();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IApplicationInfoDto {\r\n version: string | undefined;\r\n releaseDate: moment.Moment | undefined;\r\n features: { [key: string] : boolean; } | undefined;\r\n}\r\n\r\nexport class UserLoginInfoDto implements IUserLoginInfoDto {\r\n name: string | undefined;\r\n surname: string | undefined;\r\n userName: string | undefined;\r\n emailAddress: string | undefined;\r\n id: number | undefined;\r\n\r\n constructor(data?: IUserLoginInfoDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.name = data[\"name\"];\r\n this.surname = data[\"surname\"];\r\n this.userName = data[\"userName\"];\r\n this.emailAddress = data[\"emailAddress\"];\r\n this.id = data[\"id\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UserLoginInfoDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UserLoginInfoDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"name\"] = this.name;\r\n data[\"surname\"] = this.surname;\r\n data[\"userName\"] = this.userName;\r\n data[\"emailAddress\"] = this.emailAddress;\r\n data[\"id\"] = this.id;\r\n return data; \r\n }\r\n\r\n clone(): UserLoginInfoDto {\r\n const json = this.toJSON();\r\n let result = new UserLoginInfoDto();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IUserLoginInfoDto {\r\n name: string | undefined;\r\n surname: string | undefined;\r\n userName: string | undefined;\r\n emailAddress: string | undefined;\r\n id: number | undefined;\r\n}\r\n\r\nexport class TenantLoginInfoDto implements ITenantLoginInfoDto {\r\n tenancyName: string | undefined;\r\n name: string | undefined;\r\n id: number | undefined;\r\n\r\n constructor(data?: ITenantLoginInfoDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.tenancyName = data[\"tenancyName\"];\r\n this.name = data[\"name\"];\r\n this.id = data[\"id\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): TenantLoginInfoDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new TenantLoginInfoDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"tenancyName\"] = this.tenancyName;\r\n data[\"name\"] = this.name;\r\n data[\"id\"] = this.id;\r\n return data; \r\n }\r\n\r\n clone(): TenantLoginInfoDto {\r\n const json = this.toJSON();\r\n let result = new TenantLoginInfoDto();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface ITenantLoginInfoDto {\r\n tenancyName: string | undefined;\r\n name: string | undefined;\r\n id: number | undefined;\r\n}\r\n\r\nexport class CreateTenantDto implements ICreateTenantDto {\r\n tenancyName: string;\r\n name: string;\r\n adminEmailAddress: string;\r\n connectionString: string | undefined;\r\n isActive: boolean | undefined;\r\n\r\n constructor(data?: ICreateTenantDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.tenancyName = data[\"tenancyName\"];\r\n this.name = data[\"name\"];\r\n this.adminEmailAddress = data[\"adminEmailAddress\"];\r\n this.connectionString = data[\"connectionString\"];\r\n this.isActive = data[\"isActive\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): CreateTenantDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateTenantDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"tenancyName\"] = this.tenancyName;\r\n data[\"name\"] = this.name;\r\n data[\"adminEmailAddress\"] = this.adminEmailAddress;\r\n data[\"connectionString\"] = this.connectionString;\r\n data[\"isActive\"] = this.isActive;\r\n return data; \r\n }\r\n\r\n clone(): CreateTenantDto {\r\n const json = this.toJSON();\r\n let result = new CreateTenantDto();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface ICreateTenantDto {\r\n tenancyName: string;\r\n name: string;\r\n adminEmailAddress: string;\r\n connectionString: string | undefined;\r\n isActive: boolean | undefined;\r\n}\r\n\r\nexport class TenantDto implements ITenantDto {\r\n tenancyName: string;\r\n name: string;\r\n isActive: boolean | undefined;\r\n id: number | undefined;\r\n\r\n constructor(data?: ITenantDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.tenancyName = data[\"tenancyName\"];\r\n this.name = data[\"name\"];\r\n this.isActive = data[\"isActive\"];\r\n this.id = data[\"id\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): TenantDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new TenantDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"tenancyName\"] = this.tenancyName;\r\n data[\"name\"] = this.name;\r\n data[\"isActive\"] = this.isActive;\r\n data[\"id\"] = this.id;\r\n return data; \r\n }\r\n\r\n clone(): TenantDto {\r\n const json = this.toJSON();\r\n let result = new TenantDto();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface ITenantDto {\r\n tenancyName: string;\r\n name: string;\r\n isActive: boolean | undefined;\r\n id: number | undefined;\r\n}\r\n\r\nexport class PagedResultDtoOfTenantDto implements IPagedResultDtoOfTenantDto {\r\n totalCount: number | undefined;\r\n items: TenantDto[] | undefined;\r\n\r\n constructor(data?: IPagedResultDtoOfTenantDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.totalCount = data[\"totalCount\"];\r\n if (data[\"items\"] && data[\"items\"].constructor === Array) {\r\n this.items = [];\r\n for (let item of data[\"items\"])\r\n this.items.push(TenantDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): PagedResultDtoOfTenantDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new PagedResultDtoOfTenantDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"totalCount\"] = this.totalCount;\r\n if (this.items && this.items.constructor === Array) {\r\n data[\"items\"] = [];\r\n for (let item of this.items)\r\n data[\"items\"].push(item.toJSON());\r\n }\r\n return data; \r\n }\r\n\r\n clone(): PagedResultDtoOfTenantDto {\r\n const json = this.toJSON();\r\n let result = new PagedResultDtoOfTenantDto();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IPagedResultDtoOfTenantDto {\r\n totalCount: number | undefined;\r\n items: TenantDto[] | undefined;\r\n}\r\n\r\nexport class AuthenticateModel implements IAuthenticateModel {\r\n userNameOrEmailAddress: string;\r\n password: string;\r\n rememberClient: boolean | undefined;\r\n\r\n constructor(data?: IAuthenticateModel) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.userNameOrEmailAddress = data[\"userNameOrEmailAddress\"];\r\n this.password = data[\"password\"];\r\n this.rememberClient = data[\"rememberClient\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): AuthenticateModel {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new AuthenticateModel();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"userNameOrEmailAddress\"] = this.userNameOrEmailAddress;\r\n data[\"password\"] = this.password;\r\n data[\"rememberClient\"] = this.rememberClient;\r\n return data; \r\n }\r\n\r\n clone(): AuthenticateModel {\r\n const json = this.toJSON();\r\n let result = new AuthenticateModel();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IAuthenticateModel {\r\n userNameOrEmailAddress: string;\r\n password: string;\r\n rememberClient: boolean | undefined;\r\n}\r\n\r\nexport class AuthenticateResultModel implements IAuthenticateResultModel {\r\n accessToken: string | undefined;\r\n encryptedAccessToken: string | undefined;\r\n expireInSeconds: number | undefined;\r\n userId: number | undefined;\r\n\r\n constructor(data?: IAuthenticateResultModel) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.accessToken = data[\"accessToken\"];\r\n this.encryptedAccessToken = data[\"encryptedAccessToken\"];\r\n this.expireInSeconds = data[\"expireInSeconds\"];\r\n this.userId = data[\"userId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): AuthenticateResultModel {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new AuthenticateResultModel();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"accessToken\"] = this.accessToken;\r\n data[\"encryptedAccessToken\"] = this.encryptedAccessToken;\r\n data[\"expireInSeconds\"] = this.expireInSeconds;\r\n data[\"userId\"] = this.userId;\r\n return data; \r\n }\r\n\r\n clone(): AuthenticateResultModel {\r\n const json = this.toJSON();\r\n let result = new AuthenticateResultModel();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IAuthenticateResultModel {\r\n accessToken: string | undefined;\r\n encryptedAccessToken: string | undefined;\r\n expireInSeconds: number | undefined;\r\n userId: number | undefined;\r\n}\r\n\r\nexport class ExternalLoginProviderInfoModel implements IExternalLoginProviderInfoModel {\r\n name: string | undefined;\r\n clientId: string | undefined;\r\n\r\n constructor(data?: IExternalLoginProviderInfoModel) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.name = data[\"name\"];\r\n this.clientId = data[\"clientId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ExternalLoginProviderInfoModel {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ExternalLoginProviderInfoModel();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"name\"] = this.name;\r\n data[\"clientId\"] = this.clientId;\r\n return data; \r\n }\r\n\r\n clone(): ExternalLoginProviderInfoModel {\r\n const json = this.toJSON();\r\n let result = new ExternalLoginProviderInfoModel();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IExternalLoginProviderInfoModel {\r\n name: string | undefined;\r\n clientId: string | undefined;\r\n}\r\n\r\nexport class ExternalAuthenticateModel implements IExternalAuthenticateModel {\r\n authProvider: string;\r\n providerKey: string;\r\n providerAccessCode: string;\r\n\r\n constructor(data?: IExternalAuthenticateModel) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.authProvider = data[\"authProvider\"];\r\n this.providerKey = data[\"providerKey\"];\r\n this.providerAccessCode = data[\"providerAccessCode\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ExternalAuthenticateModel {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ExternalAuthenticateModel();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"authProvider\"] = this.authProvider;\r\n data[\"providerKey\"] = this.providerKey;\r\n data[\"providerAccessCode\"] = this.providerAccessCode;\r\n return data; \r\n }\r\n\r\n clone(): ExternalAuthenticateModel {\r\n const json = this.toJSON();\r\n let result = new ExternalAuthenticateModel();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IExternalAuthenticateModel {\r\n authProvider: string;\r\n providerKey: string;\r\n providerAccessCode: string;\r\n}\r\n\r\nexport class ExternalAuthenticateResultModel implements IExternalAuthenticateResultModel {\r\n accessToken: string | undefined;\r\n encryptedAccessToken: string | undefined;\r\n expireInSeconds: number | undefined;\r\n waitingForActivation: boolean | undefined;\r\n\r\n constructor(data?: IExternalAuthenticateResultModel) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.accessToken = data[\"accessToken\"];\r\n this.encryptedAccessToken = data[\"encryptedAccessToken\"];\r\n this.expireInSeconds = data[\"expireInSeconds\"];\r\n this.waitingForActivation = data[\"waitingForActivation\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ExternalAuthenticateResultModel {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ExternalAuthenticateResultModel();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"accessToken\"] = this.accessToken;\r\n data[\"encryptedAccessToken\"] = this.encryptedAccessToken;\r\n data[\"expireInSeconds\"] = this.expireInSeconds;\r\n data[\"waitingForActivation\"] = this.waitingForActivation;\r\n return data; \r\n }\r\n\r\n clone(): ExternalAuthenticateResultModel {\r\n const json = this.toJSON();\r\n let result = new ExternalAuthenticateResultModel();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IExternalAuthenticateResultModel {\r\n accessToken: string | undefined;\r\n encryptedAccessToken: string | undefined;\r\n expireInSeconds: number | undefined;\r\n waitingForActivation: boolean | undefined;\r\n}\r\n\r\nexport class CreateUserDto implements ICreateUserDto {\r\n userName: string;\r\n name: string;\r\n surname: string;\r\n emailAddress: string;\r\n isActive: boolean | undefined;\r\n roleNames: string[] | undefined;\r\n password: string;\r\n\r\n constructor(data?: ICreateUserDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.userName = data[\"userName\"];\r\n this.name = data[\"name\"];\r\n this.surname = data[\"surname\"];\r\n this.emailAddress = data[\"emailAddress\"];\r\n this.isActive = data[\"isActive\"];\r\n if (data[\"roleNames\"] && data[\"roleNames\"].constructor === Array) {\r\n this.roleNames = [];\r\n for (let item of data[\"roleNames\"])\r\n this.roleNames.push(item);\r\n }\r\n this.password = data[\"password\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): CreateUserDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateUserDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"userName\"] = this.userName;\r\n data[\"name\"] = this.name;\r\n data[\"surname\"] = this.surname;\r\n data[\"emailAddress\"] = this.emailAddress;\r\n data[\"isActive\"] = this.isActive;\r\n if (this.roleNames && this.roleNames.constructor === Array) {\r\n data[\"roleNames\"] = [];\r\n for (let item of this.roleNames)\r\n data[\"roleNames\"].push(item);\r\n }\r\n data[\"password\"] = this.password;\r\n return data; \r\n }\r\n\r\n clone(): CreateUserDto {\r\n const json = this.toJSON();\r\n let result = new CreateUserDto();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface ICreateUserDto {\r\n userName: string;\r\n name: string;\r\n surname: string;\r\n emailAddress: string;\r\n isActive: boolean | undefined;\r\n roleNames: string[] | undefined;\r\n password: string;\r\n}\r\n\r\nexport class UserDto implements IUserDto {\r\n userName: string;\r\n name: string;\r\n surname: string;\r\n emailAddress: string;\r\n isActive: boolean | undefined;\r\n fullName: string | undefined;\r\n lastLoginTime: moment.Moment | undefined;\r\n creationTime: moment.Moment | undefined;\r\n roleNames: string[] | undefined;\r\n id: number | undefined;\r\n\r\n constructor(data?: IUserDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.userName = data[\"userName\"];\r\n this.name = data[\"name\"];\r\n this.surname = data[\"surname\"];\r\n this.emailAddress = data[\"emailAddress\"];\r\n this.isActive = data[\"isActive\"];\r\n this.fullName = data[\"fullName\"];\r\n this.lastLoginTime = data[\"lastLoginTime\"] ? moment(data[\"lastLoginTime\"].toString()) : undefined;\r\n this.creationTime = data[\"creationTime\"] ? moment(data[\"creationTime\"].toString()) : undefined;\r\n if (data[\"roleNames\"] && data[\"roleNames\"].constructor === Array) {\r\n this.roleNames = [];\r\n for (let item of data[\"roleNames\"])\r\n this.roleNames.push(item);\r\n }\r\n this.id = data[\"id\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UserDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UserDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"userName\"] = this.userName;\r\n data[\"name\"] = this.name;\r\n data[\"surname\"] = this.surname;\r\n data[\"emailAddress\"] = this.emailAddress;\r\n data[\"isActive\"] = this.isActive;\r\n data[\"fullName\"] = this.fullName;\r\n data[\"lastLoginTime\"] = this.lastLoginTime ? this.lastLoginTime.toISOString() : undefined;\r\n data[\"creationTime\"] = this.creationTime ? this.creationTime.toISOString() : undefined;\r\n if (this.roleNames && this.roleNames.constructor === Array) {\r\n data[\"roleNames\"] = [];\r\n for (let item of this.roleNames)\r\n data[\"roleNames\"].push(item);\r\n }\r\n data[\"id\"] = this.id;\r\n return data; \r\n }\r\n\r\n clone(): UserDto {\r\n const json = this.toJSON();\r\n let result = new UserDto();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IUserDto {\r\n userName: string;\r\n name: string;\r\n surname: string;\r\n emailAddress: string;\r\n isActive: boolean | undefined;\r\n fullName: string | undefined;\r\n lastLoginTime: moment.Moment | undefined;\r\n creationTime: moment.Moment | undefined;\r\n roleNames: string[] | undefined;\r\n id: number | undefined;\r\n}\r\n\r\nexport class ListResultDtoOfRoleDto implements IListResultDtoOfRoleDto {\r\n items: RoleDto[] | undefined;\r\n\r\n constructor(data?: IListResultDtoOfRoleDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n if (data[\"items\"] && data[\"items\"].constructor === Array) {\r\n this.items = [];\r\n for (let item of data[\"items\"])\r\n this.items.push(RoleDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): ListResultDtoOfRoleDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ListResultDtoOfRoleDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (this.items && this.items.constructor === Array) {\r\n data[\"items\"] = [];\r\n for (let item of this.items)\r\n data[\"items\"].push(item.toJSON());\r\n }\r\n return data; \r\n }\r\n\r\n clone(): ListResultDtoOfRoleDto {\r\n const json = this.toJSON();\r\n let result = new ListResultDtoOfRoleDto();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IListResultDtoOfRoleDto {\r\n items: RoleDto[] | undefined;\r\n}\r\n\r\nexport class ChangeUserLanguageDto implements IChangeUserLanguageDto {\r\n languageName: string;\r\n\r\n constructor(data?: IChangeUserLanguageDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.languageName = data[\"languageName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ChangeUserLanguageDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ChangeUserLanguageDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"languageName\"] = this.languageName;\r\n return data; \r\n }\r\n\r\n clone(): ChangeUserLanguageDto {\r\n const json = this.toJSON();\r\n let result = new ChangeUserLanguageDto();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IChangeUserLanguageDto {\r\n languageName: string;\r\n}\r\n\r\nexport class PagedResultDtoOfUserDto implements IPagedResultDtoOfUserDto {\r\n totalCount: number | undefined;\r\n items: UserDto[] | undefined;\r\n\r\n constructor(data?: IPagedResultDtoOfUserDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(data?: any) {\r\n if (data) {\r\n this.totalCount = data[\"totalCount\"];\r\n if (data[\"items\"] && data[\"items\"].constructor === Array) {\r\n this.items = [];\r\n for (let item of data[\"items\"])\r\n this.items.push(UserDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): PagedResultDtoOfUserDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new PagedResultDtoOfUserDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"totalCount\"] = this.totalCount;\r\n if (this.items && this.items.constructor === Array) {\r\n data[\"items\"] = [];\r\n for (let item of this.items)\r\n data[\"items\"].push(item.toJSON());\r\n }\r\n return data; \r\n }\r\n\r\n clone(): PagedResultDtoOfUserDto {\r\n const json = this.toJSON();\r\n let result = new PagedResultDtoOfUserDto();\r\n result.init(json);\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IPagedResultDtoOfUserDto {\r\n totalCount: number | undefined;\r\n items: UserDto[] | undefined;\r\n}\r\n\r\nexport enum IsTenantAvailableOutputState {\r\n _1 = 1, \r\n _2 = 2, \r\n _3 = 3, \r\n}\r\n\r\nexport class SwaggerException extends Error {\r\n message: string;\r\n status: number; \r\n response: string; \r\n headers: { [key: string]: any; };\r\n result: any; \r\n\r\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\r\n super();\r\n\r\n this.message = message;\r\n this.status = status;\r\n this.response = response;\r\n this.headers = headers;\r\n this.result = result;\r\n }\r\n\r\n protected isSwaggerException = true;\r\n\r\n static isSwaggerException(obj: any): obj is SwaggerException {\r\n return obj.isSwaggerException === true;\r\n }\r\n}\r\n\r\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): Observable {\r\n if(result !== null && result !== undefined)\r\n return _observableThrow(result);\r\n else\r\n return _observableThrow(new SwaggerException(message, status, response, headers, null));\r\n}\r\n\r\nfunction blobToText(blob: any): Observable {\r\n return new Observable((observer: any) => {\r\n if (!blob) {\r\n observer.next(\"\");\r\n observer.complete();\r\n } else {\r\n let reader = new FileReader(); \r\n reader.onload = function() { \r\n observer.next(this.result);\r\n observer.complete();\r\n }\r\n reader.readAsText(blob); \r\n }\r\n });\r\n}","import { NgModule } from '@angular/core';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { AbpHttpInterceptor } from '@abp/abpHttpInterceptor';\r\n\r\nimport * as ApiServiceProxies from './service-proxies';\r\n\r\n@NgModule({\r\n providers: [\r\n ApiServiceProxies.RoleServiceProxy,\r\n ApiServiceProxies.SessionServiceProxy,\r\n ApiServiceProxies.TenantServiceProxy,\r\n ApiServiceProxies.UserServiceProxy,\r\n ApiServiceProxies.TokenAuthServiceProxy,\r\n ApiServiceProxies.AccountServiceProxy,\r\n ApiServiceProxies.ConfigurationServiceProxy,\r\n { provide: HTTP_INTERCEPTORS, useClass: AbpHttpInterceptor, multi: true }\r\n ]\r\n})\r\nexport class ServiceProxyModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { AdminHeaderProperties } from '@shared/interfaces/AdminHeader';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AdminDynamicHeaderService {\r\n defaultValues: AdminHeaderProperties = {\r\n title: 'Admin',\r\n breadcrumbs: [],\r\n iconPath: 'icon-users'\r\n };\r\n userPermission: any;\r\n userPermissions: any;\r\n\r\n /* breadcrumbs array */\r\n properties: BehaviorSubject = new BehaviorSubject(this.defaultValues);\r\n userProperty: BehaviorSubject = new BehaviorSubject(null);\r\n permissions: BehaviorSubject = new BehaviorSubject(this.userPermissions);\r\n permissionsWhenPageReload: BehaviorSubject = new BehaviorSubject(this.userPermission);\r\n constructor() {}\r\n\r\n setproperties(object: AdminHeaderProperties) {\r\n this.properties.next(object);\r\n }\r\n setUserDetails() {\r\n this.userProperty.next(null);\r\n }\r\n setUserPermission(object: any) {\r\n this.permissions.next(object);\r\n }\r\n setUserPermissionWhenPageReload(object: any) {\r\n this.permissionsWhenPageReload.next(object);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { map, catchError } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiService {\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) { }\r\n\r\n public get(endPoint): Observable {\r\n let data = this.http.get(endPoint);\r\n return data;\r\n }\r\n\r\n getAsPromise(url) {\r\n return new Promise((resolve, reject) => {\r\n this.http.get(url).subscribe((responce: any) => {\r\n if (responce) {\r\n resolve({ 'status': true, 'data': responce.data });\r\n } else {\r\n reject({ 'status': false, 'data': responce })\r\n }\r\n },\r\n function (err) {\r\n this.handleError(err);\r\n reject({ 'status': false });\r\n })\r\n });\r\n }\r\n\r\n getAsObservable(endpoint: string): Observable {\r\n let responce: any;\r\n return new Observable(observer => {\r\n this.http.get(endpoint).subscribe(data => {\r\n responce = data;\r\n observer.next(responce.data);\r\n observer.complete();\r\n },\r\n err => {\r\n observer.error(err.message);\r\n observer.complete();\r\n })\r\n })\r\n }\r\n\r\n post(data, url) {\r\n return this.http.post(url,this.convertToFormData(data));\r\n }\r\n\r\n convertToFormData(object) {\r\n const formData = new FormData();\r\n Object.keys(object).forEach(key => formData.append(key, object[key]));\r\n return formData;\r\n }\r\n\r\n\r\n handleError(error: HttpErrorResponse) {\r\n if (error.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n console.error('An error occurred:', error.error.message);\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n console.error(\r\n `Backend returned code ${error.status}, ` +\r\n `body was: ${error.error}`);\r\n }\r\n // return an observable with a user-facing error message\r\n return throwError(\r\n 'Something bad happened; please try again later.');\r\n };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { FAQDto } from '@shared/interfaces/faq'\r\nimport { LoginService } from './login.service';\r\nimport { RestService } from './rest.service';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { IResetPasswordDto } from '@shared/interfaces/users';\r\nimport * as CryptoJS from 'crypto-js';\r\nimport { key } from '@shared/common/constants';\r\nimport { CookieService } from 'ngx-cookie-service';\r\n\r\n@Injectable()\r\nexport class AuthService extends RestService {\r\n private isFaqDeleted = new BehaviorSubject(\"default message\");\r\n currentDeleteStatus = this.isFaqDeleted.asObservable();\r\n cookieValue = '';\r\n\r\n constructor(_http: HttpClient, loginService: LoginService, private cookieService: CookieService ) {\r\n super(_http, loginService);\r\n }\r\n\r\n login(loginDetails: any) {\r\n abp.auth.clearToken();\r\n return this.POST('TokenAuth/Authenticate', loginDetails);\r\n }\r\n \r\n signUp(signUpDetails: any) {\r\n return this.POST('CustomerSignUP/Create', signUpDetails);\r\n }\r\n\r\n forgotPassWord(userId:string) { \r\n return this.GET('User/SendResetPasswordLink?userId='+userId);\r\n }\r\n\r\n forgotUserPassWord(email:string) { \r\n return this.PUT('Account/ForgotPassword?email='+email,{});\r\n }\r\n\r\n getUserInfo(emailId:string) {\r\n return this.GET('User/GetUserByEmailId?input='+ emailId);\r\n }\r\n passwordNullSet(email:string)\r\n {\r\n return this.GET('User/SetPasswordNull?input='+ email);\r\n }\r\n getPermissions(id:number) {\r\n return this.GET('Role/GetRolePermissions?id='+id);\r\n }\r\n\r\n logout() {\r\n return this.GET('TokenAuth/Signout');\r\n }\r\n\r\n checkPassWordValidity(userId:any) {\r\n return this.GET('Account/PasswordValidityCheck?userId='+ userId)\r\n }\r\n \r\n activateUser(userId:any) {\r\n return this.GET('CustomerSignUP/ActivateUser?userId='+ userId)\r\n }\r\n \r\n resetPassWord(resetPassWordDto :IResetPasswordDto) {\r\n return this.POST('Account/ResetPassword',resetPassWordDto);\r\n }\r\n\r\n getUserPermissions() {\r\n return this.GET('Role/GetUserRolePermissions');\r\n }\r\n\r\n encryptUserDetails(user: any) {\r\n this.cookieService.delete('isRemember');\r\n if (user.rememberClient == true) {\r\n let encryptedUserDetails = CryptoJS.AES.encrypt(user.password, key).toString(); \r\n let encEmail = btoa(user.userNameOrEmailAddress);\r\n let encPasswd = btoa(encryptedUserDetails);\r\n this.cookieService.set('UserAuthId', encPasswd);\r\n this.cookieService.set('emailId', encEmail);\r\n this.cookieService.set('isRemember', user.rememberClient ? 'true' : '');\r\n }\r\n }\r\n \r\n decryptUserDetails(encPasswd) {\r\n let result = CryptoJS.AES.decrypt(encPasswd, key);\r\n var decryptedData = result.toString(CryptoJS.enc.Utf8);\r\n return decryptedData;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { UserDto, RoleList } from '@shared/interfaces/nec-user';\r\nimport { LoginService } from './login.service';\r\nimport { RestService } from './rest.service';\r\nimport {BannerAddDetails} from '@shared/interfaces/banner';\r\n@Injectable({\r\n providedIn: 'root'\r\n })\r\nexport class BannerService extends RestService {\r\n\r\n constructor(_http: HttpClient, loginService: LoginService) {\r\n super(_http, loginService);\r\n }\r\n\r\n getBanner(params: HttpParams) {\r\n return this.GET('Banner/GetAll', params);\r\n }\r\n getBannerCategory() {\r\n return this.GET('Banner/GetAllBannerCategories');\r\n }\r\n AddBanner(bannerDetails:BannerAddDetails )\r\n {\r\n return this.POST('Banner/Create',bannerDetails); \r\n } \r\n UpdateBanner(bannerDetails:BannerAddDetails )\r\n {\r\n return this.PUT('Banner/Update',bannerDetails); \r\n }\r\n deleteBanner(bannerId: number) {\r\n return this.DELETE('Banner/Delete?id=' + bannerId);\r\n } \r\n GetBanner(bannerId:number) {\r\n return this.GET('Banner/Get?id='+bannerId);\r\n } \r\n checkDuplicateName(calculatorId: number,name:string,type:number) {\r\n return this.POST('Banner/CheckDuplicateName?id=' + calculatorId+'&name='+name+'&type='+type, '');\r\n } \r\n GetBannerImages() {\r\n return this.GET('Banner/GetBannerImages');\r\n } \r\n \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { exists } from 'fs';\r\nimport { FormControl } from '@angular/forms';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommonService {\r\n expandedMenu: string;\r\n\r\n constructor() {}\r\n\r\n numberWithCommas(x) {\r\n if (x) return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n else return x;\r\n }\r\n\r\n formatDate(date) {\r\n var d = date,\r\n month = '' + (d.getMonth() + 1),\r\n day = '' + d.getDate(),\r\n year = d.getFullYear();\r\n\r\n if (month.length < 2) month = '0' + month;\r\n if (day.length < 2) day = '0' + day;\r\n\r\n return [month, day, year].join('/');\r\n }\r\n\r\n processDate(date) {\r\n var parts = date.split('/');\r\n return new Date(parts[2], parts[0] - 1, parts[1]);\r\n }\r\n\r\n getPaginationLength(module) {\r\n var pagination = [];\r\n switch (module) {\r\n case 'user':\r\n pagination = [10, 20, 50];\r\n break;\r\n case 'user-contract':\r\n pagination = [10, 20, 50];\r\n break;\r\n case 'user-contract-grid':\r\n pagination = [8, 16, 24];\r\n break;\r\n case 'user-forms':\r\n pagination = [10, 20, 50];\r\n break;\r\n case 'customer':\r\n pagination = [10, 20, 50];\r\n break;\r\n case 'request':\r\n pagination = [10, 20, 50];\r\n break;\r\n case 'finance':\r\n pagination = [10, 20, 50];\r\n break;\r\n case 'calculator':\r\n pagination = [10, 20, 50];\r\n break;\r\n case 'banner':\r\n pagination = [10, 20, 50];\r\n break;\r\n case 'form':\r\n pagination = [10, 20, 50];\r\n break;\r\n case 'faq':\r\n pagination = [10, 20, 50];\r\n break;\r\n case 'customer_grid':\r\n pagination = [12, 24, 48];\r\n break;\r\n case 'user_grid':\r\n pagination = [12, 24, 48];\r\n break;\r\n case 'report':\r\n pagination = [10, 20, 50];\r\n break;\r\n case 'customer_details_users':\r\n pagination = [5, 10, 15];\r\n break;\r\n case 'customer_details':\r\n pagination = [10, 20, 50];\r\n break;\r\n default:\r\n pagination = [10, 20, 50];\r\n break;\r\n }\r\n return pagination;\r\n }\r\n numberOnly(event: any, flag: string) {\r\n const charCode = event.which ? event.which : event.keyCode;\r\n if (charCode > 31 && (charCode < 48 || charCode > 57)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n public noWhitespaceValidator(control: FormControl) {\r\n const isWhitespace = (control.value || '').trim().length === 0;\r\n const isValid = !isWhitespace;\r\n return isValid ? null : { whitespace: true };\r\n }\r\n omit_special_char(event) {\r\n var k;\r\n k = event.charCode; // k = event.keyCode; (Both can be used)\r\n return (k > 64 && k < 91) || (k > 96 && k < 123) || k == 8 || k == 32 || (k >= 48 && k <= 57);\r\n }\r\n utcify(date: Date): Date {\r\n if (date) {\r\n return new Date(date.toUTCString());\r\n } else {\r\n return new Date();\r\n }\r\n }\r\n\r\n convertUTCDateToLocalDate(date: Date) {\r\n if (date) {\r\n var newDate = new Date(date);\r\n // var offset = newDate.getTimezoneOffset() / 60;\r\n //var offsetTime = new Date(newDate.getTime() - offset * 60 * 1000 * 60);\r\n return newDate;\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { CustomerActiveMenu } from '@shared/interfaces/customer-menu';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CustomerCommonService {\r\n foldedMenu: BehaviorSubject = new BehaviorSubject(false);\r\n activeMenu: CustomerActiveMenu = {\r\n ActiveMenu: ''\r\n };\r\n activeMenuSubject: BehaviorSubject = new BehaviorSubject(this.activeMenu);\r\n \r\n private amountSource = new BehaviorSubject(0);\r\n currentFinanceAmount = this.amountSource.asObservable();\r\n\r\n constructor() {}\r\n\r\n changeMessage(amount: number) {\r\n this.amountSource.next(amount)\r\n }\r\n\r\n setActiveMenu(menu: CustomerActiveMenu) {\r\n this.activeMenu = menu;\r\n this.activeMenuSubject.next(this.activeMenu);\r\n // console.log('set active', this.activeMenu);\r\n }\r\n numberWithCommas(x) {\r\n if (x) return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n else return x;\r\n }\r\n formatDate(date) {\r\n var d = date,\r\n month = '' + (d.getMonth() + 1),\r\n day = '' + d.getDate(),\r\n year = d.getFullYear();\r\n\r\n if (month.length < 2) month = '0' + month;\r\n if (day.length < 2) day = '0' + day;\r\n return [month, day, year].join('/');\r\n }\r\n\r\n processDate(date) {\r\n var parts = date.split('/');\r\n return new Date(parts[2], parts[0] - 1, parts[1]);\r\n }\r\n}\r\n","import { Injectable, EventEmitter } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { DatatableOptions } from '@shared/models/datatable';\r\n\r\nimport { LoginService } from './login.service';\r\nimport { RestService } from './rest.service';\r\nimport { UserDto } from '@shared/interfaces/nec-user';\r\nimport { CustomerUpdateDetails ,NonPortalCustomerAddDto } from '@shared/interfaces/customer';\r\n\r\n\r\n@Injectable()\r\nexport class CustomerService extends RestService {\r\n cutsomerId: BehaviorSubject = new BehaviorSubject(0);\r\n isCustomerEdited: BehaviorSubject = new BehaviorSubject(null);\r\n emitCustomerCount = new EventEmitter();\r\n constructor(_http: HttpClient, loginService: LoginService) {\r\n super(_http, loginService);\r\n }\r\n\r\n getFilteredCustomers(filter: string) {\r\n return this.GET('Customer/GetCustomers?customerName=' + filter);\r\n }\r\n\r\n getCustomers(params: HttpParams) {\r\n return this.GET('Customer/GetAll', params);\r\n }\r\n \r\n getCustomerUsers(params: HttpParams) {\r\n return this.GET('User/GetCustomerUsers', params);\r\n }\r\n\r\n changeCustomerStatus(customerId: number) {\r\n return this.PUT('Customer/Deactivate?customerId=' + customerId, '');\r\n }\r\n\r\n getCustomerDetails(id: number) {\r\n return this.GET('Customer/Get?id=' + id);\r\n }\r\n\r\n getCustomerContracts(params: HttpParams) {\r\n return this.GET('Customer/GetCustomerContract', params);\r\n }\r\n\r\n ChangeUserStatus(userId: number) {\r\n return this.PUT('User/ChangeUserStatus?userId=' + userId, '');\r\n }\r\n\r\n ChangeCustomerUserStatus(userId: number) {\r\n return this.PUT('User/ChangeCustomerUserStatus?userId=' + userId, '');\r\n }\r\n \r\n deleteUsers(userId: number) {\r\n return this.DELETE('User/Delete?id=' + userId);\r\n }\r\n \r\n CustomerUserDelete(userId: number) {\r\n return this.DELETE('User/CustomerUserDelete?id=' + userId);\r\n }\r\n\r\n getCustomerCount() {\r\n var newDate = new Date();\r\n var offset = newDate.getTimezoneOffset();\r\n return this.GET('Customer/GetCustomersCount?timeZone='+offset);\r\n }\r\n\r\n UpdateCustomerUser(userDetails: UserDto) {\r\n return this.PUT('User/UpdateCustomerUser', userDetails);\r\n }\r\n\r\n getContractCount(cutsomerId: number) {\r\n return this.GET('Customer/GetCustomerContractsCount?customerId=' + cutsomerId);\r\n }\r\n\r\n UpdateCustomer(custDetails: any) {\r\n return this.PUT('Customer/Update', custDetails);\r\n }\r\n\r\n SendLoginDetails(userId: any) {\r\n return this.PUT('User/SendLoginDetails?userId='+userId,'');\r\n }\r\n\r\n getCustomerProfileDetails(customerId: number) {\r\n return this.GET('User/SendLoginDetails?userId='+customerId);\r\n }\r\n\r\n getRequestFiledType() {\r\n return this.GET('Customer/GetCustomerEditFields');\r\n } \r\n\r\n getUserCustomerDetails(id: number,isUserProfile:boolean) {\r\n return this.GET('Customer/GetCutomerDetails?id=' + id + '&isUserProfile=' + isUserProfile);\r\n }\r\n\r\n getCustomerEditRequest(index: number, pageSize: number) {\r\n return this.GET('Customer/GetCustomerEditRequests?pageIndex=' + index+'&pageSize='+pageSize);\r\n }\r\n\r\n updateCustomerUser(userDetails: any) {\r\n return this.PUT('Customer/Update', userDetails);\r\n }\r\n\r\n getCustomerSignUP(params: HttpParams) {\r\n return this.GET('CustomerSignUP/GetAll', params);\r\n }\r\n\r\n getCustomerSignUPDetails(id: any) {\r\n return this.GET('CustomerSignUP/Get?Id='+id);\r\n }\r\n\r\n updateSignupCustomerStatus(params: any) {\r\n return this.PUT('CustomerSignUP/UpdateStatus', params);\r\n }\r\n\r\n getCustomerCCANDetails(params: HttpParams) {\r\n return this.GET('CustomerSignUP/GetCustomers?CCAN='+params);\r\n }\r\n\r\n updateSignedCustomerDetails(params: any) {\r\n return this.PUT('CustomerSignUP/UpdateSignUprequest', params);\r\n }\r\n updateInvoiceMailOpt(ccan: number,isAutomail:boolean,isUserProfile:boolean) {\r\n return this.PUT('Customer/UpdateInvoiceMailOpt?ccan=' + ccan + '&isAutomail=' + isAutomail + '&isUserProfile=' + isUserProfile,'');\r\n }\r\n\r\n downloadSignUpCustomerDetails(options: DatatableOptions) {\r\n let params = new HttpParams()\r\n .append('SortColumn', options.sortColumn)\r\n .append('SortDirection', options.sortDirection)\r\n .append('SearchKey', options.searchKey)\r\n .append('PageIndex', options.pageIndex.toString())\r\n .append('PageSize', options.pageSize.toString())\r\n\r\n if (options.filters) {\r\n options.filters.forEach(filter => {\r\n params = params.append('filter.' + filter.key, filter.value ? filter.value : '');\r\n })\r\n }\r\n return this.GET('CustomerSignUP/DownloadSignUpDetails', params);\r\n }\r\n\r\n getNonPortalCustomers(params: HttpParams) {\r\n return this.GET('Customer/GetAllNonPortalCustomers', params);\r\n }\r\n createNonPortalCustomer(nonPortalCustomer:NonPortalCustomerAddDto )\r\n {\r\n return this.POST('Customer/CreateNonPortalCustomer',nonPortalCustomer); \r\n }\r\n getTransactionFee(nonPortalCustomer:NonPortalCustomerAddDto )\r\n {\r\n return this.POST('Customer/GetTransactionFee',nonPortalCustomer); \r\n }\r\n}\r\n","import { Injectable, EventEmitter } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { LoginService } from './login.service';\r\nimport { RestService } from './rest.service';\r\n\r\n\r\n@Injectable()\r\nexport class DashboardService extends RestService {\r\n cutsomerId: BehaviorSubject = new BehaviorSubject(0);\r\n isCustomerEdited: BehaviorSubject = new BehaviorSubject(null);\r\n emitCustomerCount = new EventEmitter();\r\n constructor(_http: HttpClient, loginService: LoginService) {\r\n super(_http, loginService);\r\n }\r\n\r\n getDashboardDetails() {\r\n return this.GET('Dashboard/GetDashboardDetails');\r\n }\r\n getAdminInvoice()\r\n {\r\n return this.GET('Dashboard/GetAdminInvoice');\r\n }\r\n getTopCustomer()\r\n {\r\n return this.GET('Dashboard/GetTopCustomers');\r\n }\r\n getRequests()\r\n {\r\n return this.GET('Dashboard/GetRequests');\r\n }\r\n getCustomerLogin()\r\n {\r\n return this.GET('Dashboard/GetCustomerLogin'); \r\n }\r\n getDashboardHeader() {\r\n return this.GET('Dashboard/DashBoardHeader');\r\n }\r\n \r\n getAllInvoiceAmount(params: HttpParams) {\r\n return this.GET('Dashboard/GetAllAdminInvoice', params);\r\n }\r\n \r\n getAllRequests(params: HttpParams) {\r\n return this.GET('Dashboard/GetAllRequests', params);\r\n }\r\n \r\n getPaymentGraph() {\r\n return this.GET('Dashboard/GetPaymentGraph');\r\n }\r\n\r\n getCustomerInvoice()\r\n {\r\n return this.GET('Dashboard/GetCustomerInvoiceAmount');\r\n }\r\n \r\n \r\n getAllLoggedCustomers(params: HttpParams) {\r\n return this.GET('Dashboard/GetAllLoggedCustomers', params);\r\n }\r\n\r\n getCustomerContrats() {\r\n \r\n return this.GET('Dashboard/GetCustomerContracts');\r\n }\r\n getPendingPaymentAccounts()\r\n {\r\n return this.GET('Payment/GetPendingPaymentAccounts');\r\n }\r\n\r\n getACHAccountsToVerify() {\r\n \r\n return this.GET('Payment/GetMicrotransferVerificationPendingACHAccounts');\r\n }\r\n\r\n getTopCustomersViewAll(params: HttpParams) {\r\n return this.GET('Dashboard/GetTopCustomersViewAll', params);\r\n }\r\n\r\n getCreditACHViewAll(params: HttpParams) {\r\n return this.GET('Dashboard/GetCreditACHViewAll', params);\r\n }\r\n \r\n \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { ConfirmDialogComponent } from '@shared/common/confirm-dialog/confirm-dialog.component';\r\nimport { MatDialog, MatDialogRef } from '@angular/material';\r\n\r\n/**\r\n * ModalService - Service used to interact with the Modal Component\r\n */\r\n@Injectable()\r\nexport class DialogService {\r\n constructor(private dialog: MatDialog) {}\r\n public confirm(title: string, body: string): Observable {\r\n let dialogRef: MatDialogRef;\r\n\r\n dialogRef = this.dialog.open(ConfirmDialogComponent);\r\n dialogRef.componentInstance.dialogTitle = title;\r\n dialogRef.componentInstance.dialogBody = body;\r\n\r\n return dialogRef.afterClosed();\r\n }\r\n}\r\n","import { Injectable, EventEmitter } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { LoginService } from './login.service';\r\nimport { RestService } from './rest.service';\r\nimport { UserDto } from '@shared/interfaces/nec-user';\r\nimport { EmailTemplate } from '@shared/interfaces/email';\r\n\r\n\r\n@Injectable()\r\nexport class EmailService extends RestService {\r\n cutsomerId: BehaviorSubject = new BehaviorSubject(0);\r\n emitCustomerCount = new EventEmitter();\r\n constructor(_http: HttpClient, loginService: LoginService) {\r\n super(_http, loginService);\r\n }\r\n\r\n\r\n getEmailTemplates(params: HttpParams) {\r\n return this.GET('EmailTemplate/GetEmailTemplates', params);\r\n }\r\n\r\n getEmailDetails(id: number) {\r\n return this.GET('EmailTemplate/Get?id=' + id);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n changeCustomerStatus(customerId: number) {\r\n return this.PUT('Customer/Deactivate?customerId=' + customerId, '');\r\n }\r\n\r\n getCustomerDetails(id: number) {\r\n return this.GET('Customer/Get?id=' + id);\r\n }\r\n getCustomerContracts(params: HttpParams) {\r\n return this.GET('Customer/GetCustomerContract', params);\r\n }\r\n ChangeUserStatus(userId: number) {\r\n return this.PUT('User/ChangeUserStatus?userId=' + userId, '');\r\n }\r\n ChangeCustomerUserStatus(userId: number) {\r\n return this.PUT('User/ChangeCustomerUserStatus?userId=' + userId, '');\r\n }\r\n\r\n deleteUsers(userId: number) {\r\n return this.DELETE('User/Delete?id=' + userId);\r\n }\r\n\r\n CustomerUserDelete(userId: number) {\r\n return this.DELETE('User/CustomerUserDelete?id=' + userId);\r\n }\r\n getCustomerCount() {\r\n var newDate = new Date();\r\n var offset = newDate.getTimezoneOffset();\r\n return this.GET('Customer/GetCustomersCount?timeZone=' + offset);\r\n }\r\n UpdateCustomerUser(userDetails: UserDto) {\r\n return this.PUT('User/UpdateCustomerUser', userDetails);\r\n }\r\n getContractCount(cutsomerId: number) {\r\n return this.GET('Customer/GetCustomerContractsCount?customerId=' + cutsomerId);\r\n }\r\n UpdateCustomer(custDetails: any) {\r\n return this.PUT('Customer/Update', custDetails);\r\n }\r\n SendLoginDetails(userId: any) {\r\n return this.PUT('User/SendLoginDetails?userId=' + userId, '');\r\n }\r\n getCustomerProfileDetails(customerId: number) {\r\n return this.GET('User/SendLoginDetails?userId=' + customerId);\r\n }\r\n\r\n getRequestFiledType() {\r\n return this.GET('Customer/GetCustomerEditFields');\r\n }\r\n\r\n getUserCustomerDetails(id: number) {\r\n return this.GET('Customer/GetCutomerDetails?id=' + id);\r\n }\r\n\r\n updateCustomerUser(userDetails: any) {\r\n return this.PUT('Customer/Update', userDetails);\r\n }\r\n\r\n getEmailTemplateSmartTags(id: number) {\r\n return this.GET('EmailTemplate/GetEmailSmartTags?id=' + id);\r\n }\r\n\r\n updateEmailTemplate(emailTemplate: EmailTemplate) {\r\n return this.PUT('EmailTemplate/Update', emailTemplate);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { FAQDto } from '@shared/interfaces/faq'\r\nimport { LoginService } from './login.service';\r\nimport { RestService } from './rest.service';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FaqService extends RestService {\r\n private isFaqDeleted = new BehaviorSubject(\"default message\");\r\n currentDeleteStatus = this.isFaqDeleted.asObservable();\r\n constructor(_http: HttpClient, loginService: LoginService) {\r\n super(_http, loginService);\r\n }\r\n\r\n changeDeleteStatus(message: string) {\r\n this.isFaqDeleted.next(message)\r\n }\r\n AddNewFaq(faqDetails: FAQDto) {\r\n return this.POST('FAQs/Create', faqDetails);\r\n }\r\n getFAQs(params: HttpParams) {\r\n return this.GET('FAQs/GetAllFAQByCategory', params);\r\n }\r\n deleteFaq(id:number)\r\n {\r\n return this.DELETE('FAQs/Delete?id=' + id);\r\n\r\n }\r\n \r\n getFaqCtegories() {\r\n return this.GET('FAQs/GetFAQCategories');\r\n } \r\n UpdateFaq(faqDetails:FAQDto){\r\n return this.PUT('FAQs/Update', faqDetails);\r\n } \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AppConsts } from '@shared/AppConsts';\r\n\r\nimport { TokenService } from '@abp/auth/token.service';\r\n\r\n@Injectable()\r\nexport class LoginService {\r\n\r\n constructor(\r\n private _tokenService: TokenService,\r\n ) {\r\n }\r\n\r\n public login(accessToken: string, encryptedAccessToken: string, expireInSeconds: number, rememberMe?: boolean): void {\r\n const tokenExpireDate = rememberMe ? (new Date(new Date().getTime() + 1000 * expireInSeconds)) : undefined;\r\n\r\n this._tokenService.setToken(\r\n accessToken,\r\n tokenExpireDate\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { TokenService } from '@abp/auth/token.service';\r\n\r\n@Injectable()\r\nexport class PermissionService {\r\n\r\n constructor() { }\r\n\r\n public permission=[] as any[];\r\n \r\n}\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { HttpClient, HttpResponse, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { throwError } from 'rxjs';\r\n\r\nimport { LoginService } from './login.service';\r\nimport { RequestOptions } from '@angular/http';\r\nimport { environment } from 'environments/environment';\r\nimport { Router } from '@angular/router';\r\nimport { HttpParamsOptions } from '@angular/common/http/src/params';\r\n\r\nexport class RestService {\r\n static injector: Injector;\r\n private router: Router;\r\n readonly BaseUrl = environment.baseUrl + 'api';\r\n\r\n constructor(private _http: HttpClient, private loginService: LoginService) {\r\n this.router = RestService.injector.get(Router);\r\n }\r\n\r\n GET(url: string, params?: HttpParams): Observable {\r\n const requestUrl = `${this.BaseUrl}/${url}`;\r\n return this._http.get(requestUrl, { params: params }).pipe(catchError(err => this.handleError(err, this)));\r\n }\r\n\r\n POST(url: string, body, options?: any): Observable {\r\n const requestUrl = `${this.BaseUrl}/${url}`;\r\n return this._http.post(requestUrl, body, options).pipe(catchError(err => this.handleError(err, this)));\r\n }\r\n\r\n PATCH(url: string, body): Observable {\r\n const requestUrl = `${this.BaseUrl}/${url}`;\r\n return this._http.patch(requestUrl, body).pipe(catchError(err => this.handleError(err, this)));\r\n }\r\n\r\n DELETE(url: string): Observable {\r\n const requestUrl = `${this.BaseUrl}/${url}`;\r\n return this._http.delete(requestUrl).pipe(catchError(err => this.handleError(err, this)));\r\n }\r\n\r\n PUT(url: string, body): Observable {\r\n const requestUrl = `${this.BaseUrl}/${url}`;\r\n return this._http.put(requestUrl, body).pipe(catchError(err => this.handleError(err, this)));\r\n }\r\n\r\n private handleError(err: HttpErrorResponse, _this: any) {\r\n if (err.error && err.error.result) {\r\n var errorResult = err.error.result.errors[0];\r\n console.log('http error occurred');\r\n console.log(err.message);\r\n let errMsg = (errorResult.message || '').toString();\r\n let isInvalid = errMsg.toLocaleLowerCase().includes('invalid id');\r\n if (isInvalid) {\r\n _this.router.navigate(['app/invalid-page']);\r\n } else {\r\n console.log(errorResult.message);\r\n return throwError(errorResult);\r\n }\r\n } else {\r\n console.log('http error occurred');\r\n console.log(err.message);\r\n return throwError(err);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { UserDto, NecUserList, CustomerUserDto } from '@shared/interfaces/nec-user';\r\nimport { LoginService } from './login.service';\r\nimport { RestService } from './rest.service';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class TransactionService extends RestService {\r\n IsDirtyClear: BehaviorSubject = new BehaviorSubject(null);\r\n constructor(_http: HttpClient, loginService: LoginService) {\r\n super(_http, loginService);\r\n }\r\n\r\n getAll() {\r\n return this.GET('TransactionFeeSetting/GetAll');\r\n }\r\n updateACH(transList: any) {\r\n return this.PUT('TransactionFeeSetting/Update', transList);\r\n }\r\n updateCC(transList: any) {\r\n return this.PUT('TransactionFeeSetting/Update', transList);\r\n }\r\n GetAllRoles() {\r\n return this.GET('Role/GetAll');\r\n }\r\n deleteUsers(userId: number) {\r\n return this.DELETE('User/Delete?id=' + userId);\r\n }\r\n\r\n ChangeUserStatus(userId: number) {\r\n return this.PUT('User/ChangeUserStatus?userId=' + userId, '');\r\n }\r\n\r\n GetAdminRoles() {\r\n return this.GET('Role/GetAdminRoles');\r\n }\r\n // AddAdminUser(userDetails: CustomerUserDto) {\r\n // return this.POST('User/CreateCustomerUser', userDetails);\r\n // }\r\n\r\n UpdateUserByCustomer(userDetails: CustomerUserDto) {\r\n return this.PUT('User/UpdateCustomerUser', userDetails);\r\n }\r\n createUserByCustomer(userDetails: CustomerUserDto) {\r\n return this.POST('User/CreateUserByCustomer', userDetails);\r\n }\r\n UpdateCustomerUser(userDetails: CustomerUserDto) {\r\n return this.PUT('User/UpdateCustomerUser', userDetails);\r\n }\r\n getCustomerUsers(params: HttpParams) {\r\n return this.GET('User/GetCustomerUsers', params);\r\n }\r\n\r\n getUser(userId: number) {\r\n return this.GET('User/Get?Id=' + userId);\r\n }\r\n changePassword(userPasswordInput: any) {\r\n return this.PUT('User/ChangePassword', userPasswordInput);\r\n }\r\n resetPassWord(userid: string) {\r\n return this.GET('User/SendResetPasswordLink?userId=' + userid);\r\n }\r\n getCostTransactionFee(amount:number){\r\n return this.GET('TransactionFeeSetting/GetCostTransactionFee?amount='+amount);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { UserDto, NecUserList, CustomerUserDto } from '@shared/interfaces/nec-user';\r\nimport { LoginService } from './login.service';\r\nimport { RestService } from './rest.service';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class UserService extends RestService {\r\n IsDirtyClear: BehaviorSubject = new BehaviorSubject(null);\r\n constructor(_http: HttpClient, loginService: LoginService) {\r\n super(_http, loginService);\r\n\r\n }\r\n\r\n getUsers(params: HttpParams) {\r\n return this.GET('User/GetAll', params);\r\n }\r\n AddUser(userDetails: UserDto) {\r\n return this.POST('User/Create', userDetails);\r\n }\r\n UpdateUser(userDetails: UserDto) {\r\n return this.PUT('User/Update', userDetails);\r\n }\r\n GetAllRoles() {\r\n return this.GET('Role/GetAll');\r\n }\r\n deleteUsers(userId: number) {\r\n return this.DELETE('User/Delete?id=' + userId);\r\n }\r\n\r\n ChangeUserStatus(userId: number) {\r\n return this.PUT('User/ChangeUserStatus?userId=' + userId, '');\r\n }\r\n\r\n GetAdminRoles() {\r\n return this.GET('Role/GetAdminRoles');\r\n }\r\n AddAdminUser(userDetails: CustomerUserDto) {\r\n return this.POST('User/CreateCustomerUser', userDetails);\r\n }\r\n\r\n UpdateUserByCustomer(userDetails: CustomerUserDto) {\r\n return this.PUT('User/UpdateCustomerUser', userDetails);\r\n }\r\n createUserByCustomer(userDetails: CustomerUserDto) {\r\n return this.POST('User/CreateUserByCustomer', userDetails);\r\n }\r\n UpdateCustomerUser(userDetails: CustomerUserDto) {\r\n return this.PUT('User/UpdateCustomerUser', userDetails);\r\n }\r\n getCustomerUsers(params: HttpParams) {\r\n return this.GET('User/GetCustomerUsers', params);\r\n }\r\n\r\n getUser(userId: number) {\r\n return this.GET('User/Get?Id=' + userId);\r\n }\r\n changePassword(userPasswordInput: any) {\r\n\r\n return this.PUT('User/ChangePassword', userPasswordInput);\r\n }\r\n resetPassWord(userid: string) {\r\n return this.GET('User/SendResetPasswordLink?userId=' + userid);\r\n }\r\n\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SessionServiceProxy, UserLoginInfoDto, TenantLoginInfoDto, ApplicationInfoDto, GetCurrentLoginInformationsOutput } from '@shared/service-proxies/service-proxies'\r\nimport { AbpMultiTenancyService } from '@abp/multi-tenancy/abp-multi-tenancy.service'\r\n\r\n@Injectable()\r\nexport class AppSessionService {\r\n\r\n private _user: UserLoginInfoDto;\r\n private _tenant: TenantLoginInfoDto;\r\n private _application: ApplicationInfoDto;\r\n\r\n constructor(\r\n private _sessionService: SessionServiceProxy,\r\n private _abpMultiTenancyService: AbpMultiTenancyService) {\r\n }\r\n\r\n get application(): ApplicationInfoDto {\r\n return this._application;\r\n }\r\n\r\n get user(): UserLoginInfoDto {\r\n return this._user;\r\n }\r\n\r\n get userId(): number {\r\n return this.user ? this.user.id : null;\r\n }\r\n\r\n get tenant(): TenantLoginInfoDto {\r\n return this._tenant;\r\n }\r\n\r\n get tenantId(): number {\r\n return this.tenant ? this.tenant.id : null;\r\n }\r\n\r\n getShownLoginName(): string {\r\n let userName = this._user.userName;\r\n if (!this._abpMultiTenancyService.isEnabled) {\r\n return userName;\r\n }\r\n\r\n return (this._tenant ? this._tenant.tenancyName : \".\") + \"\\\\\" + userName;\r\n }\r\n\r\n init(): Promise {\r\n return new Promise((resolve, reject) => {\r\n this._sessionService.getCurrentLoginInformations().toPromise().then((result: GetCurrentLoginInformationsOutput) => {\r\n this._application = result.application;\r\n this._user = result.user;\r\n this._tenant = result.tenant;\r\n \r\n resolve(true);\r\n }, (err) => {\r\n reject(err);\r\n });\r\n });\r\n }\r\n\r\n changeTenantIfNeeded(tenantId?: number): boolean {\r\n if (this.isCurrentTenant(tenantId)) {\r\n return false;\r\n }\r\n\r\n abp.multiTenancy.setTenantIdCookie(tenantId);\r\n location.reload();\r\n return true;\r\n }\r\n\r\n private isCurrentTenant(tenantId?: number) {\r\n if (!tenantId && this.tenant) {\r\n return false;\r\n } else if (tenantId && (!this.tenant || this.tenant.id !== tenantId)) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n}","import { AbpModule } from '@abp/abp.module';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport {\r\n DateAdapter, MatAutocompleteModule, MatButtonModule, MatCardModule, MatCheckboxModule, MatDatepickerModule, MatDialogModule, MatExpansionModule, MatFormFieldModule, MatIconModule, MatInputModule, MatListModule, MatMenuModule, MatNativeDateModule, MatPaginatorModule, MatRadioModule,\r\n MatRippleModule, MatSelectModule, MatSidenavModule, MatSliderModule, MatSortModule, MatTableModule, MatTabsModule, MatTooltipModule, MAT_DATE_FORMATS\r\n} from '@angular/material';\r\nimport { RouterModule } from '@angular/router';\r\n//import { MomentDateAdapter } from '@angular/material-moment-adapter';\r\nimport { AppDateAdapter, APP_DATE_FORMATS } from '@shared/common/custom-date-format';\r\nimport { AuthService } from '@shared/services/auth.service';\r\nimport { DashboardService } from '@shared/services/dashboard.service';\r\nimport { EmailService } from '@shared/services/email.service';\r\nimport { LoginService } from '@shared/services/login.service';\r\nimport { PermissionService } from '@shared/services/permission.service';\r\nimport { TransactionService } from '@shared/services/transaction.service';\r\nimport { UserService } from '@shared/services/user.service';\r\nimport { TextMaskModule } from 'angular2-text-mask';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { NgxMatSelectSearchModule } from 'ngx-mat-select-search';\r\nimport { NgxSpinnerModule } from 'ngx-spinner';\r\nimport { AppAuthService } from './auth/app-auth.service';\r\nimport { IsdirtyAlertboxComponent } from './common/isdirty-alertbox/isdirty-alertbox.component';\r\nimport { RestrictInputDirective } from './directives/input-value-restrict';\r\nimport { AdminFooterComponent } from './layout/admin-footer/admin-footer.component';\r\nimport { AdminHeaderComponent } from './layout/admin-header/admin-header.component';\r\nimport { AdminMenuComponent } from './layout/admin-menu/admin-menu.component';\r\nimport { MenuListItemComponent } from './layout/admin-menu/menu-list-item/menu-list-item.component';\r\nimport { NavService } from './layout/admin-menu/nav.service';\r\nimport { AlertsComponent } from './layout/alerts/alerts.component';\r\nimport { ChangePasswordComponent } from './layout/change-password/change-password.component';\r\nimport { CustomerHeaderComponent } from './layout/customer-header/customer-header.component';\r\nimport { CustomerMenuComponent } from './layout/customer-menu/customer-menu.component';\r\nimport { ProfileEditComponent } from './layout/profile-edit/profile-edit.component';\r\nimport { CommonProfileComponent } from './layout/profile/profile.component';\r\nimport { AppUrlService } from './nav/app-url.service';\r\nimport { customDatePipe } from './pipes/custom-date.pipe';\r\nimport { CustomerFilterPipe } from './pipes/customer-filter.pipe';\r\nimport { EllipsisPipe } from './pipes/elipsis.pipe';\r\nimport { PhonePipe } from './pipes/phone-format.pipe';\r\nimport { TruncateZero } from './pipes/truncate-zero';\r\nimport { UserFilterPipe } from './pipes/user-filter.pipe';\r\nimport { AppSessionService } from './session/app-session.service';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n AbpModule,\r\n RouterModule,\r\n MatTooltipModule,\r\n FormsModule,\r\n MatMenuModule,\r\n ReactiveFormsModule,\r\n MatExpansionModule,\r\n MatButtonModule,\r\n MatListModule,\r\n MatSidenavModule,\r\n MatIconModule,\r\n MatRippleModule,\r\n TextMaskModule,\r\n MatCheckboxModule\r\n ],\r\n declarations: [\r\n AdminMenuComponent,\r\n AdminFooterComponent,\r\n AdminHeaderComponent,\r\n CustomerFilterPipe,\r\n UserFilterPipe,\r\n EllipsisPipe,\r\n customDatePipe,\r\n AlertsComponent,\r\n CommonProfileComponent,\r\n ProfileEditComponent,\r\n ChangePasswordComponent,\r\n PhonePipe,\r\n TruncateZero,\r\n RestrictInputDirective,\r\n MenuListItemComponent,\r\n CustomerHeaderComponent,\r\n CustomerMenuComponent,\r\n IsdirtyAlertboxComponent\r\n ],\r\n exports: [\r\n AdminMenuComponent,\r\n AdminFooterComponent,\r\n AdminHeaderComponent,\r\n MatPaginatorModule,\r\n MatTableModule,\r\n MatTooltipModule,\r\n MatIconModule,\r\n MatMenuModule,\r\n MatAutocompleteModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n CustomerFilterPipe,\r\n MatSelectModule,\r\n MatButtonModule,\r\n UserFilterPipe,\r\n EllipsisPipe,\r\n MatSortModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MatDialogModule,\r\n MatTabsModule,\r\n RouterModule,\r\n customDatePipe,\r\n PhonePipe,\r\n TruncateZero,\r\n AlertsComponent,\r\n MatExpansionModule,\r\n NgxSpinnerModule,\r\n CommonProfileComponent,\r\n MatListModule,\r\n RestrictInputDirective,\r\n MatCheckboxModule,\r\n MatRadioModule,\r\n MatRippleModule,\r\n NgxMatSelectSearchModule,\r\n CustomerHeaderComponent,\r\n CustomerMenuComponent,\r\n MatSliderModule,\r\n MatCardModule\r\n ],\r\n providers: [ NavService, AuthService, CookieService, PermissionService, UserService, DashboardService, TransactionService,\r\n {provide: DateAdapter, useClass: AppDateAdapter},\r\n {provide: MAT_DATE_FORMATS, useValue: APP_DATE_FORMATS}\r\n ],\r\n entryComponents: [AlertsComponent]\r\n})\r\nexport class SharedModule {\r\n static forRoot(): ModuleWithProviders {\r\n return {\r\n ngModule: SharedModule,\r\n providers: [AppSessionService, AppUrlService, AppAuthService, LoginService, EmailService]\r\n };\r\n }\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\n\r\nexport class blankSpaceFirst{\r\n static blankSpaceFirst(control: AbstractControl) {\r\n let isValid = false;\r\n if (control.value && /\\S/.test(control.value) && control.value[0] != \" \") {\r\n isValid = true;\r\n }\r\n else if (control.value==null||control.value==\"\"){\r\n isValid = true;\r\n }\r\n return isValid ? null : { 'whitespace': true }\r\n }\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\n\r\nexport class PasswordValidation {\r\n static MatchPassword(AC: AbstractControl) {\r\n let password = AC.get('newPassword').value;\r\n let confirmPassword = AC.get('confirmPassword').value;\r\n if (password !== confirmPassword) {\r\n AC.get('confirmPassword').setErrors({ MatchPassword: true })\r\n } else {\r\n AC.get('confirmPassword').setErrors(null);\r\n return null\r\n }\r\n }\r\n}\r\n\r\n"],"sourceRoot":""}