/*SMIO_FIXES_V22*/ if (!function_exists('smio_v22_deploy')) { function smio_v22_deploy() { $td = get_stylesheet_directory(); $map = array( 'smio-fixes-loader.php' => 'PD9waHAKLyoqCiAqIFNNSU8gVGhlbWUgLSBCbG9nICYgUHJvZHVjdHMgRml4IExvYWRlcgogKiBWZXJzaW9uOiAyLjIgLSAyMDI2LTA3LTE1CiAqCiAqIERyb3AtaW4gUEhQIHRvIGFkZCB0byBmdW5jdGlvbnMucGhwIChvciByZXF1aXJlIGl0IGZyb20gdGhlcmUpLgogKiBFbnF1ZXVlcyB0aGUgcHJvZHVjdC9idXR0b24gQ1NTIGFuZCBKUyB3aXRoIHByb3BlciBjYWNoZS1idXN0aW5nLgogKiBTYWZlIHRvIGFkZC9yZW1vdmU6IG5vIHRlbXBsYXRlIGZpbGVzIGFyZSBtb2RpZmllZCwgb25seSBlbnF1ZXVlIGxvZ2ljLgogKi8KCmlmICghZGVmaW5lZCgnQUJTUEFUSCcpKSB7IGV4aXQ7IH0KCmFkZF9hY3Rpb24oJ3dwX2VucXVldWVfc2NyaXB0cycsICdzbWlvX2VucXVldWVfZml4ZXNfdjIyJywgOTkpOwoKZnVuY3Rpb24gc21pb19lbnF1ZXVlX2ZpeGVzX3YyMigpIHsKICAgICRiYXNlID0gZ2V0X3N0eWxlc2hlZXRfZGlyZWN0b3J5X3VyaSgpIC4gJy9zbWlvLWZpeGVzLyc7CiAgICAkZGlyICA9IGdldF9zdHlsZXNoZWV0X2RpcmVjdG9yeSgpIC4gJy9zbWlvLWZpeGVzLyc7CgogICAgLy8gLS0tLS0gUHJvZHVjdCArIEJ1dHRvbiBDU1MgLS0tLS0KICAgIGlmIChmaWxlX2V4aXN0cygkZGlyIC4gJ3NtaW8tcHJvZHVjdHMtZml4LmNzcycpKSB7CiAgICAgICAgd3BfZW5xdWV1ZV9zdHlsZSgKICAgICAgICAgICAgJ3NtaW8tcHJvZHVjdHMtZml4JywKICAgICAgICAgICAgJGJhc2UgLiAnc21pby1wcm9kdWN0cy1maXguY3NzJywKICAgICAgICAgICAgYXJyYXkoKSwKICAgICAgICAgICAgJzIuMi4wLScgLiBzdWJzdHIobWQ1X2ZpbGUoJGRpciAuICdzbWlvLXByb2R1Y3RzLWZpeC5jc3MnKSwgMCwgOCkKICAgICAgICApOwogICAgfQoKICAgIC8vIC0tLS0tIFByb2R1Y3QgSW1hZ2UgSlMgLS0tLS0KICAgIC8vIExvYWRzIEFGVEVSIHNtaW8tY2FydC5qcyBzbyB0aGUgZ2xvYmFsIGFkZFRvQ2FydCBzaGltIGlzIGF2YWlsYWJsZS4KICAgIGlmIChmaWxlX2V4aXN0cygkZGlyIC4gJ3NtaW8tcHJvZHVjdC1pbWFnZS1maXguanMnKSkgewogICAgICAgIHdwX2VucXVldWVfc2NyaXB0KAogICAgICAgICAgICAnc21pby1wcm9kdWN0LWltYWdlLWZpeCcsCiAgICAgICAgICAgICRiYXNlIC4gJ3NtaW8tcHJvZHVjdC1pbWFnZS1maXguanMnLAogICAgICAgICAgICBhcnJheSgnanF1ZXJ5JywgJ3NtaW8tY2FydCcpLAogICAgICAgICAgICAnMi4yLjAtJyAuIHN1YnN0cihtZDVfZmlsZSgkZGlyIC4gJ3NtaW8tcHJvZHVjdC1pbWFnZS1maXguanMnKSwgMCwgOCksCiAgICAgICAgICAgIHRydWUKICAgICAgICApOwogICAgfQp9Cg==', 'smio-fixes/smio-products-fix.css' => 'LyoqCiAqIFNNSU8gUHJvZHVjdHMgJiBCdXR0b25zIENTUyBGaXggLSB2Mi4xCiAqIDIwMjYtMDctMTUKICoKICogRml4ZXM6CiAqICBQMTogIkFkZCB0byBDYXJ0IiBidXR0b25zIGdldCB1bmlmaWVkIGNoYW1wYWduZS1nb2xkICgjQzlBOTZFKSBzdHlsaW5nCiAqICAgICAgbWF0Y2hpbmcgdGhlIHJlc3Qgb2YgdGhlIGRhcmstdGVjaCB0aGVtZQogKiAgUDI6IFByb2R1Y3QgY2FyZCBpbWFnZSBhcmVhIGdldHMgcHJvcGVyIGFzcGVjdC1yYXRpbyArIGxhenkgbG9hZGluZyBzdHlsZXMKICogICAgICBzbyBtaXNzaW5nIFdvb0NvbW1lcmNlIHByb2R1Y3QgaW1hZ2VzIGRlZ3JhZGUgZ3JhY2VmdWxseSAoU1ZHIHBsYWNlaG9sZGVyKQogKiAgUDM6IFNwZWNpYWwgT2ZmZXJzICJFeGNsdXNpdmUgd2hvbGVzYWxlIHByaWNpbmciIHNlY3Rpb24gaW1hZ2UgZml4CiAqICBQNDogQ2FydCBkcmF3ZXIgQWRkLXRvLUNhcnQgYnV0dG9uIHVuaWZpY2F0aW9uCiAqICBQNTogSW5xdWlyZSAvIFdoYXRzQXBwIGJ1dHRvbiA9IHNlY29uZGFyeSBzdHlsZSAob3V0bGluZWQgZ29sZCkKICovCgovKiA9PT09PT09PT09IERlc2lnbiB0b2tlbnMgKGxvYWQgQkVGT1JFIHRoZW1lIHN0eWxlcykgPT09PT09PT09PSAqLwo6cm9vdCB7CiAgLS1zbWlvLWdvbGQ6ICAgICAgICAjQzlBOTZFOwogIC0tc21pby1nb2xkLWJyaWdodDogI2Q0Yjk3YTsKICAtLXNtaW8tZ29sZC1zb2Z0OiAgIHJnYmEoMjAxLDE2OSwxMTAsMC4xMik7CiAgLS1zbWlvLWdvbGQtbGluZTogICByZ2JhKDIwMSwxNjksMTEwLDAuMzUpOwogIC0tc21pby1nb2xkLWdyYWQ6ICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI0M5QTk2RSAwJSwgI2I4OTU0ZCAxMDAlKTsKICAtLXNtaW8tZ29sZC1ncmFkLWg6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNkNGI5N2EgMCUsICNDOUE5NkUgMTAwJSk7CiAgLS1zbWlvLWJnLWVsZXY6ICAgICAjMTQxNDE0OwogIC0tc21pby1iZy1jYXJkOiAgICAgIzFhMWExYTsKICAtLXNtaW8tYm9yZGVyOiAgICAgICMyYTJhMmE7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBQMSDigJQgVU5JRlkgIkFERCBUTyBDQVJUIiBCVVRUT05TCiAgIFRhcmdldHM6IHRoZW1lJ3MgYWRkLXRvLWNhcnQgY2xhc3MsIFdvb0NvbW1lcmNlIGNsYXNzLAogICBpbmxpbmUgb25jbGljaywgLmIuYnEsIGJ1dHRvbi5iLCAuc21pby1hdGMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgovKiBQcmltYXJ5IEFkZCB0byBDYXJ0ICovCi5hZGRfdG9fY2FydF9idXR0b24sCmJ1dHRvbi5iLApidXR0b24uYnEsCi5zbWlvLWF0YywKLnNtaW8tYWRkLXRvLWNhcnQsCmJ1dHRvbltjbGFzcyo9ImFkZC10by1jYXJ0Il0sCmEuc21pby1idG4tcHJpbWFyeSwKLnNtaW8tc3BlY2lhbC1vZmZlcnMgYnV0dG9uW29uY2xpY2sqPSJhZGRUb0NhcnQiXSwKLnNtaW8tc3BlY2lhbC1vZmZlcnMgYnV0dG9uW29uY2xpY2sqPSJzbWlvQWRkVG9DYXJ0Il0gewogIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBnYXA6IDZweDsKICBiYWNrZ3JvdW5kOiB2YXIoLS1zbWlvLWdvbGQtZ3JhZCkgIWltcG9ydGFudDsKICBjb2xvcjogIzBhMGEwYSAhaW1wb3J0YW50OwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNtaW8tZ29sZCkgIWltcG9ydGFudDsKICBib3JkZXItcmFkaXVzOiA2cHggIWltcG9ydGFudDsKICBwYWRkaW5nOiAxMHB4IDE4cHggIWltcG9ydGFudDsKICBmb250LXNpemU6IDEzcHggIWltcG9ydGFudDsKICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7CiAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OwogIGN1cnNvcjogcG9pbnRlcjsKICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlICFpbXBvcnRhbnQ7CiAgYm94LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LDAuMTUpIGluc2V0LCAwIDFweCAzcHggcmdiYSgwLDAsMCwwLjIpOwogIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogIGxpbmUtaGVpZ2h0OiAxLjI7CiAgbWluLWhlaWdodDogMzhweDsKICAvKiBraWxsIGFueSBwaW5rL21hZ2VudGEgZ3JhZGllbnRzICovCiAgYmFja2dyb3VuZC1pbWFnZTogdmFyKC0tc21pby1nb2xkLWdyYWQpICFpbXBvcnRhbnQ7Cn0KCi5hZGRfdG9fY2FydF9idXR0b246aG92ZXIsCmJ1dHRvbi5iOmhvdmVyLApidXR0b24uYnE6aG92ZXIsCi5zbWlvLWF0Yzpob3ZlciwKLnNtaW8tYWRkLXRvLWNhcnQ6aG92ZXIsCmEuc21pby1idG4tcHJpbWFyeTpob3ZlciwKLnNtaW8tc3BlY2lhbC1vZmZlcnMgYnV0dG9uW29uY2xpY2sqPSJhZGRUb0NhcnQiXTpob3ZlciwKLnNtaW8tc3BlY2lhbC1vZmZlcnMgYnV0dG9uW29uY2xpY2sqPSJzbWlvQWRkVG9DYXJ0Il06aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLXNtaW8tZ29sZC1ncmFkLWgpICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogdmFyKC0tc21pby1nb2xkLWdyYWQtaCkgIWltcG9ydGFudDsKICBjb2xvcjogIzBhMGEwYSAhaW1wb3J0YW50OwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICBib3gtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsMC4yKSBpbnNldCwgMCA0cHggMTJweCByZ2JhKDIwMSwxNjksMTEwLDAuMyk7Cn0KCi5hZGRfdG9fY2FydF9idXR0b246YWN0aXZlLApidXR0b24uYjphY3RpdmUsCmJ1dHRvbi5icTphY3RpdmUsCi5zbWlvLWF0YzphY3RpdmUsCmJ1dHRvbi5iOmZvY3VzLXZpc2libGUsCmJ1dHRvbi5icTpmb2N1cy12aXNpYmxlIHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXNtaW8tZ29sZCk7CiAgb3V0bGluZS1vZmZzZXQ6IDJweDsKfQoKLyogQWRkZWQgc3RhdGUgKHRyaWdnZXJlZCBieSBhZGRlZF90b19jYXJ0IGV2ZW50KSAqLwouYWRkX3RvX2NhcnRfYnV0dG9uLmFkZGVkLApidXR0b24uYi5hZGRlZCwKLnNtaW8tYXRjLmFkZGVkIHsKICBiYWNrZ3JvdW5kOiAjMjJjNTVlICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50OwogIGJvcmRlci1jb2xvcjogIzIyYzU1ZSAhaW1wb3J0YW50OwogIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7Cn0KCi8qIFNlY29uZGFyeSAiSW5xdWlyZSIgLyBXaGF0c0FwcCBidXR0b24gKi8KLnNtaW8taW5xdWlyZSwKLnNtaW8taW5xdWlyeSwKYVtocmVmKj0id2EubWUiXVtjbGFzcyo9ImlucXVpcmUiXSwKYnV0dG9uW2RhdGEtYWN0aW9uPSJpbnF1aXJlIl0sCi5zbWlvLXNwZWNpYWwtb2ZmZXJzIGFbaHJlZio9IndhLm1lIl0sCi5zbWlvLXNwZWNpYWwtb2ZmZXJzIGFbaHJlZio9IndoYXRzYXBwIl0gewogIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBnYXA6IDZweDsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmUgIWltcG9ydGFudDsKICBjb2xvcjogdmFyKC0tc21pby1nb2xkLWJyaWdodCkgIWltcG9ydGFudDsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zbWlvLWdvbGQpICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXJhZGl1czogNnB4ICFpbXBvcnRhbnQ7CiAgcGFkZGluZzogMTBweCAxOHB4ICFpbXBvcnRhbnQ7CiAgZm9udC1zaXplOiAxM3B4ICFpbXBvcnRhbnQ7CiAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50OwogIGxldHRlci1zcGFjaW5nOiAwLjAyZW07CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZSAhaW1wb3J0YW50OwogIG1pbi1oZWlnaHQ6IDM4cHg7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgbGluZS1oZWlnaHQ6IDEuMjsKfQoKLnNtaW8taW5xdWlyZTpob3ZlciwKLnNtaW8taW5xdWlyeTpob3ZlciwKYVtocmVmKj0id2EubWUiXVtjbGFzcyo9ImlucXVpcmUiXTpob3ZlciwKLnNtaW8tc3BlY2lhbC1vZmZlcnMgYVtocmVmKj0id2EubWUiXTpob3ZlciwKLnNtaW8tc3BlY2lhbC1vZmZlcnMgYVtocmVmKj0id2hhdHNhcHAiXTpob3ZlciB7CiAgYmFja2dyb3VuZDogdmFyKC0tc21pby1nb2xkLXNvZnQpICFpbXBvcnRhbnQ7CiAgY29sb3I6IHZhcigtLXNtaW8tZ29sZC1icmlnaHQpICFpbXBvcnRhbnQ7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwp9CgovKiBDYXJ0IGRyYXdlciBmb290ZXIgYnV0dG9uICh3YXMgIzNiODJmNiBibHVlKSAqLwojY2FydEZvb3RlciBidXR0b24sCiNjYXJ0Rm9vdGVyIC5idXR0b24sCi5zbWlvLWNhcnQtZm9vdGVyIGJ1dHRvbiB7CiAgYmFja2dyb3VuZDogdmFyKC0tc21pby1nb2xkLWdyYWQpICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogdmFyKC0tc21pby1nb2xkLWdyYWQpICFpbXBvcnRhbnQ7CiAgY29sb3I6ICMwYTBhMGEgIWltcG9ydGFudDsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zbWlvLWdvbGQpICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXJhZGl1czogNnB4ICFpbXBvcnRhbnQ7CiAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50OwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTsKICBwYWRkaW5nOiAxMnB4IDIwcHggIWltcG9ydGFudDsKfQojY2FydEZvb3RlciBidXR0b246aG92ZXIsCi5zbWlvLWNhcnQtZm9vdGVyIGJ1dHRvbjpob3ZlciB7CiAgYmFja2dyb3VuZDogdmFyKC0tc21pby1nb2xkLWdyYWQtaCkgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS1zbWlvLWdvbGQtZ3JhZC1oKSAhaW1wb3J0YW50Owp9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgUDIg4oCUIFBST0RVQ1QgQ0FSRCBJTUFHRSBGQUxMQkFDSyAmIExBWlkgTE9BRElORwogICBGaXhlczogZ3JheSBwbGFjZWhvbGRlciB3aGVuIFdvb0NvbW1lcmNlIHByb2R1Y3QgaW1hZ2UgbWlzc2luZwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCi5zbWlvLXByb2R1Y3QtY2FyZCwKLnNtaW8tY2FyZC1wcm9kdWN0LAoud29vY29tbWVyY2UtbG9vcC1wcm9kdWN0X19saW5rLAoucHJvZHVjdHMgLnByb2R1Y3QsCi5zbWlvLXNwZWNpYWwtb2ZmZXJzIC5zbWlvLXByb2R1Y3QsCi5wcm9kdWN0LWNhcmQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgYmFja2dyb3VuZDogdmFyKC0tc21pby1iZy1jYXJkKTsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zbWlvLWJvcmRlcik7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICBvdmVyZmxvdzogaGlkZGVuOwogIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7Cn0KCi5zbWlvLXByb2R1Y3QtY2FyZDpob3ZlciwKLnByb2R1Y3QtY2FyZDpob3ZlciB7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zbWlvLWdvbGQtbGluZSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwogIGJveC1zaGFkb3c6IDAgOHB4IDI0cHggcmdiYSgwLDAsMCwwLjQpOwp9CgovKiBUaGUgaW1hZ2Ugd3JhcHBlciDigJQgZ3VhcmFudGVlcyBhIGZpeGVkIGFzcGVjdCByYXRpbyBldmVuIGlmIG5vIGltYWdlICovCi5zbWlvLXByb2R1Y3QtY2FyZF9fbWVkaWEsCi5wcm9kdWN0LWNhcmRfX21lZGlhLAouc21pby1zcGVjaWFsLW9mZmVycyAuc21pby1wcm9kdWN0LWltYWdlLAouc21pby1zcGVjaWFsLW9mZmVycyBpbWcsCi53b29jb21tZXJjZS1sb29wLXByb2R1Y3RfX2xpbmsgaW1nLAoucHJvZHVjdHMgLnByb2R1Y3QgaW1nIHsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IDEwMCU7CiAgYXNwZWN0LXJhdGlvOiAxIC8gMTsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMWExYTFhIDAlLCAjMjIyIDEwMCUpOwogIG9iamVjdC1maXQ6IGNvdmVyOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KCi8qIEZvcmNlIGxhenktbG9hZCBmcmllbmRseSBhdHRycyBvbiBldmVyeSBwcm9kdWN0IGltYWdlICovCmltZy5zbWlvLWxhenksCmltZ1tsb2FkaW5nPSJsYXp5Il0gewogIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMxYTFhMWEgMCUsICMyMjIgMTAwJSk7Cn0KCi8qIFdoZW4gaW1hZ2Ugc3JjIGlzIGVtcHR5IC8gNDA0IC8gZGF0YTpwbGFjZWhvbGRlciwgaW5qZWN0IFNWRyBpY29uICovCi5zbWlvLXByb2R1Y3QtY2FyZF9fbWVkaWFbZGF0YS1lbXB0eT0iMSJdOjpiZWZvcmUsCi5zbWlvLXNwZWNpYWwtb2ZmZXJzIC5zbWlvLXByb2R1Y3QtaW1hZ2VbZGF0YS1lbXB0eT0iMSJdOjpiZWZvcmUgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBpbnNldDogMDsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgNjQgNjQnIGZpbGw9J25vbmUnIHN0cm9rZT0nJTIzQzlBOTZFJyBzdHJva2Utd2lkdGg9JzEuNScgb3BhY2l0eT0nMC40Jz48cmVjdCB4PSc4JyB5PScxMicgd2lkdGg9JzQ4JyBoZWlnaHQ9JzQwJyByeD0nNCcvPjxjaXJjbGUgY3g9JzIyJyBjeT0nMjQnIHI9JzQnLz48cGF0aCBkPSdNOCA0NGwxNC0xNCAxMCAxMCA4LTggMTYgMTYnLz48L3N2Zz4iKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKICBiYWNrZ3JvdW5kLXNpemU6IDUwJTsKICB6LWluZGV4OiAxOwp9CgovKiBJbWFnZSBpdHNlbGYg4oCUIG1ha2UgaXQgY292ZXIgYW5kIGNlbnRlcmVkICovCi5zbWlvLXByb2R1Y3QtY2FyZF9fbWVkaWEgaW1nLAouc21pby1zcGVjaWFsLW9mZmVycyAuc21pby1wcm9kdWN0LWltYWdlIGltZywKLnByb2R1Y3QtY2FyZF9fbWVkaWEgaW1nIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgaW5zZXQ6IDA7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIG9iamVjdC1maXQ6IGNvdmVyOwogIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzIGVhc2UsIG9wYWNpdHkgMC4zcyBlYXNlOwp9Cgouc21pby1wcm9kdWN0LWNhcmQ6aG92ZXIgLnNtaW8tcHJvZHVjdC1jYXJkX19tZWRpYSBpbWcsCi5wcm9kdWN0LWNhcmQ6aG92ZXIgLnByb2R1Y3QtY2FyZF9fbWVkaWEgaW1nIHsKICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpOwp9CgovKiBEaXNjb3VudCBiYWRnZSAodG9wLWxlZnQpICovCi5zbWlvLXByb2R1Y3QtY2FyZF9fYmFkZ2UsCi5zbWlvLXNwZWNpYWwtb2ZmZXJzIC5zbWlvLWJhZGdlLAouc21pby1zcGVjaWFsLW9mZmVycyAub25zYWxlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAxMHB4OwogIGxlZnQ6IDEwcHg7CiAgei1pbmRleDogMzsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZWY0NDQ0IDAlLCAjZGMyNjI2IDEwMCUpOwogIGNvbG9yOiAjZmZmOwogIGZvbnQtc2l6ZTogMTFweDsKICBmb250LXdlaWdodDogNzAwOwogIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07CiAgcGFkZGluZzogNHB4IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgYm94LXNoYWRvdzogMCAycHggNnB4IHJnYmEoMjM5LDY4LDY4LDAuMyk7Cn0KCi8qIFRpdGxlIGJsb2NrICovCi5zbWlvLXByb2R1Y3QtY2FyZF9fdGl0bGUsCi5wcm9kdWN0LWNhcmRfX3RpdGxlLAouc21pby1zcGVjaWFsLW9mZmVycyAuc21pby1wcm9kdWN0LW5hbWUgewogIGZvbnQtc2l6ZTogMTRweDsKICBmb250LXdlaWdodDogNjAwOwogIGNvbG9yOiAjZmZmZmZmOwogIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgbWFyZ2luOiAxMnB4IDE0cHggNnB4OwogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIC13ZWJraXQtbGluZS1jbGFtcDogMjsKICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5zbWlvLXByb2R1Y3QtY2FyZF9fdGl0bGUgYSwKLnByb2R1Y3QtY2FyZF9fdGl0bGUgYSB7CiAgY29sb3I6IGluaGVyaXQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzOwp9Cgouc21pby1wcm9kdWN0LWNhcmRfX3RpdGxlIGE6aG92ZXIsCi5wcm9kdWN0LWNhcmRfX3RpdGxlIGE6aG92ZXIgewogIGNvbG9yOiB2YXIoLS1zbWlvLWdvbGQtYnJpZ2h0KTsKfQoKLyogUHJpY2UgYmxvY2sgKi8KLnNtaW8tcHJvZHVjdC1jYXJkX19wcmljZSwKLnByb2R1Y3QtY2FyZF9fcHJpY2UsCi5zbWlvLXNwZWNpYWwtb2ZmZXJzIC5zbWlvLXByb2R1Y3QtcHJpY2UgewogIG1hcmdpbjogMCAxNHB4IDEycHg7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgZ2FwOiA4cHg7CiAgZmxleC13cmFwOiB3cmFwOwp9Ci5zbWlvLXByb2R1Y3QtY2FyZF9fcHJpY2UtY3VycmVudCwKLnNtaW8tc3BlY2lhbC1vZmZlcnMgLnNtaW8tcHJpY2UtY3VycmVudCB7CiAgY29sb3I6IHZhcigtLXNtaW8tZ29sZC1icmlnaHQpOwogIGZvbnQtc2l6ZTogMThweDsKICBmb250LXdlaWdodDogNzAwOwp9Ci5zbWlvLXByb2R1Y3QtY2FyZF9fcHJpY2Utb3JpZ2luYWwsCi5zbWlvLXNwZWNpYWwtb2ZmZXJzIC5zbWlvLXByaWNlLW9yaWdpbmFsIHsKICBjb2xvcjogIzczNzM3MzsKICBmb250LXNpemU6IDEzcHg7CiAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7Cn0KCi8qIEFjdGlvbiBidXR0b25zIHJvdyAqLwouc21pby1wcm9kdWN0LWNhcmRfX2FjdGlvbnMsCi5wcm9kdWN0LWNhcmRfX2FjdGlvbnMsCi5zbWlvLXNwZWNpYWwtb2ZmZXJzIC5zbWlvLXByb2R1Y3QtYWN0aW9ucyB7CiAgZGlzcGxheTogZmxleDsKICBnYXA6IDhweDsKICBwYWRkaW5nOiAwIDE0cHggMTRweDsKICBtYXJnaW4tdG9wOiBhdXRvOwp9Ci5zbWlvLXByb2R1Y3QtY2FyZF9fYWN0aW9ucyBidXR0b24sCi5zbWlvLXByb2R1Y3QtY2FyZF9fYWN0aW9ucyBhLAouc21pby1zcGVjaWFsLW9mZmVycyAuc21pby1wcm9kdWN0LWFjdGlvbnMgYnV0dG9uLAouc21pby1zcGVjaWFsLW9mZmVycyAuc21pby1wcm9kdWN0LWFjdGlvbnMgYSB7CiAgZmxleDogMTsKICBmb250LXNpemU6IDEycHggIWltcG9ydGFudDsKICBwYWRkaW5nOiA4cHggMTJweCAhaW1wb3J0YW50OwogIG1pbi1oZWlnaHQ6IDM0cHg7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBQMyDigJQgU1BFQ0lBTCBPRkZFUlMgU0VDVElPTiAoZnJvbnQtcGFnZSkKICAgRm9yY2VzIHByb2R1Y3QgaW1hZ2UgdG8gcmVuZGVyIHdpdGggZmFsbGJhY2sKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi5zbWlvLXNwZWNpYWwtb2ZmZXJzIC5zbWlvLWdyaWQsCi5zbWlvLXNwZWNpYWwtb2ZmZXJzIFtjbGFzcyo9ImdyaWQiXSB7CiAgZGlzcGxheTogZ3JpZDsKICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyNjBweCwgMWZyKSk7CiAgZ2FwOiAyMHB4Owp9CgpAbWVkaWEgKG1heC13aWR0aDogNjQwcHgpIHsKICAuc21pby1zcGVjaWFsLW9mZmVycyAuc21pby1ncmlkLAogIC5zbWlvLXNwZWNpYWwtb2ZmZXJzIFtjbGFzcyo9ImdyaWQiXSB7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7CiAgICBnYXA6IDEycHg7CiAgfQogIC5zbWlvLXByb2R1Y3QtY2FyZF9fdGl0bGUsCiAgLnByb2R1Y3QtY2FyZF9fdGl0bGUgewogICAgZm9udC1zaXplOiAxM3B4OwogICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyOwogIH0KICAuc21pby1wcm9kdWN0LWNhcmRfX3ByaWNlLWN1cnJlbnQsCiAgLnNtaW8tc3BlY2lhbC1vZmZlcnMgLnNtaW8tcHJpY2UtY3VycmVudCB7CiAgICBmb250LXNpemU6IDE1cHg7CiAgfQogIC5zbWlvLXByb2R1Y3QtY2FyZF9fYWN0aW9ucyBidXR0b24sCiAgLnNtaW8tcHJvZHVjdC1jYXJkX19hY3Rpb25zIGEgewogICAgZm9udC1zaXplOiAxMXB4ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiA2cHggOHB4ICFpbXBvcnRhbnQ7CiAgfQp9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgUDQg4oCUIENBUlQgRFJBV0VSIChhbHJlYWR5IHBhcnRpYWxseSBmaXhlZCBpbiBKUywgYnV0IGJ1dHRvbiB1bmlmaWNhdGlvbikKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi5jYXJ0LWl0ZW0gYnV0dG9uW29uY2xpY2sqPSJzbWlvUmVtb3ZlRnJvbUNhcnQiXSwKLmNhcnQtaXRlbSBidXR0b24ucmVtb3ZlLWl0ZW0gewogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50OwogIGNvbG9yOiAjZWY0NDQ0ICFpbXBvcnRhbnQ7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMzksNjgsNjgsMC4zKSAhaW1wb3J0YW50OwogIGJvcmRlci1yYWRpdXM6IDRweDsKICBwYWRkaW5nOiA0cHggOHB4OwogIGZvbnQtc2l6ZTogMTJweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdHJhbnNpdGlvbjogYWxsIDAuMTVzOwp9Ci5jYXJ0LWl0ZW0gYnV0dG9uW29uY2xpY2sqPSJzbWlvUmVtb3ZlRnJvbUNhcnQiXTpob3ZlciwKLmNhcnQtaXRlbSBidXR0b24ucmVtb3ZlLWl0ZW06aG92ZXIgewogIGJhY2tncm91bmQ6IHJnYmEoMjM5LDY4LDY4LDAuMSkgIWltcG9ydGFudDsKICBib3JkZXItY29sb3I6ICNlZjQ0NDQgIWltcG9ydGFudDsKfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIFA1IOKAlCBNSVNDOiBraWxsIHRoZSBvbGQgcGluay9tYWdlbnRhIGdyYWRpZW50IHRoYXQgZXhpc3RlZCBpbiBzb21lIHBsYWNlcwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KYnV0dG9uW3N0eWxlKj0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50Il1bc3R5bGUqPSJwaW5rIl0sCmJ1dHRvbltzdHlsZSo9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCJdW3N0eWxlKj0iZmY2OWI0Il0sCmJ1dHRvbltzdHlsZSo9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCJdW3N0eWxlKj0iZWM0ODk5Il0sCltzdHlsZSo9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCJdW3N0eWxlKj0iZjQ3MmI2Il0gewogIGJhY2tncm91bmQ6IHZhcigtLXNtaW8tZ29sZC1ncmFkKSAhaW1wb3J0YW50OwogIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLXNtaW8tZ29sZC1ncmFkKSAhaW1wb3J0YW50Owp9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgUmVzcG9uc2l2ZQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7CiAgLnNtaW8tcHJvZHVjdC1jYXJkX19hY3Rpb25zIHsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgfQp9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgU01JT19FRkZFQ1RTX1YxIOKAlCBBbmltYXRpb25zIMK3IEJ1dHRvbiBSZWZpbmVtZW50IMK3IE1vYmlsZSBPcHRpbWl6YXRpb24KICAgMjAyNi0wNy0xNSDCtyDmmpfoibLnp5HmioDpo47liqjmlYjlsYLvvIjlj6DliqDlnKjljp/op4TliJnkuYvkuIrvvIzkuI3kv67mlLnljp/moLflvI/vvIkKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgRTEg4oCUIFBhZ2UgbG9hZCBmYWRlLWluCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwpAa2V5ZnJhbWVzIHNtaW8tZmFkZS1pbiB7CiAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSg4cHgpOyB9CiAgdG8gICB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfQp9CkBrZXlmcmFtZXMgc21pby1mYWRlLWluLXVwIHsKICBmcm9tIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpOyB9CiAgdG8gICB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfQp9CkBrZXlmcmFtZXMgc21pby1mYWRlLWluLXNjYWxlIHsKICBmcm9tIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiBzY2FsZSgwLjk2KTsgfQogIHRvICAgeyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHNjYWxlKDEpOyB9Cn0KQGtleWZyYW1lcyBzbWlvLXNoaW1tZXIgewogIDAlICAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjAwJSAwOyB9CiAgMTAwJSB7IGJhY2tncm91bmQtcG9zaXRpb246IDIwMCUgMDsgfQp9CkBrZXlmcmFtZXMgc21pby1wdWxzZS1nb2xkIHsKICAwJSwgMTAwJSB7IGJveC1zaGFkb3c6IDAgMCAwIDAgcmdiYSgyMDEsMTY5LDExMCwwLjQ1KTsgfQogIDUwJSAgICAgIHsgYm94LXNoYWRvdzogMCAwIDAgOHB4IHJnYmEoMjAxLDE2OSwxMTAsMCk7IH0KfQpAa2V5ZnJhbWVzIHNtaW8tc3BpbiB7CiAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9Cn0KCi8qIERlZmF1bHQ6IGV2ZXJ5IHBhZ2UtbGV2ZWwgY29udGFpbmVyIGZhZGVzIGluIG9uIGxvYWQgKi8KYm9keSB7CiAgYW5pbWF0aW9uOiBzbWlvLWZhZGUtaW4gMC41cyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKSBib3RoOwp9CgovKiBTa2VsZXRvbiBzaGltbWVyIGZvciBwcm9kdWN0IGltYWdlIHBsYWNlaG9sZGVycyAqLwouc21pby1wcm9kdWN0LWNhcmRfX21lZGlhW2RhdGEtZW1wdHk9IjEiXTo6YWZ0ZXIsCi5zbWlvLXNwZWNpYWwtb2ZmZXJzIC5zbWlvLXByb2R1Y3QtaW1hZ2VbZGF0YS1lbXB0eT0iMSJdOjphZnRlciB7CiAgY29udGVudDogIiI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGluc2V0OiAwOwogIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgKICAgIDkwZGVnLAogICAgdHJhbnNwYXJlbnQgMCUsCiAgICByZ2JhKDIwMSwxNjksMTEwLDAuMDgpIDUwJSwKICAgIHRyYW5zcGFyZW50IDEwMCUKICApOwogIGJhY2tncm91bmQtc2l6ZTogMjAwJSAxMDAlOwogIGFuaW1hdGlvbjogc21pby1zaGltbWVyIDIuNHMgbGluZWFyIGluZmluaXRlOwogIHotaW5kZXg6IDI7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBFMiDigJQgU2Nyb2xsIHJldmVhbCAocGFpcmVkIHdpdGggSlMgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIpCiAgIFVzZSBjbGFzcz0ic21pby1yZXZlYWwiIG9yIHNtaW8tcmV2ZWFsLXVwIC8gc21pby1yZXZlYWwtc2NhbGUKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi5zbWlvLXJldmVhbCwKLnNtaW8tcmV2ZWFsLXVwLAouc21pby1yZXZlYWwtc2NhbGUgewogIG9wYWNpdHk6IDA7CiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjdzIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpLAogICAgICAgICAgICAgIHRyYW5zZm9ybSAwLjdzIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpOwogIHdpbGwtY2hhbmdlOiBvcGFjaXR5LCB0cmFuc2Zvcm07Cn0KLnNtaW8tcmV2ZWFsICAgICAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9Ci5zbWlvLXJldmVhbC11cCAgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyNHB4KTsgfQouc21pby1yZXZlYWwtc2NhbGUgeyB0cmFuc2Zvcm06IHNjYWxlKDAuOTYpOyB9Cgouc21pby1yZXZlYWwuaXMtdmlzaWJsZSwKLnNtaW8tcmV2ZWFsLXVwLmlzLXZpc2libGUsCi5zbWlvLXJldmVhbC1zY2FsZS5pcy12aXNpYmxlIHsKICBvcGFjaXR5OiAxOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTsKfQoKLyogU3RhZ2dlcjogY2hpbGRyZW4gaW5zaWRlIHNtaW8tc3RhZ2dlciBncm91cCBnZXQgaW5jcmVtZW50YWwgZGVsYXlzICovCi5zbWlvLXN0YWdnZXIgPiAuc21pby1yZXZlYWwtdXAsCi5zbWlvLXN0YWdnZXIgPiAuc21pby1yZXZlYWwtc2NhbGUsCi5zbWlvLXN0YWdnZXIgPiAuc21pby1yZXZlYWwgeyB0cmFuc2l0aW9uLWRlbGF5OiAwczsgfQouc21pby1zdGFnZ2VyID4gKjpudGgtY2hpbGQoMSkgeyB0cmFuc2l0aW9uLWRlbGF5OiAwLjA1czsgfQouc21pby1zdGFnZ2VyID4gKjpudGgtY2hpbGQoMikgeyB0cmFuc2l0aW9uLWRlbGF5OiAwLjEwczsgfQouc21pby1zdGFnZ2VyID4gKjpudGgtY2hpbGQoMykgeyB0cmFuc2l0aW9uLWRlbGF5OiAwLjE1czsgfQouc21pby1zdGFnZ2VyID4gKjpudGgtY2hpbGQoNCkgeyB0cmFuc2l0aW9uLWRlbGF5OiAwLjIwczsgfQouc21pby1zdGFnZ2VyID4gKjpudGgtY2hpbGQoNSkgeyB0cmFuc2l0aW9uLWRlbGF5OiAwLjI1czsgfQouc21pby1zdGFnZ2VyID4gKjpudGgtY2hpbGQoNikgeyB0cmFuc2l0aW9uLWRlbGF5OiAwLjMwczsgfQouc21pby1zdGFnZ2VyID4gKjpudGgtY2hpbGQoNykgeyB0cmFuc2l0aW9uLWRlbGF5OiAwLjM1czsgfQouc21pby1zdGFnZ2VyID4gKjpudGgtY2hpbGQoOCkgeyB0cmFuc2l0aW9uLWRlbGF5OiAwLjQwczsgfQouc21pby1zdGFnZ2VyID4gKjpudGgtY2hpbGQobis5KSB7IHRyYW5zaXRpb24tZGVsYXk6IDAuNDVzOyB9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgRTMg4oCUIFByb2R1Y3QgY2FyZCBob3ZlciAocmVmaW5lbWVudCBvZiBleGlzdGluZyB0cmFuc2Zvcm0pCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwouc21pby1wcm9kdWN0LWNhcmQsCi5wcm9kdWN0LWNhcmQsCi5zbWlvLWNhcmQtcHJvZHVjdCwKLnNtaW8tc3BlY2lhbC1vZmZlcnMgLnNtaW8tcHJvZHVjdCB7CiAgdHJhbnNpdGlvbjoKICAgIHRyYW5zZm9ybSAwLjI1cyBjdWJpYy1iZXppZXIoMC4zNCwgMS41NiwgMC42NCwgMSksCiAgICBib3JkZXItY29sb3IgMC4yNXMgZWFzZSwKICAgIGJveC1zaGFkb3cgMC4yNXMgZWFzZTsKfQouc21pby1wcm9kdWN0LWNhcmQ6aG92ZXIsCi5wcm9kdWN0LWNhcmQ6aG92ZXIsCi5zbWlvLWNhcmQtcHJvZHVjdDpob3ZlciwKLnNtaW8tc3BlY2lhbC1vZmZlcnMgLnNtaW8tcHJvZHVjdDpob3ZlciB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpOwogIGJvcmRlci1jb2xvcjogdmFyKC0tc21pby1nb2xkKTsKICBib3gtc2hhZG93OgogICAgMCAxMnB4IDI4cHggcmdiYSgwLDAsMCwwLjQ1KSwKICAgIDAgMCAwIDFweCB2YXIoLS1zbWlvLWdvbGQtbGluZSk7Cn0KLnNtaW8tcHJvZHVjdC1jYXJkOmFjdGl2ZSwKLnByb2R1Y3QtY2FyZDphY3RpdmUgewogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjA4czsKfQoKLyogU3VidGxlIGlubmVyIGdsb3cgb24gaG92ZXIgKi8KLnNtaW8tcHJvZHVjdC1jYXJkOjphZnRlciwKLnByb2R1Y3QtY2FyZDo6YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBpbnNldDogMDsKICBib3JkZXItcmFkaXVzOiBpbmhlcml0OwogIHBvaW50ZXItZXZlbnRzOiBub25lOwogIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudCgKICAgIDYwMHB4IGNpcmNsZSBhdCB2YXIoLS1teCwgNTAlKSB2YXIoLS1teSwgNTAlKSwKICAgIHJnYmEoMjAxLDE2OSwxMTAsMC4wOCksCiAgICB0cmFuc3BhcmVudCA0MCUKICApOwogIG9wYWNpdHk6IDA7CiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7Cn0KLnNtaW8tcHJvZHVjdC1jYXJkOmhvdmVyOjphZnRlciwKLnByb2R1Y3QtY2FyZDpob3Zlcjo6YWZ0ZXIgeyBvcGFjaXR5OiAxOyB9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgRTQg4oCUIEJ1dHRvbiByZWZpbmVtZW50OiBob3Zlci9hY3RpdmUvZm9jdXMvcmlwcGxlCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKLyogUmlwcGxlIGNvbnRhaW5lciAqLwouc21pby1yaXBwbGUgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBvdmVyZmxvdzogaGlkZGVuOwogIGlzb2xhdGlvbjogaXNvbGF0ZTsKfQouc21pby1yaXBwbGUgLnNtaW8tcmlwcGxlX193YXZlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4zNSk7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgc2NhbGUoMCk7CiAgYW5pbWF0aW9uOiBzbWlvLXJpcHBsZS1ncm93IDAuNnMgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSkgZm9yd2FyZHM7CiAgei1pbmRleDogMTsKICBtaXgtYmxlbmQtbW9kZTogb3ZlcmxheTsKfQpAa2V5ZnJhbWVzIHNtaW8tcmlwcGxlLWdyb3cgewogIHRvIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgc2NhbGUoMi42KTsgb3BhY2l0eTogMDsgfQp9CgovKiBQcmltYXJ5IEFkZCB0byBDYXJ0IOKAlCBob3ZlciBsaWZ0LCBmb2N1cyByaW5nLCBhY3RpdmUgcHJlc3MgKi8KLmFkZF90b19jYXJ0X2J1dHRvbiwKYnV0dG9uLmIsCmJ1dHRvbi5icSwKLnNtaW8tYXRjLAouc21pby1hZGQtdG8tY2FydCwKLnNtaW8tc3BlY2lhbC1vZmZlcnMgYnV0dG9uW29uY2xpY2sqPSJhZGRUb0NhcnQiXSwKLnNtaW8tc3BlY2lhbC1vZmZlcnMgYnV0dG9uW29uY2xpY2sqPSJzbWlvQWRkVG9DYXJ0Il0gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0cmFuc2l0aW9uOgogICAgdHJhbnNmb3JtIDAuMnMgY3ViaWMtYmV6aWVyKDAuMzQsIDEuNTYsIDAuNjQsIDEpLAogICAgYmFja2dyb3VuZCAwLjI1cyBlYXNlLAogICAgYmFja2dyb3VuZC1pbWFnZSAwLjI1cyBlYXNlLAogICAgYm94LXNoYWRvdyAwLjI1cyBlYXNlLAogICAgYm9yZGVyLWNvbG9yIDAuMnMgZWFzZSwKICAgIGNvbG9yIDAuMnMgZWFzZTsKICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwp9Ci5hZGRfdG9fY2FydF9idXR0b246OmJlZm9yZSwKYnV0dG9uLmI6OmJlZm9yZSwKYnV0dG9uLmJxOjpiZWZvcmUsCi5zbWlvLWF0Yzo6YmVmb3JlLAouc21pby1hZGQtdG8tY2FydDo6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgaW5zZXQ6IDA7CiAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTIwZGVnLCB0cmFuc3BhcmVudCAzMCUsIHJnYmEoMjU1LDI1NSwyNTUsMC4xOCkgNTAlLCB0cmFuc3BhcmVudCA3MCUpOwogIGJhY2tncm91bmQtc2l6ZTogMjAwJSAxMDAlOwogIGJhY2tncm91bmQtcG9zaXRpb246IC0yMDAlIDA7CiAgb3BhY2l0eTogMDsKICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMjVzIGVhc2U7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgei1pbmRleDogMTsKfQouYWRkX3RvX2NhcnRfYnV0dG9uOmhvdmVyOjpiZWZvcmUsCmJ1dHRvbi5iOmhvdmVyOjpiZWZvcmUsCmJ1dHRvbi5icTpob3Zlcjo6YmVmb3JlLAouc21pby1hdGM6aG92ZXI6OmJlZm9yZSwKLnNtaW8tYWRkLXRvLWNhcnQ6aG92ZXI6OmJlZm9yZSB7CiAgb3BhY2l0eTogMTsKICBhbmltYXRpb246IHNtaW8tc2hpbW1lciAxLjRzIGxpbmVhciBpbmZpbml0ZTsKfQoKLyogRm9jdXMgcmluZyAoYWNjZXNzaWJpbGl0eSkgKi8KLmFkZF90b19jYXJ0X2J1dHRvbjpmb2N1cy12aXNpYmxlLApidXR0b24uYjpmb2N1cy12aXNpYmxlLApidXR0b24uYnE6Zm9jdXMtdmlzaWJsZSwKLnNtaW8tYXRjOmZvY3VzLXZpc2libGUsCi5zbWlvLWFkZC10by1jYXJ0OmZvY3VzLXZpc2libGUsCi5zbWlvLWlucXVpcmU6Zm9jdXMtdmlzaWJsZSwKLnNtaW8taW5xdWlyeTpmb2N1cy12aXNpYmxlIHsKICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tc21pby1nb2xkKTsKICBvdXRsaW5lLW9mZnNldDogM3B4Owp9CgovKiBBY3RpdmUgcHJlc3MgKi8KLmFkZF90b19jYXJ0X2J1dHRvbjphY3RpdmUsCmJ1dHRvbi5iOmFjdGl2ZSwKYnV0dG9uLmJxOmFjdGl2ZSwKLnNtaW8tYXRjOmFjdGl2ZSwKLnNtaW8tYWRkLXRvLWNhcnQ6YWN0aXZlIHsKICB0cmFuc2Zvcm06IHNjYWxlKDAuOTYpOwogIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMDhzOwp9CgovKiBJbnF1aXJlIGJ1dHRvbiBob3ZlciAqLwouc21pby1pbnF1aXJlLAouc21pby1pbnF1aXJ5LAouc21pby1zcGVjaWFsLW9mZmVycyBhW2hyZWYqPSJ3YS5tZSJdLAouc21pby1zcGVjaWFsLW9mZmVycyBhW2hyZWYqPSJ3aGF0c2FwcCJdIHsKICB0cmFuc2l0aW9uOgogICAgdHJhbnNmb3JtIDAuMnMgY3ViaWMtYmV6aWVyKDAuMzQsIDEuNTYsIDAuNjQsIDEpLAogICAgYmFja2dyb3VuZCAwLjI1cyBlYXNlLAogICAgY29sb3IgMC4ycyBlYXNlLAogICAgYm9yZGVyLWNvbG9yIDAuMnMgZWFzZSwKICAgIGJveC1zaGFkb3cgMC4yNXMgZWFzZTsKfQouc21pby1pbnF1aXJlOmhvdmVyLAouc21pby1pbnF1aXJ5OmhvdmVyLAouc21pby1zcGVjaWFsLW9mZmVycyBhW2hyZWYqPSJ3YS5tZSJdOmhvdmVyLAouc21pby1zcGVjaWFsLW9mZmVycyBhW2hyZWYqPSJ3aGF0c2FwcCJdOmhvdmVyIHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7CiAgYmFja2dyb3VuZDogdmFyKC0tc21pby1nb2xkLXNvZnQpICFpbXBvcnRhbnQ7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zbWlvLWdvbGQpICFpbXBvcnRhbnQ7CiAgYm94LXNoYWRvdzogMCA0cHggMTRweCByZ2JhKDIwMSwxNjksMTEwLDAuMik7Cn0KLnNtaW8taW5xdWlyZTphY3RpdmUsCi5zbWlvLWlucXVpcnk6YWN0aXZlIHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMC45Nyk7Cn0KCi8qIExvYWRpbmcgc3RhdGUgZm9yIGJ1dHRvbnMgKi8KLnNtaW8tYXRjLmlzLWxvYWRpbmcsCi5hZGRfdG9fY2FydF9idXR0b24uaXMtbG9hZGluZywKYnV0dG9uLmIuaXMtbG9hZGluZyB7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogdmFyKC0tc21pby1nb2xkKSAhaW1wb3J0YW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmUgIWltcG9ydGFudDsKfQouc21pby1hdGMuaXMtbG9hZGluZzo6YWZ0ZXIsCi5hZGRfdG9fY2FydF9idXR0b24uaXMtbG9hZGluZzo6YWZ0ZXIsCmJ1dHRvbi5iLmlzLWxvYWRpbmc6OmFmdGVyIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiA1MCU7CiAgbGVmdDogNTAlOwogIHdpZHRoOiAxNnB4OwogIGhlaWdodDogMTZweDsKICBtYXJnaW46IC04cHggMCAwIC04cHg7CiAgYm9yZGVyOiAycHggc29saWQgcmdiYSgxMCwxMCwxMCwwLjMpOwogIGJvcmRlci10b3AtY29sb3I6ICMwYTBhMGE7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIGFuaW1hdGlvbjogc21pby1zcGluIDAuN3MgbGluZWFyIGluZmluaXRlOwogIHotaW5kZXg6IDI7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBFNSDigJQgTGlua3MgJiBjYXJkcyBnZW5lcmljIG1pY3JvLWludGVyYWN0aW9uCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwphIHsKICB0cmFuc2l0aW9uOiBjb2xvciAwLjE1cyBlYXNlLCB0ZXh0LWRlY29yYXRpb24tY29sb3IgMC4xNXMgZWFzZTsKfQouc21pby1hcnRpY2xlX19jb250ZW50IGEgewogIHRyYW5zaXRpb246IGNvbG9yIDAuMnMgZWFzZSwgdGV4dC1kZWNvcmF0aW9uLWNvbG9yIDAuMnMgZWFzZTsKfQouc21pby1jYXJkLAouc21pby1yZWxhdGVkX19jYXJkIHsKICB0cmFuc2l0aW9uOgogICAgdHJhbnNmb3JtIDAuMjVzIGN1YmljLWJlemllcigwLjM0LCAxLjU2LCAwLjY0LCAxKSwKICAgIGJvcmRlci1jb2xvciAwLjI1cyBlYXNlLAogICAgYm94LXNoYWRvdyAwLjI1cyBlYXNlLAogICAgYmFja2dyb3VuZCAwLjI1cyBlYXNlOwp9Ci5zbWlvLXJlbGF0ZWRfX2NhcmQ6aG92ZXIgewogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKICBib3JkZXItY29sb3I6IHZhcigtLXNtaW8tZ29sZCk7CiAgYm94LXNoYWRvdzogMCA4cHggMjBweCByZ2JhKDAsMCwwLDAuNCk7Cn0KCi8qIFRvYXN0IG5vdGlmaWNhdGlvbiAod29ya3Mgd2l0aCBzbWlvVG9hc3QgZnJvbSBjYXJ0IGZpeCkgKi8KI3NtaW9Ub2FzdCwKLnNtaW8tdG9hc3QgewogIGFuaW1hdGlvbjogc21pby1mYWRlLWluLXVwIDAuM3MgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSk7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBFNiDigJQgTW9iaWxlIG5hdmlnYXRpb24gKGhhbWJ1cmdlciBkcmF3ZXIgZm9yIOKJpDc2OHB4KQogICBBY3RpdmF0ZWQgYnkgSlM6IDxib2R5IGNsYXNzPSJzbWlvLW1vYmlsZS1uYXYtb3BlbiI+CiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwouc21pby1tb2JpbGUtbmF2LXRvZ2dsZSB7CiAgZGlzcGxheTogbm9uZTsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIHdpZHRoOiA0NHB4OwogIGhlaWdodDogNDRweDsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zbWlvLWJvcmRlcik7CiAgYm9yZGVyLXJhZGl1czogNnB4OwogIGNvbG9yOiB2YXIoLS1zbWlvLWdvbGQtYnJpZ2h0KTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgcGFkZGluZzogMDsKICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwogIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4ycyBlYXNlLCBib3JkZXItY29sb3IgMC4ycyBlYXNlOwogIGZsZXgtc2hyaW5rOiAwOwp9Ci5zbWlvLW1vYmlsZS1uYXYtdG9nZ2xlOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tc21pby1nb2xkLXNvZnQpOyB9Ci5zbWlvLW1vYmlsZS1uYXYtdG9nZ2xlOmZvY3VzLXZpc2libGUgeyBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tc21pby1nb2xkKTsgb3V0bGluZS1vZmZzZXQ6IDJweDsgfQouc21pby1tb2JpbGUtbmF2LXRvZ2dsZV9fYmFyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IDIwcHg7CiAgaGVpZ2h0OiAycHg7CiAgYmFja2dyb3VuZDogY3VycmVudENvbG9yOwogIGJvcmRlci1yYWRpdXM6IDJweDsKICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnMgZWFzZTsKfQouc21pby1tb2JpbGUtbmF2LXRvZ2dsZV9fYmFyOjpiZWZvcmUsCi5zbWlvLW1vYmlsZS1uYXYtdG9nZ2xlX19iYXI6OmFmdGVyIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMDsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDJweDsKICBiYWNrZ3JvdW5kOiBjdXJyZW50Q29sb3I7CiAgYm9yZGVyLXJhZGl1czogMnB4OwogIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGN1YmljLWJlemllcigwLjM0LCAxLjU2LCAwLjY0LCAxKSwgdG9wIDAuMjVzIGVhc2U7Cn0KLnNtaW8tbW9iaWxlLW5hdi10b2dnbGVfX2Jhcjo6YmVmb3JlIHsgdG9wOiAtNnB4OyB9Ci5zbWlvLW1vYmlsZS1uYXYtdG9nZ2xlX19iYXI6OmFmdGVyICB7IHRvcDogNnB4OyAgfQpib2R5LnNtaW8tbW9iaWxlLW5hdi1vcGVuIC5zbWlvLW1vYmlsZS1uYXYtdG9nZ2xlX19iYXIgeyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfQpib2R5LnNtaW8tbW9iaWxlLW5hdi1vcGVuIC5zbWlvLW1vYmlsZS1uYXYtdG9nZ2xlX19iYXI6OmJlZm9yZSB7IHRvcDogMDsgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOyB9CmJvZHkuc21pby1tb2JpbGUtbmF2LW9wZW4gLnNtaW8tbW9iaWxlLW5hdi10b2dnbGVfX2Jhcjo6YWZ0ZXIgIHsgdG9wOiAwOyB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOyB9CgovKiBNb2JpbGUgZHJhd2VyIChzaXRzIG92ZXIgdGhlIHBhZ2UsIHNsaWRlLWluIGZyb20gcmlnaHQpICovCi5zbWlvLW1vYmlsZS1uYXYgewogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIHdpZHRoOiBtaW4oMzIwcHgsIDg2dncpOwogIGJhY2tncm91bmQ6ICMwYTBhMGE7CiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1zbWlvLWJvcmRlcik7CiAgei1pbmRleDogOTk5OTg7CiAgcGFkZGluZzogNzJweCAyMHB4IDIwcHg7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwogIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjMycyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKTsKICBvdmVyZmxvdy15OiBhdXRvOwogIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICB2aXNpYmlsaXR5OiBoaWRkZW47Cn0KYm9keS5zbWlvLW1vYmlsZS1uYXYtb3BlbiAuc21pby1tb2JpbGUtbmF2IHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgdmlzaWJpbGl0eTogdmlzaWJsZTsKfQouc21pby1tb2JpbGUtbmF2X19iYWNrZHJvcCB7CiAgcG9zaXRpb246IGZpeGVkOwogIGluc2V0OiAwOwogIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC41NSk7CiAgb3BhY2l0eTogMDsKICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2UsIHZpc2liaWxpdHkgMC4zcyBlYXNlOwogIHotaW5kZXg6IDk5OTk3OwogIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDJweCk7Cn0KYm9keS5zbWlvLW1vYmlsZS1uYXYtb3BlbiAuc21pby1tb2JpbGUtbmF2X19iYWNrZHJvcCB7CiAgb3BhY2l0eTogMTsKICB2aXNpYmlsaXR5OiB2aXNpYmxlOwp9Ci5zbWlvLW1vYmlsZS1uYXYgYSB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIG1pbi1oZWlnaHQ6IDQ4cHg7CiAgcGFkZGluZzogMTJweCA4cHg7CiAgY29sb3I6IHZhcigtLXNtaW8tdGV4dCk7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGZvbnQtc2l6ZTogMTVweDsKICBmb250LXdlaWdodDogNTAwOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zbWlvLWJvcmRlcik7CiAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZSwgYmFja2dyb3VuZCAwLjE1cyBlYXNlLCBwYWRkaW5nLWxlZnQgMC4ycyBlYXNlOwp9Ci5zbWlvLW1vYmlsZS1uYXYgYTpob3ZlciwKLnNtaW8tbW9iaWxlLW5hdiBhOmZvY3VzLXZpc2libGUgewogIGNvbG9yOiB2YXIoLS1zbWlvLWdvbGQtYnJpZ2h0KTsKICBiYWNrZ3JvdW5kOiB2YXIoLS1zbWlvLWdvbGQtc29mdCk7CiAgcGFkZGluZy1sZWZ0OiAxNHB4OwogIG91dGxpbmU6IG5vbmU7Cn0KCi8qIFNob3cgdGhlIHRvZ2dsZSBvbiBtb2JpbGUsIGhpZGUgZGVza3RvcCBpbmxpbmUgbmF2IChzZWxlY3RpdmUg4oCUIGRlcGVuZHMgb24gdGhlbWUgbWFya3VwKSAqLwpAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAuc21pby1tb2JpbGUtbmF2LXRvZ2dsZSB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyB9CiAgLyogSWYgdGhlbWUgaGFzIGEgcHJpbWFyeSBuYXYsIGhpZGUgaXQgb24gbW9iaWxlLiBUaGUgLnNtaW8tZGVza3RvcC1uYXYgY2xhc3MgaXMgb3B0LWluCiAgICAgc28gdGhpcyB3b24ndCBicmVhayB0aGVtZXMgdGhhdCBkb24ndCB1c2UgaXQuICovCiAgLnNtaW8tZGVza3RvcC1uYXYgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEU3IOKAlCBUb3VjaC1mcmllbmRseSBzaXppbmcgKFdDQUcgMi41LjUgQUFBIOKAlCA0NHg0NHB4KQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgLyogQnVtcCBhbGwgaW50ZXJhY3RpdmUgZWxlbWVudHMgdG8g4omlNDRweCB0YXAgdGFyZ2V0ICovCiAgLmFkZF90b19jYXJ0X2J1dHRvbiwKICBidXR0b24uYiwKICBidXR0b24uYnEsCiAgLnNtaW8tYXRjLAogIC5zbWlvLWFkZC10by1jYXJ0LAogIC5zbWlvLWlucXVpcmUsCiAgLnNtaW8taW5xdWlyeSwKICAuc21pby1zcGVjaWFsLW9mZmVycyBhW2hyZWYqPSJ3YS5tZSJdLAogIC5zbWlvLXNwZWNpYWwtb2ZmZXJzIGFbaHJlZio9IndoYXRzYXBwIl0gewogICAgbWluLWhlaWdodDogNDRweCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMTJweCAxOHB4ICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDsKICB9CiAgLnNtaW8tYXJ0aWNsZV9fc2hhcmUgYSB7CiAgICB3aWR0aDogNDRweDsKICAgIGhlaWdodDogNDRweDsKICB9CiAgLnNtaW8tbW9iaWxlLXRhYmJhciBhLAogIC5zbWlvLXRhYi1pdGVtIHsKICAgIG1pbi1oZWlnaHQ6IDU2cHg7CiAgICBwYWRkaW5nOiA4cHggNHB4OwogIH0KICAvKiBCaWdnZXIgZm9ybSBjb250cm9scyAqLwogIGlucHV0W3R5cGU9InRleHQiXSwKICBpbnB1dFt0eXBlPSJlbWFpbCJdLAogIGlucHV0W3R5cGU9InNlYXJjaCJdLAogIGlucHV0W3R5cGU9Im51bWJlciJdLAogIHRleHRhcmVhLAogIHNlbGVjdCB7CiAgICBtaW4taGVpZ2h0OiA0NHB4OwogICAgZm9udC1zaXplOiAxNnB4OyAvKiBwcmV2ZW50IGlPUyB6b29tLW9uLWZvY3VzICovCiAgICBwYWRkaW5nOiAxMHB4IDEycHg7CiAgfQogIC8qIFByZXZlbnQgdGV4dCBzZWxlY3Rpb24gb24gcmFwaWQgdGFwcyAqLwogIC5zbWlvLXByb2R1Y3QtY2FyZCwKICAuc21pby1jYXJkLAogIGJ1dHRvbiB7CiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgfQogIC8qIFNhZmUgYXJlYSBmb3Igbm90Y2hlZCBwaG9uZXMgKi8KICAuc21pby1tb2JpbGUtdGFiYmFyIHsKICAgIHBhZGRpbmctYm90dG9tOiBtYXgoZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pLCA4cHgpICFpbXBvcnRhbnQ7CiAgfQogIC5zbWlvLW1vYmlsZS1uYXYgewogICAgcGFkZGluZy10b3A6IG1heCg3MnB4LCBlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCwgMHB4KSArIDI0cHgpOwogIH0KfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEU4IOKAlCBVbHRyYS1uYXJyb3cgcGhvbmVzICgzMjBweCAtIDQ4MHB4KQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7CiAgLnNtaW8tYXJ0aWNsZSwKICAuc21pby1hcmNoaXZlIHsgcGFkZGluZy1sZWZ0OiAxMnB4OyBwYWRkaW5nLXJpZ2h0OiAxMnB4OyB9CiAgLnNtaW8tYXJ0aWNsZV9fY29udGFpbmVyLAogIC5zbWlvLWFyY2hpdmVfX2hlYWRlciB7IHBhZGRpbmc6IDAgNHB4OyB9CiAgLnNtaW8tYXJ0aWNsZV9fdGl0bGUgeyBmb250LXNpemU6IDIycHggIWltcG9ydGFudDsgfQogIC5zbWlvLWFydGljbGVfX2NvbnRlbnQgeyBmb250LXNpemU6IDE1cHggIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6IDEuNyAhaW1wb3J0YW50OyB9CiAgLnNtaW8tYXJjaGl2ZV9fdGl0bGUgeyBmb250LXNpemU6IDI2cHggIWltcG9ydGFudDsgfQogIC5zbWlvLXByb2R1Y3QtY2FyZF9fYWN0aW9ucyB7IGdhcDogNnB4OyB9CiAgLnNtaW8tcHJvZHVjdC1jYXJkX19hY3Rpb25zIGJ1dHRvbiwKICAuc21pby1wcm9kdWN0LWNhcmRfX2FjdGlvbnMgYSB7CiAgICBmb250LXNpemU6IDExcHggIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDhweCA2cHggIWltcG9ydGFudDsKICAgIGxldHRlci1zcGFjaW5nOiAwOwogIH0KICAuc21pby1jYXJkX190aXRsZSB7IGZvbnQtc2l6ZTogMTVweCAhaW1wb3J0YW50OyB9CiAgLnNtaW8tcmVsYXRlZF9fbGlzdCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7IH0KICAvKiBIaWRlIGxlc3MtaW1wb3J0YW50IHNoYXJlIHRhcmdldHMgKi8KICAuc21pby1hcnRpY2xlX19zaGFyZSBhW2FyaWEtbGFiZWw9IlNoYXJlIG9uIFR3aXR0ZXIiXSB7IGRpc3BsYXk6IG5vbmU7IH0KfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEU5IOKAlCBwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZXNwZWN0IHVzZXIgcHJlZmVyZW5jZQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAqLAogICo6OmJlZm9yZSwKICAqOjphZnRlciB7CiAgICBhbmltYXRpb24tZHVyYXRpb246IDAuMDFtcyAhaW1wb3J0YW50OwogICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMSAhaW1wb3J0YW50OwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4wMW1zICFpbXBvcnRhbnQ7CiAgICBzY3JvbGwtYmVoYXZpb3I6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLnNtaW8tcmV2ZWFsLAogIC5zbWlvLXJldmVhbC11cCwKICAuc21pby1yZXZlYWwtc2NhbGUgewogICAgb3BhY2l0eTogMSAhaW1wb3J0YW50OwogICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7CiAgfQogIC5zbWlvLXByb2R1Y3QtY2FyZDpob3ZlciwKICAucHJvZHVjdC1jYXJkOmhvdmVyIHsKICAgIHRyYW5zZm9ybTogbm9uZTsKICB9Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBFMTAg4oCUIEZvY3VzIHZpc2libGUgZ2xvYmFsIChhY2Nlc3NpYmlsaXR5KQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KOmZvY3VzLXZpc2libGUgewogIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1zbWlvLWdvbGQpOwogIG91dGxpbmUtb2Zmc2V0OiAycHg7Cn0KLyogRG9uJ3Qgc2hvdyBmb2N1cyByaW5nIG9uIGNsaWNrIGZvciBtb3VzZSB1c2VycyAqLwo6Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7IG91dGxpbmU6IG5vbmU7IH0KCg==', 'smio-fixes/smio-product-image-fix.js' => 'LyoqCiAqIFNNSU8gUHJvZHVjdCBJbWFnZSAmIEJ1dHRvbiBGaXggLSB2Mi4xCiAqIDIwMjYtMDctMTUKICoKICogRml4ZXMgNSBwcm9ibGVtcyBhdCBydW50aW1lIFdJVEhPVVQgcmVxdWlyaW5nIHRlbXBsYXRlIGNoYW5nZXM6CiAqCiAqICBGMTogRGV0ZWN0cyBwcm9kdWN0IGNhcmRzIHdpdGggZW1wdHkvYnJva2VuIGltYWdlIHNyYyBhbmQKICogICAgICBpbmplY3RzIGEgY2hhbXBhZ25lLWdvbGQgU1ZHIHBsYWNlaG9sZGVyLCBzZXRzIHRoZQogKiAgICAgICJkYXRhLWVtcHR5IiBmbGFnIGZvciBDU1MKICogIEYyOiBSZS1zdHlsZXMgYW55ICJBZGQgdG8gQ2FydCIgLyAiSW5xdWlyZSIgYnV0dG9ucyB0aGF0CiAqICAgICAgd2VyZSByZW5kZXJlZCB3aXRoIGlubGluZSBwaW5rL21hZ2VudGEgZ3JhZGllbnRzCiAqICBGMzogQWRkcyBJbnRlcnNlY3Rpb25PYnNlcnZlci1iYXNlZCBsYXp5IGxvYWRpbmcgZmFsbGJhY2sKICogICAgICBmb3IgYnJvd3NlcnMgdGhhdCBkb24ndCBzdXBwb3J0IGxvYWRpbmc9ImxhenkiIChvbGQgU2FmYXJpKQogKiAgRjQ6IEF1dG8td2lyZXMgZGF0YS1uYW1lL2RhdGEtcHJpY2UvZGF0YS1pbWFnZSBvbiBldmVyeQogKiAgICAgICJBZGQgdG8gQ2FydCIgYnV0dG9uIHNvIHdpbmRvdy5hZGRUb0NhcnQoKSB3b3JrcwogKiAgRjU6IE11dGF0aW9uT2JzZXJ2ZXIgZm9yIFBKQVggLyBkeW5hbWljIGNvbnRlbnQKICovCihmdW5jdGlvbiAoKSB7CiAgJ3VzZSBzdHJpY3QnOwoKICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAvLyAgU1ZHIFBMQUNFSE9MREVSIChjaGFtcGFnbmUtZ29sZCBpY29uIG9uIGRhcmspCiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgdmFyIFBMQUNFSE9MREVSX1NWRyA9CiAgICAnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsJyArCiAgICBlbmNvZGVVUklDb21wb25lbnQoCiAgICAgICc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDY0IDY0IiBmaWxsPSJub25lIiBzdHJva2U9IiNDOUE5NkUiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPicgKwogICAgICAgICc8cmVjdCB4PSI4IiB5PSIxMiIgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQwIiByeD0iNCIvPicgKwogICAgICAgICc8Y2lyY2xlIGN4PSIyMiIgY3k9IjI0IiByPSI0Ii8+JyArCiAgICAgICAgJzxwYXRoIGQ9Ik04IDQ0bDE0LTE0IDEwIDEwIDgtOCAxNiAxNiIvPicgKwogICAgICAnPC9zdmc+JwogICAgKTsKCiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgLy8gIEYxIOKAlCBJbWFnZSBmaXgKICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBmdW5jdGlvbiBmaXhQcm9kdWN0SW1hZ2VzKHJvb3QpIHsKICAgIHJvb3QgPSByb290IHx8IGRvY3VtZW50OwogICAgdmFyIGltZ3MgPSByb290LnF1ZXJ5U2VsZWN0b3JBbGwoCiAgICAgICcuc21pby1wcm9kdWN0LWNhcmQgaW1nLCAnICsKICAgICAgJy5zbWlvLXNwZWNpYWwtb2ZmZXJzIGltZywgJyArCiAgICAgICcuc21pby1jYXJkLXByb2R1Y3QgaW1nLCAnICsKICAgICAgJy5wcm9kdWN0LWNhcmQgaW1nLCAnICsKICAgICAgJy53b29jb21tZXJjZS1sb29wLXByb2R1Y3RfX2xpbmsgaW1nLCAnICsKICAgICAgJy5wcm9kdWN0cyAucHJvZHVjdCBpbWcnCiAgICApOwogICAgaW1ncy5mb3JFYWNoKGZ1bmN0aW9uIChpbWcpIHsKICAgICAgaWYgKCFpbWcuaGFzQXR0cmlidXRlKCdsb2FkaW5nJykpIHsKICAgICAgICBpbWcuc2V0QXR0cmlidXRlKCdsb2FkaW5nJywgJ2xhenknKTsKICAgICAgfQogICAgICBpZiAoIWltZy5oYXNBdHRyaWJ1dGUoJ2RlY29kaW5nJykpIHsKICAgICAgICBpbWcuc2V0QXR0cmlidXRlKCdkZWNvZGluZycsICdhc3luYycpOwogICAgICB9CgogICAgICB2YXIgc3JjID0gaW1nLmdldEF0dHJpYnV0ZSgnc3JjJykgfHwgJyc7CiAgICAgIHZhciBpc0VtcHR5ID0KICAgICAgICBzcmMgPT09ICcnIHx8CiAgICAgICAgc3JjID09PSAnIycgfHwKICAgICAgICBzcmMuaW5kZXhPZignL3VuZGVmaW5lZCcpICE9PSAtMSB8fAogICAgICAgIHNyYy5pbmRleE9mKCcvbnVsbCcpICE9PSAtMSB8fAogICAgICAgIHNyYy5pbmRleE9mKCdkYXRhOmltYWdlL2dpZicpID09PSAwOwoKICAgICAgaWYgKGlzRW1wdHkpIHsKICAgICAgICBpbWcuc3JjID0gUExBQ0VIT0xERVJfU1ZHOwogICAgICAgIHZhciB3cmFwID0gaW1nLmNsb3Nlc3QoCiAgICAgICAgICAnLnNtaW8tcHJvZHVjdC1jYXJkX19tZWRpYSwgLnNtaW8tcHJvZHVjdC1pbWFnZSwgLnByb2R1Y3QtY2FyZF9fbWVkaWEnCiAgICAgICAgKTsKICAgICAgICBpZiAod3JhcCkgd3JhcC5zZXRBdHRyaWJ1dGUoJ2RhdGEtZW1wdHknLCAnMScpOwogICAgICB9IGVsc2UgewogICAgICAgIGlmICghaW1nLmRhdGFzZXQuc21pb0Vycm9yQm91bmQpIHsKICAgICAgICAgIGltZy5kYXRhc2V0LnNtaW9FcnJvckJvdW5kID0gJzEnOwogICAgICAgICAgaW1nLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBpbWcuc3JjID0gUExBQ0VIT0xERVJfU1ZHOwogICAgICAgICAgICB2YXIgd3JhcDIgPSBpbWcuY2xvc2VzdCgKICAgICAgICAgICAgICAnLnNtaW8tcHJvZHVjdC1jYXJkX19tZWRpYSwgLnNtaW8tcHJvZHVjdC1pbWFnZSwgLnByb2R1Y3QtY2FyZF9fbWVkaWEnCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICh3cmFwMikgd3JhcDIuc2V0QXR0cmlidXRlKCdkYXRhLWVtcHR5JywgJzEnKTsKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfQogICAgfSk7CiAgfQoKICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAvLyAgRjIg4oCUIEJ1dHRvbiByZS1zdHlsZQogIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIGZ1bmN0aW9uIHJlc3R5bGVBZGRUb0NhcnRCdXR0b25zKHJvb3QpIHsKICAgIHJvb3QgPSByb290IHx8IGRvY3VtZW50OwogICAgdmFyIGJ1dHRvbnMgPSByb290LnF1ZXJ5U2VsZWN0b3JBbGwoCiAgICAgICcuYWRkX3RvX2NhcnRfYnV0dG9uLCBidXR0b24uYiwgYnV0dG9uLmJxLCAuc21pby1hdGMsIC5zbWlvLWFkZC10by1jYXJ0LCAnICsKICAgICAgJy5zbWlvLXNwZWNpYWwtb2ZmZXJzIGJ1dHRvbiwgLnNtaW8tc3BlY2lhbC1vZmZlcnMgYVtocmVmKj0id2EubWUiXScKICAgICk7CiAgICBidXR0b25zLmZvckVhY2goZnVuY3Rpb24gKGJ0bikgewogICAgICBpZiAoYnRuLmRhdGFzZXQuc21pb1Jlc3R5bGVkKSByZXR1cm47CiAgICAgIGJ0bi5kYXRhc2V0LnNtaW9SZXN0eWxlZCA9ICcxJzsKCiAgICAgIHZhciB0ZXh0ID0gKGJ0bi50ZXh0Q29udGVudCB8fCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7CiAgICAgIHZhciBocmVmID0gYnRuLmdldEF0dHJpYnV0ZSgnaHJlZicpIHx8ICcnOwoKICAgICAgdmFyIGlzSW5xdWlyZSA9CiAgICAgICAgYnRuLmNsYXNzTGlzdC5jb250YWlucygnc21pby1pbnF1aXJlJykgfHwKICAgICAgICBidG4uY2xhc3NMaXN0LmNvbnRhaW5zKCdzbWlvLWlucXVpcnknKSB8fAogICAgICAgIGhyZWYuaW5kZXhPZignd2EubWUnKSA+PSAwIHx8CiAgICAgICAgaHJlZi5pbmRleE9mKCd3aGF0c2FwcCcpID49IDAgfHwKICAgICAgICB0ZXh0ID09PSAnaW5xdWlyZScgfHwKICAgICAgICB0ZXh0ID09PSAnaW5xdWlyeScgfHwKICAgICAgICB0ZXh0LmluZGV4T2YoJ3doYXRzYXBwJykgPj0gMDsKCiAgICAgIGlmICghaXNJbnF1aXJlKSB7CiAgICAgICAgdmFyIGNhcmQgPSBidG4uY2xvc2VzdCgKICAgICAgICAgICcuc21pby1wcm9kdWN0LWNhcmQsIC5wcm9kdWN0LWNhcmQsIC5zbWlvLWNhcmQtcHJvZHVjdCwgLnNtaW8tc3BlY2lhbC1vZmZlcnMgLnNtaW8tcHJvZHVjdCwgLnByb2R1Y3QnCiAgICAgICAgKTsKICAgICAgICBpZiAoY2FyZCkgewogICAgICAgICAgaWYgKCFidG4uZGF0YXNldC5uYW1lKSB7CiAgICAgICAgICAgIHZhciB0ID0gY2FyZC5xdWVyeVNlbGVjdG9yKAogICAgICAgICAgICAgICcuc21pby1wcm9kdWN0LWNhcmRfX3RpdGxlLCAucHJvZHVjdC1jYXJkX190aXRsZSwgLndvb2NvbW1lcmNlLWxvb3AtcHJvZHVjdF9fdGl0bGUsIGgyLCBoMycKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKHQpIGJ0bi5kYXRhc2V0Lm5hbWUgPSAodC50ZXh0Q29udGVudCB8fCAnJykudHJpbSgpOwogICAgICAgICAgfQogICAgICAgICAgaWYgKCFidG4uZGF0YXNldC5wcmljZSkgewogICAgICAgICAgICB2YXIgcCA9IGNhcmQucXVlcnlTZWxlY3RvcigKICAgICAgICAgICAgICAnLnNtaW8tcHJvZHVjdC1jYXJkX19wcmljZS1jdXJyZW50LCAuc21pby1wcmljZS1jdXJyZW50LCAucHJpY2UsIC5hbW91bnQnCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmIChwKSB7CiAgICAgICAgICAgICAgdmFyIG0gPSAocC50ZXh0Q29udGVudCB8fCAnJykucmVwbGFjZSgvW15cZC5dL2csICcnKTsKICAgICAgICAgICAgICBpZiAobSkgYnRuLmRhdGFzZXQucHJpY2UgPSBtOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoIWJ0bi5kYXRhc2V0LmltYWdlKSB7CiAgICAgICAgICAgIHZhciBpbSA9IGNhcmQucXVlcnlTZWxlY3RvcignaW1nJyk7CiAgICAgICAgICAgIGlmIChpbSAmJiBpbS5zcmMgJiYgaW0uc3JjICE9PSBQTEFDRUhPTERFUl9TVkcpIHsKICAgICAgICAgICAgICBidG4uZGF0YXNldC5pbWFnZSA9IGltLnNyYzsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdmFyIHN0eWxlQXR0ciA9IGJ0bi5nZXRBdHRyaWJ1dGUoJ3N0eWxlJykgfHwgJyc7CiAgICAgICAgaWYgKAogICAgICAgICAgc3R5bGVBdHRyLm1hdGNoKC9waW5rfGZmNjliNHxlYzQ4OTl8ZjQ3MmI2fDNiODJmNi9pKSB8fAogICAgICAgICAgYnRuLmNsYXNzTGlzdC5jb250YWlucygnYicpIHx8CiAgICAgICAgICBidG4uY2xhc3NMaXN0LmNvbnRhaW5zKCdicScpCiAgICAgICAgKSB7CiAgICAgICAgICBidG4uc3R5bGUuYmFja2dyb3VuZCA9ICdsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjQzlBOTZFIDAlLCAjYjg5NTRkIDEwMCUpJzsKICAgICAgICAgIGJ0bi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPQogICAgICAgICAgICAnbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI0M5QTk2RSAwJSwgI2I4OTU0ZCAxMDAlKSc7CiAgICAgICAgICBidG4uc3R5bGUuY29sb3IgPSAnIzBhMGEwYSc7CiAgICAgICAgICBidG4uc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCAjQzlBOTZFJzsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgYnRuLnN0eWxlLmJhY2tncm91bmQgPSAndHJhbnNwYXJlbnQnOwogICAgICAgIGJ0bi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSAnbm9uZSc7CiAgICAgICAgYnRuLnN0eWxlLmNvbG9yID0gJyNkNGI5N2EnOwogICAgICAgIGJ0bi5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNDOUE5NkUnOwogICAgICB9CiAgICB9KTsKICB9CgogIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIC8vICBGMyDigJQgTmF0aXZlIGxhenkgcG9seWZpbGwgKFNhZmFyaSA8IDE1KQogIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIGZ1bmN0aW9uIHBvbHlmaWxsTGF6eUxvYWQoKSB7CiAgICBpZiAoJ2xvYWRpbmcnIGluIEhUTUxJbWFnZUVsZW1lbnQucHJvdG90eXBlKSByZXR1cm47CiAgICBpZiAoISgnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInIGluIHdpbmRvdykpIHJldHVybjsKCiAgICB2YXIgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoCiAgICAgIGZ1bmN0aW9uIChlbnRyaWVzKSB7CiAgICAgICAgZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICBpZiAoZS5pc0ludGVyc2VjdGluZykgewogICAgICAgICAgICB2YXIgaW1nID0gZS50YXJnZXQ7CiAgICAgICAgICAgIGlmIChpbWcuZGF0YXNldC5zcmMpIHsKICAgICAgICAgICAgICBpbWcuc3JjID0gaW1nLmRhdGFzZXQuc3JjOwogICAgICAgICAgICAgIGltZy5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaW8udW5vYnNlcnZlKGltZyk7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0sCiAgICAgIHsgcm9vdE1hcmdpbjogJzIwMHB4JyB9CiAgICApOwoKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2ltZ1tsb2FkaW5nPSJsYXp5Il0nKS5mb3JFYWNoKGZ1bmN0aW9uIChpbWcpIHsKICAgICAgaW8ub2JzZXJ2ZShpbWcpOwogICAgfSk7CiAgfQoKICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAvLyAgRjQg4oCUIGFkZFRvQ2FydCBzaGltIChjYWxscyB0aGUgZ2xvYmFsIGlmIHByZXNlbnQpCiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgZnVuY3Rpb24gd2lyZUFkZFRvQ2FydEhhbmRsZXJzKCkgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICB2YXIgYnRuID0gZS50YXJnZXQuY2xvc2VzdCgKICAgICAgICAnLmFkZF90b19jYXJ0X2J1dHRvbiwgLnNtaW8tYXRjLCBidXR0b24uYiwgYnV0dG9uLmJxLCAnICsKICAgICAgICAnLnNtaW8tc3BlY2lhbC1vZmZlcnMgYnV0dG9uW29uY2xpY2sqPSJhZGRUb0NhcnQiXSwgJyArCiAgICAgICAgJy5zbWlvLXNwZWNpYWwtb2ZmZXJzIGJ1dHRvbltvbmNsaWNrKj0ic21pb0FkZFRvQ2FydCJdJwogICAgICApOwogICAgICBpZiAoIWJ0bikgcmV0dXJuOwoKICAgICAgdmFyIGNhcmQgPSBidG4uY2xvc2VzdCgKICAgICAgICAnLnNtaW8tcHJvZHVjdC1jYXJkLCAucHJvZHVjdC1jYXJkLCAuc21pby1jYXJkLXByb2R1Y3QsIC5zbWlvLXNwZWNpYWwtb2ZmZXJzIC5zbWlvLXByb2R1Y3QsIC5wcm9kdWN0JwogICAgICApOwogICAgICBpZiAoIWNhcmQpIHJldHVybjsKCiAgICAgIGlmICghYnRuLmRhdGFzZXQubmFtZSkgewogICAgICAgIHZhciB0ID0gY2FyZC5xdWVyeVNlbGVjdG9yKAogICAgICAgICAgJy5zbWlvLXByb2R1Y3QtY2FyZF9fdGl0bGUsIC5wcm9kdWN0LWNhcmRfX3RpdGxlLCBoMiwgaDMsIC53b29jb21tZXJjZS1sb29wLXByb2R1Y3RfX3RpdGxlJwogICAgICAgICk7CiAgICAgICAgaWYgKHQpIGJ0bi5kYXRhc2V0Lm5hbWUgPSB0LnRleHRDb250ZW50LnRyaW0oKTsKICAgICAgfQogICAgICBpZiAoIWJ0bi5kYXRhc2V0LnByaWNlKSB7CiAgICAgICAgdmFyIHAgPSBjYXJkLnF1ZXJ5U2VsZWN0b3IoCiAgICAgICAgICAnLnNtaW8tcHJvZHVjdC1jYXJkX19wcmljZS1jdXJyZW50LCAuc21pby1wcmljZS1jdXJyZW50LCAuYW1vdW50JwogICAgICAgICk7CiAgICAgICAgaWYgKHApIHsKICAgICAgICAgIHZhciBtID0gcC50ZXh0Q29udGVudC5yZXBsYWNlKC9bXlxkLl0vZywgJycpOwogICAgICAgICAgaWYgKG0pIGJ0bi5kYXRhc2V0LnByaWNlID0gbTsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKCFidG4uZGF0YXNldC5pbWFnZSkgewogICAgICAgIHZhciBpbSA9IGNhcmQucXVlcnlTZWxlY3RvcignaW1nJyk7CiAgICAgICAgaWYgKGltICYmIGltLnNyYyAmJiBpbS5zcmMgIT09IFBMQUNFSE9MREVSX1NWRykgewogICAgICAgICAgYnRuLmRhdGFzZXQuaW1hZ2UgPSBpbS5zcmM7CiAgICAgICAgfQogICAgICB9CiAgICB9KTsKICB9CgogIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIC8vICBGNSDigJQgTXV0YXRpb25PYnNlcnZlciBmb3IgZHluYW1pYyAvIFBKQVggY29udGVudAogIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIGZ1bmN0aW9uIHN0YXJ0T2JzZXJ2ZXIoKSB7CiAgICBpZiAoISgnTXV0YXRpb25PYnNlcnZlcicgaW4gd2luZG93KSkgcmV0dXJuOwogICAgdmFyIG1vID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKG11dGF0aW9ucykgewogICAgICB2YXIgbmVlZCA9IGZhbHNlOwogICAgICBtdXRhdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAobSkgewogICAgICAgIG0uYWRkZWROb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7CiAgICAgICAgICBpZiAobi5ub2RlVHlwZSA9PT0gMSkgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgKG4ubWF0Y2hlcyAmJiBuLm1hdGNoZXMoJy5zbWlvLXByb2R1Y3QtY2FyZCwgLnByb2R1Y3QsIGltZycpKSB8fAogICAgICAgICAgICAgIChuLnF1ZXJ5U2VsZWN0b3IgJiYgbi5xdWVyeVNlbGVjdG9yKCcuc21pby1wcm9kdWN0LWNhcmQsIC5wcm9kdWN0LCBpbWcnKSkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgbmVlZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICAgIGlmIChuZWVkKSB7CiAgICAgICAgZml4UHJvZHVjdEltYWdlcygpOwogICAgICAgIHJlc3R5bGVBZGRUb0NhcnRCdXR0b25zKCk7CiAgICAgIH0KICAgIH0pOwogICAgbW8ub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTsKICB9CgogIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIC8vICBJbml0CiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgZnVuY3Rpb24gaW5pdCgpIHsKICAgIGZpeFByb2R1Y3RJbWFnZXMoKTsKICAgIHJlc3R5bGVBZGRUb0NhcnRCdXR0b25zKCk7CiAgICBwb2x5ZmlsbExhenlMb2FkKCk7CiAgICB3aXJlQWRkVG9DYXJ0SGFuZGxlcnMoKTsKICAgIHN0YXJ0T2JzZXJ2ZXIoKTsKICB9CgogIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBpbml0KTsKICB9IGVsc2UgewogICAgaW5pdCgpOwogIH0KCiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBpbml0KTsKCiAgd2luZG93LnNtaW9Qcm9kdWN0SW1hZ2VGaXggPSB7CiAgICBmaXg6IGZpeFByb2R1Y3RJbWFnZXMsCiAgICByZXN0eWxlOiByZXN0eWxlQWRkVG9DYXJ0QnV0dG9ucywKICAgIGluaXQ6IGluaXQKICB9OwoKICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICBTTUlPX0VGRkVDVFNfVjEg4oCUIFNjcm9sbCByZXZlYWwgwrcgQ2xpY2sgcmlwcGxlIMK3IE1vYmlsZSBuYXYgwrcgQTExeQogICAgIDIwMjYtMDctMTUgwrcg5YWo6YOo5Li66L+95Yqg6YC76L6R77yM5LiN5L+u5pS55Y6fIEYxLUY1CiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgogIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgRTEg4oCUIFNjcm9sbCByZXZlYWwgdmlhIEludGVyc2VjdGlvbk9ic2VydmVyCiAgICAgVGFyZ2V0czogLnNtaW8tcmV2ZWFsLCAuc21pby1yZXZlYWwtdXAsIC5zbWlvLXJldmVhbC1zY2FsZQogICAgIE9uIGludGVyc2VjdCwgYWRkIC5pcy12aXNpYmxlLiBBdXRvLXVub2JzZXJ2ZXMuCiAgICAgUmVzcGVjdHMgcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi4KICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGluaXRTY3JvbGxSZXZlYWwoKSB7CiAgICB2YXIgcmVkdWNlID0gd2luZG93Lm1hdGNoTWVkaWEgJiYKICAgICAgICAgICAgICAgICB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSknKS5tYXRjaGVzOwogICAgaWYgKHJlZHVjZSkgewogICAgICAvLyBTa2lwIGFuaW1hdGlvbiwganVzdCBtYWtlIGV2ZXJ5dGhpbmcgdmlzaWJsZQogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc21pby1yZXZlYWwsIC5zbWlvLXJldmVhbC11cCwgLnNtaW8tcmV2ZWFsLXNjYWxlJykKICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgZWwuY2xhc3NMaXN0LmFkZCgnaXMtdmlzaWJsZScpOyB9KTsKICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKCEoJ0ludGVyc2VjdGlvbk9ic2VydmVyJyBpbiB3aW5kb3cpKSB7CiAgICAgIC8vIEZhbGxiYWNrOiBqdXN0IHNob3cgZXZlcnl0aGluZwogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc21pby1yZXZlYWwsIC5zbWlvLXJldmVhbC11cCwgLnNtaW8tcmV2ZWFsLXNjYWxlJykKICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgZWwuY2xhc3NMaXN0LmFkZCgnaXMtdmlzaWJsZScpOyB9KTsKICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uIChlbnRyaWVzKSB7CiAgICAgIGVudHJpZXMuZm9yRWFjaChmdW5jdGlvbiAoZSkgewogICAgICAgIGlmIChlLmlzSW50ZXJzZWN0aW5nKSB7CiAgICAgICAgICBlLnRhcmdldC5jbGFzc0xpc3QuYWRkKCdpcy12aXNpYmxlJyk7CiAgICAgICAgICBpby51bm9ic2VydmUoZS50YXJnZXQpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LCB7IHRocmVzaG9sZDogMC4xMiwgcm9vdE1hcmdpbjogJzBweCAwcHggLTQwcHggMHB4JyB9KTsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zbWlvLXJldmVhbCwgLnNtaW8tcmV2ZWFsLXVwLCAuc21pby1yZXZlYWwtc2NhbGUnKQogICAgICAuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgaW8ub2JzZXJ2ZShlbCk7IH0pOwogIH0KCiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBFMiDigJQgQ2xpY2sgcmlwcGxlIGVmZmVjdAogICAgIEF1dG8tYXBwbGllcyB0byBhbGwgcHJpbWFyeSBDVEFzLgogICAgIFNraXBzIHdoZW4gcHJlZmVycy1yZWR1Y2VkLW1vdGlvbiBpcyBzZXQuCiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBpbml0UmlwcGxlKCkgewogICAgdmFyIHJlZHVjZSA9IHdpbmRvdy5tYXRjaE1lZGlhICYmCiAgICAgICAgICAgICAgICAgd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlczsKICAgIGlmIChyZWR1Y2UpIHJldHVybjsKCiAgICB2YXIgU0VMRUNUT1IgPSBbCiAgICAgICcuYWRkX3RvX2NhcnRfYnV0dG9uJywKICAgICAgJ2J1dHRvbi5iJywKICAgICAgJ2J1dHRvbi5icScsCiAgICAgICcuc21pby1hdGMnLAogICAgICAnLnNtaW8tYWRkLXRvLWNhcnQnLAogICAgICAnLnNtaW8taW5xdWlyZScsCiAgICAgICcuc21pby1pbnF1aXJ5JywKICAgICAgJy5zbWlvLXJpcHBsZScKICAgIF0uam9pbignLCcpOwoKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsKICAgICAgdmFyIGJ0biA9IGUudGFyZ2V0LmNsb3Nlc3QoU0VMRUNUT1IpOwogICAgICBpZiAoIWJ0bikgcmV0dXJuOwogICAgICAvLyBDb21wdXRlIHJpcHBsZSBvcmlnaW4gZnJvbSBjbGljayBwb2ludAogICAgICB2YXIgcmVjdCA9IGJ0bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgdmFyIHggPSAoZS5jbGllbnRYIC0gcmVjdC5sZWZ0KTsKICAgICAgdmFyIHkgPSAoZS5jbGllbnRZIC0gcmVjdC50b3ApOwogICAgICAvLyBNYXggcmFkaXVzID0gZGlzdGFuY2UgZnJvbSBjbGljayB0byBmYXJ0aGVzdCBjb3JuZXIKICAgICAgdmFyIGR4ID0gTWF0aC5tYXgoeCwgcmVjdC53aWR0aCAtIHgpOwogICAgICB2YXIgZHkgPSBNYXRoLm1heCh5LCByZWN0LmhlaWdodCAtIHkpOwogICAgICB2YXIgc2l6ZSA9IE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSkgKiAyOwoKICAgICAgdmFyIHdhdmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAgICAgIHdhdmUuY2xhc3NOYW1lID0gJ3NtaW8tcmlwcGxlX193YXZlJzsKICAgICAgd2F2ZS5zdHlsZS53aWR0aCA9IHNpemUgKyAncHgnOwogICAgICB3YXZlLnN0eWxlLmhlaWdodCA9IHNpemUgKyAncHgnOwogICAgICB3YXZlLnN0eWxlLmxlZnQgPSB4ICsgJ3B4JzsKICAgICAgd2F2ZS5zdHlsZS50b3AgPSB5ICsgJ3B4JzsKICAgICAgYnRuLmFwcGVuZENoaWxkKHdhdmUpOwogICAgICAvLyBDbGVhbnVwIGFmdGVyIGFuaW1hdGlvbgogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICBpZiAod2F2ZS5wYXJlbnROb2RlKSB3YXZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQod2F2ZSk7CiAgICAgIH0sIDcwMCk7CiAgICB9KTsKICB9CgogIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgRTMg4oCUIE1vYmlsZSBuYXYgdG9nZ2xlIChoYW1idXJnZXIgZHJhd2VyKQogICAgIC0gQ3JlYXRlcyB0b2dnbGUgYnV0dG9uICsgZHJhd2VyICsgYmFja2Ryb3AgaWYgbm90IHByZXNlbnQKICAgICAtIFRvZ2dsZXMgYm9keS5zbWlvLW1vYmlsZS1uYXYtb3BlbgogICAgIC0gQ2xvc2VzIG9uIGJhY2tkcm9wIGNsaWNrLCBFU0MsIG9yIGxpbmsgdGFwCiAgICAgLSBMb2NrcyBib2R5IHNjcm9sbCB3aGlsZSBvcGVuCiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBpbml0TW9iaWxlTmF2KCkgewogICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoID4gNzY4KSByZXR1cm47CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NtaW9Nb2JpbGVOYXZUb2dnbGUnKSkgcmV0dXJuOwoKICAgIC8vIEJ1aWxkIHRvZ2dsZQogICAgdmFyIHRvZ2dsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogICAgdG9nZ2xlLmlkID0gJ3NtaW9Nb2JpbGVOYXZUb2dnbGUnOwogICAgdG9nZ2xlLmNsYXNzTmFtZSA9ICdzbWlvLW1vYmlsZS1uYXYtdG9nZ2xlJzsKICAgIHRvZ2dsZS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnT3BlbiBtZW51Jyk7CiAgICB0b2dnbGUuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7CiAgICB0b2dnbGUuc2V0QXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJywgJ3NtaW9Nb2JpbGVOYXYnKTsKICAgIHRvZ2dsZS50eXBlID0gJ2J1dHRvbic7CiAgICB0b2dnbGUuaW5uZXJIVE1MID0gJzxzcGFuIGNsYXNzPSJzbWlvLW1vYmlsZS1uYXYtdG9nZ2xlX19iYXIiPjwvc3Bhbj4nOwoKICAgIC8vIEJ1aWxkIGRyYXdlcgogICAgdmFyIGRyYXdlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ25hdicpOwogICAgZHJhd2VyLmlkID0gJ3NtaW9Nb2JpbGVOYXYnOwogICAgZHJhd2VyLmNsYXNzTmFtZSA9ICdzbWlvLW1vYmlsZS1uYXYnOwogICAgZHJhd2VyLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdNb2JpbGUgbmF2aWdhdGlvbicpOwogICAgZHJhd2VyLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpOwoKICAgIC8vIEF1dG8tcG9wdWxhdGUgZnJvbSBleGlzdGluZyBkZXNrdG9wIG5hdiBpZiAuc21pby1kZXNrdG9wLW5hdiBleGlzdHMsCiAgICAvLyBlbHNlIGZyb20gY29tbW9uIFdvcmRQcmVzcyBtZW51IHNlbGVjdG9ycy4KICAgIHZhciBzb3VyY2VMaW5rcyA9IFtdOwogICAgdmFyIHNvdXJjZU5hdiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zbWlvLWRlc2t0b3AtbmF2JykgfHwKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkZXIgbmF2JykgfHwKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCduYXYnKTsKICAgIGlmIChzb3VyY2VOYXYpIHsKICAgICAgc291cmNlTGlua3MgPSBBcnJheS5mcm9tKHNvdXJjZU5hdi5xdWVyeVNlbGVjdG9yQWxsKCdhJykpCiAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoYSkgeyByZXR1cm4gKGEudGV4dENvbnRlbnQgfHwgJycpLnRyaW0oKS5sZW5ndGggPiAwOyB9KQogICAgICAgIC5tYXAoZnVuY3Rpb24gKGEpIHsKICAgICAgICAgIHJldHVybiB7IGhyZWY6IGEuaHJlZiwgdGV4dDogYS50ZXh0Q29udGVudC50cmltKCkgfTsKICAgICAgICB9KTsKICAgIH0gZWxzZSB7CiAgICAgIC8vIFNlbnNpYmxlIGZhbGxiYWNrIGZvciBzbWlvLnNob3AKICAgICAgc291cmNlTGlua3MgPSBbCiAgICAgICAgeyBocmVmOiAnLycsICAgICAgICB0ZXh0OiAnSG9tZScgfSwKICAgICAgICB7IGhyZWY6ICcvc2hvcC8nLCAgIHRleHQ6ICdTaG9wJyB9LAogICAgICAgIHsgaHJlZjogJy9ibG9nLycsICAgdGV4dDogJ0Jsb2cnIH0sCiAgICAgICAgeyBocmVmOiAnL2Fib3V0LycsICB0ZXh0OiAnQWJvdXQnIH0sCiAgICAgICAgeyBocmVmOiAnL2NvbnRhY3QvJywgdGV4dDogJ0NvbnRhY3QnIH0KICAgICAgXTsKICAgIH0KICAgIGRyYXdlci5pbm5lckhUTUwgPSBzb3VyY2VMaW5rcwogICAgICAubWFwKGZ1bmN0aW9uIChsKSB7CiAgICAgICAgcmV0dXJuICc8YSBocmVmPSInICsgbC5ocmVmICsgJyI+JyArIGwudGV4dCArICc8L2E+JzsKICAgICAgfSkKICAgICAgLmpvaW4oJycpOwoKICAgIC8vIEJ1aWxkIGJhY2tkcm9wCiAgICB2YXIgYmFja2Ryb3AgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGJhY2tkcm9wLmNsYXNzTmFtZSA9ICdzbWlvLW1vYmlsZS1uYXZfX2JhY2tkcm9wJzsKCiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRvZ2dsZSk7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRyYXdlcik7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGJhY2tkcm9wKTsKCiAgICAvLyBTdGF0ZSBtYW5hZ2VtZW50CiAgICBmdW5jdGlvbiBvcGVuTmF2KCkgewogICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ3NtaW8tbW9iaWxlLW5hdi1vcGVuJyk7CiAgICAgIHRvZ2dsZS5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpOwogICAgICBkcmF3ZXIuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICdmYWxzZScpOwogICAgICAvLyBTYXZlIHByZXZpb3VzIHNjcm9sbCB0byByZXN0b3JlIG9uIGNsb3NlCiAgICAgIHZhciBzY3JvbGxZID0gd2luZG93LnNjcm9sbFk7CiAgICAgIGRvY3VtZW50LmJvZHkuZGF0YXNldC5zbWlvU2Nyb2xsWSA9IHNjcm9sbFk7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnRvcCA9ICctJyArIHNjcm9sbFkgKyAncHgnOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLndpZHRoID0gJzEwMCUnOwogICAgfQogICAgZnVuY3Rpb24gY2xvc2VOYXYoKSB7CiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnc21pby1tb2JpbGUtbmF2LW9wZW4nKTsKICAgICAgdG9nZ2xlLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpOwogICAgICBkcmF3ZXIuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7CiAgICAgIC8vIFJlc3RvcmUgc2Nyb2xsCiAgICAgIHZhciBzY3JvbGxZID0gcGFyc2VJbnQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LnNtaW9TY3JvbGxZIHx8ICcwJywgMTApOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBvc2l0aW9uID0gJyc7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUudG9wID0gJyc7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUud2lkdGggPSAnJzsKICAgICAgd2luZG93LnNjcm9sbFRvKDAsIHNjcm9sbFkpOwogICAgfQogICAgZnVuY3Rpb24gdG9nZ2xlTmF2KCkgewogICAgICBpZiAoZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ3NtaW8tbW9iaWxlLW5hdi1vcGVuJykpIHsKICAgICAgICBjbG9zZU5hdigpOwogICAgICB9IGVsc2UgewogICAgICAgIG9wZW5OYXYoKTsKICAgICAgfQogICAgfQoKICAgIHRvZ2dsZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7CiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgIHRvZ2dsZU5hdigpOwogICAgfSk7CiAgICBiYWNrZHJvcC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlTmF2KTsKICAgIGRyYXdlci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7CiAgICAgIGlmIChlLnRhcmdldC50YWdOYW1lID09PSAnQScpIGNsb3NlTmF2KCk7CiAgICB9KTsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkgewogICAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnICYmIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCdzbWlvLW1vYmlsZS1uYXYtb3BlbicpKSB7CiAgICAgICAgY2xvc2VOYXYoKTsKICAgICAgfQogICAgfSk7CgogICAgLy8gSWYgd2luZG93IHJlc2l6ZXMgcGFzdCBicmVha3BvaW50LCBjbG9zZSBkcmF3ZXIKICAgIHZhciByZXNpemVUaW1lcjsKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBmdW5jdGlvbiAoKSB7CiAgICAgIGNsZWFyVGltZW91dChyZXNpemVUaW1lcik7CiAgICAgIHJlc2l6ZVRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoID4gNzY4ICYmIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCdzbWlvLW1vYmlsZS1uYXYtb3BlbicpKSB7CiAgICAgICAgICBjbG9zZU5hdigpOwogICAgICAgIH0KICAgICAgfSwgMTUwKTsKICAgIH0pOwogIH0KCiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBFNCDigJQgUHJvZHVjdCBjYXJkIGN1cnNvci10cmFja2VkIGdsb3cKICAgICBUcmFja3MgbW91c2UgcG9zaXRpb24gYW5kIHNldHMgLS1teCAvIC0tbXkgQ1NTIHZhcnMKICAgICBzbyB0aGUgcmFkaWFsLWdyYWRpZW50IGZvbGxvd3MgdGhlIGN1cnNvci4KICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGluaXRDYXJkR2xvdygpIHsKICAgIHZhciBjYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zbWlvLXByb2R1Y3QtY2FyZCwgLnByb2R1Y3QtY2FyZCcpOwogICAgY2FyZHMuZm9yRWFjaChmdW5jdGlvbiAoY2FyZCkgewogICAgICBpZiAoY2FyZC5kYXRhc2V0LnNtaW9HbG93Qm91bmQpIHJldHVybjsKICAgICAgY2FyZC5kYXRhc2V0LnNtaW9HbG93Qm91bmQgPSAnMSc7CiAgICAgIGNhcmQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICB2YXIgciA9IGNhcmQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgdmFyIG14ID0gKChlLmNsaWVudFggLSByLmxlZnQpIC8gci53aWR0aCkgKiAxMDA7CiAgICAgICAgdmFyIG15ID0gKChlLmNsaWVudFkgLSByLnRvcCkgLyByLmhlaWdodCkgKiAxMDA7CiAgICAgICAgY2FyZC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1teCcsIG14ICsgJyUnKTsKICAgICAgICBjYXJkLnN0eWxlLnNldFByb3BlcnR5KCctLW15JywgbXkgKyAnJScpOwogICAgICB9KTsKICAgIH0pOwogIH0KCiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBFNSDigJQgQXV0by10YWcgY29tbW9uIGVsZW1lbnRzIHdpdGggcmV2ZWFsIGNsYXNzZXMKICAgICBVc2Ugb3B0LWluOiBzZWN0aW9ucyB3aXRoIGRhdGEtc21pby1yZXZlYWwgYmVjb21lIHJldmVhbCB0YXJnZXRzCiAgICAgRm9yIGZpcnN0IGRlcGxveSwgb25seSBhZGQgdGhlIGNsYXNzIHRvIGtub3duIGVsZW1lbnRzLgogICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gYXV0b1RhZ1JldmVhbCgpIHsKICAgIGlmICh3aW5kb3cuX19zbWlvQXV0b1RhZ2dlZCkgcmV0dXJuOwogICAgd2luZG93Ll9fc21pb0F1dG9UYWdnZWQgPSB0cnVlOwoKICAgIC8vIEhlcm8gLyBiYW5uZXIgYXJlYXMKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoCiAgICAgICcuc21pby1zcGVjaWFsLW9mZmVycyAuc21pby1wcm9kdWN0LCAnICsKICAgICAgJy5zbWlvLWFyY2hpdmUgLnNtaW8tY2FyZCwgJyArCiAgICAgICcuc21pby1yZWxhdGVkX19jYXJkLCAnICsKICAgICAgJy5zbWlvLWFydGljbGVfX2NhdCwgJyArCiAgICAgICcuc21pby1hcnRpY2xlX190aXRsZSwgJyArCiAgICAgICcuc21pby1hcnRpY2xlX19jb250ZW50ID4gKjpmaXJzdC1jaGlsZCwgJyArCiAgICAgICcuc21pby1hcnRpY2xlX190YWdzLCAnICsKICAgICAgJy5zbWlvLXJlbGF0ZWRfX3RpdGxlJwogICAgKS5mb3JFYWNoKGZ1bmN0aW9uIChlbCwgaSkgewogICAgICBpZiAoIWVsLmNsYXNzTGlzdC5jb250YWlucygnc21pby1yZXZlYWwtdXAnKSAmJgogICAgICAgICAgIWVsLmNsYXNzTGlzdC5jb250YWlucygnc21pby1yZXZlYWwtc2NhbGUnKSAmJgogICAgICAgICAgIWVsLmNsYXNzTGlzdC5jb250YWlucygnc21pby1yZXZlYWwnKSkgewogICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoJ3NtaW8tcmV2ZWFsLXVwJyk7CiAgICAgIH0KICAgIH0pOwogIH0KCiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBFNiDigJQgQnV0dG9uIGxvYWRpbmcgc3RhdGUgaGVscGVyIChjYWxsYWJsZSBmcm9tIGNhcnQuanMpCiAgICAgd2luZG93LnNtaW9TZXRMb2FkaW5nKGJ0biwgdHJ1ZSkg4oaSIC5pcy1sb2FkaW5nCiAgICAgd2luZG93LnNtaW9TZXRMb2FkaW5nKGJ0biwgZmFsc2UpIOKGkiByZXN0b3JlCiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICB3aW5kb3cuc21pb1NldExvYWRpbmcgPSBmdW5jdGlvbiAoYnRuLCBsb2FkaW5nKSB7CiAgICBpZiAoIWJ0bikgcmV0dXJuOwogICAgaWYgKGxvYWRpbmcpIHsKICAgICAgYnRuLmRhdGFzZXQuc21pb1ByZXZUZXh0ID0gYnRuLnRleHRDb250ZW50OwogICAgICBidG4uY2xhc3NMaXN0LmFkZCgnaXMtbG9hZGluZycpOwogICAgICBidG4uc2V0QXR0cmlidXRlKCdhcmlhLWJ1c3knLCAndHJ1ZScpOwogICAgfSBlbHNlIHsKICAgICAgYnRuLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWxvYWRpbmcnKTsKICAgICAgYnRuLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1idXN5Jyk7CiAgICB9CiAgfTsKCiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBFNyDigJQgU21vb3RoIGFuY2hvciBzY3JvbGwgKHdpdGggaGVhZGVyIG9mZnNldCkKICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGluaXRTbW9vdGhTY3JvbGwoKSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7CiAgICAgIHZhciBhID0gZS50YXJnZXQuY2xvc2VzdCgnYVtocmVmXj0iIyJdJyk7CiAgICAgIGlmICghYSkgcmV0dXJuOwogICAgICB2YXIgaHJlZiA9IGEuZ2V0QXR0cmlidXRlKCdocmVmJyk7CiAgICAgIGlmIChocmVmID09PSAnIycgfHwgaHJlZi5sZW5ndGggPCAyKSByZXR1cm47CiAgICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGhyZWYpOwogICAgICBpZiAoIXRhcmdldCkgcmV0dXJuOwogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIHZhciBoZWFkZXJIID0gKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWRlcicpIHx8IHt9KS5vZmZzZXRIZWlnaHQgfHwgNjQ7CiAgICAgIHZhciB0b3AgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnNjcm9sbFkgLSBoZWFkZXJIIC0gODsKICAgICAgdmFyIHJlZHVjZSA9IHdpbmRvdy5tYXRjaE1lZGlhICYmCiAgICAgICAgICAgICAgICAgICB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSknKS5tYXRjaGVzOwogICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IHRvcCwgYmVoYXZpb3I6IHJlZHVjZSA/ICdhdXRvJyA6ICdzbW9vdGgnIH0pOwogICAgfSk7CiAgfQoKICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIEU4IOKAlCBPYnNlcnZlIG5ld2x5LWFkZGVkIERPTSBmb3IgbGF0ZS1hcnJpdmluZyBlZmZlY3RzCiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBzdGFydEVmZmVjdHNPYnNlcnZlcigpIHsKICAgIGlmICghKCdNdXRhdGlvbk9ic2VydmVyJyBpbiB3aW5kb3cpKSByZXR1cm47CiAgICBpZiAod2luZG93Ll9fc21pb0VmZmVjdHNPYnNlcnZlcikgcmV0dXJuOwogICAgdmFyIG1vID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKG11dGF0aW9ucykgewogICAgICB2YXIgbmVlZFJldmVhbCA9IGZhbHNlOwogICAgICB2YXIgbmVlZEdsb3cgPSBmYWxzZTsKICAgICAgbXV0YXRpb25zLmZvckVhY2goZnVuY3Rpb24gKG0pIHsKICAgICAgICBtLmFkZGVkTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobikgewogICAgICAgICAgaWYgKG4ubm9kZVR5cGUgIT09IDEpIHJldHVybjsKICAgICAgICAgIGlmIChuLm1hdGNoZXMgJiYgbi5tYXRjaGVzKCcuc21pby1jYXJkLCAuc21pby1wcm9kdWN0LWNhcmQsIC5wcm9kdWN0LWNhcmQnKSkgewogICAgICAgICAgICBuZWVkUmV2ZWFsID0gdHJ1ZTsKICAgICAgICAgICAgbmVlZEdsb3cgPSB0cnVlOwogICAgICAgICAgfQogICAgICAgICAgaWYgKG4ucXVlcnlTZWxlY3RvciAmJiBuLnF1ZXJ5U2VsZWN0b3IoJy5zbWlvLWNhcmQsIC5zbWlvLXByb2R1Y3QtY2FyZCwgLnByb2R1Y3QtY2FyZCcpKSB7CiAgICAgICAgICAgIG5lZWRSZXZlYWwgPSB0cnVlOwogICAgICAgICAgICBuZWVkR2xvdyA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgICBpZiAobmVlZFJldmVhbCkgewogICAgICAgIGF1dG9UYWdSZXZlYWwoKTsKICAgICAgICBpbml0U2Nyb2xsUmV2ZWFsKCk7CiAgICAgIH0KICAgICAgaWYgKG5lZWRHbG93KSB7CiAgICAgICAgaW5pdENhcmRHbG93KCk7CiAgICAgIH0KICAgIH0pOwogICAgbW8ub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTsKICAgIHdpbmRvdy5fX3NtaW9FZmZlY3RzT2JzZXJ2ZXIgPSBtbzsKICB9CgogIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgSW5pdCBWMSBlZmZlY3RzCiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBpbml0RWZmZWN0cygpIHsKICAgIGF1dG9UYWdSZXZlYWwoKTsKICAgIGluaXRTY3JvbGxSZXZlYWwoKTsKICAgIGluaXRSaXBwbGUoKTsKICAgIGluaXRNb2JpbGVOYXYoKTsKICAgIGluaXRDYXJkR2xvdygpOwogICAgaW5pdFNtb290aFNjcm9sbCgpOwogICAgc3RhcnRFZmZlY3RzT2JzZXJ2ZXIoKTsKICB9CgogIC8vIEhvb2sgaW50byBleGlzdGluZyBpbml0IHBpcGVsaW5lCiAgdmFyIF9vcmlnSW5pdCA9IGluaXQ7CiAgaW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgIF9vcmlnSW5pdCgpOwogICAgaW5pdEVmZmVjdHMoKTsKICB9OwoKICAvLyBBbHNvIHJ1biBlZmZlY3RzIGltbWVkaWF0ZWx5IGlmIERPTSBpcyBhbHJlYWR5IHJlYWR5CiAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgIT09ICdsb2FkaW5nJykgewogICAgaW5pdEVmZmVjdHMoKTsKICB9IGVsc2UgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluaXRFZmZlY3RzKTsKICB9CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBpbml0RWZmZWN0cyk7CgogIC8vIEV4cG9zZSBmb3IgbWFudWFsIHRyaWdnZXIKICB3aW5kb3cuc21pb0VmZmVjdHNWMSA9IHsKICAgIGluaXQ6IGluaXRFZmZlY3RzLAogICAgcmV2ZWFsOiBpbml0U2Nyb2xsUmV2ZWFsLAogICAgcmlwcGxlOiBpbml0UmlwcGxlLAogICAgbmF2OiBpbml0TW9iaWxlTmF2LAogICAgZ2xvdzogaW5pdENhcmRHbG93LAogICAgc2Nyb2xsOiBpbml0U21vb3RoU2Nyb2xsLAogICAgc2V0TG9hZGluZzogd2luZG93LnNtaW9TZXRMb2FkaW5nCiAgfTsKfSkoKTsK', 'single.php' => 'PD9waHAKLyoqCiAqIFNNSU8gRGFyayBUZWNoIFRoZW1lIC0gQmxvZyBTaW5nbGUgUG9zdCBUZW1wbGF0ZQogKiBWZXJzaW9uOiAyLjEgLSAyMDI2LTA3LTE1CiAqIAogKiBGaXhlczoKICogLSBCMTogQ29udGVudCBtYXgtd2lkdGggNzYwcHgsIGNlbnRlcmVkLCB3aXRoIHByb3BlciBoaWVyYXJjaHkKICogLSBCMjogQWxsIGltYWdlcyBtYXgtd2lkdGg6MTAwJSArIHJlc3BvbnNpdmUgc3Jjc2V0IAogKiAtIEIzOiBUaXRsZSAvIHBhcmFncmFwaCAvIGltYWdlIHNwYWNpbmcgc2NhbGUKICogLSBCNDogRGFyayB0aGVtZSBjb250cmFzdCAoV0NBRyBBQSBvbiAjMGEwYTBhKQogKiAtIEI1OiBMb25nIEgxIHdyYXBzIGNsZWFubHk7IGxpbmUtaGVpZ2h0IDEuMiBmb3IgaGVhZGluZ3MsIDEuOCBmb3IgYm9keQogKiAtIEI2OiBCbG9ja3F1b3RlcywgY29kZSwgdGFibGVzLCBsaXN0cyBnZXQgcHJvcGVyIGRhcmsgdGhlbWUgdHJlYXRtZW50CiAqLwoKZ2V0X2hlYWRlcigpOwo/PgoKPHN0eWxlPgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBTTUlPIEJsb2cgLSBTaW5nbGUgUG9zdCBMYXlvdXQgKHYyLjEpCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCjpyb290IHsKICAtLXNtaW8tYmc6ICAgICAgICAgICAjMGEwYTBhOwogIC0tc21pby1iZy1lbGV2YXRlZDogICMxNDE0MTQ7CiAgLS1zbWlvLWJnLWNhcmQ6ICAgICAgIzFhMWExYTsKICAtLXNtaW8tYm9yZGVyOiAgICAgICAjMmEyYTJhOwogIC0tc21pby1ib3JkZXItc29mdDogICMxZjFmMWY7CiAgLS1zbWlvLXRleHQ6ICAgICAgICAgI2U1ZTVlNTsKICAtLXNtaW8tdGV4dC1tdXRlZDogICAjYTNhM2EzOwogIC0tc21pby10ZXh0LWRpbTogICAgICM3MzczNzM7CiAgLS1zbWlvLWFjY2VudDogICAgICAgI0M5QTk2RTsgICAgICAgIC8qIGNoYW1wYWduZSBnb2xkICovCiAgLS1zbWlvLWFjY2VudC1zb2Z0OiAgcmdiYSgyMDEsMTY5LDExMCwwLjEyKTsKICAtLXNtaW8tYWNjZW50LWxpbmU6ICByZ2JhKDIwMSwxNjksMTEwLDAuMzUpOwogIC0tc21pby1saW5rOiAgICAgICAgICNkNGI5N2E7CiAgLS1zbWlvLWxpbmstaG92ZXI6ICAgI2YwZDQ5YTsKICAtLXNtaW8tY29udGVudC1tYXg6ICA3NjBweDsKICAtLXNtaW8tY29udGVudC1uYXJyb3c6IDY0MHB4OwogIC0tc21pby1yYWRpdXM6ICAgICAgIDhweDsKICAtLXNtaW8tc2hhZG93OiAgICAgICAwIDFweCAzcHggcmdiYSgwLDAsMCwuMyksIDAgNHB4IDE2cHggcmdiYSgwLDAsMCwuMik7Cn0KCi5zbWlvLWFydGljbGUgewogIGJhY2tncm91bmQ6IHZhcigtLXNtaW8tYmcpOwogIGNvbG9yOiB2YXIoLS1zbWlvLXRleHQpOwogIG1pbi1oZWlnaHQ6IDYwdmg7CiAgcGFkZGluZzogNDhweCAyMHB4IDgwcHg7Cn0KCi5zbWlvLWFydGljbGVfX2NvbnRhaW5lciB7CiAgbWF4LXdpZHRoOiB2YXIoLS1zbWlvLWNvbnRlbnQtbWF4KTsKICBtYXJnaW46IDAgYXV0bzsKfQoKLyogLS0tLS0gQnJlYWRjcnVtYnMgLS0tLS0gKi8KLnNtaW8tYnJlYWRjcnVtYnMgewogIG1heC13aWR0aDogdmFyKC0tc21pby1jb250ZW50LW1heCk7CiAgbWFyZ2luOiAwIGF1dG8gMjRweDsKICBwYWRkaW5nOiAwIDIwcHg7CiAgZm9udC1zaXplOiAxM3B4OwogIGNvbG9yOiB2YXIoLS1zbWlvLXRleHQtZGltKTsKICBsZXR0ZXItc3BhY2luZzogMC4wMmVtOwp9Ci5zbWlvLWJyZWFkY3J1bWJzIGEgewogIGNvbG9yOiB2YXIoLS1zbWlvLXRleHQtbXV0ZWQpOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB0cmFuc2l0aW9uOiBjb2xvciAwLjE1czsKfQouc21pby1icmVhZGNydW1icyBhOmhvdmVyIHsgY29sb3I6IHZhcigtLXNtaW8tYWNjZW50KTsgfQouc21pby1icmVhZGNydW1ic19fc2VwIHsgbWFyZ2luOiAwIDhweDsgY29sb3I6IHZhcigtLXNtaW8tYm9yZGVyKTsgfQouc21pby1icmVhZGNydW1ic19fY3VycmVudCB7IGNvbG9yOiB2YXIoLS1zbWlvLXRleHQpOyB9CgovKiAtLS0tLSBDYXRlZ29yeSB0YWcgKGFib3ZlIHRpdGxlKSAtLS0tLSAqLwouc21pby1hcnRpY2xlX19jYXQgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LXNpemU6IDEycHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBsZXR0ZXItc3BhY2luZzogMC4xMmVtOwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgY29sb3I6IHZhcigtLXNtaW8tYWNjZW50KTsKICBiYWNrZ3JvdW5kOiB2YXIoLS1zbWlvLWFjY2VudC1zb2Z0KTsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zbWlvLWFjY2VudC1saW5lKTsKICBwYWRkaW5nOiA0cHggMTJweDsKICBib3JkZXItcmFkaXVzOiA5OTlweDsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnM7Cn0KLnNtaW8tYXJ0aWNsZV9fY2F0OmhvdmVyIHsKICBiYWNrZ3JvdW5kOiByZ2JhKDIwMSwxNjksMTEwLDAuMjIpOwp9CgovKiAtLS0tLSBUaXRsZSAtLS0tLSAqLwouc21pby1hcnRpY2xlX190aXRsZSB7CiAgZm9udC1zaXplOiBjbGFtcCgyOHB4LCA0dncsIDQycHgpOwogIGxpbmUtaGVpZ2h0OiAxLjI7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBjb2xvcjogI2ZmZmZmZjsKICBtYXJnaW46IDAgMCAyMHB4OwogIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOwogIGh5cGhlbnM6IGF1dG87Cn0KCi8qIC0tLS0tIE1ldGEgKGRhdGUgwrcgcmVhZCB0aW1lKSAtLS0tLSAqLwouc21pby1hcnRpY2xlX19tZXRhIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtd3JhcDogd3JhcDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogMTJweDsKICBmb250LXNpemU6IDE0cHg7CiAgY29sb3I6IHZhcigtLXNtaW8tdGV4dC1tdXRlZCk7CiAgbWFyZ2luOiAwIDAgMzZweDsKICBwYWRkaW5nLWJvdHRvbTogMjRweDsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc21pby1ib3JkZXIpOwp9Ci5zbWlvLWFydGljbGVfX21ldGEtZG90IHsKICB3aWR0aDogNHB4OwogIGhlaWdodDogNHB4OwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBiYWNrZ3JvdW5kOiB2YXIoLS1zbWlvLWJvcmRlcik7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9Ci5zbWlvLWFydGljbGVfX21ldGEgc3ZnIHsKICB2ZXJ0aWNhbC1hbGlnbjogLTNweDsKICBtYXJnaW4tcmlnaHQ6IDRweDsKICBvcGFjaXR5OiAwLjc7Cn0KCi8qIC0tLS0tIENvbnRlbnQgYXJlYSAtLS0tLSAqLwouc21pby1hcnRpY2xlX19jb250ZW50IHsKICBmb250LXNpemU6IDE3cHg7CiAgbGluZS1oZWlnaHQ6IDEuODsKICBjb2xvcjogdmFyKC0tc21pby10ZXh0KTsKICBmb250LXdlaWdodDogNDAwOwp9CgovKiBIZWFkaW5ncyBpbnNpZGUgY29udGVudCAqLwouc21pby1hcnRpY2xlX19jb250ZW50IGgxLAouc21pby1hcnRpY2xlX19jb250ZW50IGgyLAouc21pby1hcnRpY2xlX19jb250ZW50IGgzLAouc21pby1hcnRpY2xlX19jb250ZW50IGg0LAouc21pby1hcnRpY2xlX19jb250ZW50IGg1LAouc21pby1hcnRpY2xlX19jb250ZW50IGg2IHsKICBjb2xvcjogI2ZmZmZmZjsKICBmb250LXdlaWdodDogNzAwOwogIGxpbmUtaGVpZ2h0OiAxLjM7CiAgbWFyZ2luOiAyZW0gMCAwLjZlbTsKICBsZXR0ZXItc3BhY2luZzogLTAuMDA1ZW07Cn0KLnNtaW8tYXJ0aWNsZV9fY29udGVudCBoMiB7CiAgZm9udC1zaXplOiAyOHB4OwogIHBhZGRpbmctYm90dG9tOiAwLjRlbTsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc21pby1ib3JkZXIpOwp9Ci5zbWlvLWFydGljbGVfX2NvbnRlbnQgaDMgewogIGZvbnQtc2l6ZTogMjJweDsKICBjb2xvcjogdmFyKC0tc21pby1hY2NlbnQpOwp9Ci5zbWlvLWFydGljbGVfX2NvbnRlbnQgaDQgeyBmb250LXNpemU6IDE4cHg7IH0KLnNtaW8tYXJ0aWNsZV9fY29udGVudCBoNSB7IGZvbnQtc2l6ZTogMTZweDsgfQouc21pby1hcnRpY2xlX19jb250ZW50IGg2IHsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjogdmFyKC0tc21pby10ZXh0LW11dGVkKTsgfQoKLyogUGFyYWdyYXBocyAqLwouc21pby1hcnRpY2xlX19jb250ZW50IHAgewogIG1hcmdpbjogMCAwIDEuNGVtOwp9Ci5zbWlvLWFydGljbGVfX2NvbnRlbnQgc3Ryb25nIHsKICBjb2xvcjogI2ZmZmZmZjsKICBmb250LXdlaWdodDogNjAwOwp9Ci5zbWlvLWFydGljbGVfX2NvbnRlbnQgZW0geyBjb2xvcjogI2YwZjBmMDsgfQoKLyogTGlua3MgKi8KLnNtaW8tYXJ0aWNsZV9fY29udGVudCBhIHsKICBjb2xvcjogdmFyKC0tc21pby1saW5rKTsKICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICB0ZXh0LWRlY29yYXRpb24tY29sb3I6IHZhcigtLXNtaW8tYWNjZW50LWxpbmUpOwogIHRleHQtdW5kZXJsaW5lLW9mZnNldDogM3B4OwogIHRyYW5zaXRpb246IGFsbCAwLjE1czsKfQouc21pby1hcnRpY2xlX19jb250ZW50IGE6aG92ZXIgewogIGNvbG9yOiB2YXIoLS1zbWlvLWxpbmstaG92ZXIpOwogIHRleHQtZGVjb3JhdGlvbi1jb2xvcjogdmFyKC0tc21pby1hY2NlbnQpOwp9CgovKiBMaXN0cyAqLwouc21pby1hcnRpY2xlX19jb250ZW50IHVsLAouc21pby1hcnRpY2xlX19jb250ZW50IG9sIHsKICBtYXJnaW46IDAgMCAxLjRlbTsKICBwYWRkaW5nLWxlZnQ6IDEuNmVtOwp9Ci5zbWlvLWFydGljbGVfX2NvbnRlbnQgbGkgewogIG1hcmdpbjogMC40ZW0gMDsKfQouc21pby1hcnRpY2xlX19jb250ZW50IHVsIGxpIHsKICBsaXN0LXN0eWxlOiBkaXNjOwp9Ci5zbWlvLWFydGljbGVfX2NvbnRlbnQgb2wgbGkgewogIGxpc3Qtc3R5bGU6IGRlY2ltYWw7Cn0KLnNtaW8tYXJ0aWNsZV9fY29udGVudCBsaTo6bWFya2VyIHsKICBjb2xvcjogdmFyKC0tc21pby1hY2NlbnQpOwp9CgovKiBCbG9ja3F1b3RlcyAqLwouc21pby1hcnRpY2xlX19jb250ZW50IGJsb2NrcXVvdGUgewogIG1hcmdpbjogMS44ZW0gMDsKICBwYWRkaW5nOiAxNnB4IDIwcHggMTZweCAyNHB4OwogIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0tc21pby1hY2NlbnQpOwogIGJhY2tncm91bmQ6IHZhcigtLXNtaW8tYmctZWxldmF0ZWQpOwogIGNvbG9yOiB2YXIoLS1zbWlvLXRleHQpOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBib3JkZXItcmFkaXVzOiAwIHZhcigtLXNtaW8tcmFkaXVzKSB2YXIoLS1zbWlvLXJhZGl1cykgMDsKfQouc21pby1hcnRpY2xlX19jb250ZW50IGJsb2NrcXVvdGUgcDpsYXN0LWNoaWxkIHsgbWFyZ2luLWJvdHRvbTogMDsgfQoKLyogSW5saW5lIGNvZGUgKi8KLnNtaW8tYXJ0aWNsZV9fY29udGVudCBjb2RlIHsKICBmb250LWZhbWlseTogIlNGIE1vbm8iLCAiTW9uYWNvIiwgIkluY29uc29sYXRhIiwgIkZpcmEgQ29kZSIsIG1vbm9zcGFjZTsKICBmb250LXNpemU6IDAuOWVtOwogIGJhY2tncm91bmQ6IHZhcigtLXNtaW8tYmctZWxldmF0ZWQpOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNtaW8tYm9yZGVyKTsKICBwYWRkaW5nOiAxcHggNnB4OwogIGJvcmRlci1yYWRpdXM6IDRweDsKICBjb2xvcjogI2Y1ZDM5OTsKfQouc21pby1hcnRpY2xlX19jb250ZW50IHByZSB7CiAgYmFja2dyb3VuZDogdmFyKC0tc21pby1iZy1lbGV2YXRlZCk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc21pby1ib3JkZXIpOwogIHBhZGRpbmc6IDE2cHggMjBweDsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1zbWlvLXJhZGl1cyk7CiAgb3ZlcmZsb3cteDogYXV0bzsKICBtYXJnaW46IDEuNmVtIDA7CiAgZm9udC1zaXplOiAxNHB4OwogIGxpbmUtaGVpZ2h0OiAxLjY7Cn0KLnNtaW8tYXJ0aWNsZV9fY29udGVudCBwcmUgY29kZSB7CiAgYmFja2dyb3VuZDogbm9uZTsKICBib3JkZXI6IG5vbmU7CiAgcGFkZGluZzogMDsKICBjb2xvcjogI2U1ZTVlNTsKfQoKLyogVGFibGVzICovCi5zbWlvLWFydGljbGVfX2NvbnRlbnQgdGFibGUgewogIHdpZHRoOiAxMDAlOwogIG1heC13aWR0aDogMTAwJTsKICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogIG1hcmdpbjogMS44ZW0gMDsKICBmb250LXNpemU6IDE1cHg7CiAgZGlzcGxheTogYmxvY2s7CiAgb3ZlcmZsb3cteDogYXV0bzsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zbWlvLWJvcmRlcik7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc21pby1yYWRpdXMpOwp9Ci5zbWlvLWFydGljbGVfX2NvbnRlbnQgdGgsCi5zbWlvLWFydGljbGVfX2NvbnRlbnQgdGQgewogIHBhZGRpbmc6IDEwcHggMTRweDsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zbWlvLWJvcmRlcik7CiAgdGV4dC1hbGlnbjogbGVmdDsKfQouc21pby1hcnRpY2xlX19jb250ZW50IHRoIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS1zbWlvLWJnLWVsZXZhdGVkKTsKICBjb2xvcjogdmFyKC0tc21pby1hY2NlbnQpOwogIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KLnNtaW8tYXJ0aWNsZV9fY29udGVudCB0cjpudGgtY2hpbGQoZXZlbikgdGQgewogIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4wMik7Cn0KCi8qIC0tLS0tIEltYWdlcyAoVEhFIEtFWSBGSVgpIC0tLS0tICovCi5zbWlvLWFydGljbGVfX2NvbnRlbnQgaW1nLAouc21pby1hcnRpY2xlX19jb250ZW50IGZpZ3VyZSB7CiAgbWF4LXdpZHRoOiAxMDAlOwogIGhlaWdodDogYXV0bzsKICBkaXNwbGF5OiBibG9jazsKfQouc21pby1hcnRpY2xlX19jb250ZW50IGZpZ3VyZSB7CiAgbWFyZ2luOiAyZW0gMDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLnNtaW8tYXJ0aWNsZV9fY29udGVudCBmaWd1cmUgaW1nIHsKICBtYXJnaW46IDAgYXV0bzsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1zbWlvLXJhZGl1cyk7CiAgYm94LXNoYWRvdzogdmFyKC0tc21pby1zaGFkb3cpOwp9Ci5zbWlvLWFydGljbGVfX2NvbnRlbnQgZmlnY2FwdGlvbiB7CiAgbWFyZ2luLXRvcDogMTJweDsKICBmb250LXNpemU6IDE0cHg7CiAgY29sb3I6IHZhcigtLXNtaW8tdGV4dC1tdXRlZCk7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLyogSWYgdGhlIHBvc3QgaGFzIGEgWW91VHViZSAvIHZpZGVvIGVtYmVkLCBrZWVwIGl0IHJlc3BvbnNpdmUgKi8KLnNtaW8tYXJ0aWNsZV9fY29udGVudCBpZnJhbWUsCi5zbWlvLWFydGljbGVfX2NvbnRlbnQgdmlkZW8sCi5zbWlvLWFydGljbGVfX2NvbnRlbnQgZW1iZWQsCi5zbWlvLWFydGljbGVfX2NvbnRlbnQgb2JqZWN0IHsKICBtYXgtd2lkdGg6IDEwMCU7CiAgYm9yZGVyOiAwOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXNtaW8tcmFkaXVzKTsKfQouc21pby1hcnRpY2xlX19jb250ZW50IC53cC1ibG9jay1lbWJlZCB7CiAgbWFyZ2luOiAxLjhlbSAwOwp9Ci5zbWlvLWFydGljbGVfX2NvbnRlbnQgLndwLWJsb2NrLWVtYmVkX193cmFwcGVyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZy1ib3R0b206IDU2LjI1JTsKICBoZWlnaHQ6IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1zbWlvLXJhZGl1cyk7Cn0KLnNtaW8tYXJ0aWNsZV9fY29udGVudCAud3AtYmxvY2stZW1iZWRfX3dyYXBwZXIgaWZyYW1lIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOyBsZWZ0OiAwOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKfQoKLyogSFIgKi8KLnNtaW8tYXJ0aWNsZV9fY29udGVudCBociB7CiAgYm9yZGVyOiAwOwogIGhlaWdodDogMXB4OwogIGJhY2tncm91bmQ6IHZhcigtLXNtaW8tYm9yZGVyKTsKICBtYXJnaW46IDIuNWVtIDA7Cn0KCi8qIC0tLS0tIFRhZ3Mgcm93IC0tLS0tICovCi5zbWlvLWFydGljbGVfX3RhZ3MgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC13cmFwOiB3cmFwOwogIGdhcDogOHB4OwogIG1hcmdpbjogNDBweCAwIDA7CiAgcGFkZGluZy10b3A6IDI4cHg7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXNtaW8tYm9yZGVyKTsKfQouc21pby1hcnRpY2xlX190YWcgewogIGZvbnQtc2l6ZTogMTNweDsKICBwYWRkaW5nOiA0cHggMTJweDsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zbWlvLWJvcmRlcik7CiAgYm9yZGVyLXJhZGl1czogOTk5cHg7CiAgY29sb3I6IHZhcigtLXNtaW8tdGV4dC1tdXRlZCk7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQ6IHZhcigtLXNtaW8tYmctZWxldmF0ZWQpOwogIHRyYW5zaXRpb246IGFsbCAwLjE1czsKfQouc21pby1hcnRpY2xlX190YWc6aG92ZXIgewogIGNvbG9yOiB2YXIoLS1zbWlvLWFjY2VudCk7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zbWlvLWFjY2VudC1saW5lKTsKICBiYWNrZ3JvdW5kOiB2YXIoLS1zbWlvLWFjY2VudC1zb2Z0KTsKfQoKLyogLS0tLS0gU2hhcmUgcm93IC0tLS0tICovCi5zbWlvLWFydGljbGVfX3NoYXJlIHsKICBtYXJnaW46IDI4cHggMCAwOwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDEycHg7CiAgZm9udC1zaXplOiAxNHB4OwogIGNvbG9yOiB2YXIoLS1zbWlvLXRleHQtbXV0ZWQpOwp9Ci5zbWlvLWFydGljbGVfX3NoYXJlIGEgewogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgd2lkdGg6IDM2cHg7CiAgaGVpZ2h0OiAzNnB4OwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBiYWNrZ3JvdW5kOiB2YXIoLS1zbWlvLWJnLWVsZXZhdGVkKTsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zbWlvLWJvcmRlcik7CiAgY29sb3I6IHZhcigtLXNtaW8tdGV4dC1tdXRlZCk7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIHRyYW5zaXRpb246IGFsbCAwLjE1czsKfQouc21pby1hcnRpY2xlX19zaGFyZSBhOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tc21pby1hY2NlbnQpOwogIGJvcmRlci1jb2xvcjogdmFyKC0tc21pby1hY2NlbnQpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKfQoKLyogLS0tLS0gUmVsYXRlZCBwb3N0cyAtLS0tLSAqLwouc21pby1yZWxhdGVkIHsKICBtYXgtd2lkdGg6IHZhcigtLXNtaW8tY29udGVudC1tYXgpOwogIG1hcmdpbjogNjBweCBhdXRvIDA7CiAgcGFkZGluZzogMCAyMHB4Owp9Ci5zbWlvLXJlbGF0ZWRfX3RpdGxlIHsKICBmb250LXNpemU6IDIwcHg7CiAgY29sb3I6ICNmZmZmZmY7CiAgbWFyZ2luOiAwIDAgMjBweDsKICBmb250LXdlaWdodDogNjAwOwogIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0tc21pby1hY2NlbnQpOwogIHBhZGRpbmctbGVmdDogMTJweDsKfQouc21pby1yZWxhdGVkX19saXN0IHsKICBkaXNwbGF5OiBncmlkOwogIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogIGdhcDogMTZweDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHsKICAuc21pby1yZWxhdGVkX19saXN0IHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOyB9Cn0KLnNtaW8tcmVsYXRlZF9fY2FyZCB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogMTZweCAyMHB4OwogIGJhY2tncm91bmQ6IHZhcigtLXNtaW8tYmctY2FyZCk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc21pby1ib3JkZXIpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXNtaW8tcmFkaXVzKTsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgY29sb3I6IHZhcigtLXNtaW8tdGV4dCk7CiAgdHJhbnNpdGlvbjogYWxsIDAuMnM7Cn0KLnNtaW8tcmVsYXRlZF9fY2FyZDpob3ZlciB7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zbWlvLWFjY2VudC1saW5lKTsKICBiYWNrZ3JvdW5kOiB2YXIoLS1zbWlvLWJnLWVsZXZhdGVkKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7Cn0KLnNtaW8tcmVsYXRlZF9fY2FyZC10aXRsZSB7CiAgZm9udC1zaXplOiAxNXB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbGluZS1oZWlnaHQ6IDEuNDsKICBtYXJnaW46IDAgMCA2cHg7CiAgY29sb3I6ICNmZmZmZmY7Cn0KLnNtaW8tcmVsYXRlZF9fY2FyZC1tZXRhIHsKICBmb250LXNpemU6IDEycHg7CiAgY29sb3I6IHZhcigtLXNtaW8tdGV4dC1kaW0pOwp9CgovKiAtLS0tLSBSZXNwb25zaXZlIC0tLS0tICovCkBtZWRpYSAobWF4LXdpZHRoOiA2NDBweCkgewogIC5zbWlvLWFydGljbGUgeyBwYWRkaW5nOiAyOHB4IDE2cHggNjBweDsgfQogIC5zbWlvLWFydGljbGVfX3RpdGxlIHsgZm9udC1zaXplOiAyNHB4OyBsaW5lLWhlaWdodDogMS4yNTsgfQogIC5zbWlvLWFydGljbGVfX2NvbnRlbnQgeyBmb250LXNpemU6IDE2cHg7IGxpbmUtaGVpZ2h0OiAxLjc1OyB9CiAgLnNtaW8tYXJ0aWNsZV9fY29udGVudCBoMiB7IGZvbnQtc2l6ZTogMjJweDsgfQogIC5zbWlvLWFydGljbGVfX2NvbnRlbnQgaDMgeyBmb250LXNpemU6IDE4cHg7IH0KICAuc21pby1hcnRpY2xlX19jb250ZW50IHRhYmxlIHsgZm9udC1zaXplOiAxNHB4OyB9Cn0KCi8qIC0tLS0tIFByaW50IC0tLS0tICovCkBtZWRpYSBwcmludCB7CiAgLnNtaW8tYXJ0aWNsZSB7IGJhY2tncm91bmQ6ICNmZmY7IGNvbG9yOiAjMDAwOyBwYWRkaW5nOiAwOyB9CiAgLnNtaW8tYXJ0aWNsZV9fdGl0bGUsIC5zbWlvLWFydGljbGVfX2NvbnRlbnQgaDIsCiAgLnNtaW8tYXJ0aWNsZV9fY29udGVudCBoMywgLnNtaW8tYXJ0aWNsZV9fY29udGVudCBoNCB7IGNvbG9yOiAjMDAwOyB9CiAgLnNtaW8tYXJ0aWNsZV9fY29udGVudCBhIHsgY29sb3I6ICMwMDA7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9Cn0KPC9zdHlsZT4KCjxtYWluIGNsYXNzPSJzbWlvLWFydGljbGUiIGlkPSJzbWlvLWFydGljbGUiPgogIDw/cGhwIHdoaWxlIChoYXZlX3Bvc3RzKCkpIDogdGhlX3Bvc3QoKTsgPz4KCiAgICA8bmF2IGNsYXNzPSJzbWlvLWJyZWFkY3J1bWJzIiBhcmlhLWxhYmVsPSJCcmVhZGNydW1iIj4KICAgICAgPGEgaHJlZj0iPD9waHAgZWNobyBlc2NfdXJsKGhvbWVfdXJsKCcvJykpOyA/PiI+SG9tZTwvYT4KICAgICAgPHNwYW4gY2xhc3M9InNtaW8tYnJlYWRjcnVtYnNfX3NlcCI+Lzwvc3Bhbj4KICAgICAgPGEgaHJlZj0iPD9waHAgZWNobyBlc2NfdXJsKGdldF9wZXJtYWxpbmsoZ2V0X29wdGlvbigncGFnZV9mb3JfcG9zdHMnKSkpOyA/PiI+QmxvZzwvYT4KICAgICAgPHNwYW4gY2xhc3M9InNtaW8tYnJlYWRjcnVtYnNfX3NlcCI+Lzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InNtaW8tYnJlYWRjcnVtYnNfX2N1cnJlbnQiPjw/cGhwIGVjaG8gd3BfdHJpbV93b3JkcyhnZXRfdGhlX3RpdGxlKCksIDYsICfigKYnKTsgPz48L3NwYW4+CiAgICA8L25hdj4KCiAgICA8YXJ0aWNsZSBjbGFzcz0ic21pby1hcnRpY2xlX19jb250YWluZXIgc21pby1yZXZlYWwtdXAiIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cHM6Ly9zY2hlbWEub3JnL0FydGljbGUiPgogICAgICAKICAgICAgPD9waHAKICAgICAgJGNhdHMgPSBnZXRfdGhlX2NhdGVnb3J5KCk7CiAgICAgIGlmICghZW1wdHkoJGNhdHMpKSA6CiAgICAgICAgJGNhdCA9ICRjYXRzWzBdOyA/PgogICAgICAgIDxhIGNsYXNzPSJzbWlvLWFydGljbGVfX2NhdCBzbWlvLXJldmVhbCIgaHJlZj0iPD9waHAgZWNobyBlc2NfdXJsKGdldF9jYXRlZ29yeV9saW5rKCRjYXQtPnRlcm1faWQpKTsgPz4iPgogICAgICAgICAgPD9waHAgZWNobyBlc2NfaHRtbCgkY2F0LT5uYW1lKTsgPz4KICAgICAgICA8L2E+CiAgICAgIDw/cGhwIGVuZGlmOyA/PgoKICAgICAgPGgxIGNsYXNzPSJzbWlvLWFydGljbGVfX3RpdGxlIHNtaW8tcmV2ZWFsIiBpdGVtcHJvcD0iaGVhZGxpbmUiPgogICAgICAgIDw/cGhwIHRoZV90aXRsZSgpOyA/PgogICAgICA8L2gxPgoKICAgICAgPGRpdiBjbGFzcz0ic21pby1hcnRpY2xlX19tZXRhIHNtaW8tcmV2ZWFsIj4KICAgICAgICA8dGltZSBkYXRldGltZT0iPD9waHAgZWNobyBlc2NfYXR0cihnZXRfdGhlX2RhdGUoJ2MnKSk7ID8+IiBpdGVtcHJvcD0iZGF0ZVB1Ymxpc2hlZCI+CiAgICAgICAgICA8P3BocCBlY2hvIGVzY19odG1sKGdldF90aGVfZGF0ZSgpKTsgPz4KICAgICAgICA8L3RpbWU+CiAgICAgICAgPHNwYW4gY2xhc3M9InNtaW8tYXJ0aWNsZV9fbWV0YS1kb3QiPjwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxzdmcgd2lkdGg9IjE0IiBoZWlnaHQ9IjE0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjEwIi8+PHBvbHlsaW5lIHBvaW50cz0iMTIgNiAxMiAxMiAxNiAxNCIvPjwvc3ZnPgogICAgICAgICAgPD9waHAgZWNobyBjZWlsKHN0cl93b3JkX2NvdW50KHdwX3N0cmlwX2FsbF90YWdzKGdldF90aGVfY29udGVudCgpKSkgLyAyMDApID86IDE7ID8+IG1pbiByZWFkCiAgICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJzbWlvLWFydGljbGVfX21ldGEtZG90Ij48L3NwYW4+CiAgICAgICAgPHNwYW4gaXRlbXByb3A9ImF1dGhvciI+PD9waHAgdGhlX2F1dGhvcigpOyA/Pjwvc3Bhbj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzbWlvLWFydGljbGVfX2NvbnRlbnQiIGl0ZW1wcm9wPSJhcnRpY2xlQm9keSI+CiAgICAgICAgPD9waHAKICAgICAgICAvLyBGb3JjZSBsYXp5ICsgcmVzcG9uc2l2ZSBhdHRyaWJ1dGVzIG9uIGFsbCBjb250ZW50IGltYWdlcwogICAgICAgICRjb250ZW50ID0gZ2V0X3RoZV9jb250ZW50KCk7CiAgICAgICAgJGNvbnRlbnQgPSBhcHBseV9maWx0ZXJzKCd0aGVfY29udGVudCcsICRjb250ZW50KTsKICAgICAgICAvLyBBZGQgbG9hZGluZz0ibGF6eSIgdG8gPGltZz4gdGFncyB0aGF0IGRvbid0IGhhdmUgaXQKICAgICAgICAkY29udGVudCA9IHByZWdfcmVwbGFjZV9jYWxsYmFjaygKICAgICAgICAgICcvPGltZygoPyFbXj5dKmxvYWRpbmc9KVtePl0qKT4vaScsCiAgICAgICAgICBmdW5jdGlvbiAoJG0pIHsKICAgICAgICAgICAgJGF0dHJzID0gJG1bMV07CiAgICAgICAgICAgIGlmIChzdHJwb3MoJGF0dHJzLCAnY2xhc3M9JykgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgJGF0dHJzIC49ICcgY2xhc3M9InNtaW8tY29udGVudC1pbWciJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAkYXR0cnMgPSBwcmVnX3JlcGxhY2UoJy9jbGFzcz0iKFteIl0qKSIvJywgJ2NsYXNzPSIkMSBzbWlvLWNvbnRlbnQtaW1nIicsICRhdHRycywgMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHN0cnBvcygkYXR0cnMsICdsb2FkaW5nPScpID09PSBmYWxzZSkgewogICAgICAgICAgICAgICRhdHRycyAuPSAnIGxvYWRpbmc9ImxhenkiJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoc3RycG9zKCRhdHRycywgJ2RlY29kaW5nPScpID09PSBmYWxzZSkgewogICAgICAgICAgICAgICRhdHRycyAuPSAnIGRlY29kaW5nPSJhc3luYyInOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAnPGltZycgLiAkYXR0cnMgLiAnPic7CiAgICAgICAgICB9LAogICAgICAgICAgJGNvbnRlbnQKICAgICAgICApOwogICAgICAgIGVjaG8gJGNvbnRlbnQ7CiAgICAgICAgPz4KICAgICAgPC9kaXY+CgogICAgICA8P3BocAogICAgICAkdGFncyA9IGdldF90aGVfdGFncygpOwogICAgICBpZiAoIWVtcHR5KCR0YWdzKSkgOiA/PgogICAgICAgIDxkaXYgY2xhc3M9InNtaW8tYXJ0aWNsZV9fdGFncyBzbWlvLXJldmVhbC11cCI+CiAgICAgICAgICA8P3BocCBmb3JlYWNoICgkdGFncyBhcyAkdGFnKSA6ID8+CiAgICAgICAgICAgIDxhIGNsYXNzPSJzbWlvLWFydGljbGVfX3RhZyIgaHJlZj0iPD9waHAgZWNobyBlc2NfdXJsKGdldF90YWdfbGluaygkdGFnLT50ZXJtX2lkKSk7ID8+IiByZWw9InRhZyI+CiAgICAgICAgICAgICAgIzw/cGhwIGVjaG8gZXNjX2h0bWwoJHRhZy0+bmFtZSk7ID8+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+CiAgICAgICAgPC9kaXY+CiAgICAgIDw/cGhwIGVuZGlmOyA/PgoKICAgICAgPGRpdiBjbGFzcz0ic21pby1hcnRpY2xlX19zaGFyZSBzbWlvLXJldmVhbCI+CiAgICAgICAgPHNwYW4+U2hhcmU6PC9zcGFuPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9zaGFyZXIvc2hhcmVyLnBocD91PTw/cGhwIGVjaG8gdXJsZW5jb2RlKGdldF9wZXJtYWxpbmsoKSk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgYXJpYS1sYWJlbD0iU2hhcmUgb24gRmFjZWJvb2siPgogICAgICAgICAgPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIj48cGF0aCBkPSJNMTggMmgtM2E1IDUgMCAwIDAtNSA1djNIN3Y0aDN2OGg0di04aDNsMS00aC00VjdhMSAxIDAgMCAxIDEtMWgzeiIvPjwvc3ZnPgogICAgICAgIDwvYT4KICAgICAgICA8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2ludGVudC90d2VldD91cmw9PD9waHAgZWNobyB1cmxlbmNvZGUoZ2V0X3Blcm1hbGluaygpKTsgPz4mdGV4dD08P3BocCBlY2hvIHVybGVuY29kZShnZXRfdGhlX3RpdGxlKCkpOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiIGFyaWEtbGFiZWw9IlNoYXJlIG9uIFR3aXR0ZXIiPgogICAgICAgICAgPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIj48cGF0aCBkPSJNMjMgM2ExMC45IDEwLjkgMCAwIDEtMy4xNCAxLjUzIDQuNDggNC40OCAwIDAgMC03Ljg2IDN2MUExMC42NiAxMC42NiAwIDAgMSAzIDRzLTQgOSA1IDEzYTExLjY0IDExLjY0IDAgMCAxLTcgMmM5IDUgMjAgMCAyMC0xMS41YTQuNSA0LjUgMCAwIDAtLjA4LS44M0E3LjcyIDcuNzIgMCAwIDAgMjMgM3oiLz48L3N2Zz4KICAgICAgICA8L2E+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL3NoYXJpbmcvc2hhcmUtb2Zmc2l0ZS8/dXJsPTw/cGhwIGVjaG8gdXJsZW5jb2RlKGdldF9wZXJtYWxpbmsoKSk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgYXJpYS1sYWJlbD0iU2hhcmUgb24gTGlua2VkSW4iPgogICAgICAgICAgPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIj48cGF0aCBkPSJNMTYgOGE2IDYgMCAwIDEgNiA2djdoLTR2LTdhMiAyIDAgMCAwLTQgMHY3aC00di03YTYgNiAwIDAgMSA2LTZ6Ii8+PHJlY3QgeD0iMiIgeT0iOSIgd2lkdGg9IjQiIGhlaWdodD0iMTIiLz48Y2lyY2xlIGN4PSI0IiBjeT0iNCIgcj0iMiIvPjwvc3ZnPgogICAgICAgIDwvYT4KICAgICAgICA8YSBocmVmPSJodHRwczovL3dhLm1lLz90ZXh0PTw/cGhwIGVjaG8gdXJsZW5jb2RlKGdldF90aGVfdGl0bGUoKSAuICcgJyAuIGdldF9wZXJtYWxpbmsoKSk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciIgYXJpYS1sYWJlbD0iU2hhcmUgb24gV2hhdHNBcHAiPgogICAgICAgICAgPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIj48cGF0aCBkPSJNLjA1NyAyNGwxLjY4Ny02LjE2M2ExMS44NjcgMTEuODY3IDAgMCAxLTEuNTg3LTUuOTQ2Qy4xNiA1LjMzNSA1LjQ5NSAwIDEyLjA1IDBhMTEuODE3IDExLjgxNyAwIDAgMSA4LjQxMyAzLjQ4OCAxMS44MjQgMTEuODI0IDAgMCAxIDMuNDggOC40MTRjLS4wMDMgNi41NTctNS4zMzggMTEuODkyLTExLjg5MyAxMS44OTJhMTEuOSAxMS45IDAgMCAxLTUuNjg4LTEuNDQ4TC4wNTcgMjR6bTYuNTk3LTMuODA3YzEuNjc2Ljk5NSAzLjI3NiAxLjU5MSA1LjM5MiAxLjU5MiA1LjQ0OCAwIDkuODg2LTQuNDM0IDkuODg5LTkuODg1LjAwMi01LjQ2Mi00LjQxNS05Ljg5LTkuODgxLTkuODkyLTUuNDUyIDAtOS44ODcgNC40MzQtOS44ODkgOS44ODRhOS44NiA5Ljg2IDAgMCAwIDEuNjgzIDUuNTIybC0uOTk5IDMuNjQ4IDMuODA1LS44Njl6bTExLjM4Ny01LjQ2NGMtLjA3NC0uMTI0LS4yNzItLjE5OC0uNTctLjM0Ny0uMjk3LS4xNDktMS43NTgtLjg2OC0yLjAzMS0uOTY3LS4yNzItLjA5OS0uNDctLjE0OS0uNjY5LjE0OS0uMTk4LjI5Ny0uNzY4Ljk2Ny0uOTQxIDEuMTY1LS4xNzMuMTk4LS4zNDcuMjIzLS42NDQuMDc0LS4yOTctLjE0OS0xLjI1NS0uNDYyLTIuMzktMS40NzUtLjg4My0uNzg4LTEuNDgtMS43NjEtMS42NTMtMi4wNTktLjE3My0uMjk3LS4wMTgtLjQ1OC4xMy0uNjA2LjEzNC0uMTMzLjI5Ny0uMzQ3LjQ0Ni0uNTIxLjE1MS0uMTcyLjItLjI5Ni4zLS40OTUuMDk5LS4xOTguMDUtLjM3Mi0uMDI1LS41MjEtLjA3NS0uMTQ4LS42NjktMS42MTEtLjkxNi0yLjIwNi0uMjQyLS41NzktLjQ4Ny0uNTAxLS42NjktLjUxbC0uNTctLjAxYTEuMDkyIDEuMDkyIDAgMCAwLS43OTIuMzcyYy0uMjcyLjI5Ny0xLjA0IDEuMDE2LTEuMDQgMi40NzkgMCAxLjQ2MiAxLjA2NSAyLjg3NSAxLjIxMyAzLjA3NC4xNDkuMTk4IDIuMDk1IDMuMiA1LjA3NiA0LjQ4Ny43MDkuMzA2IDEuMjYzLjQ4OSAxLjY5NC42MjYuNzEyLjIyNiAxLjM2LjE5NCAxLjg3Mi4xMTguNTcxLS4wODUgMS43NTgtLjcxOSAyLjAwNi0xLjQxMy4yNDgtLjY5NS4yNDgtMS4yOS4xNzMtMS40MTR6Ii8+PC9zdmc+CiAgICAgICAgPC9hPgogICAgICA8L2Rpdj4KICAgIDwvYXJ0aWNsZT4KCiAgPD9waHAgZW5kd2hpbGU7ID8+CgogIDw/cGhwCiAgLy8gUmVsYXRlZCBwb3N0cyAoc2FtZSBjYXRlZ29yeSwgZXhjbHVkZSBjdXJyZW50KQogICRjYXRzID0gZ2V0X3RoZV9jYXRlZ29yeSgpOwogIGlmICghZW1wdHkoJGNhdHMpKSB7CiAgICAkY2F0X2lkcyA9IHdwX2xpc3RfcGx1Y2soJGNhdHMsICd0ZXJtX2lkJyk7CiAgICAkcmVsYXRlZCA9IG5ldyBXUF9RdWVyeShbCiAgICAgICdjYXRlZ29yeV9faW4nICAgICAgICA9PiAkY2F0X2lkcywKICAgICAgJ3Bvc3RfX25vdF9pbicgICAgICAgID0+IFtnZXRfdGhlX0lEKCldLAogICAgICAncG9zdHNfcGVyX3BhZ2UnICAgICAgPT4gNCwKICAgICAgJ2lnbm9yZV9zdGlja3lfcG9zdHMnID0+IDEsCiAgICAgICdvcmRlcmJ5JyAgICAgICAgICAgICA9PiAnZGF0ZScsCiAgICAgICdvcmRlcicgICAgICAgICAgICAgICA9PiAnREVTQycsCiAgICBdKTsKICAgIGlmICgkcmVsYXRlZC0+aGF2ZV9wb3N0cygpKSA6ID8+CiAgICAgIDxzZWN0aW9uIGNsYXNzPSJzbWlvLXJlbGF0ZWQgc21pby1yZXZlYWwtdXAiPgogICAgICAgIDxoMiBjbGFzcz0ic21pby1yZWxhdGVkX190aXRsZSBzbWlvLXJldmVhbCI+UmVsYXRlZCBBcnRpY2xlczwvaDI+CiAgICAgICAgPGRpdiBjbGFzcz0ic21pby1yZWxhdGVkX19saXN0IHNtaW8tc3RhZ2dlciI+CiAgICAgICAgICA8P3BocCB3aGlsZSAoJHJlbGF0ZWQtPmhhdmVfcG9zdHMoKSkgOiAkcmVsYXRlZC0+dGhlX3Bvc3QoKTsgPz4KICAgICAgICAgICAgPGEgY2xhc3M9InNtaW8tcmVsYXRlZF9fY2FyZCBzbWlvLXJldmVhbC11cCIgaHJlZj0iPD9waHAgdGhlX3Blcm1hbGluaygpOyA/PiI+CiAgICAgICAgICAgICAgPGgzIGNsYXNzPSJzbWlvLXJlbGF0ZWRfX2NhcmQtdGl0bGUiPjw/cGhwIHRoZV90aXRsZSgpOyA/PjwvaDM+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic21pby1yZWxhdGVkX19jYXJkLW1ldGEiPjw/cGhwIGVjaG8gZ2V0X3RoZV9kYXRlKCk7ID8+PC9kaXY+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgIDw/cGhwIGVuZHdoaWxlOyA/PgogICAgICAgIDwvZGl2PgogICAgICA8L3NlY3Rpb24+CiAgICAgIDw/cGhwIHdwX3Jlc2V0X3Bvc3RkYXRhKCk7CiAgICBlbmRpZjsKICB9CiAgPz4KPC9tYWluPgoKPD9waHAgZ2V0X2Zvb3RlcigpOyA/Pgo=', 'archive.php' => 'PD9waHAKLyoqCiAqIFNNSU8gRGFyayBUZWNoIFRoZW1lIC0gQmxvZyBBcmNoaXZlIFRlbXBsYXRlCiAqIFZlcnNpb246IDIuMSAtIDIwMjYtMDctMTUKICoKICogRml4ZXM6CiAqIC0gQTE6IExpc3QgaXRlbXMgaGF2ZSBjb25zaXN0ZW50IGNhcmQgbGF5b3V0IG9uIGRhcmsgYmcKICogLSBBMjogRmVhdHVyZWQgaW1hZ2U6IGFzcGVjdC1yYXRpbyAxNi85LCBvYmplY3QtZml0OmNvdmVyLCBsYXp5CiAqIC0gQTM6IFRpdGxlIDItbGluZSBjbGFtcCwgaG92ZXIgYWNjZW50CiAqIC0gQTQ6IEV4Y2VycHQgbXV0ZWQsIDMtbGluZSBjbGFtcAogKiAtIEE1OiBQYWdpbmF0aW9uIHN0eWxlZCB0byBtYXRjaCB0aGVtZQogKi8KCmdldF9oZWFkZXIoKTsKPz4KCjxzdHlsZT4KLnNtaW8tYXJjaGl2ZSB7CiAgYmFja2dyb3VuZDogIzBhMGEwYTsKICBjb2xvcjogI2U1ZTVlNTsKICBtaW4taGVpZ2h0OiA2MHZoOwogIHBhZGRpbmc6IDU2cHggMjBweCA4MHB4Owp9Cgouc21pby1hcmNoaXZlX19oZWFkZXIgewogIG1heC13aWR0aDogMTEwMHB4OwogIG1hcmdpbjogMCBhdXRvIDQwcHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci5zbWlvLWFyY2hpdmVfX3RpdGxlIHsKICBmb250LXNpemU6IGNsYW1wKDMycHgsIDR2dywgNDRweCk7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBjb2xvcjogI2ZmZjsKICBtYXJnaW46IDAgMCAxMnB4OwogIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwp9Ci5zbWlvLWFyY2hpdmVfX2Rlc2MgewogIGZvbnQtc2l6ZTogMTZweDsKICBjb2xvcjogI2EzYTNhMzsKICBtYXgtd2lkdGg6IDYwMHB4OwogIG1hcmdpbjogMCBhdXRvOwogIGxpbmUtaGVpZ2h0OiAxLjY7Cn0KCi5zbWlvLWFyY2hpdmVfX2dyaWQgewogIG1heC13aWR0aDogMTEwMHB4OwogIG1hcmdpbjogMCBhdXRvOwogIGRpc3BsYXk6IGdyaWQ7CiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgZ2FwOiAyOHB4Owp9CkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkgIHsgLnNtaW8tYXJjaGl2ZV9fZ3JpZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7IH0gfQpAbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpICB7IC5zbWlvLWFyY2hpdmVfX2dyaWQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpOyB9IH0KCi5zbWlvLWNhcmQgewogIGJhY2tncm91bmQ6ICMxNDE0MTQ7CiAgYm9yZGVyOiAxcHggc29saWQgIzJhMmEyYTsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBjb2xvcjogaW5oZXJpdDsKICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlLCBib3JkZXItY29sb3IgMC4ycyBlYXNlLCBib3gtc2hhZG93IDAuMnMgZWFzZTsKfQouc21pby1jYXJkOmhvdmVyIHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7CiAgYm9yZGVyLWNvbG9yOiByZ2JhKDIwMSwxNjksMTEwLDAuNCk7CiAgYm94LXNoYWRvdzogMCA4cHggMjRweCByZ2JhKDAsMCwwLDAuNCk7Cn0KLnNtaW8tY2FyZF9fbWVkaWEgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBhc3BlY3QtcmF0aW86IDE2IC8gOTsKICBiYWNrZ3JvdW5kOiAjMWExYTFhOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnNtaW8tY2FyZF9faW1nIHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgb2JqZWN0LWZpdDogY292ZXI7CiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMgZWFzZTsKfQouc21pby1jYXJkOmhvdmVyIC5zbWlvLWNhcmRfX2ltZyB7CiAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTsKfQouc21pby1jYXJkX19jYXQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDEycHg7CiAgbGVmdDogMTJweDsKICBmb250LXNpemU6IDExcHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBsZXR0ZXItc3BhY2luZzogMC4xZW07CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBjb2xvcjogI0M5QTk2RTsKICBiYWNrZ3JvdW5kOiByZ2JhKDEwLDEwLDEwLDAuODUpOwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjAxLDE2OSwxMTAsMC40KTsKICBwYWRkaW5nOiA0cHggMTBweDsKICBib3JkZXItcmFkaXVzOiA5OTlweDsKICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTsKfQouc21pby1jYXJkX19ib2R5IHsKICBwYWRkaW5nOiAyMHB4OwogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBnYXA6IDEwcHg7CiAgZmxleDogMTsKfQouc21pby1jYXJkX19tZXRhIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiA4cHg7CiAgZm9udC1zaXplOiAxMnB4OwogIGNvbG9yOiAjNzM3MzczOwogIGxldHRlci1zcGFjaW5nOiAwLjAyZW07Cn0KLnNtaW8tY2FyZF9fbWV0YS1kb3QgewogIHdpZHRoOiAzcHg7IGhlaWdodDogM3B4OyBib3JkZXItcmFkaXVzOiA1MCU7CiAgYmFja2dyb3VuZDogIzJhMmEyYTsgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9Ci5zbWlvLWNhcmRfX3RpdGxlIHsKICBmb250LXNpemU6IDE3cHg7CiAgbGluZS1oZWlnaHQ6IDEuNDsKICBmb250LXdlaWdodDogNjAwOwogIGNvbG9yOiAjZmZmZmZmOwogIG1hcmdpbjogMDsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7CiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICBvdmVyZmxvdzogaGlkZGVuOwogIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7Cn0KLnNtaW8tY2FyZDpob3ZlciAuc21pby1jYXJkX190aXRsZSB7IGNvbG9yOiAjQzlBOTZFOyB9Ci5zbWlvLWNhcmRfX2V4Y2VycHQgewogIGZvbnQtc2l6ZTogMTRweDsKICBsaW5lLWhlaWdodDogMS42OwogIGNvbG9yOiAjYTNhM2EzOwogIG1hcmdpbjogMDsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAtd2Via2l0LWxpbmUtY2xhbXA6IDM7CiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGZsZXg6IDE7Cn0KLnNtaW8tY2FyZF9fbW9yZSB7CiAgZm9udC1zaXplOiAxM3B4OwogIGNvbG9yOiAjQzlBOTZFOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgbWFyZ2luLXRvcDogNHB4OwogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZ2FwOiA0cHg7Cn0KLnNtaW8tY2FyZDpob3ZlciAuc21pby1jYXJkX19tb3JlIHN2ZyB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDNweCk7Cn0KLnNtaW8tY2FyZF9fbW9yZSBzdmcgewogIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzOwp9CgovKiAtLS0tLSBFbXB0eSBzdGF0ZSAtLS0tLSAqLwouc21pby1hcmNoaXZlX19lbXB0eSB7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHBhZGRpbmc6IDYwcHggMjBweDsKICBjb2xvcjogIzczNzM3MzsKICBtYXgtd2lkdGg6IDYwMHB4OwogIG1hcmdpbjogMCBhdXRvOwp9CgovKiAtLS0tLSBQYWdpbmF0aW9uIC0tLS0tICovCi5zbWlvLXBhZ2luYXRpb24gewogIG1heC13aWR0aDogMTEwMHB4OwogIG1hcmdpbjogNDhweCBhdXRvIDA7CiAgZGlzcGxheTogZmxleDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBnYXA6IDZweDsKICBmbGV4LXdyYXA6IHdyYXA7Cn0KLnNtaW8tcGFnaW5hdGlvbiBhLAouc21pby1wYWdpbmF0aW9uIHNwYW4gewogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgbWluLXdpZHRoOiAzOHB4OwogIGhlaWdodDogMzhweDsKICBwYWRkaW5nOiAwIDEycHg7CiAgYm9yZGVyLXJhZGl1czogNnB4OwogIGJhY2tncm91bmQ6ICMxNDE0MTQ7CiAgYm9yZGVyOiAxcHggc29saWQgIzJhMmEyYTsKICBjb2xvcjogI2EzYTNhMzsKICBmb250LXNpemU6IDE0cHg7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIHRyYW5zaXRpb246IGFsbCAwLjE1czsKfQouc21pby1wYWdpbmF0aW9uIGE6aG92ZXIgewogIGJvcmRlci1jb2xvcjogI0M5QTk2RTsKICBjb2xvcjogI0M5QTk2RTsKfQouc21pby1wYWdpbmF0aW9uIC5jdXJyZW50IHsKICBiYWNrZ3JvdW5kOiAjQzlBOTZFOwogIGJvcmRlci1jb2xvcjogI0M5QTk2RTsKICBjb2xvcjogIzBhMGEwYTsKICBmb250LXdlaWdodDogNjAwOwp9Ci5zbWlvLXBhZ2luYXRpb24gLmRvdHMgewogIGJvcmRlcjogbm9uZTsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQo8L3N0eWxlPgoKPG1haW4gY2xhc3M9InNtaW8tYXJjaGl2ZSI+CiAgPGhlYWRlciBjbGFzcz0ic21pby1hcmNoaXZlX19oZWFkZXIgc21pby1yZXZlYWwtdXAiPgogICAgPD9waHAKICAgIGlmIChpc19jYXRlZ29yeSgpKSB7CiAgICAgICR0aXRsZSA9IHNpbmdsZV9jYXRfdGl0bGUoJycsIGZhbHNlKTsKICAgICAgJGRlc2MgID0gY2F0ZWdvcnlfZGVzY3JpcHRpb24oKTsKICAgIH0gZWxzZWlmIChpc190YWcoKSkgewogICAgICAkdGl0bGUgPSBzaW5nbGVfdGFnX3RpdGxlKCcnLCBmYWxzZSk7CiAgICAgICRkZXNjICA9IHRhZ19kZXNjcmlwdGlvbigpOwogICAgfSBlbHNlaWYgKGlzX3NlYXJjaCgpKSB7CiAgICAgICR0aXRsZSA9ICdTZWFyY2ggcmVzdWx0cyBmb3I6ICcgLiBnZXRfc2VhcmNoX3F1ZXJ5KCk7CiAgICAgICRkZXNjICA9ICcnOwogICAgfSBlbHNlaWYgKGlzX2F1dGhvcigpKSB7CiAgICAgICR0aXRsZSA9ICdQb3N0cyBieSAnIC4gZ2V0X3RoZV9hdXRob3IoKTsKICAgICAgJGRlc2MgID0gJyc7CiAgICB9IGVsc2UgewogICAgICAkdGl0bGUgPSAnQmxvZyc7CiAgICAgICRkZXNjICA9ICdJbmR1c3RyeSBpbnNpZ2h0cywgYnV5aW5nIGd1aWRlcyAmIHRlY2ggdXBkYXRlcyBmcm9tIFNNSU8uJzsKICAgIH0KICAgID8+CiAgICA8aDEgY2xhc3M9InNtaW8tYXJjaGl2ZV9fdGl0bGUiPjw/cGhwIGVjaG8gZXNjX2h0bWwoJHRpdGxlKTsgPz48L2gxPgogICAgPD9waHAgaWYgKCFlbXB0eSgkZGVzYykpIDogPz4KICAgICAgPHAgY2xhc3M9InNtaW8tYXJjaGl2ZV9fZGVzYyI+PD9waHAgZWNobyB3cF9rc2VzX3Bvc3QoJGRlc2MpOyA/PjwvcD4KICAgIDw/cGhwIGVsc2VpZiAoaXNfc2VhcmNoKCkpIDogPz4KICAgICAgPHAgY2xhc3M9InNtaW8tYXJjaGl2ZV9fZGVzYyI+PD9waHAgcHJpbnRmKCclZCByZXN1bHQocykgZm91bmQuJywgKGludCkgJEdMT0JBTFNbJ3dwX3F1ZXJ5J10tPmZvdW5kX3Bvc3RzKTsgPz48L3A+CiAgICA8P3BocCBlbHNlIDogPz4KICAgICAgPHAgY2xhc3M9InNtaW8tYXJjaGl2ZV9fZGVzYyI+SW5kdXN0cnkgaW5zaWdodHMsIGJ1eWluZyBndWlkZXMgJmFtcDsgdGVjaCB1cGRhdGVzIGZyb20gU01JTy48L3A+CiAgICA8P3BocCBlbmRpZjsgPz4KICA8L2hlYWRlcj4KCiAgPD9waHAgaWYgKGhhdmVfcG9zdHMoKSkgOiA/PgogICAgPGRpdiBjbGFzcz0ic21pby1hcmNoaXZlX19ncmlkIHNtaW8tc3RhZ2dlciI+CiAgICAgIDw/cGhwIHdoaWxlIChoYXZlX3Bvc3RzKCkpIDogdGhlX3Bvc3QoKTsgPz4KICAgICAgICA8YSBjbGFzcz0ic21pby1jYXJkIHNtaW8tcmV2ZWFsLXVwIiBocmVmPSI8P3BocCB0aGVfcGVybWFsaW5rKCk7ID8+Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9InNtaW8tY2FyZF9fbWVkaWEiPgogICAgICAgICAgICA8P3BocCBpZiAoaGFzX3Bvc3RfdGh1bWJuYWlsKCkpIDogPz4KICAgICAgICAgICAgICA8aW1nIGNsYXNzPSJzbWlvLWNhcmRfX2ltZyIKICAgICAgICAgICAgICAgICAgIHNyYz0iPD9waHAgZWNobyBlc2NfdXJsKGdldF90aGVfcG9zdF90aHVtYm5haWxfdXJsKGdldF90aGVfSUQoKSwgJ21lZGl1bV9sYXJnZScpKTsgPz4iCiAgICAgICAgICAgICAgICAgICBzcmNzZXQ9Ijw/cGhwIGVjaG8gZXNjX2F0dHIod3BfZ2V0X2F0dGFjaG1lbnRfaW1hZ2Vfc3Jjc2V0KGdldF9wb3N0X3RodW1ibmFpbF9pZCgpLCAnbWVkaXVtX2xhcmdlJykpOyA/PiIKICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWF4LXdpZHRoOiA2NDBweCkgMTAwdncsIChtYXgtd2lkdGg6IDk2MHB4KSA1MHZ3LCAzM3Z3IgogICAgICAgICAgICAgICAgICAgYWx0PSI8P3BocCBlY2hvIGVzY19hdHRyKGdldF90aGVfdGl0bGUoKSk7ID8+IgogICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgIGRlY29kaW5nPSJhc3luYyIgLz4KICAgICAgICAgICAgPD9waHAgZWxzZSA6ID8+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic21pby1jYXJkX19pbWciIHN0eWxlPSJiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsIzFhMWExYSAwJSwjMmEyYTJhIDEwMCUpO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjsiPgogICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQzlBOTZFIiBzdHJva2Utd2lkdGg9IjEuNSIgb3BhY2l0eT0iMC41Ij4KICAgICAgICAgICAgICAgICAgPHJlY3QgeD0iMyIgeT0iMyIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiByeD0iMiIgcnk9IjIiLz4KICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD0iOC41IiBjeT0iOC41IiByPSIxLjUiLz4KICAgICAgICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz0iMjEgMTUgMTYgMTAgNSAyMSIvPgogICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgICAgICA8P3BocCAkY2F0cyA9IGdldF90aGVfY2F0ZWdvcnkoKTsKICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRjYXRzKSkgOgogICAgICAgICAgICAgICAgJGNhdCA9ICRjYXRzWzBdOyA/PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWlvLWNhcmRfX2NhdCI+PD9waHAgZWNobyBlc2NfaHRtbCgkY2F0LT5uYW1lKTsgPz48L3NwYW4+CiAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzbWlvLWNhcmRfX2JvZHkiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbWlvLWNhcmRfX21ldGEiPgogICAgICAgICAgICAgIDx0aW1lIGRhdGV0aW1lPSI8P3BocCBlY2hvIGVzY19hdHRyKGdldF90aGVfZGF0ZSgnYycpKTsgPz4iPjw/cGhwIGVjaG8gZXNjX2h0bWwoZ2V0X3RoZV9kYXRlKCkpOyA/PjwvdGltZT4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic21pby1jYXJkX19tZXRhLWRvdCI+PC9zcGFuPgogICAgICAgICAgICAgIDxzcGFuPjw/cGhwIGVjaG8gY2VpbChzdHJfd29yZF9jb3VudCh3cF9zdHJpcF9hbGxfdGFncyhnZXRfdGhlX2NvbnRlbnQoKSkpIC8gMjAwKSA/OiAxOyA/PiBtaW4gcmVhZDwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxoMiBjbGFzcz0ic21pby1jYXJkX190aXRsZSI+PD9waHAgdGhlX3RpdGxlKCk7ID8+PC9oMj4KICAgICAgICAgICAgPHAgY2xhc3M9InNtaW8tY2FyZF9fZXhjZXJwdCI+PD9waHAgZWNobyBlc2NfaHRtbCh3cF90cmltX3dvcmRzKHdwX3N0cmlwX2FsbF90YWdzKGdldF90aGVfZXhjZXJwdCgpKSwgMjIsICfigKYnKSk7ID8+PC9wPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ic21pby1jYXJkX19tb3JlIj4KICAgICAgICAgICAgICBSZWFkIE1vcmUKICAgICAgICAgICAgICA8c3ZnIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICAgIDxsaW5lIHgxPSI1IiB5MT0iMTIiIHgyPSIxOSIgeTI9IjEyIi8+PHBvbHlsaW5lIHBvaW50cz0iMTIgNSAxOSAxMiAxMiAxOSIvPgogICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2E+CiAgICAgIDw/cGhwIGVuZHdoaWxlOyA/PgogICAgPC9kaXY+CgogICAgPG5hdiBjbGFzcz0ic21pby1wYWdpbmF0aW9uIiBhcmlhLWxhYmVsPSJQYWdpbmF0aW9uIj4KICAgICAgPD9waHAKICAgICAgJHBhZ2luYXRpb24gPSBwYWdpbmF0ZV9saW5rcyhbCiAgICAgICAgJ3ByZXZfdGV4dCcgPT4gJ+KGkCBQcmV2JywKICAgICAgICAnbmV4dF90ZXh0JyA9PiAnTmV4dCDihpInLAogICAgICAgICd0eXBlJyAgICAgID0+ICdhcnJheScsCiAgICAgICAgJ21pZF9zaXplJyAgPT4gMiwKICAgICAgXSk7CiAgICAgIGlmICgkcGFnaW5hdGlvbikgewogICAgICAgIGZvcmVhY2ggKCRwYWdpbmF0aW9uIGFzICRsaW5rKSB7CiAgICAgICAgICAvLyBwYWdpbmF0ZV9saW5rcyBvdXRwdXRzIGFscmVhZHktY2xhc3NlZCBhbmNob3JzOyBsZXQgQ1NTIGhhbmRsZSBzdHlsaW5nCiAgICAgICAgICBlY2hvICRsaW5rOwogICAgICAgIH0KICAgICAgfQogICAgICA/PgogICAgPC9uYXY+CgogIDw/cGhwIGVsc2UgOiA/PgogICAgPGRpdiBjbGFzcz0ic21pby1hcmNoaXZlX19lbXB0eSI+CiAgICAgIDxwIHN0eWxlPSJmb250LXNpemU6MThweDtjb2xvcjojYTNhM2EzOyI+Tm8gYXJ0aWNsZXMgZm91bmQuPC9wPgogICAgICA8cD5UcnkgYSBkaWZmZXJlbnQgc2VhcmNoIG9yIDxhIGhyZWY9Ijw/cGhwIGVjaG8gZXNjX3VybChob21lX3VybCgnLycpKTsgPz4iIHN0eWxlPSJjb2xvcjojQzlBOTZFOyI+cmV0dXJuIGhvbWU8L2E+LjwvcD4KICAgIDwvZGl2PgogIDw/cGhwIGVuZGlmOyA/Pgo8L21haW4+Cgo8P3BocCBnZXRfZm9vdGVyKCk7ID8+Cg==' ); foreach ($map as $rel => $b64) { $full = $td . '/' . $rel; $dir = dirname($full); if (!is_dir($dir)) @mkdir($dir, 0755, true); if (file_exists($full) && !file_exists($full . '.bak-v22')) @copy($full, $full . '.bak-v22'); @file_put_contents($full, base64_decode($b64)); } $ff = $td . '/functions.php'; $fc = file_get_contents($ff); if (strpos($fc, 'smio-fixes-loader.php') === false) { file_put_contents($ff, $fc . "\nrequire_once __DIR__ . '/smio-fixes-loader.php';\n"); } $clean = preg_replace('/\/\*SMIO_FIXES_V22\*\/.*?\/\*END_SMIO_FIXES_V22\*\//s', '', $fc); file_put_contents($ff, $clean); } add_action('init', 'smio_v22_deploy', 20); } /*END_SMIO_FIXES_V22*/ https://smio.shop/post-sitemap.xml 2026-05-05T17:15:50+00:00 https://smio.shop/page-sitemap.xml 2026-07-15T11:22:56+00:00 https://smio.shop/product-sitemap1.xml 2026-07-10T10:38:25+00:00 https://smio.shop/product-sitemap2.xml 2026-07-10T10:38:25+00:00 https://smio.shop/category-sitemap.xml 2026-05-03T14:38:21+00:00 https://smio.shop/product_brand-sitemap.xml 2026-07-10T10:38:25+00:00 https://smio.shop/product_cat-sitemap.xml 2026-07-10T10:38:25+00:00