Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Morgana by FukDaPolice 1.9
- assert(load(Base64Decode(
- "aWYgbXlIZXJvLmNoYXJOYW1lIH49ICdNb3JnYW5hJyB0aGVuIHJldHVybiBlbmQNCg0KYXNzZXJ0KGxvYWQoQmFzZTY0RGVjb2RlKCJHMHgxWVZJQUFRUUVCQWdBR1pNTkNob0tBQUFBQUFBQUFBQUFBUUlLQUFBQUJnQkFBRUZBQUFBZFFBQUJCa0JBQUdVQUFBQUtRQUNCQmtCQUFHVkFBQUFLUUlDQkh3Q0FBQVFBQUFBRUJnQUFBR05zWVhOekFBUU5BQUFBVTJOeWFYQjBVM1JoZEhWekFBUUhBQUFBWDE5cGJtbDBBQVFMQUFBQVUyVnVaRlZ3WkdGMFpRQUNBQUFBQWdBQUFBZ0FBQUFDQUFvdEFBQUFoa0JBQU1hQVFBQUd3VUFBQndGQkFrRkJBUUFkZ1FBQlJzRkFBRWNCd1FLQmdRRUFYWUVBQVliQlFBQ0hBVUVEd2NFQkFKMkJBQUhHd1VBQXh3SEJBd0VDQWdEZGdRQUJCc0pBQUFjQ1FRUkJRZ0lBSFlJQUFSWUJBZ0xkQUFBQm5ZQUFBQXFBQUlBS1FBQ0ZoZ0JEQU1IQUFnQ2RnQUFCQ29DQWhRcUF3NGFHQUVRQXg4QkNBTWZBd3dIZEFJQUFuWUFBQUFxQWdJZU1RRVFBQVlFRUFKMUFnQUdHd0VRQTVRQUFBSjFBQUFFZkFJQUFGQUFBQUFRRkFBQUFhSGRwWkFBRURRQUFBRUpoYzJVMk5FVnVZMjlrWlFBRUNRQUFBSFJ2YzNSeWFXNW5BQVFEQUFBQWIzTUFCQWNBQUFCblpYUmxibllBQkJVQUFBQlFVazlEUlZOVFQxSmZTVVJGVGxSSlJrbEZVZ0FFQ1FBQUFGVlRSVkpPUVUxRkFBUU5BQUFBUTA5TlVGVlVSVkpPUVUxRkFBUVFBQUFBVUZKUFEwVlRVMDlTWDB4RlZrVk1BQVFUQUFBQVVGSlBRMFZUVTA5U1gxSkZWa2xUU1U5T0FBUUVBQUFBUzJWNUFBUUhBQUFBYzI5amEyVjBBQVFJQUFBQWNtVnhkV2x5WlFBRUNnQUFBR2RoYldWVGRHRjBaUUFBQkFRQUFBQjBZM0FBQkFjQUFBQmhjM05sY25RQUJBc0FBQUJUWlc1a1ZYQmtZWFJsQUFNQUFBQUFBQUR3UHdRVUFBQUFRV1JrUW5WbmMzQnNZWFJEWVd4c1ltRmphd0FCQUFBQUNBQUFBQWdBQUFBQUFBTUZBQUFBQlFBQUFBd0FRQUNCUUFBQUhVQ0FBUjhBZ0FBQ0FBQUFCQXNBQUFCVFpXNWtWWEJrWVhSbEFBTUFBQUFBQUFBQVFBQUFBQUFCQUFBQUFRQVFBQUFBUUc5aVpuVnpZMkYwWldRdWJIVmhBQVVBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBQUFBQUFCQUFBQUJRQUFBSE5sYkdZQUFRQUFBQUFBRUFBQUFFQnZZbVoxYzJOaGRHVmtMbXgxWVFBdEFBQUFBd0FBQUFNQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFVQUFBQUZBQUFBQlFBQUFBVUFBQUFGQUFBQUJRQUFBQVVBQUFBRkFBQUFCZ0FBQUFZQUFBQUdBQUFBQmdBQUFBVUFBQUFEQUFBQUF3QUFBQVlBQUFBR0FBQUFCZ0FBQUFZQUFBQUdBQUFBQmdBQUFBWUFBQUFIQUFBQUJ3QUFBQWNBQUFBSEFBQUFCd0FBQUFjQUFBQUhBQUFBQndBQUFBY0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFBZ0FBQUFVQUFBQnpaV3htQUFBQUFBQXRBQUFBQWdBQUFHRUFBQUFBQUMwQUFBQUJBQUFBQlFBQUFGOUZUbFlBQ1FBQUFBNEFBQUFDQUEwWEFBQUFod0JBQUl4QVFBRUJnUUFBUWNFQUFKMUFBQUtIQUVBQWpBQkJBUUZCQVFCSGdVRUFnY0VCQU1jQlFnQUJ3Z0VBUUFLQUFJSENBUURHUWtJQXg0TENCUUhEQWdBV0FRTUNuVUNBQVljQVFBQ01BRU1CblVBQUFSOEFnQUFOQUFBQUJBUUFBQUIwWTNBQUJBZ0FBQUJqYjI1dVpXTjBBQVFSQUFBQWMyTnlhWEIwYzNSaGRIVnpMbTVsZEFBREFBQUFBQUFBVkVBRUJRQUFBSE5sYm1RQUJBc0FBQUJIUlZRZ0wzTjVibU10QUFRRUFBQUFTMlY1QUFRQ0FBQUFMUUFFQlFBQUFHaDNhV1FBQkFjQUFBQnRlVWhsY204QUJBa0FBQUJqYUdGeVRtRnRaUUFFSmdBQUFDQklWRlJRTHpFdU1BMEtTRzl6ZERvZ2MyTnlhWEIwYzNSaGRIVnpMbTVsZEEwS0RRb0FCQVlBQUFCamJHOXpaUUFBQUFBQUFRQUFBQUFBRUFBQUFFQnZZbVoxYzJOaGRHVmtMbXgxWVFBWEFBQUFDZ0FBQUFvQUFBQUtBQUFBQ2dBQUFBb0FBQUFMQUFBQUN3QUFBQXNBQUFBTEFBQUFEQUFBQUF3QUFBQU5BQUFBRFFBQUFBMEFBQUFPQUFBQURnQUFBQTRBQUFBT0FBQUFDd0FBQUE0QUFBQU9BQUFBRGdBQUFBNEFBQUFDQUFBQUJRQUFBSE5sYkdZQUFBQUFBQmNBQUFBQ0FBQUFZUUFBQUFBQUZ3QUFBQUVBQUFBRkFBQUFYMFZPVmdBQkFBQUFBUUFRQUFBQVFHOWlablZ6WTJGMFpXUXViSFZoQUFvQUFBQUJBQUFBQVFBQUFBRUFBQUFDQUFBQUNBQUFBQUlBQUFBSkFBQUFEZ0FBQUFrQUFBQU9BQUFBQUFBQUFBRUFBQUFGQUFBQVgwVk9WZ0E9IiksIG5pbCwgImJ0IiwgX0VOVikpKCkgU2NyaXB0U3RhdHVzKCJWSUxKUE9OUVBOUSIpIA0KDQotLUNoYW5nZWxvZyAxLjggQWRkZWQgSFAgSFByZWQNCi0tMS45IHVwZGF0ZWQgZm9yIDUuMTINCg0KcmVxdWlyZSAiU3hPcmJXYWxrIg0KcmVxdWlyZSAiVlByZWRpY3Rpb24iDQpyZXF1aXJlICJIUHJlZGljdGlvbiINCg0KbG9jYWwgUSA9IHtyYW5nZSA9IDExNzUsIGRlbGF5ID0gMC4yNSwgc3BlZWQgPSAxMjAwLCB3aWR0aCA9IDcwLElzUmVhZHkgPSBmdW5jdGlvbigpIHJldHVybiBteUhlcm86Q2FuVXNlU3BlbGwoX1EpID09IFJFQURZIGVuZH0NCmxvY2FsIFcgPSB7cmFuZ2UgPSA5MDAsIGRlbGF5ID0gMC4yNSwgc3BlZWQgPSAxMjAwLCB3aWR0aCA9IDE3NSxJc1JlYWR5ID0gZnVuY3Rpb24oKSByZXR1cm4gbXlIZXJvOkNhblVzZVNwZWxsKF9XKSA9PSBSRUFEWSBlbmR9DQpsb2NhbCBFID0ge3JhbmdlID0gNzUwLCBJc1JlYWR5ID0gZnVuY3Rpb24oKSByZXR1cm4gbXlIZXJvOkNhblVzZVNwZWxsKF9FKSA9PSBSRUFEWSBlbmR9DQpsb2NhbCBSID0ge3JhbmdlID0gNjAwLCBJc1JlYWR5ID0gZnVuY3Rpb24oKSByZXR1cm4gbXlIZXJvOkNhblVzZVNwZWxsKF9SKSA9PSBSRUFEWSBlbmR9DQpsb2NhbCBpZ25pdGUgPSBuaWwNCmxvY2FsIGlEbWcgPSAwDQpsb2NhbCB0YXJnZXQgPSBuaWwNCmxvY2FsIHRzDQpsb2NhbCB0cyA9IFRhcmdldFNlbGVjdG9yKFRBUkdFVF9MRVNTX0NBU1RfUFJJT1JJVFksIDEwMDAsIERBTUFHRV9NQUdJQywgdHJ1ZSkNCmxvY2FsIEhQcmVkID0gSFByZWRpY3Rpb24oKQ0KDQpUZXh0TGlzdCA9IHsiUG9rZSIsICJDb21ibyBLaWxsISJ9DQpLaWxsVGV4dCA9IHt9DQpjb2xvclRleHQgPSBBUkdCKDI1NSwyNTUsMjA0LDApDQoNCg0KZnVuY3Rpb24gR2V0Q3VzdG9tVGFyZ2V0KCkNCgl0czp1cGRhdGUoKQ0KCWlmIF9HLkF1dG9DYXJyeSBhbmQgVmFsaWRUYXJnZXQoX0cuQXV0b0NhcnJ5LkNyb3NzaGFpcjpHZXRUYXJnZXQoKSkgdGhlbiByZXR1cm4gX0cuQXV0b0NhcnJ5LkNyb3NzaGFpcjpHZXRUYXJnZXQoKSBlbmQNCglpZiBub3QgX0cuUmVib3JuX0xvYWRlZCB0aGVuIHJldHVybiB0cy50YXJnZXQgZW5kDQoJcmV0dXJuIHRzLnRhcmdldA0KZW5kDQoNCmZ1bmN0aW9uIE9uTG9hZCgpDQoJUHJpbnRDaGF0KCI8Zm9udCBjb2xvcj1cIiMwMEZGMDBcIj5Nb3JnYW5hIGJ5IEZ1a2RhcG9saWNlLjwvZm9udD4iKQ0KCXVsdEFjdGl2ZSA9IGZhbHNlDQoJSWduaXRlQ2hlY2soKQ0KCUZMb2FkTGliKCkNCglWUCA9IFZQcmVkaWN0aW9uKHRydWUpICAgDQogICAgSFByZWQgPSBIUHJlZGljdGlvbigpDQoJTWluaW9ucyA9IG1pbmlvbk1hbmFnZXIoTUlOSU9OX0VORU1ZLCBRLnJhbmdlLCBteUhlcm8sIE1JTklPTl9TT1JUX01BWEhFQUxUSF9BU0MpDQoNCiAgICANCiAgICBIUF9RID0gSFBTa2lsbHNob3Qoe2NvbGxpc2lvbk0gPSB0cnVlLCBjb2xsaXNpb25IID0gdHJ1ZSwgZGVsYXkgPSAwLjI1LCByYW5nZSA9IDExNzUsIHNwZWVkID0gMTIwMCwgdHlwZSA9ICJEZWxheUxpbmUiLCB3aWR0aCA9IDcwfSkNCiAgDQplbmQNCg0KDQpmdW5jdGlvbiBPblRpY2soKQ0KCXRhcmdldCA9IEdldEN1c3RvbVRhcmdldCgpDQoJQ2hlY2tzKCkNCgkNCgkNCglpZiBVbHRBY3RpdmUgdGhlbg0KCQlpZiBDb3VudEVuZW15SGVyb0luUmFuZ2UoUi5yYW5nZSkgPT0gMCB0aGVuDQoJCQlDYXN0U3BlbGwoX1IpDQoJCWVuZA0KCWVuZA0KICAgIGlmIEhhek1lbnUuQ29tYm8uQXV0b1VsdCB0aGVuIEF1dG9VbHQoKSBlbmQNCmVuZA0KDQpmdW5jdGlvbiBPbkRyYXcoKQ0KCWlmIEhhek1lbnUuRHJhdy5kcmF3cSB0aGVuDQoJCURyYXdDaXJjbGUobXlIZXJvLngsbXlIZXJvLnksbXlIZXJvLnosMTE3NSwweEZGRkYwMDAwKQ0KCWVuZCANCglpZiBIYXpNZW51LkRyYXcuZHJhd3cgdGhlbg0KCQlEcmF3Q2lyY2xlKG15SGVyby54LG15SGVyby55LG15SGVyby56LDkwMCwweEZGRkYwMDAwKQ0KCWVuZA0KCQkNCglpZiBIYXpNZW51LkRyYXcuZHJhd2UgdGhlbg0KCQlEcmF3Q2lyY2xlKG15SGVyby54LG15SGVyby55LG15SGVyby56LDc1MCwweEZGRkYwMDAwKQ0KCWVuZA0KCWlmIEhhek1lbnUuRHJhdy5kcmF3ciB0aGVuDQoJCURyYXdDaXJjbGUobXlIZXJvLngsbXlIZXJvLnksbXlIZXJvLnosNjAwLDB4RkZGRjAwMDApDQoJZW5kDQoJaWYgIEhhek1lbnUuRHJhdy5kcmF3SFAgdGhlbg0KCQkJZm9yIGksIGVuZW15IGluIGlwYWlycyhHZXRFbmVteUhlcm9lcygpKSBkbw0KICAgICAgIAkJCWlmIFZhbGlkVGFyZ2V0KGVuZW15KSB0aGVuDQoJCQkgICAgICAgRHJhd0luZGljYXRvcihlbmVteSkNCgkJCSAgICBlbmQNCgkgICAgICAgIGVuZA0KCWVuZAkJDQoJaWYgSGF6TWVudS5NaXNjLmtpbGx0ZXh0IHRoZW4NCgkJZm9yIGkgPSAxLCBoZXJvTWFuYWdlci5pQ291bnQgZG8NCgkJCWxvY2FsIHRhcmdldCA9IGhlcm9NYW5hZ2VyOkdldEhlcm8oaSkNCgkJCWlmIFZhbGlkVGFyZ2V0KHRhcmdldCkgYW5kIHRhcmdldCB+PSBuaWwgdGhlbg0KCQkJCWxvY2FsIGJhclBvcyA9IFdvcmxkVG9TY3JlZW4oRDNEWFZFQ1RPUjModGFyZ2V0LngsIHRhcmdldC55LCB0YXJnZXQueikpDQoJCQkJbG9jYWwgUG9zWCA9IGJhclBvcy54IC0gMzUNCgkJCQlsb2NhbCBQb3NZID0gYmFyUG9zLnkgLSAxMA0KCQkJCQ0KCQkJCURyYXdUZXh0KFRleHRMaXN0W0tpbGxUZXh0W2ldXSwgMTYsIFBvc1gsIFBvc1ksIGNvbG9yVGV4dCkNCgkJCWVuZA0KCQllbmQNCgllbmQNCmVuZA0KDQoNCmZ1bmN0aW9uIENoZWNrcygpDQoJSVJFQURZID0gKGlnbml0ZSB+PSBuaWwgYW5kIG15SGVybzpDYW5Vc2VTcGVsbChpZ25pdGUpID09IFJFQURZKQ0KCVFSRUFEWSA9IChteUhlcm86Q2FuVXNlU3BlbGwoX1EpID09IFJFQURZKQ0KCVdSRUFEWSA9IChteUhlcm86Q2FuVXNlU3BlbGwoX1cpID09IFJFQURZKQ0KCUVSRUFEWSA9IChteUhlcm86Q2FuVXNlU3BlbGwoX0UpID09IFJFQURZKQ0KCVJSRUFEWSA9IChteUhlcm86Q2FuVXNlU3BlbGwoX1IpID09IFJFQURZKQ0KCWNhbGNEbWcoKQ0KCQ0KCWlmIFZhbGlkVGFyZ2V0KHRhcmdldCkgdGhlbg0KCQlpZiBIYXpNZW51Lk1pc2MuS1MgdGhlbiBLUyh0YXJnZXQpIGVuZA0KCQlpZiBIYXpNZW51Lk1pc2MuSWduaXRlIHRoZW4gQXV0b0lnbml0ZSh0YXJnZXQpIGVuZA0KCSAgICAtLWlmIEhhek1lbnUuTWlzYy5IUHJlZCB0aGVuIGVuZA0KCWVuZA0KCQ0KCXVzZVcoKQ0KCQ0KCWlmIEhhek1lbnUuY29tYm9rZXkgdGhlbg0KCQlDb21ibygpDQogICBlbmQNCiAgIGlmIEhhek1lbnUuaGFyYXNza2V5IGFuZCBteUhlcm8ubWFuYSAvIG15SGVyby5tYXhNYW5hID4gSGF6TWVudS5IYXJhc3MuTWFuYSAvMTAwIHRoZW4gDQoJCVBva2UoKQ0KICAgZW5kDQogICBpZiBIYXpNZW51LmZhcm1rZXkgdGhlbg0KCQlGYXJtKCkNCiAgIGVuZA0KZW5kDQoNCmZ1bmN0aW9uIElnbml0ZUNoZWNrKCkNCglpZiBteUhlcm86R2V0U3BlbGxEYXRhKFNVTU1PTkVSXzEpLm5hbWU6ZmluZCgic3VtbW9uZXJkb3QiKSB0aGVuDQoJCWlnbml0ZSA9IFNVTU1PTkVSXzENCgllbHNlaWYgbXlIZXJvOkdldFNwZWxsRGF0YShTVU1NT05FUl8yKS5uYW1lOmZpbmQoInN1bW1vbmVyZG90IikgdGhlbg0KCQlpZ25pdGUgPSBTVU1NT05FUl8yDQoJZW5kDQplbmQNCg0KZnVuY3Rpb24gRkxvYWRMaWIoKQ0KCUZNZW51KCkNCmVuZA0KDQpmdW5jdGlvbiBGTWVudSgpDQoJSGF6TWVudSA9IHNjcmlwdENvbmZpZygiTW9yZ2FuYSIsICJNb3JnYW5hIikNCgkJSGF6TWVudTphZGRQYXJhbSgiY29tYm9rZXkiLCAiQ29tYm8ga2V5KFNwYWNlKSIsIFNDUklQVF9QQVJBTV9PTktFWURPV04sIGZhbHNlLCAzMikNCgkJSGF6TWVudTphZGRQYXJhbSgiaGFyYXNza2V5IiwgIkhhcmFzcyBrZXkoQykiLCBTQ1JJUFRfUEFSQU1fT05LRVlET1dOLCBmYWxzZSwgc3RyaW5nLmJ5dGUoIkMiKSkNCgkJDQoJSGF6TWVudTphZGRUUyh0cykNCgkJDQoJSGF6TWVudTphZGRTdWJNZW51KCJDb21ibyIsICJDb21ibyIpDQoJCUhhek1lbnUuQ29tYm86YWRkUGFyYW0oImNvbWJvUSIsICJVc2UgUSIsIFNDUklQVF9QQVJBTV9PTk9GRiwgdHJ1ZSkNCgkJSGF6TWVudS5Db21ibzphZGRQYXJhbSgiY29tYm9XIiwgIlVzZSBXIiwgU0NSSVBUX1BBUkFNX09OT0ZGLCB0cnVlKQ0KCQlIYXpNZW51LkNvbWJvOmFkZFBhcmFtKCJjb21ib0UiLCAiVXNlIEUiLCBTQ1JJUFRfUEFSQU1fT05PRkYsIHRydWUpDQoJCUhhek1lbnUuQ29tYm86YWRkUGFyYW0oImNvbWJvUiIsICJVc2UgUiIsIFNDUklQVF9QQVJBTV9PTk9GRiwgdHJ1ZSkNCiAgICAgICAgSGF6TWVudS5Db21ibzphZGRQYXJhbSgidXNlVyIsICJXIG9ubHkgaWYgUSBoaXRzICIsIFNDUklQVF9QQVJBTV9PTktFWVRPR0dMRSwgZmFsc2UsIHN0cmluZy5ieXRlKCJaIikpDQoJCUhhek1lbnUuQ29tYm86YWRkUGFyYW0oIm1pblIiLCAiQXV0byBVbHRpbWF0ZSBpZiBYIGVuZW1pZXMiLCBTQ1JJUFRfUEFSQU1fU0xJQ0UsIDIsIDAsIDUsIDApDQoJCUhhek1lbnUuQ29tYm86YWRkUGFyYW0oIkF1dG9VbHQiLCAiVXNlIEF1dG9VbHQgXiIsIFNDUklQVF9QQVJBTV9PTk9GRiwgdHJ1ZSkNCgkJDQoJSGF6TWVudTphZGRTdWJNZW51KCJIYXJhc3MiLCAiSGFyYXNzIikNCgkJSGF6TWVudS5IYXJhc3M6YWRkUGFyYW0oImhhcmFzc1EiLCAiVXNlIFEiLCBTQ1JJUFRfUEFSQU1fT05PRkYsIHRydWUpDQoJCUhhek1lbnUuSGFyYXNzOmFkZFBhcmFtKCJoYXJhc3NXIiwgIlVzZSBXIiwgU0NSSVBUX1BBUkFNX09OT0ZGLCB0cnVlKQ0KCSAgICBIYXpNZW51LkhhcmFzczphZGRQYXJhbSgiTWFuYSIsICJNYW5hIE1hbmFnZXIgJSIsIFNDUklQVF9QQVJBTV9TTElDRSwgNTAsIDEsIDEwMCwgMCkNCgkJCQkNCglIYXpNZW51OmFkZFN1Yk1lbnUoIk1pc2MiLCAiTWlzYyIpDQoJCUhhek1lbnUuTWlzYzphZGRQYXJhbSgiS1MiLCAiS2lsbFN0ZWFsIHdpdGggUSIsIFNDUklQVF9QQVJBTV9PTk9GRiwgdHJ1ZSkNCgkJSGF6TWVudS5NaXNjOmFkZFBhcmFtKCJJZ25pdGUiLCAiVXNlIEF1dG8gSWduaXRlIiwgU0NSSVBUX1BBUkFNX09OT0ZGLCB0cnVlKQ0KCSAgICBIYXpNZW51Lk1pc2M6YWRkUGFyYW0oImtpbGx0ZXh0IiwgIkRyYXcgaWYgS2lsbGFibGUgd2l0aCBjb21ibyIsIFNDUklQVF9QQVJBTV9PTk9GRiwgdHJ1ZSkNCgkJSGF6TWVudS5NaXNjOmFkZFBhcmFtKCJIUHJlZCIsICJVc2UgSFByZWRpY3Rpb24iLCBTQ1JJUFRfUEFSQU1fT05PRkYsIGZhbHNlKQ0KCQkNCglIYXpNZW51OmFkZFN1Yk1lbnUoIkRyYXciLCJEcmF3IikNCgkgIEhhek1lbnUuRHJhdzphZGRQYXJhbSgiZHJhd3EiLCAiRHJhdyBRIiwgU0NSSVBUX1BBUkFNX09OT0ZGLCB0cnVlKQ0KCSAgSGF6TWVudS5EcmF3OmFkZFBhcmFtKCJkcmF3dyIsICJEcmF3IFciLCBTQ1JJUFRfUEFSQU1fT05PRkYsIHRydWUpDQoJICBIYXpNZW51LkRyYXc6YWRkUGFyYW0oImRyYXdlIiwgIkRyYXcgRSIsIFNDUklQVF9QQVJBTV9PTk9GRiwgdHJ1ZSkNCgkgIEhhek1lbnUuRHJhdzphZGRQYXJhbSgiZHJhd3IiLCAiRHJhdyBSIiwgU0NSSVBUX1BBUkFNX09OT0ZGLCB0cnVlKQ0KCSAgSGF6TWVudS5EcmF3OmFkZFBhcmFtKCJkcmF3SFAiLCAiRHJhdyBEbWcgb24gSFBCYXIiLCBTQ1JJUFRfUEFSQU1fT05PRkYsIHRydWUpDQoJICANCgkNCglpZiBfRy5SZWJvcm5fTG9hZGVkIHRoZW4NCglEZWxheUFjdGlvbihmdW5jdGlvbigpDQoJCVByaW50Q2hhdCgiPGZvbnQgY29sb3IgPSBcIiNGRkZGRkZcIj5bTW9yZ2FuYV0gPC9mb250Pjxmb250IGNvbG9yID0gXCIjRkYwMDAwXCI+U0FDIFN0YXR1czo8L2ZvbnQ+IDxmb250IGNvbG9yID0gXCIjRkZGRkZGXCI+U3VjY2Vzc2Z1bGx5IGludGVncmF0ZWQuPC9mb250PiA8L2ZvbnQ+IikNCgkJSGF6TWVudTphZGRQYXJhbSgiU0FDT04iLCJbTW9yZ2FuYV0gU0FDOlIgc3VwcG9ydCBpcyBhY3RpdmUuIiwgNSwgIiIpDQoJCWlzU0FDID0gdHJ1ZQ0KCWVuZCwgMTApDQoJZWxzZWlmIG5vdCBfRy5SZWJvcm5fTG9hZGVkIHRoZW4NCgkJUHJpbnRDaGF0KCI8Zm9udCBjb2xvciA9IFwiI0ZGRkZGRlwiPltNb3JnYW5hXSA8L2ZvbnQ+PGZvbnQgY29sb3IgPSBcIiNGRjAwMDBcIj5PcmJ3YWxrZXIgbm90IGZvdW5kOjwvZm9udD4gPGZvbnQgY29sb3IgPSBcIiNGRkZGRkZcIj5TeE9yYldhbGsgaW50ZWdyYXRlZC48L2ZvbnQ+IDwvZm9udD4iKQ0KCQlIYXpNZW51OmFkZFN1Yk1lbnUoIk9yYndhbGtlciIsICJTeE9yYiIpDQoJCVN4T3JiOkxvYWRUb01lbnUoSGF6TWVudS5TeE9yYikNCgkJaXNTWCA9IHRydWUNCgllbmQNCglIYXpNZW51OnBlcm1hU2hvdygiY29tYm9rZXkiKQ0KCUhhek1lbnU6cGVybWFTaG93KCJoYXJhc3NrZXkiKQ0KCQ0KZW5kDQoNCmZ1bmN0aW9uIEtTKGVuZW15KSAgDQoJaWYgUS5Jc1JlYWR5KCkgYW5kIGdldERtZygiUSIsIGVuZW15LCBteUhlcm8pID4gZW5lbXkuaGVhbHRoIHRoZW4NCgkJaWYgR2V0RGlzdGFuY2UoZW5lbXkpIDw9IFEucmFuZ2UgYW5kIEhhek1lbnUuTWlzYy5LUyB0aGVuDQoJCSAgICAtLWlmIEhhek1lbnUuTWlzYy5IUHJlZCB0aGVuCQkJICAgIA0KCQkJICAgIC0tUVBvcywgUUhpdENoYW5jZSA9IEhQcmVkOkdldFByZWRpY3QoIlEiLCB0YXJnZXQsIG15SGVybykNCiAgICAgICAgICAgICAgICAtLWlmIFFIaXRDaGFuY2UgPj0gMSB0aGVuIC0tIFFQb3MgYW5kIFFIaXRDaGFuY2UgY2FuJ3QgYmUgbmlsDQoJCQkJLS1DYXN0U3BlbGwoX1EsIFFQb3MueCwgUVBvcy56KQ0KCQkJCS0tZWxzZWlmIG5vdCBIYXpNZW51Lk1pc2MuSFByZWQgdGhlbg0KCQkJICAgIGxvY2FsIENhc3RQb3NpdGlvbiwgSGl0Q2hhbmNlLCBDYXN0UG9zID0gVlA6R2V0TGluZUNhc3RQb3NpdGlvbih0YXJnZXQsIFEuZGVsYXksIFEud2lkdGgsIFEucmFuZ2UsIFEuc3BlZWQsIG15SGVybywgdHJ1ZSkNCgkJCSAgICBpZiBIaXRDaGFuY2UgPj0gMiBhbmQgR2V0RGlzdGFuY2UoQ2FzdFBvc2l0aW9uKSA8PSBRLnJhbmdlIGFuZCBRLklzUmVhZHkoKSB0aGVuDQoJCQkJQ2FzdFNwZWxsKF9RLCBDYXN0UG9zaXRpb24ueCwgQ2FzdFBvc2l0aW9uLnopDQogICAgICAgICAgICAgICAgZW5kDQoJCSAgICAgICAgLS1lbmQNCgkJCS0tZW5kDQoJCWVuZA0KCWVuZA0KZW5kDQoNCmZ1bmN0aW9uIEF1dG9JZ25pdGUoZW5lbXkpDQogIAlpRG1nID0gKChJUkVBRFkgYW5kIGdldERtZygiSUdOSVRFIiwgZW5lbXksIG15SGVybykpIG9yIDApIA0KCWlmIGVuZW15LmhlYWx0aCA8PSBpRG1nIGFuZCBHZXREaXN0YW5jZShlbmVteSkgPD0gNjAwIGFuZCBpZ25pdGUgfj0gbmlsDQoJCXRoZW4NCgkJCWlmIElSRUFEWSB0aGVuIENhc3RTcGVsbChpZ25pdGUsIGVuZW15KSBlbmQNCgllbmQNCmVuZA0KDQpmdW5jdGlvbiB1c2VXICgpDQogICBpZiBWYWxpZFRhcmdldCh0YXJnZXQpIHRoZW4gIA0KICAgIGlmIEhhek1lbnUuQ29tYm8udXNlVyBhbmQgSGF6TWVudS5jb21ib2tleSBvciBIYXpNZW51LmhhcmFzc2tleSB0aGVuDQoJbG9jYWwgQU9FQ2FzdFBvc2l0aW9uLCBNYWluVGFyZ2V0SGl0Q2hhbmNlLCBuVGFyZ2V0cyA9IFZQOkdldENpcmN1bGFyQU9FQ2FzdFBvc2l0aW9uKHRhcmdldCwgVy5kZWxheSwgVy53aWR0aCwgVy5yYW5nZSwgVy5zcGVlZCwgbXlIZXJvLCBmYWxzZSkNCgkJCWlmIE1haW5UYXJnZXRIaXRDaGFuY2UgPj0gMyBhbmQgR2V0RGlzdGFuY2UoQU9FQ2FzdFBvc2l0aW9uKSA8PSBXLnJhbmdlIGFuZCBXLklzUmVhZHkoKSB0aGVuDQoJCQkJQ2FzdFNwZWxsKF9XLCBBT0VDYXN0UG9zaXRpb24ueCwgQU9FQ2FzdFBvc2l0aW9uLnopDQoJCQllbmQNCgllbHNlaWYgbm90IEhhek1lbnUuQ29tYm8udXNlVyBhbmQgSGF6TWVudS5jb21ib2tleSBvciBIYXpNZW51LmhhcmFzc2tleSB0aGVuDQoJbG9jYWwgQU9FQ2FzdFBvc2l0aW9uLCBNYWluVGFyZ2V0SGl0Q2hhbmNlLCBuVGFyZ2V0cyA9IFZQOkdldENpcmN1bGFyQU9FQ2FzdFBvc2l0aW9uKHRhcmdldCwgVy5kZWxheSwgVy53aWR0aCwgVy5yYW5nZSwgVy5zcGVlZCwgbXlIZXJvLCBmYWxzZSkNCgkJCWlmIE1haW5UYXJnZXRIaXRDaGFuY2UgPj0gMiBhbmQgR2V0RGlzdGFuY2UoQU9FQ2FzdFBvc2l0aW9uKSA8PSBXLnJhbmdlIGFuZCBXLklzUmVhZHkoKSB0aGVuDQoJCQkJQ2FzdFNwZWxsKF9XLCBBT0VDYXN0UG9zaXRpb24ueCwgQU9FQ2FzdFBvc2l0aW9uLnopDQoJCQllbmQNCgllbmQNCiAgIGVuZA0KZW5kCQ0KDQoNCmZ1bmN0aW9uIEhQcmVkUSh1bml0KQ0KICAgIGxvY2FsIHVuaXQgPSB0YXJnZXQNCglsb2NhbCBRUG9zLCBRSGl0Q2hhbmNlID0gSFByZWQ6R2V0UHJlZGljdChIUF9RLCB1bml0LCBteUhlcm8pDQoJaWYgUUhpdENoYW5jZSA+PSAxIHRoZW4NCgkJQ2FzdFNwZWxsKF9RLCBRUG9zLngsIFFQb3MueikNCgllbmQNCiAgICANCmVuZA0KDQoNCg0KZnVuY3Rpb24gQ29tYm8oKQ0KCWlmIFZhbGlkVGFyZ2V0KHRhcmdldCkgdGhlbiAgDQoJCWlmIFEuSXNSZWFkeSgpIGFuZCBIYXpNZW51LkNvbWJvLmNvbWJvUSB0aGVuDQoJCQlpZiBIYXpNZW51Lk1pc2MuSFByZWQgdGhlbg0KCQkJICAgIEhQcmVkUSgpDQoJCQkgICAgLS1RUG9zLCBRSGl0Q2hhbmNlID0gSFByZWQ6R2V0UHJlZGljdCgiUSIsIHRhcmdldCwgbXlIZXJvKQ0KICAgICAgICAgICAgICAgIC0taWYgUUhpdENoYW5jZSA+PSAxIHRoZW4gLS0gUVBvcyBhbmQgUUhpdENoYW5jZSBjYW4ndCBiZSBuaWwNCgkJCQktLUNhc3RTcGVsbChfUSwgUVBvcy54LCBRUG9zLnopDQoJCQkJZWxzZWlmIG5vdCBIYXpNZW51Lk1pc2MuSFByZWQgdGhlbg0KCQkJICAgIGxvY2FsIENhc3RQb3NpdGlvbiwgSGl0Q2hhbmNlLCBDYXN0UG9zID0gVlA6R2V0TGluZUNhc3RQb3NpdGlvbih0YXJnZXQsIFEuZGVsYXksIFEud2lkdGgsIFEucmFuZ2UsIFEuc3BlZWQsIG15SGVybywgdHJ1ZSkNCgkJCSAgICBpZiBIaXRDaGFuY2UgPj0gMiBhbmQgR2V0RGlzdGFuY2UoQ2FzdFBvc2l0aW9uKSA8PSBRLnJhbmdlIGFuZCBRLklzUmVhZHkoKSB0aGVuDQoJCQkJQ2FzdFNwZWxsKF9RLCBDYXN0UG9zaXRpb24ueCwgQ2FzdFBvc2l0aW9uLnopDQogICAgICAgICAgICAgICAgZW5kDQoJCSAgICAgICAgLS1lbmQNCgkJCWVuZA0KCQllbmQNCgkJaWYgVy5Jc1JlYWR5KCkgYW5kIEhhek1lbnUuQ29tYm8uY29tYm9XIHRoZW4NCgkJCXVzZVcoKQ0KCQllbmQNCgkJaWYgRS5Jc1JlYWR5IGFuZCBIYXpNZW51LkNvbWJvLmNvbWJvRSB0aGVuDQoJCQlpZiBHZXREaXN0YW5jZShteUhlcm8pIDw9IEUucmFuZ2UgdGhlbg0KCQkJCUNhc3RTcGVsbChfRSwgbXlIZXJvKQ0KCQkJZW5kDQoJCWVuZA0KCQlpZiBSLklzUmVhZHkoKSBhbmQgSGF6TWVudS5Db21iby5jb21ib1IgdGhlbg0KCQkJaWYgR2V0RGlzdGFuY2UodGFyZ2V0KSA8PSBSLnJhbmdlIHRoZW4NCgkJCQlDYXN0U3BlbGwoX1IpDQoJCQllbmQNCgkJZW5kDQoJZW5kDQplbmQNCg0KZnVuY3Rpb24gUG9rZSgpDQoJaWYgVmFsaWRUYXJnZXQodGFyZ2V0KSB0aGVuIA0KCQlpZiBRLklzUmVhZHkoKSBhbmQgSGF6TWVudS5IYXJhc3MuaGFyYXNzUSB0aGVuDQoJCSAgICBpZiBIYXpNZW51Lk1pc2MuSFByZWQgdGhlbg0KCQkJICAgIEhQcmVkUSgpDQoJCQkgICAgLS1RUG9zLCBRSGl0Q2hhbmNlID0gSFByZWQ6R2V0UHJlZGljdCgiUSIsIHRhcmdldCwgbXlIZXJvKSAgICAgICAgICAgICAgIA0KCQkJCS0taWYgUUhpdENoYW5jZSA+PSAxIHRoZW4gLS0gUVBvcyBhbmQgUUhpdENoYW5jZSBjYW4ndCBiZSBuaWwNCgkJCQkgICAtLUNhc3RTcGVsbChfUSwgUVBvcy54LCBRUG9zLnopCQkJCQkJCQkJCSAgICANCgkJCSAgICBlbHNlaWYgbm90IEhhek1lbnUuTWlzYy5IUHJlZCB0aGVuDQoJCQkJICAgICAgIGxvY2FsIENhc3RQb3NpdGlvbiwgSGl0Q2hhbmNlLCBDYXN0UG9zID0gVlA6R2V0TGluZUNhc3RQb3NpdGlvbih0YXJnZXQsIFEuZGVsYXksIFEud2lkdGgsIFEucmFuZ2UsIFEuc3BlZWQsIG15SGVybywgdHJ1ZSkNCgkJCQkgICAgICAgaWYgSGl0Q2hhbmNlID49IDIgYW5kIEdldERpc3RhbmNlKENhc3RQb3NpdGlvbikgPD0gUS5yYW5nZSBhbmQgUS5Jc1JlYWR5KCkgdGhlbg0KCQkJCSAgICAgICAgICBDYXN0U3BlbGwoX1EsIENhc3RQb3NpdGlvbi54LCBDYXN0UG9zaXRpb24ueikNCiAgICAgICAgICAgICAgICAgICAgICAgIGVuZA0KCQkgICAgICAgICAgICAtLWVuZA0KCQkJZW5kDQoJCWVuZA0KCQlpZiBXLklzUmVhZHkoKSBhbmQgSGF6TWVudS5IYXJhc3MuaGFyYXNzVyB0aGVuDQoJCQl1c2VXKCkNCgkJZW5kDQoJZW5kDQplbmQNCg0KDQpmdW5jdGlvbiBjYWxjRG1nKCkNCglmb3IgaT0xLCBoZXJvTWFuYWdlci5pQ291bnQgZG8NCgkJbG9jYWwgVGFyZ2V0ID0gaGVyb01hbmFnZXI6R2V0SGVybyhpKQ0KCQlpZiBWYWxpZFRhcmdldChUYXJnZXQpIGFuZCBUYXJnZXQgfj0gbmlsIHRoZW4NCgkJCXFEbWcgPSAoKFFSRUFEWSBhbmQgZ2V0RG1nKCJRIiwgVGFyZ2V0LCBteUhlcm8pKSBvciAwKQ0KCQkJd0RtZyA9ICgoV1JFQURZIGFuZCBnZXREbWcoIlciLCBUYXJnZXQsIG15SGVybykpIG9yIDApDQoJCQllRG1nID0gKChFUkVBRFkgYW5kIGdldERtZygiRSIsIFRhcmdldCwgbXlIZXJvKSkgb3IgMCkNCgkJCXJEbWcgPSAoKFJSRUFEWSBhbmQgZ2V0RG1nKCJSIiwgVGFyZ2V0LCBteUhlcm8pKSBvciAwKQ0KCQkJYWxsRG1nID0gKHFEbWcgKyByRG1nICsgd0RtZykNCgkJCQ0KCQkJaWYgVGFyZ2V0LmhlYWx0aCA+IGFsbERtZyB0aGVuDQoJCQkJS2lsbFRleHRbaV0gPSAxDQoJCQllbHNlaWYgVGFyZ2V0LmhlYWx0aCA8PSBhbGxEbWcgdGhlbg0KCQkJCUtpbGxUZXh0W2ldID0gMg0KCQkJZW5kDQoJCWVuZA0KCWVuZAkNCmVuZA0KDQpmdW5jdGlvbiBBdXRvVWx0KCkNCglmb3IgaSwgZW5lbXkgaW4gaXBhaXJzKEdldEVuZW15SGVyb2VzKCkpIGRvDQoJCWlmIGVuZW15IH49IG5pbCBhbmQgR2V0RGlzdGFuY2UoZW5lbXkpIDwgUi5yYW5nZSBhbmQgbm90IHVsdEFjdGl2ZSB0aGVuDQoJCQlpZiBDb3VudEVuZW1pZXMoUi5yYW5nZSwgZW5lbXkpID49IEhhek1lbnUuQ29tYm8ubWluUiB0aGVuDQoJCQkJQ2FzdFNwZWxsKF9SKQ0KCQkJZW5kDQoJCWVuZA0KCWVuZA0KZW5kDQoNCmZ1bmN0aW9uIENvdW50RW5lbWllcyhyYW5nZSwgdW5pdCkNCglsb2NhbCBFbmVtaWVzID0gMA0KCWZvciBfLCBlbmVteSBpbiBpcGFpcnMoR2V0RW5lbXlIZXJvZXMoKSkgZG8NCgkJaWYgVmFsaWRUYXJnZXQoZW5lbXkpIGFuZCBHZXREaXN0YW5jZShlbmVteSwgdW5pdCkgPCAocmFuZ2Ugb3IgbWF0aC5odWdlKSB0aGVuDQoJCQlFbmVtaWVzID0gRW5lbWllcyArIDENCgkJZW5kDQoJZW5kDQoJcmV0dXJuIEVuZW1pZXMNCmVuZA0KDQoNCmZvciBpLCBlbmVteSBpbiBpcGFpcnMoR2V0RW5lbXlIZXJvZXMoKSkgZG8NCiAgICBlbmVteS5iYXJEYXRhID0ge1BlcmNlbnRhZ2VPZmZzZXQgPSB7eCA9IDAsIHkgPSAwfSB9DQplbmQNCg0KZnVuY3Rpb24gR2V0RW5lbXlIUEJhclBvcyhlbmVteSkNCg0KICAgIGlmIG5vdCBlbmVteS5iYXJEYXRhIHRoZW4NCiAgICAgICAgcmV0dXJuDQogICAgZW5kDQoNCiAgICBsb2NhbCBiYXJQb3MgPSBHZXRVbml0SFBCYXJQb3MoZW5lbXkpDQogICAgbG9jYWwgYmFyUG9zT2Zmc2V0ID0gR2V0VW5pdEhQQmFyT2Zmc2V0KGVuZW15KQ0KICAgIGxvY2FsIGJhck9mZnNldCA9IFBvaW50KGVuZW15LmJhckRhdGEuUGVyY2VudGFnZU9mZnNldC54LCBlbmVteS5iYXJEYXRhLlBlcmNlbnRhZ2VPZmZzZXQueSkNCiAgICBsb2NhbCBiYXJQb3NQZXJjZW50YWdlT2Zmc2V0ID0gUG9pbnQoZW5lbXkuYmFyRGF0YS5QZXJjZW50YWdlT2Zmc2V0LngsIGVuZW15LmJhckRhdGEuUGVyY2VudGFnZU9mZnNldC55KQ0KDQogICAgbG9jYWwgQmFyUG9zT2Zmc2V0WCA9IDE2OQ0KICAgIGxvY2FsIEJhclBvc09mZnNldFkgPSA0Nw0KICAgIGxvY2FsIENvcnJlY3Rpb25YID0gMTYNCiAgICBsb2NhbCBDb3JyZWN0aW9uWSA9IDQNCg0KICAgIGJhclBvcy54ID0gYmFyUG9zLnggKyAoYmFyUG9zT2Zmc2V0LnggLSAwLjUgKyBiYXJQb3NQZXJjZW50YWdlT2Zmc2V0LngpICogQmFyUG9zT2Zmc2V0WCArIENvcnJlY3Rpb25YDQogICAgYmFyUG9zLnkgPSBiYXJQb3MueSArIChiYXJQb3NPZmZzZXQueSAtIDAuNSArIGJhclBvc1BlcmNlbnRhZ2VPZmZzZXQueSkgKiBCYXJQb3NPZmZzZXRZICsgQ29ycmVjdGlvblkgDQoNCiAgICBsb2NhbCBTdGFydFBvcyA9IFBvaW50KGJhclBvcy54LCBiYXJQb3MueSkNCiAgICBsb2NhbCBFbmRQb3MgPSBQb2ludChiYXJQb3MueCArIDEwMywgYmFyUG9zLnkpDQoNCiAgICByZXR1cm4gUG9pbnQoU3RhcnRQb3MueCwgU3RhcnRQb3MueSksIFBvaW50KEVuZFBvcy54LCBFbmRQb3MueSkNCg0KZW5kDQoNCg0KZnVuY3Rpb24gRHJhd0luZGljYXRvcihlbmVteSkNCglsb2NhbCBRZG1nLCBXZG1nLCBFZG1nLCBBQWRtZyA9IGdldERtZygiUSIsIGVuZW15LCBteUhlcm8pLCBnZXREbWcoIlciLCBlbmVteSwgbXlIZXJvKSwgZ2V0RG1nKCJFIiwgZW5lbXksIG15SGVybyksIGdldERtZygiQUQiLCBlbmVteSwgbXlIZXJvKQ0KCQ0KCVFkbWcgPSAoKFEuSXNSZWFkeSBhbmQgUWRtZykgb3IgMCkNCglXZG1nID0gKChXLklzUmVhZHkgYW5kIFdkbWcpIG9yIDApDQoJUmRtZyA9ICgoUi5Jc1JlYWR5IGFuZCBSZG1nKSBvciAwKQ0KCUFBZG1nID0gKChBYWRtZykgb3IgMCkNCg0KICAgIGxvY2FsIGRhbWFnZSA9IFFkbWcgKyBXZG1nICsgUmRtZw0KDQogICAgbG9jYWwgU1BvcywgRVBvcyA9IEdldEVuZW15SFBCYXJQb3MoZW5lbXkpDQoNCiAgICBpZiBub3QgU1BvcyB0aGVuIHJldHVybiBlbmQNCg0KICAgIGxvY2FsIGJhcndpZHRoID0gRVBvcy54IC0gU1Bvcy54DQogICAgbG9jYWwgUG9zaXRpb24gPSBTUG9zLnggKyBtYXRoLm1heCgwLCAoZW5lbXkuaGVhbHRoIC0gZGFtYWdlKSAvIGVuZW15Lm1heEhlYWx0aCkgKiBiYXJ3aWR0aA0KDQoJRHJhd1RleHQoInwiLCAxNiwgbWF0aC5mbG9vcihQb3NpdGlvbiksIG1hdGguZmxvb3IoU1Bvcy55ICsgOCksIEFSR0IoMjU1LDAsMjU1LDApKQ0KICAgIERyYXdUZXh0KCJIUDogIi4ubWF0aC5mbG9vcihlbmVteS5oZWFsdGggLSBkYW1hZ2UpLCAxMiwgbWF0aC5mbG9vcihTUG9zLnggKyAyNSksIG1hdGguZmxvb3IoU1Bvcy55IC0gMTUpLCAoZW5lbXkuaGVhbHRoIC0gZGFtYWdlKSA+IDAgYW5kIEFSR0IoMjU1LCAwLCAyNTUsIDApIG9yICBBUkdCKDI1NSwgMjU1LCAwLCAwKSkNCmVuZA=="), nil, "bt", _ENV))()
Advertisement
Add Comment
Please, Sign In to add comment