{
	"address": "f919ee77447b7497",
	"balance": "561655900",
	"keys": [
		{
			"index": "0",
			"public_key": "0x3588eb28b60e28d24c1e8b03f9a00f73ebd3f6707ee813e27d58ecb6439b8dde1413d7a74a7cc7e8939cbef2e0aa6acc51d5c7010afdb4c6dba55d4cc2ca8bed",
			"signing_algorithm": "ECDSA_P256",
			"hashing_algorithm": "SHA2_256",
			"sequence_number": "3",
			"weight": "1000",
			"revoked": false
		}
	],
	"contracts": {
		"FlowFees": "aW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweGYyMzNkY2VlODhmZTBhYmUKaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4MTY1NDY1MzM5OTA0MGE2MQppbXBvcnQgRmxvd1N0b3JhZ2VGZWVzIGZyb20gMHhlNDY3YjlkZDExZmEwMGRmCgphY2Nlc3MoYWxsKSBjb250cmFjdCBGbG93RmVlcyB7CgogICAgLy8gRXZlbnQgdGhhdCBpcyBlbWl0dGVkIHdoZW4gdG9rZW5zIGFyZSBkZXBvc2l0ZWQgdG8gdGhlIGZlZSB2YXVsdAogICAgYWNjZXNzKGFsbCkgZXZlbnQgVG9rZW5zRGVwb3NpdGVkKGFtb3VudDogVUZpeDY0KQoKICAgIC8vIEV2ZW50IHRoYXQgaXMgZW1pdHRlZCB3aGVuIHRva2VucyBhcmUgd2l0aGRyYXduIGZyb20gdGhlIGZlZSB2YXVsdAogICAgYWNjZXNzKGFsbCkgZXZlbnQgVG9rZW5zV2l0aGRyYXduKGFtb3VudDogVUZpeDY0KQoKICAgIC8vIEV2ZW50IHRoYXQgaXMgZW1pdHRlZCB3aGVuIGZlZXMgYXJlIGRlZHVjdGVkCiAgICBhY2Nlc3MoYWxsKSBldmVudCBGZWVzRGVkdWN0ZWQoYW1vdW50OiBVRml4NjQsIGluY2x1c2lvbkVmZm9ydDogVUZpeDY0LCBleGVjdXRpb25FZmZvcnQ6IFVGaXg2NCkKCiAgICAvLyBFdmVudCB0aGF0IGlzIGVtaXR0ZWQgd2hlbiBmZWUgcGFyYW1ldGVycyBjaGFuZ2UKICAgIGFjY2VzcyhhbGwpIGV2ZW50IEZlZVBhcmFtZXRlcnNDaGFuZ2VkKHN1cmdlRmFjdG9yOiBVRml4NjQsIGluY2x1c2lvbkVmZm9ydENvc3Q6IFVGaXg2NCwgZXhlY3V0aW9uRWZmb3J0Q29zdDogVUZpeDY0KQoKICAgIC8vIEV2ZW50IHRoYXQgaXMgZW1pdHRlZCB3aGVuIHRoZSBsaXN0IG9mIGNoaWxkIGZlZSBhY2NvdW50cyBjaGFuZ2VzLgogICAgLy8gQ29udGFpbnMgdGhlIGZ1bGwgbmV3IGxpc3Qgb2YgY2hpbGQgZmVlIGFjY291bnQgYWRkcmVzc2VzCiAgICAvLyAodGhlIEZsb3dGZWVzIGFjY291bnQgaXRzZWxmIGlzIG5vdCBpbmNsdWRlZCkKICAgIGFjY2VzcyhhbGwpIGV2ZW50IENoaWxkRmVlQWNjb3VudHNDaGFuZ2VkKGFkZHJlc3NlczogW0FkZHJlc3NdKQoKICAgIC8vIFByaXZhdGUgdmF1bHQgd2l0aCBwdWJsaWMgZGVwb3NpdCBmdW5jdGlvbgogICAgYWNjZXNzKHNlbGYpIHZhciB2YXVsdDogQEZsb3dUb2tlbi5WYXVsdAoKICAgIGFjY2VzcyhhbGwpIGZ1biBkZXBvc2l0KGZyb206IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0pIHsKICAgICAgICBsZXQgZnJvbSA8LSBmcm9tIGFzISBARmxvd1Rva2VuLlZhdWx0CiAgICAgICAgbGV0IGJhbGFuY2UgPSBmcm9tLmJhbGFuY2UKICAgICAgICBzZWxmLnZhdWx0LmRlcG9zaXQoZnJvbTogPC1mcm9tKQogICAgICAgIGVtaXQgVG9rZW5zRGVwb3NpdGVkKGFtb3VudDogYmFsYW5jZSkKICAgIH0KCiAgICAvLy8gR2V0IHRoZSBiYWxhbmNlIG9mIHRoZSBGZWVzIFZhdWx0CiAgICBhY2Nlc3MoYWxsKSBmdW4gZ2V0RmVlQmFsYW5jZSgpOiBVRml4NjQgewogICAgICAgIGxldCBjaGlsZEZlZUFjY291bnRzID0gc2VsZi5ib3Jyb3dDaGlsZEZlZUFjY291bnRzKCkKCiAgICAgICAgLy8gZmFsbGJhY2sgaW4gY2FzZSBubyBjaGlsZCBhY2NvdW50cyB3ZXJlIGNyZWF0ZWQgeWV0CiAgICAgICAgaWYgY2hpbGRGZWVBY2NvdW50cyA9PSBuaWwgfHwgY2hpbGRGZWVBY2NvdW50cyEubGVuZ3RoID09IDAgewogICAgICAgICAgICByZXR1cm4gc2VsZi52YXVsdC5iYWxhbmNlCiAgICAgICAgfQoKICAgICAgICB2YXIgdG90YWxGZWVzID0gMC4wCiAgICAgICAgdG90YWxGZWVzID0gdG90YWxGZWVzICsgc2VsZi52YXVsdC5iYWxhbmNlCgogICAgICAgIGZvciBmZWVBY2NvdW50UmVmIGluIGNoaWxkRmVlQWNjb3VudHMhIHsKICAgICAgICAgICBpZiBsZXQgZmVlQWNjb3VudCA9IGZlZUFjY291bnRSZWYuYm9ycm93KCkgewogICAgICAgICAgICAgICAgdG90YWxGZWVzID0gdG90YWxGZWVzICsgZmVlQWNjb3VudC5hdmFpbGFibGVCYWxhbmNlCiAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRvdGFsRmVlcwogICAgfQoKICAgIC8vLyBCb3Jyb3dzIHRoZSBsaXN0IG9mIGNoaWxkIGZlZSBhY2NvdW50IGNhcGFiaWxpdGllcyBmcm9tIHN0b3JhZ2UuCiAgICAvLy8gUmV0dXJucyBuaWwgaWYgbm8gY2hpbGQgZmVlIGFjY291bnRzIHdlcmUgYWRkZWQgeWV0LgogICAgYWNjZXNzKHNlbGYpIHZpZXcgZnVuIGJvcnJvd0NoaWxkRmVlQWNjb3VudHMoKTogYXV0aChTdG9yYWdlKSAmW0NhcGFiaWxpdHk8YXV0aChTdG9yYWdlLCBDb250cmFjdHMsIEtleXMsIEluYm94LCBDYXBhYmlsaXRpZXMpICZBY2NvdW50Pl0/IHsKICAgICAgICByZXR1cm4gc2VsZi5hY2NvdW50LnN0b3JhZ2UuYm9ycm93PGF1dGgoU3RvcmFnZSkgJltDYXBhYmlsaXR5PGF1dGgoU3RvcmFnZSwgQ29udHJhY3RzLCBLZXlzLCBJbmJveCwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudD5dPihmcm9tOiAvc3RvcmFnZS9DaGlsZEZlZUFjY291bnRzKQogICAgfQoKICAgIC8vLyBSZXR1cm5zIHRoZSBhZGRyZXNzZXMgb2YgYWxsIGFjY291bnRzIHRoYXQgbWF5IHJlY2VpdmUgdHJhbnNhY3Rpb24KICAgIC8vLyBmZWUgZGVwb3NpdHMsIGkuZS4gdGhlIHBvc3NpYmxlIGB0b2AgYWRkcmVzc2VzIG9mIHRoZSBkZXBvc2l0IGV2ZW50cwogICAgLy8vIGVtaXR0ZWQgd2hlbiBmZWVzIGFyZSBjb2xsZWN0ZWQ6IHRoZSBGbG93RmVlcyBhY2NvdW50IHBsdXMgYW55CiAgICAvLy8gY2hpbGQgZmVlIGFjY291bnRzLgogICAgLy8vIE5vdGUgdGhhdCBmZWVzIHJlY2VpdmVkIGJ5IHRoZSBGbG93RmVlcyBhY2NvdW50IGl0c2VsZiBhcmUgaGVsZCBpbgogICAgLy8vIHRoZSBjb250cmFjdCdzIGludGVybmFsIHZhdWx0LCBub3QgaW4gdGhlIGFjY291bnQncyBkZWZhdWx0IEZMT1cKICAgIC8vLyB2YXVsdCwgc28gdGhleSBhcmUgbm90IHJlZmxlY3RlZCBpbiB0aGF0IGFjY291bnQncyBiYWxhbmNlLgogICAgLy8vIFVzZSBnZXRGZWVCYWxhbmNlKCkgdG8gZ2V0IHRoZSB0b3RhbCBiYWxhbmNlIG9mIGFsbCBjb2xsZWN0ZWQgZmVlcy4KICAgIGFjY2VzcyhhbGwpIGZ1biBnZXRGZWVSZWNlaXZlckFkZHJlc3NlcygpOiBbQWRkcmVzc10gewogICAgICAgIGxldCBhZGRyZXNzZXM6IFtBZGRyZXNzXSA9IFtzZWxmLmFjY291bnQuYWRkcmVzc10KICAgICAgICBpZiBsZXQgY2hpbGRGZWVBY2NvdW50cyA9IHNlbGYuYm9ycm93Q2hpbGRGZWVBY2NvdW50cygpIHsKICAgICAgICAgICAgZm9yIGNoaWxkRmVlQWNjb3VudCBpbiBjaGlsZEZlZUFjY291bnRzIHsKICAgICAgICAgICAgICAgIGFkZHJlc3Nlcy5hcHBlbmQoY2hpbGRGZWVBY2NvdW50LmFkZHJlc3MpCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGFkZHJlc3NlcwogICAgfQoKICAgIGFjY2VzcyhhbGwpIHJlc291cmNlIEFkbWluaXN0cmF0b3IgewogICAgICAgIC8vIHdpdGhkcmF3CiAgICAgICAgLy8KICAgICAgICAvLyBBbGxvd3MgdGhlIGFkbWluaXN0cmF0b3IgdG8gd2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIGZlZSB2YXVsdAogICAgICAgIGFjY2VzcyhhbGwpIGZ1biB3aXRoZHJhd1Rva2Vuc0Zyb21GZWVWYXVsdChhbW91bnQ6IFVGaXg2NCk6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0gewogICAgICAgICAgICB2YXIgcmVtYWluaW5nQW1vdW50ID0gYW1vdW50CiAgICAgICAgICAgIHZhciB3aXRoZHJhd0Ftb3VudCA9IDAuMAogICAgICAgICAgICBpZiBGbG93RmVlcy52YXVsdC5iYWxhbmNlIDwgcmVtYWluaW5nQW1vdW50IHsKICAgICAgICAgICAgICAgIHdpdGhkcmF3QW1vdW50ID0gRmxvd0ZlZXMudmF1bHQuYmFsYW5jZQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgd2l0aGRyYXdBbW91bnQgPSByZW1haW5pbmdBbW91bnQKICAgICAgICAgICAgfQogICAgICAgICAgICByZW1haW5pbmdBbW91bnQgPSByZW1haW5pbmdBbW91bnQgLSB3aXRoZHJhd0Ftb3VudAogICAgICAgICAgICB2YXIgdmF1bHQgPC0gRmxvd0ZlZXMudmF1bHQud2l0aGRyYXcoYW1vdW50OiB3aXRoZHJhd0Ftb3VudCkKCiAgICAgICAgICAgIGxldCBjaGlsZEZlZUFjY291bnRzID0gRmxvd0ZlZXMuYm9ycm93Q2hpbGRGZWVBY2NvdW50cygpCgogICAgICAgICAgICAvLyBmYWxsYmFjayBpbiBjYXNlIG5vIGNoaWxkIGFjY291bnRzIHdlcmUgY3JlYXRlZCB5ZXQKICAgICAgICAgICAgaWYgY2hpbGRGZWVBY2NvdW50cyA9PSBuaWwgfHwgY2hpbGRGZWVBY2NvdW50cyEubGVuZ3RoID09IDAgewogICAgICAgICAgICAgICAgaWYgcmVtYWluaW5nQW1vdW50ID4gMC4wIHsKICAgICAgICAgICAgICAgICAgICBwYW5pYygiQ2Fubm90IHdpdGhkcmF3IHRoZSByZXF1ZXN0ZWQgYW1vdW50IG9mIGZlZSB0b2tlbnMuIFRoZSBhbW91bnQgb2YgRkxPVyBvZiBcKGFtb3VudCkgcmVxdWVzdGVkIHRvIHdpdGhkcmF3IGlzIGdyZWF0ZXIgdGhhbiB0aGUgdG90YWwgZmVlcyBpbiB0aGUgZmVlIHZhdWx0cy4iKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgdmF1bHQuYmFsYW5jZSAhPSBhbW91bnQgewogICAgICAgICAgICAgICAgICAgLy8gdW5yZWFjaGFibGUKICAgICAgICAgICAgICAgICAgIHBhbmljKCJVbmV4cGVjdGVkIHJldHVybiB2YXVsdCBiYWxhbmNlISIpCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZW1pdCBUb2tlbnNXaXRoZHJhd24oYW1vdW50OiBhbW91bnQpCiAgICAgICAgICAgICAgICByZXR1cm4gPC0gdmF1bHQKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGFjY291bnRJbmRleCA9IDA7CiAgICAgICAgICAgIHdoaWxlIGFjY291bnRJbmRleCA8IGNoaWxkRmVlQWNjb3VudHMhLmxlbmd0aCAmJiByZW1haW5pbmdBbW91bnQgPiAwLjAgewogICAgICAgICAgICAgICAgaWYgbGV0IGZlZUFjY291bnQgPSBjaGlsZEZlZUFjY291bnRzIVthY2NvdW50SW5kZXhdLmJvcnJvdygpIHsKICAgICAgICAgICAgICAgICAgICBpZiBsZXQgY2hpbGRWYXVsdFJlZiA9IGZlZUFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0Pihmcm9tOiAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdCkgewogICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXZhaWxhYmxlQmFsYW5jZSA9IGZlZUFjY291bnQuYXZhaWxhYmxlQmFsYW5jZQoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdpdGhkcmF3QW1vdW50ID0gMC4wCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGF2YWlsYWJsZUJhbGFuY2UgPCByZW1haW5pbmdBbW91bnQgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aGRyYXdBbW91bnQgPSBhdmFpbGFibGVCYWxhbmNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoZHJhd0Ftb3VudCA9IHJlbWFpbmluZ0Ftb3VudAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZ0Ftb3VudCA9IHJlbWFpbmluZ0Ftb3VudCAtIHdpdGhkcmF3QW1vdW50CiAgICAgICAgICAgICAgICAgICAgICAgIHZhdWx0LmRlcG9zaXQoZnJvbTogPC0gY2hpbGRWYXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IHdpdGhkcmF3QW1vdW50KSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhY2NvdW50SW5kZXggPSBhY2NvdW50SW5kZXggKyAxCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIHJlbWFpbmluZ0Ftb3VudCA+IDAuMCB7CiAgICAgICAgICAgICAgICBwYW5pYygiQ2Fubm90IHdpdGhkcmF3IHRoZSByZXF1ZXN0ZWQgYW1vdW50IG9mIGZlZSB0b2tlbnMuIFRoZSBhbW91bnQgb2YgRkxPVyBvZiBcKGFtb3VudCkgcmVxdWVzdGVkIHRvIHdpdGhkcmF3IGlzIGdyZWF0ZXIgdGhhbiB0aGUgdG90YWwgZmVlcyBpbiB0aGUgZmVlIHZhdWx0cy4iKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIHZhdWx0LmJhbGFuY2UgIT0gYW1vdW50IHsKICAgICAgICAgICAgICAgLy8gdW5yZWFjaGFibGUKICAgICAgICAgICAgICAgcGFuaWMoIlVuZXhwZWN0ZWQgcmV0dXJuIHZhdWx0IGJhbGFuY2UhIikKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZW1pdCBUb2tlbnNXaXRoZHJhd24oYW1vdW50OiBhbW91bnQpCiAgICAgICAgICAgIHJldHVybiA8LSB2YXVsdAogICAgICAgIH0KCiAgICAgICAgLy8vIEFsbG93cyB0aGUgYWRtaW5pc3RyYXRvciB0byBjaGFuZ2UgYWxsIHRoZSBmZWUgcGFyYW1ldGVycyBhdCBvbmNlCiAgICAgICAgYWNjZXNzKGFsbCkgZnVuIHNldEZlZVBhcmFtZXRlcnMoc3VyZ2VGYWN0b3I6IFVGaXg2NCwgaW5jbHVzaW9uRWZmb3J0Q29zdDogVUZpeDY0LCBleGVjdXRpb25FZmZvcnRDb3N0OiBVRml4NjQpIHsKICAgICAgICAgICAgbGV0IG5ld1BhcmFtZXRlcnMgPSBGZWVQYXJhbWV0ZXJzKHN1cmdlRmFjdG9yOiBzdXJnZUZhY3RvciwgaW5jbHVzaW9uRWZmb3J0Q29zdDogaW5jbHVzaW9uRWZmb3J0Q29zdCwgZXhlY3V0aW9uRWZmb3J0Q29zdDogZXhlY3V0aW9uRWZmb3J0Q29zdCkKICAgICAgICAgICAgRmxvd0ZlZXMuc2V0RmVlUGFyYW1ldGVycyhuZXdQYXJhbWV0ZXJzKQogICAgICAgIH0KCiAgICAgICAgLy8vIEFsbG93cyB0aGUgYWRtaW5pc3RyYXRvciB0byBjaGFuZ2UgdGhlIGZlZSBzdXJnZSBmYWN0b3IKICAgICAgICBhY2Nlc3MoYWxsKSBmdW4gc2V0RmVlU3VyZ2VGYWN0b3IoXyBzdXJnZUZhY3RvcjogVUZpeDY0KSB7CiAgICAgICAgICAgIGxldCBvbGRQYXJhbWV0ZXJzID0gRmxvd0ZlZXMuZ2V0RmVlUGFyYW1ldGVycygpCiAgICAgICAgICAgIGxldCBuZXdQYXJhbWV0ZXJzID0gRmVlUGFyYW1ldGVycyhzdXJnZUZhY3Rvcjogc3VyZ2VGYWN0b3IsIGluY2x1c2lvbkVmZm9ydENvc3Q6IG9sZFBhcmFtZXRlcnMuaW5jbHVzaW9uRWZmb3J0Q29zdCwgZXhlY3V0aW9uRWZmb3J0Q29zdDogb2xkUGFyYW1ldGVycy5leGVjdXRpb25FZmZvcnRDb3N0KQogICAgICAgICAgICBGbG93RmVlcy5zZXRGZWVQYXJhbWV0ZXJzKG5ld1BhcmFtZXRlcnMpCiAgICAgICAgfQoKICAgICAgICAvLy8gQ3JlYXRlcyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIG5ldyBjaGlsZCBmZWUgYWNjb3VudHMsIHBhaWQgZm9yCiAgICAgICAgLy8vIGJ5IGBwYXllcmAsIGFuZCBhZGRzIHRoZW0gdG8gdGhlIGxpc3Qgb2YgYWNjb3VudHMgdGhhdCBtYXkKICAgICAgICAvLy8gcmVjZWl2ZSB0cmFuc2FjdGlvbiBmZWUgZGVwb3NpdHMuCiAgICAgICAgLy8vIFRoZSBuZXcgYWNjb3VudHMgaGF2ZSBubyBrZXlzIGFuZCBhcmUgb25seSBhY2Nlc3NpYmxlIHRocm91Z2gKICAgICAgICAvLy8gdGhlIGFjY291bnQgY2FwYWJpbGl0aWVzIHN0b3JlZCBpbiB0aGUgRmxvd0ZlZXMgYWNjb3VudCwKICAgICAgICAvLy8gc28gdGhleSBhcmUgZnVsbHkgY29udHJvbGxlZCBieSB0aGUgRmxvd0ZlZXMgY29udHJhY3QuCiAgICAgICAgYWNjZXNzKGFsbCkgZnVuIGNyZWF0ZUNoaWxkRmVlQWNjb3VudHMoY291bnQ6IEludCwgcGF5ZXI6IGF1dGgoQm9ycm93VmFsdWUgfCBTdG9yYWdlKSAmQWNjb3VudCkgewogICAgICAgICAgICBwcmUgewogICAgICAgICAgICAgICAgY291bnQgPiAwOgogICAgICAgICAgICAgICAgICAgICJGbG93RmVlcy5jcmVhdGVDaGlsZEZlZUFjY291bnRzOiBUaGUgbnVtYmVyIG9mIGNoaWxkIGZlZSBhY2NvdW50cyB0byBjcmVhdGUgbXVzdCBiZSBwb3NpdGl2ZSIKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGV0IGNoaWxkRmVlQWNjb3VudHMgPSBGbG93RmVlcy5hY2NvdW50LnN0b3JhZ2UubG9hZDxbQ2FwYWJpbGl0eTxhdXRoKFN0b3JhZ2UsIENvbnRyYWN0cywgS2V5cywgSW5ib3gsIENhcGFiaWxpdGllcykgJkFjY291bnQ+XT4oZnJvbTogL3N0b3JhZ2UvQ2hpbGRGZWVBY2NvdW50cykgPz8gW10KCiAgICAgICAgICAgIGxldCBjaGlsZEFkZHJlc3NlczogW0FkZHJlc3NdID0gW10KICAgICAgICAgICAgZm9yIGV4aXN0aW5nQ2hpbGRGZWVBY2NvdW50IGluIGNoaWxkRmVlQWNjb3VudHMgewogICAgICAgICAgICAgICAgY2hpbGRBZGRyZXNzZXMuYXBwZW5kKGV4aXN0aW5nQ2hpbGRGZWVBY2NvdW50LmFkZHJlc3MpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBpID0gMAogICAgICAgICAgICB3aGlsZSBpIDwgY291bnQgewogICAgICAgICAgICAgICAgaSA9IGkgKyAxCiAgICAgICAgICAgICAgICBsZXQgbmV3QWNjb3VudCA9IEFjY291bnQocGF5ZXI6IHBheWVyKQogICAgICAgICAgICAgICAgbGV0IGNhcCA9IG5ld0FjY291bnQuY2FwYWJpbGl0aWVzLmFjY291bnQuaXNzdWU8YXV0aChTdG9yYWdlLCBDb250cmFjdHMsIEtleXMsIEluYm94LCBDYXBhYmlsaXRpZXMpICZBY2NvdW50PigpCgogICAgICAgICAgICAgICAgY2hpbGRGZWVBY2NvdW50cy5hcHBlbmQoY2FwKQogICAgICAgICAgICAgICAgY2hpbGRBZGRyZXNzZXMuYXBwZW5kKGNhcC5hZGRyZXNzKQogICAgICAgICAgICB9CgogICAgICAgICAgICBGbG93RmVlcy5hY2NvdW50LnN0b3JhZ2Uuc2F2ZShjaGlsZEZlZUFjY291bnRzLCB0bzogL3N0b3JhZ2UvQ2hpbGRGZWVBY2NvdW50cykKCiAgICAgICAgICAgIGVtaXQgQ2hpbGRGZWVBY2NvdW50c0NoYW5nZWQoYWRkcmVzc2VzOiBjaGlsZEFkZHJlc3NlcykKICAgICAgICB9CiAgICB9CgogICAgLy8vIEEgc3RydWN0IGhvbGRpbmcgdGhlIGZlZSBwYXJhbWV0ZXJzIG5lZWRlZCB0byBjYWxjdWxhdGUgdGhlIGZlZXMKICAgIGFjY2VzcyhhbGwpIHN0cnVjdCBGZWVQYXJhbWV0ZXJzIHsKICAgICAgICAvLy8gVGhlIHN1cmdlIGZhY3RvciBpcyB1c2VkIHRvIG1ha2UgdHJhbnNhY3Rpb24gZmVlcyByZXNwb25kIHRvIGhpZ2ggbG9hZHMgb24gdGhlIG5ldHdvcmsKICAgICAgICBhY2Nlc3MoYWxsKSB2YXIgc3VyZ2VGYWN0b3I6IFVGaXg2NAogICAgICAgIC8vLyBUaGUgRkxPVyBjb3N0IG9mIG9uZSB1bml0IG9mIGluY2x1c2lvbiBlZmZvcnQuIFRoZSBGVk0gaXMgcmVzcG9uc2libGUgZm9yIG1ldGVyaW5nIGluY2x1c2lvbiBlZmZvcnQuCiAgICAgICAgYWNjZXNzKGFsbCkgdmFyIGluY2x1c2lvbkVmZm9ydENvc3Q6IFVGaXg2NAogICAgICAgIC8vLyBUaGUgRkxPVyBjb3N0IG9mIG9uZSB1bml0IG9mIGV4ZWN1dGlvbiBlZmZvcnQuIFRoZSBGVk0gaXMgcmVzcG9uc2libGUgZm9yIG1ldGVyaW5nIGV4ZWN1dGlvbiBlZmZvcnQuCiAgICAgICAgYWNjZXNzKGFsbCkgdmFyIGV4ZWN1dGlvbkVmZm9ydENvc3Q6IFVGaXg2NAoKICAgICAgICBpbml0KHN1cmdlRmFjdG9yOiBVRml4NjQsIGluY2x1c2lvbkVmZm9ydENvc3Q6IFVGaXg2NCwgZXhlY3V0aW9uRWZmb3J0Q29zdDogVUZpeDY0KXsKICAgICAgICAgICAgc2VsZi5zdXJnZUZhY3RvciA9IHN1cmdlRmFjdG9yCiAgICAgICAgICAgIHNlbGYuaW5jbHVzaW9uRWZmb3J0Q29zdCA9IGluY2x1c2lvbkVmZm9ydENvc3QKICAgICAgICAgICAgc2VsZi5leGVjdXRpb25FZmZvcnRDb3N0ID0gZXhlY3V0aW9uRWZmb3J0Q29zdAogICAgICAgIH0KICAgIH0KCiAgICAvLyBWZXJpZnlQYXllckJhbGFuY2VSZXN1bHQgaXMgcmV0dXJuZWQgYnkgdGhlIHZlcmlmeVBheWVyc0JhbGFuY2VGb3JUcmFuc2FjdGlvbkV4ZWN1dGlvbiBmdW5jdGlvbgogICAgYWNjZXNzKGFsbCkgc3RydWN0IFZlcmlmeVBheWVyQmFsYW5jZVJlc3VsdCB7CiAgICAgICAgLy8gVHJ1ZSBpZiB0aGUgcGF5ZXIgaGFzIHN1ZmZpY2llbnQgYmFsYW5jZSBmb3IgdGhlIHRyYW5zYWN0aW9uIGV4ZWN1dGlvbiB0byBjb250aW51ZQogICAgICAgIGFjY2VzcyhhbGwpIGxldCBjYW5FeGVjdXRlVHJhbnNhY3Rpb246IEJvb2wKICAgICAgICAvLyBUaGUgbWluaW11bSBwYXllciBiYWxhbmNlIHJlcXVpcmVkIGZvciB0aGUgdHJhbnNhY3Rpb24gZXhlY3V0aW9uIHRvIGNvbnRpbnVlLgogICAgICAgIC8vIFRoaXMgdmFsdWUgaXMgZGVmaW5lZCBieSB2ZXJpZnlQYXllcnNCYWxhbmNlRm9yVHJhbnNhY3Rpb25FeGVjdXRpb24uCiAgICAgICAgYWNjZXNzKGFsbCkgbGV0IHJlcXVpcmVkQmFsYW5jZTogVUZpeDY0CiAgICAgICAgLy8gVGhlIG1heGltdW0gdHJhbnNhY3Rpb24gZmVlcyAoaW5jbHVzaW9uIGZlZXMgKyBleGVjdXRpb24gZmVlcykgdGhlIHRyYW5zYWN0aW9uIGNhbiBpbmN1cgogICAgICAgIC8vIChpZiBhbGwgYXZhaWxhYmxlIGV4ZWN1dGlvbiBlZmZvcnQgaXMgdXNlZCkKICAgICAgICBhY2Nlc3MoYWxsKSBsZXQgbWF4aW11bVRyYW5zYWN0aW9uRmVlczogVUZpeDY0CgogICAgICAgIGluaXQoY2FuRXhlY3V0ZVRyYW5zYWN0aW9uOiBCb29sLCByZXF1aXJlZEJhbGFuY2U6IFVGaXg2NCwgIG1heGltdW1UcmFuc2FjdGlvbkZlZXM6IFVGaXg2NCl7CiAgICAgICAgICAgIHNlbGYuY2FuRXhlY3V0ZVRyYW5zYWN0aW9uID0gY2FuRXhlY3V0ZVRyYW5zYWN0aW9uCiAgICAgICAgICAgIHNlbGYucmVxdWlyZWRCYWxhbmNlID0gcmVxdWlyZWRCYWxhbmNlCiAgICAgICAgICAgIHNlbGYubWF4aW11bVRyYW5zYWN0aW9uRmVlcyA9IG1heGltdW1UcmFuc2FjdGlvbkZlZXMKICAgICAgICB9CgogICAgfQoKICAgIC8vIHZlcmlmeVBheWVyc0JhbGFuY2VGb3JUcmFuc2FjdGlvbkV4ZWN1dGlvbiBpcyBjYWxsZWQgYnkgdGhlIEZWTSBiZWZvcmUgZXhlY3V0aW5nIGEgdHJhbnNhY3Rpb24uCiAgICAvLyBJdCB2ZXJpZmllcyB0aGF0IHRoZSB0cmFuc2FjdGlvbiBwYXllcidzIGJhbGFuY2UgaXMgaGlnaCBlbm91Z2ggdG8gY29udGludWUgdHJhbnNhY3Rpb24gZXhlY3V0aW9uLAogICAgLy8gYW5kIHJldHVybnMgdGhlIG1heGltdW0gcG9zc2libGUgdHJhbnNhY3Rpb24gZmVlcy4KICAgIC8vIChhY2NvcmRpbmcgdG8gdGhlIGluY2x1c2lvbiBlZmZvcnQgYW5kIG1heGltdW0gZXhlY3V0aW9uIGVmZm9ydCBvZiB0aGUgdHJhbnNhY3Rpb24pLgogICAgLy8KICAgIC8vIFRoZSByZXF1aXJlZEJhbGFuY2UgYmFsYW5jZSBpcyBkZWZpbmVkIGFzIHRoZSBtaW5pbXVtIGFjY291bnQgYmFsYW5jZSArCiAgICAvLyAgbWF4aW11bSB0cmFuc2FjdGlvbiBmZWVzIChpbmNsdXNpb24gZmVlcyArIGV4ZWN1dGlvbiBmZWVzIGF0IG1heCBleGVjdXRpb24gZWZmb3J0KS4KICAgIGFjY2VzcyhhbGwpIGZ1biB2ZXJpZnlQYXllcnNCYWxhbmNlRm9yVHJhbnNhY3Rpb25FeGVjdXRpb24oCiAgICAgICAgXyBwYXllckFjY3Q6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50LAogICAgICAgIGluY2x1c2lvbkVmZm9ydDogVUZpeDY0LAogICAgICAgIG1heEV4ZWN1dGlvbkVmZm9ydDogVUZpeDY0CiAgICApOiBWZXJpZnlQYXllckJhbGFuY2VSZXN1bHQgewogICAgICAgIC8vIEdldCB0aGUgbWF4aW11bSBmZWVzIHJlcXVpcmVkIGZvciB0aGUgdHJhbnNhY3Rpb24uCiAgICAgICAgdmFyIG1heFRyYW5zYWN0aW9uRmVlID0gc2VsZi5jb21wdXRlRmVlcyhpbmNsdXNpb25FZmZvcnQ6IGluY2x1c2lvbkVmZm9ydCwgZXhlY3V0aW9uRWZmb3J0OiBtYXhFeGVjdXRpb25FZmZvcnQpCgogICAgICAgIC8vIEdldCB0aGUgbWluaW11bSByZXF1aXJlZCBwYXllcidzIGJhbGFuY2UgZm9yIHRoZSB0cmFuc2FjdGlvbi4KICAgICAgICBsZXQgbWluaW11bVJlcXVpcmVkQmFsYW5jZSA9IEZsb3dTdG9yYWdlRmVlcy5kZWZhdWx0VG9rZW5SZXNlcnZlZEJhbGFuY2UocGF5ZXJBY2N0LmFkZHJlc3MpCgogICAgICAgIGlmIG1pbmltdW1SZXF1aXJlZEJhbGFuY2UgPT0gVUZpeDY0KDApIHsKICAgICAgICAgICAgLy8gSWYgdGhlIHJlcXVpcmVkIGJhbGFuY2UgaXMgemVybyBleGl0IGVhcmx5LgogICAgICAgICAgICByZXR1cm4gVmVyaWZ5UGF5ZXJCYWxhbmNlUmVzdWx0KAogICAgICAgICAgICAgICAgY2FuRXhlY3V0ZVRyYW5zYWN0aW9uOiB0cnVlLAogICAgICAgICAgICAgICAgcmVxdWlyZWRCYWxhbmNlOiBtaW5pbXVtUmVxdWlyZWRCYWxhbmNlLAogICAgICAgICAgICAgICAgbWF4aW11bVRyYW5zYWN0aW9uRmVlczogbWF4VHJhbnNhY3Rpb25GZWUKICAgICAgICAgICAgKQogICAgICAgIH0KCiAgICAgICAgLy8gR2V0IHRoZSBiYWxhbmNlIG9mIHRoZSBwYXllcnMgZGVmYXVsdCB2YXVsdC4KICAgICAgICAvLyBJbiB0aGUgZWRnZSBjYXNlIHdoZXJlIHRoZSBwYXllciBkb2VzbnQgaGF2ZSBhIHZhdWx0LCB0cmVhdCB0aGUgYmFsYW5jZSBhcyAwLgogICAgICAgIHZhciBiYWxhbmNlID0gMC4wCiAgICAgICAgaWYgbGV0IHRva2VuVmF1bHQgPSBwYXllckFjY3Quc3RvcmFnZS5ib3Jyb3c8JkZsb3dUb2tlbi5WYXVsdD4oZnJvbTogL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQpIHsKICAgICAgICAgICAgYmFsYW5jZSA9IHRva2VuVmF1bHQuYmFsYW5jZQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFZlcmlmeVBheWVyQmFsYW5jZVJlc3VsdCgKICAgICAgICAgICAgLy8gVGhlIHRyYW5zYWN0aW9uIGNhbiBiZSBleGVjdXRlZCBpdCB0aGUgcGF5ZXJzIGJhbGFuY2UgaXMgZ3JlYXRlciB0aGFuIHRoZSBtaW5pbXVtIHJlcXVpcmVkIGJhbGFuY2UuCiAgICAgICAgICAgIGNhbkV4ZWN1dGVUcmFuc2FjdGlvbjogYmFsYW5jZSA+PSBtaW5pbXVtUmVxdWlyZWRCYWxhbmNlLAogICAgICAgICAgICByZXF1aXJlZEJhbGFuY2U6IG1pbmltdW1SZXF1aXJlZEJhbGFuY2UsCiAgICAgICAgICAgIG1heGltdW1UcmFuc2FjdGlvbkZlZXM6IG1heFRyYW5zYWN0aW9uRmVlKQogICAgfQoKICAgIC8vLyBDYWxsZWQgd2hlbiBhIHRyYW5zYWN0aW9uIGlzIHN1Ym1pdHRlZCB0byBkZWR1Y3QgdGhlIGZlZQogICAgLy8vIGZyb20gdGhlIEF1dGhBY2NvdW50IHRoYXQgc3VibWl0dGVkIGl0CiAgICBhY2Nlc3MoYWxsKSBmdW4gZGVkdWN0VHJhbnNhY3Rpb25GZWUoXyBhY2N0OiBhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudCwgaW5jbHVzaW9uRWZmb3J0OiBVRml4NjQsIGV4ZWN1dGlvbkVmZm9ydDogVUZpeDY0KSB7CiAgICAgICAgdmFyIGZlZUFtb3VudCA9IHNlbGYuY29tcHV0ZUZlZXMoaW5jbHVzaW9uRWZmb3J0OiBpbmNsdXNpb25FZmZvcnQsIGV4ZWN1dGlvbkVmZm9ydDogZXhlY3V0aW9uRWZmb3J0KQoKICAgICAgICBpZiBmZWVBbW91bnQgPT0gVUZpeDY0KDApIHsKICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIGZlZXMgdG8gZGVkdWN0LCBkbyBub3QgY29udGludWUsCiAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlcmUgYXJlIG5vIHVubmVjZXNzYXJpbHkgZW1pdHRlZCBldmVudHMKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgfQoKICAgICAgICBsZXQgdG9rZW5WYXVsdCA9IGFjY3Quc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0Pihmcm9tOiAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdCkKICAgICAgICAgICAgPz8gcGFuaWMoIkZsb3dGZWVzLmRlZHVjdFRyYW5zYWN0aW9uRmVlOiBVbmFibGUgdG8gYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgZGVmYXVsdCB0b2tlbiB2YXVsdCIpCgoKICAgICAgICBpZiBmZWVBbW91bnQgPiB0b2tlblZhdWx0LmJhbGFuY2UgewogICAgICAgICAgICAvLyBJbiB0aGUgZnV0dXJlIHRoaXMgY29kZSBwYXRoIHdpbGwgbmV2ZXIgYmUgcmVhY2hlZCwKICAgICAgICAgICAgLy8gYXMgcGF5ZXJzIHRoYXQgYXJlIHVuZGVyIGFjY291bnQgbWluaW11bSBiYWxhbmNlIHdpbGwgbm90IGhhdmUgdGhlaXIgdHJhbnNhY3Rpb25zIGluY2x1ZGVkIGluIGEgY29sbGVjdGlvbgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBDdXJyZW50bHkgdGhpcyBpcyBub3QgdXNlZCB0byBmYWlsIHRoZSB0cmFuc2FjdGlvbiAoYXMgdGhhdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIG1pbmltdW0gYWNjb3VudCBiYWxhbmNlIGxvZ2ljKSwKICAgICAgICAgICAgLy8gQnV0IGlzIHVzZWQgdG8gcmVkdWNlIHRoZSBiYWxhbmNlIG9mIHRoZSB2YXVsdCB0byAwLjAsIGlmIHRoZSB2YXVsdCBoYXMgbGVzcyBhdmFpbGFibGUgYmFsYW5jZSB0aGFuIHRoZSB0cmFuc2FjdGlvbiBmZWVzLgogICAgICAgICAgICBmZWVBbW91bnQgPSB0b2tlblZhdWx0LmJhbGFuY2UKICAgICAgICB9CgogICAgICAgIGxldCBmZWVWYXVsdCA8LSB0b2tlblZhdWx0LndpdGhkcmF3KGFtb3VudDogZmVlQW1vdW50KQoKICAgICAgICBzZWxmLmNvbGxlY3RGZWVzT25DaGlsZEFjY291bnRzKDwtIGZlZVZhdWx0KQoKICAgICAgICAvLyBUaGUgZmVlIGNhbGN1bGF0aW9uIGNhbiBiZSByZWNvbnN0cnVjdGVkIHVzaW5nIHRoZSBkYXRhIGZyb20gdGhpcyBldmVudCBhbmQgdGhlIEZlZVBhcmFtZXRlcnMgYXQgdGhlIGJsb2NrIHdoZW4gdGhlIGV2ZW50IGhhcHBlbmVkCiAgICAgICAgZW1pdCBGZWVzRGVkdWN0ZWQoYW1vdW50OiBmZWVBbW91bnQsIGluY2x1c2lvbkVmZm9ydDogaW5jbHVzaW9uRWZmb3J0LCBleGVjdXRpb25FZmZvcnQ6IGV4ZWN1dGlvbkVmZm9ydCkKICAgIH0KCiAgICAvLy8gVGhlIHN1cHBsaWVkIHZhdWx0IHdpbGwgZ28gdG8gb25lIGNoaWxkIGZlZSBhY2NvdW50IGFjY29yZGluZyB0byB0aGUgY3VycmVudCBudW1iZXIgb2YgY2hpbGQgZmVlIGFjY291bnRzIGFuZCB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBpbmRleC4KICAgIC8vLyBpZiB0aGVyZSBhcmUgbm8gY2hpbGQgYWNjb3VudHMsIHRoZSBmZWVzIHdpbGwgYmUgY29sbGVjdGVkIGluIHRoZSBzZWxmLnZhdWx0CiAgICBhY2Nlc3Moc2VsZikgZnVuIGNvbGxlY3RGZWVzT25DaGlsZEFjY291bnRzKF8gdmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0pIHsKICAgICAgICBsZXQgY2hpbGRGZWVBY2NvdW50cyA9IHNlbGYuYm9ycm93Q2hpbGRGZWVBY2NvdW50cygpCgogICAgICAgIC8vIGZhbGxiYWNrIGluIGNhc2Ugbm8gY2hpbGQgYWNjb3VudHMgd2VyZSBjcmVhdGVkIHlldAogICAgICAgIGlmIGNoaWxkRmVlQWNjb3VudHMgPT0gbmlsIHx8IGNoaWxkRmVlQWNjb3VudHMhLmxlbmd0aCA9PSAwIHsKICAgICAgICAgICAgc2VsZi52YXVsdC5kZXBvc2l0KGZyb206IDwtdmF1bHQpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIH0KCiAgICAgICAgbGV0IHR4SW5kZXggPSBnZXRUcmFuc2FjdGlvbkluZGV4KCkKICAgICAgICBsZXQgYWNjb3VudEluZGV4ID0gSW50KHR4SW5kZXggJSBVSW50MzIoY2hpbGRGZWVBY2NvdW50cyEubGVuZ3RoKSkKCiAgICAgICAgaWYgbGV0IGZlZUFjY291bnQgPSBjaGlsZEZlZUFjY291bnRzIVthY2NvdW50SW5kZXhdLmJvcnJvdygpIHsKICAgICAgICAgICAgaWYgbGV0IHJlY2VpdmVyID0gZmVlQWNjb3VudC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KC9wdWJsaWMvZmxvd1Rva2VuUmVjZWl2ZXIpIHsKICAgICAgICAgICAgICAgIHJlY2VpdmVyLmRlcG9zaXQoZnJvbTogPC12YXVsdCkKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICB9CiAgICAgICAgfSAKICAgICAgICAvLyBmYWxsYmFjayBpbiBjYXNlIHRoZXJlIGlzIGEgcHJvYmxlbSBib3Jyb3dpbmcgYSBjaGlsZCBhY2NvdW50CiAgICAgICAgc2VsZi52YXVsdC5kZXBvc2l0KGZyb206IDwtdmF1bHQpCiAgICB9CgogICAgYWNjZXNzKGFsbCkgdmlldyBmdW4gZ2V0RmVlUGFyYW1ldGVycygpOiBGZWVQYXJhbWV0ZXJzIHsKICAgICAgICByZXR1cm4gc2VsZi5hY2NvdW50LnN0b3JhZ2UuY29weTxGZWVQYXJhbWV0ZXJzPihmcm9tOiAvc3RvcmFnZS9GbG93VHhGZWVQYXJhbWV0ZXJzKSA/PyBwYW5pYygiRmxvd0ZlZXMuZ2V0RmVlUGFyYW1ldGVyczogRXJyb3IgZ2V0dGluZyB0eCBmZWUgcGFyYW1ldGVycy4gVGhleSBuZWVkIHRvIGJlIGluaXRpYWxpemVkIGZpcnN0ISIpCiAgICB9CgogICAgYWNjZXNzKHNlbGYpIGZ1biBzZXRGZWVQYXJhbWV0ZXJzKF8gZmVlUGFyYW1ldGVyczogRmVlUGFyYW1ldGVycykgewogICAgICAgIC8vIGVtcHR5IHN0b3JhZ2UgYmVmb3JlIHdyaXRpbmcgbmV3IEZlZVBhcmFtZXRlcnMgdG8gaXQKICAgICAgICBzZWxmLmFjY291bnQuc3RvcmFnZS5sb2FkPEZlZVBhcmFtZXRlcnM+KGZyb206IC9zdG9yYWdlL0Zsb3dUeEZlZVBhcmFtZXRlcnMpCiAgICAgICAgc2VsZi5hY2NvdW50LnN0b3JhZ2Uuc2F2ZShmZWVQYXJhbWV0ZXJzLHRvOiAvc3RvcmFnZS9GbG93VHhGZWVQYXJhbWV0ZXJzKQogICAgICAgIGVtaXQgRmVlUGFyYW1ldGVyc0NoYW5nZWQoc3VyZ2VGYWN0b3I6IGZlZVBhcmFtZXRlcnMuc3VyZ2VGYWN0b3IsIGluY2x1c2lvbkVmZm9ydENvc3Q6IGZlZVBhcmFtZXRlcnMuaW5jbHVzaW9uRWZmb3J0Q29zdCwgZXhlY3V0aW9uRWZmb3J0Q29zdDogZmVlUGFyYW1ldGVycy5leGVjdXRpb25FZmZvcnRDb3N0KQogICAgfQoKCiAgICAvLyBjb21wdXRlIHRoZSB0cmFuc2FjdGlvbiBmZWVzIHdpdGggdGhlIGN1cnJlbnQgZmVlIHBhcmFtZXRlcnMgYW5kIHRoZSBnaXZlbiBpbmNsdXNpb25FZmZvcnQgYW5kIGV4ZWN1dGlvbkVmZm9ydAogICAgYWNjZXNzKGFsbCkgdmlldyBmdW4gY29tcHV0ZUZlZXMoaW5jbHVzaW9uRWZmb3J0OiBVRml4NjQsIGV4ZWN1dGlvbkVmZm9ydDogVUZpeDY0KTogVUZpeDY0IHsKICAgICAgICBsZXQgcGFyYW1zID0gc2VsZi5nZXRGZWVQYXJhbWV0ZXJzKCkKCiAgICAgICAgbGV0IHRvdGFsRmVlcyA9IHBhcmFtcy5zdXJnZUZhY3RvciAqICggaW5jbHVzaW9uRWZmb3J0ICogcGFyYW1zLmluY2x1c2lvbkVmZm9ydENvc3QgKyBleGVjdXRpb25FZmZvcnQgKiBwYXJhbXMuZXhlY3V0aW9uRWZmb3J0Q29zdCApCiAgICAgICAgcmV0dXJuIHRvdGFsRmVlcwogICAgfQoKICAgIGluaXQoKSB7CiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IEZsb3dUb2tlbiBWYXVsdCBhbmQgc2F2ZSBpdCBpbiBzdG9yYWdlCiAgICAgICAgc2VsZi52YXVsdCA8LSBGbG93VG9rZW4uY3JlYXRlRW1wdHlWYXVsdCh2YXVsdFR5cGU6IFR5cGU8QEZsb3dUb2tlbi5WYXVsdD4oKSkgYXMhIEBGbG93VG9rZW4uVmF1bHQKCiAgICAgICAgbGV0IGFkbWluIDwtIGNyZWF0ZSBBZG1pbmlzdHJhdG9yKCkKICAgICAgICBzZWxmLmFjY291bnQuc3RvcmFnZS5zYXZlKDwtYWRtaW4sIHRvOiAvc3RvcmFnZS9mbG93RmVlc0FkbWluKQogICAgfQp9Cg=="
	},
	"_expandable": {},
	"_links": {
		"_self": "/v1/accounts/f919ee77447b7497"
	}
}