LyoKICogKEMpIENvcHlyaWdodCAyMDAyCiAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCIDxkYW5pZWxAb21pY3Jvbi5zZT4uCiAqCiAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAqIHByb2plY3QuCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCiAqIE1BIDAyMTExLTEzMDcgVVNBCiAqLwoKLyogVGhpcyBmaWxlIGlzIGxhcmdlbHkgYmFzZWQgb24gY29kZSBvYnRuZWQgZnJvbSBBTUQuIEFNRCdzIG9yaWdpbmFsCiAqIGNvcHlyaWdodCBpcyBpbmNsdWRlZCBiZWxvdyAKICovCgovKgogKiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICogICBDb3B5cmlnaHQgMTk5OSBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICogIFRoaXMgc29mdHdhcmUgaXMgdGhlIHByb3BlcnR5IG9mIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYyAgKEFNRCkgIHdoaWNoIAogKiAgc3BlY2lmaWNhbGx5IGdyYW50cyB0aGUgdXNlciB0aGUgcmlnaHQgdG8gbW9kaWZ5LCB1c2UgYW5kIGRpc3RyaWJ1dGUgdGhpcyAKICogIHNvZnR3YXJlIHByb3ZpZGVkIHRoaXMgQ09QWVJJR0hUIE5PVElDRSBpcyBub3QgcmVtb3ZlZCBvciBhbHRlcmVkLiAgQWxsIAogKiAgb3RoZXIgcmlnaHRzIGFyZSByZXNlcnZlZCBieSBBTUQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAqICBUSEUgTUFURVJJQUxTIEFSRSBQUk9WSURFRCAiQVMgSVMiIFdJVEhPVVQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5UWSAKICogIE9GIEFOWSBLSU5EIElOQ0xVRElORyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgTk9OSU5GUklOR0VNRU5UIE9GIAogKiAgVEhJUkQtUEFSVFkgSU5URUxMRUNUVUFMIFBST1BFUlRZLCBPUiBGSVRORVNTIEZPUiBBTlkgUEFSVElDVUxBUiBQVVJQT1NFLgogKiAgSU4gTk8gRVZFTlQgU0hBTEwgQU1EIE9SIElUUyBTVVBQTElFUlMgQkUgTElBQkxFIEZPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSCiAqICAoSU5DTFVESU5HLCBXSVRIT1VUIExJTUlUQVRJT04sIERBTUFHRVMgRk9SIExPU1MgT0YgUFJPRklUUywgQlVTSU5FU1MKICogIElOVEVSUlVQVElPTiwgTE9TUyBPRiBJTkZPUk1BSVRPTikgQVJJU0lORyBPVVQgT0YgVEhFIFVTRSBPRiBPUiBJTkFCSUxJVFkKICogIFRPIFVTRSBUSEUgTUFURVJJQUxTLCBFVkVOIElGIEFNRCBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgogKiAgU1VDSCBEQU1BR0VTLiAgQkVDQVVTRSBTT01FIEpVUlNJRElDVElPTlMgUFJPSElCSVQgVEhFIEVYQ0xVU0lPTiBPUgogKiAgTElNSVRBVElPTiBPRiBMSUFCSUxJVFkgRk9SIENPTlNFUVVFTlRJQUwgT1IgSU5DSURFTlRBTCBEQU1BR0VTLCBUSEUgQUJPVkUKICogIExJTUlUQVRJT04gTUFZIE5PVCBBUFBMWSBUTyBZT1UuCiAqIAogKiAgQU1EIGRvZXMgbm90IGFzc3VtZSBhbnkgcmVzcG9uc2liaWxpdHkgZm9yIGFueSBlcnJvcnMgdGhhdCBtYXkgYXBwZWFyIGluCiAqICB0aGUgTWF0ZXJpYWxzIG5vciBhbnkgcmVzcG9uc2liaWxpdHkgdG8gc3VwcG9ydCBvciB1cGRhdGUgdGhlIE1hdGVyaWFscy4KICogIEFNRCByZXRhaW5zIHRoZSByaWdodCB0byBtYWtlIGNoYW5nZXMgdG8gaXRzIHRlc3Qgc3BlY2lmaWNhdGlvbnMgYXQgYW55CiAqICB0aW1lLCB3aXRob3V0IG5vdGljZS4KICogCiAqICBTbyB0aGF0IGFsbCBtYXkgYmVuZWZpdCBmcm9tIHlvdXIgZXhwZXJpZW5jZSwgcGxlYXNlIHJlcG9ydCAgYW55ICBwcm9ibGVtcyAKICogIG9yIHN1Z2dlc3Rpb25zIGFib3V0IHRoaXMgc29mdHdhcmUgYmFjayB0byBBTUQuICBQbGVhc2UgaW5jbHVkZSB5b3VyIG5hbWUsIAogKiAgY29tcGFueSwgIHRlbGVwaG9uZSBudW1iZXIsICBBTUQgcHJvZHVjdCByZXF1aXJpbmcgc3VwcG9ydCBhbmQgcXVlc3Rpb24gb3IgCiAqICBwcm9ibGVtIGVuY291bnRlcmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogKiAgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiAgICAgICAgIFdvcmxkd2lkZSBzdXBwb3J0IGFuZCBjb250YWN0ICAgICAgICAgICAKICogIEVtYmVkZGVkIFByb2Nlc3NvciBEaXZpc2lvbiAgICAgICAgICAgIGluZm9ybWF0aW9uIGF2YWlsYWJsZSBhdDogICAgICAgICAgICAgICAKICogIFN5c3RlbXMgRW5naW5lZXJpbmcgICAgICAgICAgICAgICAgICAgICAgIGVwZC5zdXBwb3J0QGFtZC5jb20KICogIDUyMDQgRS4gQmVuIFdoaXRlIEJsdmQuICAgICAgICAgICAgICAgICAgICAgICAgICAtb3ItCiAqICBBdXN0aW4sIFRYIDc4NzQxICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuYW1kLmNvbS9odG1sL3N1cHBvcnQvdGVjaHN1cC5odG1sCiAqICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqLwoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCSBBVVRIT1IgICAgICA6IEJ1ZGR5IEZleSAtIE9yaWdpbmFsLiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICAgICAgRlVOQ1RJT05BTCBERVNDUklQVElPTjoKICogVGhpcyByb3V0aW5lIGlzIGNhbGxlZCB0byBhdXRvZGV0ZWN0IHRoZSBnZW9tZXRyeSBvZiB0aGUgRFJBTS4KICoKICogVGhpcyByb3V0aW5lIGlzIGNhbGxlZCB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBjb2x1bW4gYml0cyBmb3IgdGhlIERSQU0KICogZGV2aWNlcyBpbiB0aGlzIGV4dGVybmFsIGJhbmsuIFRoaXMgcm91dGluZSBhc3N1bWVzIHRoYXQgdGhlIGV4dGVybmFsIGJhbmsKICogaGFzIGJlZW4gY29uZmlndXJlZCBmb3IgYW4gMTEtYml0IGNvbHVtbiBhbmQgZm9yIDQgaW50ZXJuYWwgYmFua3MuIFRoaXMgZ2l2ZXMKICogdXMgdGhlIG1heGltdW0gYWRkcmVzcyByZWFjaCBpbiBtZW1vcnkuIEJ5IHdyaXRpbmcgYSB0ZXN0IHZhbHVlIHRvIHRoZSBtYXgKICogYWRkcmVzcyBhbmQgbG9jYXRpbmcgd2hlcmUgaXQgYWxpYXNlcyB0bywgd2UgY2FuIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIHZhbGlkCiAqIGNvbHVtbiBiaXRzLgogKgogKiBUaGlzIHJvdXRpbmUgaXMgY2FsbGVkIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGludGVybmFsIGJhbmtzIGVhY2ggRFJBTQogKiBkZXZpY2UgaGFzLiBUaGUgZXh0ZXJuYWwgYmFuayAodW5kZXIgdGVzdCkgaXMgY29uZmlndXJlZCBmb3IgbWF4aW11bSByZWFjaAogKiB3aXRoIDExLWJpdCBjb2x1bW5zIGFuZCA0IGludGVybmFsIGJhbmtzLiBUaGlzIHJvdXRpbmUgd2lsbCB3cml0ZSB0byBhIG1heAogKiBhZGRyZXNzIChCQTEgYW5kIEJBMCA9IDEpIGFuZCB0aGVuIHJlYWQgZnJvbSBhbiBhZGRyZXNzIHdpdGggQkExPTAgdG8gc2VlIGlmCiAqIHRoYXQgY29sdW1uIGlzIGEgImRvbid0IGNhcmUiLiBJZiBCQTEgZG9lcyBub3QgYWZmZWN0IHdyaXRlL3JlYWQgb2YgZGF0YSwKICogdGhlbiB0aGlzIGRldmljZSBoYXMgb25seSAyIGludGVybmFsIGJhbmtzLgogKgogKiBUaGlzIHJvdXRpbmUgaXMgY2FsbGVkIHRvIGRldGVybWluZSB0aGUgZW5kaW5nIGFkZHJlc3MgZm9yIHRoaXMgZXh0ZXJuYWwKICogYmFuayBvZiBTRFJBTS4gV2Ugd3JpdGUgdG8gYSBtYXggYWRkcmVzcyB3aXRoIGEgZGF0YSB2YWx1ZSBhbmQgdGhlbiBkaXNhYmxlCiAqIHJvdyBhZGRyZXNzIGJpdHMgbG9va2luZyBmb3IgImRvbid0IGNhcmUiIGxvY2F0aW9ucy4gRWFjaCAiZG9uJ3QgY2FyZSIgYml0CiAqIHJlcHJlc2VudHMgYSBkaXZpZGluZyBvZiB0aGUgbWF4aW11bSBkZW5zaXR5ICgxMjhNKSBieSAyLiBCeSBkaXZpZGluZyB0aGUKICogbWF4aW11bSBvZiAzMiA0TSBjaHVua3MgaW4gYW4gZXh0ZXJuYWwgYmFuayBkb3duIGJ5IGFsbCB0aGUgImRvbid0IGNhcmUiIGJpdHMKICogZGV0ZXJtaW5lZCBkdXJpbmcgc2l6aW5nLCB3ZSBzZXQgdGhlIHByb3BlciBkZW5zaXR5LgogKgogKiBXQVJOSU5HUy4KICogYnAgbXVzdCBiZSBwcmVzZXJ2ZWQgYmVjYXVzZSBpdCBpcyB1c2VkIGZvciByZXR1cm4gbGlua2FnZS4KICoKICogRVhJVAogKiBub3RoaW5nIHJldHVybmVkIC0gYnV0IHRoZSBtZW1vcnkgc3Vic3lzdGVtIGlzIGVuYWJsZWQKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCgojaW5jbHVkZSA8Y29uZmlnLmg+CiNpZmRlZiBDT05GSUdfU0M1MjAKCi5zZWN0aW9uIC50ZXh0Ci5lcXUgICAgICAgICAgICBEUkNDVEwsICAgICAweDBmZmZlZjAxMCAgIC8qIERSQU0gY29udHJvbCByZWdpc3RlciAqLwouZXF1ICAgICAgICAgICAgRFJDVE1DVEwsICAgMHgwZmZmZWYwMTIgICAvKiBEUkFNIHRpbWluZyBjb250cm9sIHJlZ2lzdGVyICovCi5lcXUgICAgICAgICAgICBEUkNDRkcsICAgICAweDBmZmZlZjAxNCAgIC8qIERSQU0gYmFuayBjb25maWd1cmF0aW9uIHJlZ2lzdGVyICovCi5lcXUgICAgICAgICAgICBEUkNCRU5EQURSLCAweDBmZmZlZjAxOCAgIC8qIERSQU0gYmFuayBlbmRpbmcgYWRkcmVzcyByZWdpc3RlciAqLwouZXF1ICAgICAgICAgICAgRUNDQ1RMLCAgICAgMHgwZmZmZWYwMjAgICAvKiBEUkFNIEVDQyBjb250cm9sIHJlZ2lzdGVyICovCi5lcXUgICAgICAgICAgICBEQkNUTCwgICAgICAweDBmZmZlZjA0MCAgIC8qIERSQU0gYnVmZmVyIGNvbnRyb2wgcmVnaXN0ZXIgKi8KCi5lcXUgICAgICAgICAgICBDQUNIRUxJTkVTWiwgMHgwMDAwMDAxMCAgIC8qIHNpemUgb2Ygb3VyIGNhY2hlIGxpbmUgKHJlYWQgYnVmZmVyKSAqLwouZXF1ICAgICAgICAgICAgQ09MMTFfQURSLCAgMHgwZTAwMWUwMCAgICAvKiAxMSBjb2wgYWRkcnMgKi8KLmVxdSAgICAgICAgICAgIENPTDEwX0FEUiwgIDB4MGUwMDBlMDAgICAgLyogMTAgY29sIGFkZHJzICovCi5lcXUgICAgICAgICAgICBDT0wwOV9BRFIsICAweDBlMDAwNjAwICAgIC8qICA5IGNvbCBhZGRycyAqLwouZXF1ICAgICAgICAgICAgQ09MMDhfQURSLCAgMHgwZTAwMDIwMCAgICAvKiAgOCBjb2wgYWRkcnMgKi8KLmVxdSAgICAgICAgICAgIFJPVzE0X0FEUiwgIDB4MGYwMDAwMDAgICAgLyogMTQgcm93IGFkZHJzICovCi5lcXUgICAgICAgICAgICBST1cxM19BRFIsICAweDA3MDAwMDAwICAgIC8qIDEzIHJvdyBhZGRycyAqLwouZXF1ICAgICAgICAgICAgUk9XMTJfQURSLCAgMHgwMzAwMDAwMCAgICAvKiAxMiByb3cgYWRkcnMgKi8KLmVxdSAgICAgICAgICAgIFJPVzExX0FEUiwgIDB4MDEwMDAwMDAgICAgLyogMTEgcm93IGFkZHJzL2Fsc28gYmFuayBzd2l0Y2ggKi8KLmVxdSAgICAgICAgICAgIFJPVzEwX0FEUiwgIDB4MDAwMDAwMDAgICAgLyogMTAgcm93IGFkZHJzL2Fsc28gYmFuayBzd2l0Y2ggKi8KLmVxdSAgICAgICAgICAgIENPTDExX0RBVEEsIDB4MGIwYjBiMGIgICAgLyogMTEgY29sIGFkZHJzICovCi5lcXUgICAgICAgICAgICBDT0wxMF9EQVRBLCAweDBhMGEwYTBhICAgIC8qIDEwIGNvbCBkYXRhICovCi5lcXUgICAgICAgICAgICBDT0wwOV9EQVRBLCAweDA5MDkwOTA5ICAgIC8qICA5IGNvbCBkYXRhICovCi5lcXUgICAgICAgICAgICBDT0wwOF9EQVRBLCAweDA4MDgwODA4ICAgIC8qICA4IGNvbCBkYXRhICovCi5lcXUgICAgICAgICAgICBST1cxNF9EQVRBLCAweDNmM2YzZjNmICAgIC8qIDE0IHJvdyBkYXRhIChNQVNLKSAqLwouZXF1ICAgICAgICAgICAgUk9XMTNfREFUQSwgMHgxZjFmMWYxZiAgICAvKiAxMyByb3cgZGF0YSAoTUFTSykgKi8KLmVxdSAgICAgICAgICAgIFJPVzEyX0RBVEEsIDB4MGYwZjBmMGYgICAgLyogMTIgcm93IGRhdGEgKE1BU0spICovCi5lcXUgICAgICAgICAgICBST1cxMV9EQVRBLCAweDA3MDcwNzA3ICAgIC8qIDExIHJvdyBkYXRhL2Fsc28gYmFuayBzd2l0Y2ggKE1BU0spICovCi5lcXUgICAgICAgICAgICBST1cxMF9EQVRBLCAweGFhYWFhYWFhICAgIC8qIDEwIHJvdyBkYXRhL2Fsc28gYmFuayBzd2l0Y2ggKE1BU0spICovCgoKIC8qCiAgKiBpbml0aWFsaXplIGRyYW0gY29udHJvbGxlciByZWdpc3RlcnMKICAqLwouZ2xvYmwgbWVtX2luaXQKbWVtX2luaXQ6IAogICAgICAgIHhvcncgICAgJWF4LCVheAogICAgICAgIG1vdmwgICAgJERCQ1RMLCAlZWRpICAgICAgICAgICAgIAoJbW92YiAgICAgJWFsLCAoJWVkaSkgICAgICAgICAgICAgLyogZGlzYWJsZSB3cml0ZSBidWZmZXIgKi8KCiAgICAgICAgbW92bCAgICAkRUNDQ1RMLCAlZWRpICAgICAgICAgICAgCgltb3ZiICAgICAlYWwsICglZWRpKSAgICAgICAgICAgICAvKiBkaXNhYmxlIEVDQyAqLwoKICAgICAgICBtb3ZsICAgICREUkNUTUNUTCwgJWVkaSAgICAgICAgICAgCiAgICAgICAgbW92YiAgICAkMHgxRSwlYWwgICAgICAgICAgICAgICAgLyogU2V0IFNEUkFNIHRpbWluZyBmb3Igc2xvd2VzdCAqLwoJbW92YiAgICAgJWFsLCAoJWVkaSkKCiAvKgogICogc2V0dXAgbG9vcCB0byBkbyA0IGV4dGVybmFsIGJhbmtzIHN0YXJ0aW5nIHdpdGggYmFuayAzCiAgKi8KICAgICAgICBtb3ZsICAgICQweGZmMDAwMDAwLCVlYXggICAgICAgICAvKiBlbmFibGUgbGFzdCBiYW5rIGFuZCBzZXR1cCAqLwogICAgICAgIG1vdmwgICAgJERSQ0JFTkRBRFIsICVlZGkgICAgICAgIC8qIGVuZGluZyBhZGRyZXNzIHJlZ2lzdGVyICovCgltb3ZsICAgICAlZWF4LCAoJWVkaSkKCiAgICAgICAgbW92bCAgICAkRFJDQ0ZHLCAlZWRpICAgICAgICAgICAgLyogc2V0dXAgKi8KICAgICAgICBtb3Z3ICAgICQweGJiYmIsJWF4ICAgICAgICAgICAgICAvKiBkcmFtIGNvbmZpZyByZWdpc3RlciBmb3IgICovCgltb3Z3ICAgICVheCwgKCVlZGkpCgogLyoKICAqIGlzc3VlIGEgTk9QIHRvIGFsbCBEUkFNcwogICovCiAgICAgICAgbW92bCAgICAkRFJDQ1RMLCAlZWRpICAgICAgICAgICAgLyogc2V0dXAgRFJBTSBjb250cm9sIHJlZ2lzdGVyIHdpdGggKi8KICAgICAgICBtb3ZiICAgICQweDEsJWFsICAgICAgICAgICAgICAgICAvKiBEaXNhYmxlIHJlZnJlc2gsZGlzYWJsZSB3cml0ZSBidWZmZXIgKi8gCgltb3ZiICAgICAlYWwsICglZWRpKQogICAgICAgIG1vdmwgICAgJENBQ0hFTElORVNaLCAlZXNpICAgICAgIC8qIGp1c3QgYSBkdW1teSBhZGRyZXNzIHRvIHdyaXRlIGZvciAqLyAKCW1vdncgICAgICVheCwgKCVlc2kpCiAvKgogICogZGVsYXkgZm9yIDEwMCB1c2VjPyAyMDA/CiAgKiAqKioqKip0aGlzIGlzIGEgY2x1ZGdlIGZvciBub3cgKioqKioqKioqKioqKgogICovCiAgICAgICAgbW92dyAgICAkMTAwLCVjeApzaXpkZWxheTogCiAgICAgICAgbG9vcCAgICBzaXpkZWxheSAgICAgICAgICAgICAgICAgLyogd2UgbmVlZCAxMDAgdXNlYyBoZXJlICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgogLyoKICAqIGlzc3VlIGFsbCBiYW5rcyBwcmVjaGFyZ2UKICAqLwogICAgICAgIG1vdmIgICAgJDB4MiwlYWwgICAgICAgICAgICAgICAgIC8qIEFsbCBiYW5rcyBwcmVjaGFyZ2UgKi8KCW1vdmIgICAgICVhbCwgKCVlZGkpCgltb3Z3ICAgICAlYXgsICglZXNpKQoKIC8qCiAgKiBpc3N1ZSAyIGF1dG8gcmVmcmVzaGVzIHRvIGFsbCBiYW5rcyAKICAqLwogICAgICAgIG1vdmIgICAgJDB4NCwlYWwgICAgICAgICAgICAgICAgIC8qIEF1dG8gcmVmcmVzaCBjbWQgKi8KCW1vdmIgICAgICVhbCwgKCVlZGkpCiAgICAgICAgbW92dyAgICAkMiwlY3gKcmVmcmVzaDE6IAoJbW92dyAgICAgJWF4LCAoJWVzaSkKICAgICAgICBsb29wICAgIHJlZnJlc2gxCgogLyoKICAqIGlzc3VlIExPQUQgTU9ERSBSRUdJU1RFUiBjb21tYW5kCiAgKi8KICAgICAgICBtb3ZiICAgICQweDMsJWFsICAgICAgICAgICAgICAgICAvKiBMb2FkIG1vZGUgcmVnaXN0ZXIgY21kICovCgltb3ZiICAgICAlYWwsICglZWRpKQoJbW92dyAgICAgJWF4LCAoJWVzaSkKCiAvKgogICogaXNzdWUgOCBtb3JlIGF1dG8gcmVmcmVzaGVzIHRvIGFsbCBiYW5rcyAKICAqLyAKICAgICAgICBtb3ZiICAgICQweDQsJWFsICAgICAgICAgICAgICAgICAvKiBBdXRvIHJlZnJlc2ggY21kICovCgltb3ZiICAgICAlYWwsICglZWRpKQogICAgICAgIG1vdncgICAgJDgsJWN4CnJlZnJlc2gyOiAKCW1vdncgICAgICVheCwgKCVlc2kpCiAgICAgICAgbG9vcCAgICByZWZyZXNoMgoKIC8qCiAgKiBzZXQgY29udHJvbCByZWdpc3RlciB0byBOT1JNQUwgbW9kZSAKICAqLwogICAgICAgIG1vdmIgICAgJDB4MCwlYWwgICAgICAgICAgICAgICAgIC8qIE5vcm1hbCBtb2RlIHZhbHVlICovCgltb3ZiICAgICAlYWwsICglZWRpKQoKIC8qCiAgKiBzaXplIGRyYW0gc3RhcnRpbmcgd2l0aCBleHRlcm5hbCBiYW5rIDMgbW92aW5nIHRvIGV4dGVybmFsIGJhbmsgMAogICovCiAgICAgICAgbW92bCAgICAkMHgzLCVlY3ggICAgICAgICAgICAgICAgLyogc3RhcnQgd2l0aCBleHRlcm5hbCBiYW5rIDMgKi8KCm5leHRiYW5rOiAKCiAvKgogICogd3JpdGUgY29sIDExIHdyYXAgYWRyCiAgKi8KICAgICAgICBtb3ZsICAgICRDT0wxMV9BRFIsICVlc2kgICAgICAgICAvKiBzZXQgYWRkcmVzcyB0byBtYXggY29sICgxMSkgd3JhcCBhZGRyICovCiAgICAgICAgbW92bCAgICAkQ09MMTFfREFUQSwgJWVheCAgICAgICAgLyogcGF0dGVybiBmb3IgbWF4IHN1cHBvcnRlZCBjb2x1bW5zKDExKSAqLwoJbW92bCAgICAlZWF4LCAoJWVzaSkgICAgICAgICAgICAgLyogd3JpdGUgbWF4IGNvbCBwYXR0ZXJuIGF0IG1heCBjb2wgYWRyICovCgltb3ZsICAgICglZXNpKSwgJWVieCAgICAgICAgICAgICAvKiBvcHRpb25hbCByZWFkICovCiAgICAgICAgY21wbCAgICAlZWJ4LCVlYXggICAgICAgICAgICAgICAgLyogdG8gdmVyaWZ5IHdyaXRlICovCiAgICAgICAgam56ICAgICBiYWRfcmFtICAgICAgICAgICAgICAgICAgLyogdGhpcyByYW0gaXMgYmFkICovCiAvKgogICogd3JpdGUgY29sIDEwIHdyYXAgYWRyCiAgKi8KCiAgICAgICAgbW92bCAgICAkQ09MMTBfQURSLCAlZXNpICAgICAgICAgLyogc2V0IGFkZHJlc3MgdG8gMTAgY29sIHdyYXAgYWRkcmVzcyAqLwogICAgICAgIG1vdmwgICAgJENPTDEwX0RBVEEsICVlYXggICAgICAgIC8qIHBhdHRlcm4gZm9yIDEwIGNvbCB3cmFwICovCgltb3ZsICAgICVlYXgsICglZXNpKSAgICAgICAgICAgICAvKiB3cml0ZSAxMCBjb2wgcGF0dGVybiBAIDEwIGNvbCB3cmFwIGFkciAqLwoJbW92bCAgICAoJWVzaSksICVlYnggICAgICAgICAgICAgLyogb3B0aW9uYWwgcmVhZCAqLwogICAgICAgIGNtcGwgICAgJWVieCwlZWF4ICAgICAgICAgICAgICAgIC8qIHRvIHZlcmlmeSB3cml0ZSAqLwogICAgICAgIGpueiAgICAgYmFkX3JhbSAgICAgICAgICAgICAgICAgIC8qIHRoaXMgcmFtIGlzIGJhZCAqLwogLyoKICAqIHdyaXRlIGNvbCA5IHdyYXAgYWRyCiAgKi8KICAgICAgICBtb3ZsICAgICRDT0wwOV9BRFIsICVlc2kgICAgICAgICAvKiBzZXQgYWRkcmVzcyB0byA5IGNvbCB3cmFwIGFkZHJlc3MgKi8KICAgICAgICBtb3ZsICAgICRDT0wwOV9EQVRBLCAlZWF4ICAgICAgICAvKiBwYXR0ZXJuIGZvciA5IGNvbCB3cmFwICovCgltb3ZsICAgICVlYXgsICglZXNpKSAgICAgICAgICAgICAvKiB3cml0ZSA5IGNvbCBwYXR0ZXJuIEAgOSBjb2wgd3JhcCBhZHIgKi8KCW1vdmwgICAgKCVlc2kpLCAlZWJ4ICAgICAgICAgICAgIC8qIG9wdGlvbmFsIHJlYWQgKi8KICAgICAgICBjbXBsICAgICVlYngsJWVheCAgICAgICAgICAgICAgICAvKiB0byB2ZXJpZnkgd3JpdGUgKi8KICAgICAgICBqbnogICAgIGJhZF9yYW0gICAgICAgICAgICAgICAgICAvKiB0aGlzIHJhbSBpcyBiYWQgKi8KIC8qCiAgKiB3cml0ZSBjb2wgOCB3cmFwIGFkcgogICovCiAgICAgICAgbW92bCAgICAkQ09MMDhfQURSLCAlZXNpICAgICAgICAgLyogc2V0IGFkZHJlc3MgdG8gbWluKDgpIGNvbCB3cmFwIGFkZHJlc3MgKi8KICAgICAgICBtb3ZsICAgICRDT0wwOF9EQVRBLCAlZWF4ICAgICAgICAvKiBwYXR0ZXJuIGZvciBtaW4gKDgpIGNvbCB3cmFwICovCgltb3ZsICAgICVlYXgsICglZXNpKSAgICAgICAgICAgICAvKiB3cml0ZSBtaW4gY29sIHBhdHRlcm4gQCBtaW4gY29sIGFkciAqLwoJbW92bCAgICAoJWVzaSksICVlYnggICAgICAgICAgICAgLyogb3B0aW9uYWwgcmVhZCAqLwogICAgICAgIGNtcGwgICAgJWVieCwlZWF4ICAgICAgICAgICAgICAgIC8qIHRvIHZlcmlmeSB3cml0ZSAqLwogICAgICAgIGpueiAgICAgYmFkX3JhbSAgICAgICAgICAgICAgICAgIC8qIHRoaXMgcmFtIGlzIGJhZCAqLwogLyoKICAqIHdyaXRlIHJvdyAxNCB3cmFwIGFkcgogICovCiAgICAgICAgbW92bCAgICAkUk9XMTRfQURSLCAlZXNpICAgICAgICAgLyogc2V0IGFkZHJlc3MgdG8gbWF4IHJvdyAoMTQpIHdyYXAgYWRkciAqLwogICAgICAgIG1vdmwgICAgJFJPVzE0X0RBVEEsICVlYXggICAgICAgIC8qIHBhdHRlcm4gZm9yIG1heCBzdXBwb3J0ZWQgcm93cygxNCkgKi8KCW1vdmwgICAgJWVheCwgKCVlc2kpICAgICAgICAgICAgIC8qIHdyaXRlIG1heCByb3cgcGF0dGVybiBhdCBtYXggcm93IGFkciAqLwoJbW92bCAgICAoJWVzaSksICVlYnggICAgICAgICAgICAgLyogb3B0aW9uYWwgcmVhZCAqLwogICAgICAgIGNtcGwgICAgJWVieCwlZWF4ICAgICAgICAgICAgICAgIC8qIHRvIHZlcmlmeSB3cml0ZSAqLwogICAgICAgIGpueiAgICAgYmFkX3JhbSAgICAgICAgICAgICAgICAgIC8qIHRoaXMgcmFtIGlzIGJhZCAqLwogLyoKICAqIHdyaXRlIHJvdyAxMyB3cmFwIGFkcgogICovCiAgICAgICAgbW92bCAgICAkUk9XMTNfQURSLCAlZXNpICAgICAgICAgLyogc2V0IGFkZHJlc3MgdG8gMTMgcm93IHdyYXAgYWRkcmVzcyAqLwogICAgICAgIG1vdmwgICAgJFJPVzEzX0RBVEEsICVlYXggICAgICAgIC8qIHBhdHRlcm4gZm9yIDEzIHJvdyB3cmFwICovCgltb3ZsICAgICVlYXgsICglZXNpKSAgICAgICAgICAgICAvKiB3cml0ZSAxMyByb3cgcGF0dGVybiBAIDEzIHJvdyB3cmFwIGFkciAqLwoJbW92bCAgICAoJWVzaSksICVlYnggICAgICAgICAgICAgLyogb3B0aW9uYWwgcmVhZCAqLwogICAgICAgIGNtcGwgICAgJWVieCwlZWF4ICAgICAgICAgICAgICAgIC8qIHRvIHZlcmlmeSB3cml0ZSAqLwogICAgICAgIGpueiAgICAgYmFkX3JhbSAgICAgICAgICAgICAgICAgIC8qIHRoaXMgcmFtIGlzIGJhZCAqLwogLyoKICAqIHdyaXRlIHJvdyAxMiB3cmFwIGFkcgogICovCiAgICAgICAgbW92bCAgICAkUk9XMTJfQURSLCAlZXNpICAgICAgICAgLyogc2V0IGFkZHJlc3MgdG8gMTIgcm93IHdyYXAgYWRkcmVzcyAqLwogICAgICAgIG1vdmwgICAgJFJPVzEyX0RBVEEsICVlYXggICAgICAgIC8qIHBhdHRlcm4gZm9yIDEyIHJvdyB3cmFwICovCgltb3ZsICAgICVlYXgsICglZXNpKSAgICAgICAgICAgICAvKiB3cml0ZSAxMiByb3cgcGF0dGVybiBAIDEyIHJvdyB3cmFwIGFkciAqLwoJbW92bCAgICAoJWVzaSksICVlYnggICAgICAgICAgICAgLyogb3B0aW9uYWwgcmVhZCAqLwogICAgICAgIGNtcGwgICAgJWVieCwlZWF4ICAgICAgICAgICAgICAgIC8qIHRvIHZlcmlmeSB3cml0ZSAqLwogICAgICAgIGpueiAgICAgYmFkX3JhbSAgICAgICAgICAgICAgICAgIC8qIHRoaXMgcmFtIGlzIGJhZCAqLwogLyoKICAqIHdyaXRlIHJvdyAxMSB3cmFwIGFkcgogICovCiAgICAgICAgbW92bCAgICAkUk9XMTFfQURSLCAlZWRpICAgICAgICAgLyogc2V0IGFkZHJlc3MgdG8gMTEgcm93IHdyYXAgYWRkcmVzcyAqLwogICAgICAgIG1vdmwgICAgJFJPVzExX0RBVEEsICVlYXggICAgICAgIC8qIHBhdHRlcm4gZm9yIDExIHJvdyB3cmFwICovCgltb3ZsICAgICVlYXgsICglZWRpKSAgICAgICAgICAgICAvKiB3cml0ZSAxMSByb3cgcGF0dGVybiBAIDExIHJvdyB3cmFwIGFkciAqLwoJbW92bCAgICAoJWVkaSksICVlYnggICAgICAgICAgICAgLyogb3B0aW9uYWwgcmVhZCAqLwogICAgICAgIGNtcGwgICAgJWVieCwlZWF4ICAgICAgICAgICAgICAgIC8qIHRvIHZlcmlmeSB3cml0ZSAqLwogICAgICAgIGpueiAgICAgYmFkX3JhbSAgICAgICAgICAgICAgICAgIC8qIHRoaXMgcmFtIGlzIGJhZCAqLwogLyoKICAqIHdyaXRlIHJvdyAxMCB3cmFwIGFkciAtLS0gdGhpcyB3cml0ZSBpcyByZWFsbHkgdG8gZGV0ZXJtaW5lIG51bWJlciBvZiBiYW5rcwogICovCiAgICAgICAgbW92bCAgICAkUk9XMTBfQURSLCAlZWRpICAgICAgICAgLyogc2V0IGFkZHJlc3MgdG8gMTAgcm93IHdyYXAgYWRkcmVzcyAqLwogICAgICAgIG1vdmwgICAgJFJPVzEwX0RBVEEsICVlYXggICAgICAgIC8qIHBhdHRlcm4gZm9yIDEwIHJvdyB3cmFwIChBQSkgKi8KCW1vdmwgICAgJWVheCwgKCVlZGkpICAgICAgICAgICAgIC8qIHdyaXRlIDEwIHJvdyBwYXR0ZXJuIEAgMTAgcm93IHdyYXAgYWRyICovCgltb3ZsICAgICglZWRpKSwgJWVieCAgICAgICAgICAgICAvKiBvcHRpb25hbCByZWFkICovCiAgICAgICAgY21wbCAgICAlZWJ4LCVlYXggICAgICAgICAgICAgICAgLyogdG8gdmVyaWZ5IHdyaXRlICovCiAgICAgICAgam56ICAgICBiYWRfcmFtICAgICAgICAgICAgICAgICAgLyogdGhpcyByYW0gaXMgYmFkICovCiAvKgogICogcmVhZCBkYXRhIEAgcm93IDEyIHdyYXAgYWRyIHRvIGRldGVybWluZSAgKiBiYW5rcywgCiAgKiBhbmQgcmVhZCBkYXRhIEAgcm93IDE0IHdyYXAgYWRyIHRvIGRldGVybWluZSAgKiByb3dzLgogICogaWYgZGF0YSBAIHJvdyAxMiB3cmFwIGFkciBpcyBub3QgQUEsIDExIG9yIDEyIHdlIGhhdmUgYmFkIFJBTS4KICAqIGlmIGRhdGEgQCByb3cgMTIgd3JhcCA9PSBBQSwgd2Ugb25seSBoYXZlIDIgYmFua3MsIE5PVCA0IAogICogaWYgZGF0YSBAIHJvdyAxMiB3cmFwID09IDExIG9yIDEyLCB3ZSBoYXZlIDQgYmFua3MsCiAgKi8KICAgICAgICB4b3J3ICAgICVkaSwlZGkgICAgICAgICAgICAgICAgICAvKiB2YWx1ZSBmb3IgMiBiYW5rcyBpbiBESSAqLwoJbW92bCAgICAoJWVzaSksICVlYnggICAgICAgICAgICAgLyogcmVhZCBmcm9tIDEyIHJvdyB3cmFwIHRvIGNoZWNrIGJhbmtzIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIChlc2kgaXMgc2V0dXAgZnJvbSB0aGUgd3JpdGUgdG8gcm93IDEyIHdyYXApICovCiAgICAgICAgY21wbCAgICAlZWJ4LCVlYXggICAgICAgICAgICAgICAgLyogY2hlY2sgZm9yIEFBIHBhdHRlcm4gIChlYXggaG9sZHMgdGhlIGFhIHBhdHRlcm4pICovCiAgICAgICAganogICAgICBvbmx5MiAgICAgICAgICAgICAgICAgICAgLyogaWYgcGF0dGVybiA9PSBBQSwgd2Ugb25seSBoYXZlIDIgYmFua3MgKi8KCgkvKiA0IGJhbmtzICovCgkKICAgICAgICBtb3Z3ICAgICQ4LCVkaSAgICAgICAgICAgICAgICAgICAvKiB2YWx1ZSBmb3IgNCBiYW5rcyBpbiBESSAoQk5LX0NOVCBiaXQpICovCiAgICAgICAgY21wbCAgICAkUk9XMTFfREFUQSwgJWVieCAgICAgICAgLyogb25seSBvdGhlciBsZWdpdGltYXRlIHZhbHVlcyBhcmUgMTEgKi8KICAgICAgICBqeiAgICAgIG9ubHkyCiAgICAgICAgY21wbCAgICAkUk9XMTJfREFUQSwgJWVieCAgICAgICAgLyogYW5kIDEyICovCiAgICAgICAgam56ICAgICBiYWRfcmFtICAgICAgICAgICAgICAgICAgLyogaXRzIGJhZCBpZiBub3QgMTEgb3IgMTIhICovCgkKCS8qIGZhbGwgdGhyb3VnaCAqLwpvbmx5MjogCiAvKgogICogdmFsaWRhdGUgcm93IG1hc2sKICAqLwogICAgICAgIG1vdmwgICAgJFJPVzE0X0FEUiwgJWVzaSAgICAgICAgIC8qIHNldCBhZGRyZXNzIGJhY2sgdG8gbWF4IHJvdyB3cmFwIGFkZHIgKi8KCW1vdmwgICAgKCVlc2kpLCAlZWF4ICAgICAgICAgICAgIC8qIHJlYWQgYWN0dWFsIG51bWJlciBvZiByb3dzIEAgcm93MTQgYWRyICovCgogICAgICAgIGNtcGwgICAgJFJPVzExX0RBVEEsICVlYXggICAgICAgIC8qIHJvdyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxMSBwYXR0ZXJuICovCiAgICAgICAgamIgICAgICBiYWRfcmFtCgogICAgICAgIGNtcGwgICAgJFJPVzE0X0RBVEEsICVlYXggICAgICAgIC8qIGFuZCByb3cgbXVzdCBiZSBsZXNzIHRoYW4gMTQgcGF0dGVybiAqLwogICAgICAgIGphICAgICAgYmFkX3JhbQoKICAgICAgICBjbXBiICAgICVhaCwlYWwgICAgICAgICAgICAgICAgICAvKiB2ZXJpZnkgYWxsIDQgYnl0ZXMgb2YgZHdvcmQgc2FtZSAqLwogICAgICAgIGpueiAgICAgYmFkX3JhbQogICAgICAgIG1vdmwgICAgJWVheCwlZWJ4CiAgICAgICAgc2hybCAgICAkMTYsJWVieAogICAgICAgIGNtcHcgICAgJWJ4LCVheAogICAgICAgIGpueiAgICAgYmFkX3JhbQogLyoKICAqIHJlYWQgY29sIDExIHdyYXAgYWRyIGZvciByZWFsIGNvbHVtbiBkYXRhIHZhbHVlCiAgKi8KICAgICAgICBtb3ZsICAgICRDT0wxMV9BRFIsICVlc2kgICAgICAgICAvKiBzZXQgYWRkcmVzcyB0byBtYXggY29sICgxMSkgd3JhcCBhZGRyICovCgltb3ZsICAgICglZXNpKSwgJWVheCAgICAgICAgICAgICAvKiByZWFkIHJlYWwgY29sIG51bWJlciBhdCBtYXggY29sIGFkciAqLwogLyoKICAqIHZhbGlkYXRlIGNvbHVtbiBkYXRhCiAgKi8KICAgICAgICBjbXBsICAgICRDT0wwOF9EQVRBLCAlZWF4ICAgICAgICAvKiBjb2wgbXVzdCBiZSBncmVhdGVyIHRoYW4gOCBwYXR0ZXJuICovCiAgICAgICAgamIgICAgICBiYWRfcmFtCgogICAgICAgIGNtcGwgICAgJENPTDExX0RBVEEsICVlYXggICAgICAgIC8qIGFuZCByb3cgbXVzdCBiZSBsZXNzIHRoYW4gMTEgcGF0dGVybiAqLwogICAgICAgIGphICAgICAgYmFkX3JhbQoKICAgICAgICBzdWJsICAgICRDT0wwOF9EQVRBLCAlZWF4ICAgICAgICAvKiBub3JtYWxpemUgY29sdW1uIGRhdGEgdG8gemVybyAqLwogICAgICAgIGpjICAgICAgYmFkX3JhbQogICAgICAgIGNtcGIgICAgJWFoLCVhbCAgICAgICAgICAgICAgICAgIC8qIHZlcmlmeSBhbGwgNCBieXRlcyBvZiBkd29yZCBlcXVhbCAqLwogICAgICAgIGpueiAgICAgYmFkX3JhbQogICAgICAgIG1vdmwgICAgJWVheCwlZWR4CiAgICAgICAgc2hybCAgICAkMTYsJWVkeAogICAgICAgIGNtcHcgICAgJWR4LCVheAogICAgICAgIGpueiAgICAgYmFkX3JhbQogLyoKICAqIG1lcmdlIGJhbmsgYW5kIGNvbCBkYXRhIHRvZ2V0aGVyCiAgKi8KICAgICAgICBhZGR3ICAgICVkaSwlZHggICAgICAgICAgICAgICAgICAvKiBtZXJnZSBvZiBiYW5rIGFuZCBjb2wgaW5mbyBpbiBkbCAqLwogLyoKICAqIGZpeCBlbmRpbmcgYWRkciBtYXNrIGJhc2VkIHVwb24gY29sIGluZm8KICAqLwogICAgICAgIG1vdmIgICAgJDMsJWFsCiAgICAgICAgc3ViYiAgICAlZGgsJWFsICAgICAgICAgICAgICAgICAgLyogZGggY29udGFpbnMgdGhlIG92ZXJmbG93IGZyb20gdGhlIGJhbmsvY29sIG1lcmdlICAqLwogICAgICAgIG1vdmIgICAgJWJsLCVkaCAgICAgICAgICAgICAgICAgIC8qIGJsIGNvbnRhaW5zIHRoZSByb3cgbWFzayAoYWEsIDA3LCAwZiwgMWYgb3IgM2YpICovCiAgICAgICAgeGNoZ3cgICAlY3gsJWF4ICAgICAgICAgICAgICAgICAgLyogY3ggPSBheCA9IDMgb3IgMiBkZXBlbmRpbmcgb24gMiBvciA0IGJhbmsgZGV2aWNlICovCiAgICAgICAgc2hyYiAgICAlY2wsJWRoCSAgICAgICAgICAgICAgICAgLyogICovCiAgICAgICAgaW5jYiAgICAlZGggICAgICAgICAgICAgICAgICAgICAgLyogZW5kaW5nIGFkZHIgaXMgMSBncmVhdGVyIHRoYW4gcmVhbCBlbmQgKi8KICAgICAgICB4Y2hndyAgICVjeCwlYXggICAgICAgICAgICAgICAgICAvKiBjeCBpcyBiYW5rIG51bWJlciBhZ2FpbiAqLwogLyoKICAqIGlzc3VlIGFsbCBiYW5rcyBwcmVjaGFyZ2UKICAqLwpiYWRfcmVpbnQ6IAogICAgICAgIG1vdmwgICAgJERSQ0NUTCwgJWVzaSAgICAgICAgICAgIC8qIHNldHVwIERSQU0gY29udHJvbCByZWdpc3RlciB3aXRoICovCiAgICAgICAgbW92YiAgICAkMHgyLCVhbCAgICAgICAgICAgICAgICAgLyogQWxsIGJhbmtzIHByZWNoYXJnZSAqLwoJbW92YiAgICAgJWFsLCAoJWVzaSkKICAgICAgICBtb3ZsICAgICRDQUNIRUxJTkVTWiwgJWVzaSAgICAgICAvKiBhZGRyZXNzIHRvIGluaXQgcmVhZCBidWZmZXIgKi8KCW1vdncgICAgICVheCwgKCVlc2kpCgogLyoKICAqIHVwZGF0ZSBFTkRJTkcgQUREUkVTUyBSRUdJU1RFUgogICovCiAgICAgICAgbW92bCAgICAkRFJDQkVOREFEUiwgJWVkaSAgICAgICAgLyogRFJBTSBlbmRpbmcgYWRkcmVzcyByZWdpc3RlciAqLwogICAgICAgIG1vdmwgICAgJWVjeCwlZWJ4CglhZGRsCSVlYngsICVlZGkKCW1vdmIgICAgJWRoLCAoJWVkaSkKIC8qCiAgKiB1cGRhdGUgQ09ORklHIFJFR0lTVEVSCiAgKi8KICAgICAgICB4b3JiICAgICVkaCwlZGgKICAgICAgICBtb3Z3ICAgICQweDAwZiwlYngKICAgICAgICBtb3Z3ICAgICVjeCwlYXgKICAgICAgICBzaGx3ICAgICQyLCVheAogICAgICAgIHhjaGd3ICAgJWN4LCVheAogICAgICAgIHNobHcgICAgJWNsLCVkeAogICAgICAgIHNobHcgICAgJWNsLCVieAogICAgICAgIG5vdHcgICAgJWJ4CiAgICAgICAgeGNoZ3cgICAlY3gsJWF4CiAgICAgICAgbW92bCAgICAkRFJDQ0ZHLCAlZWRpCgltb3YgICAgICglZWRpKSwgJWF4CiAgICAgICAgYW5kdyAgICAlYngsJWF4CiAgICAgICAgb3J3ICAgICAlZHgsJWF4Cgltb3Z3ICAgICVheCwgKCVlZGkpCiAgICAgICAgamN4eiAgICBjbGVhbnVwCgogICAgICAgIGRlY3cgICAgJWN4CiAgICAgICAgbW92bCAgICAlZWN4LCVlYngKICAgICAgICBtb3ZsICAgICREUkNCRU5EQURSLCAlZWRpICAgICAgICAvKiBEUkFNIGVuZGluZyBhZGRyZXNzIHJlZ2lzdGVyICovCiAgICAgICAgbW92YiAgICAkMHhmZiwlYWwKCWFkZGwJJWVieCwgJWVkaQoJbW92YiAgICAlYWwsICglZWRpKQogLyoKICAqIHNldCBjb250cm9sIHJlZ2lzdGVyIHRvIE5PUk1BTCBtb2RlIAogICovCiAgICAgICAgbW92bCAgICAkRFJDQ1RMLCAlZXNpICAgICAgICAgICAgLyogc2V0dXAgRFJBTSBjb250cm9sIHJlZ2lzdGVyIHdpdGggKi8KICAgICAgICBtb3ZiICAgICQweDAsJWFsICAgICAgICAgICAgICAgICAvKiBOb3JtYWwgbW9kZSB2YWx1ZSAqLwoJbW92YiAgICAlYWwsICglZXNpKQogICAgICAgIG1vdmwgICAgJENBQ0hFTElORVNaLCAlZXNpICAgICAgIC8qIGFkZHJlc3MgdG8gaW5pdCByZWFkIGJ1ZmZlciAqLwoJbW92dyAgICAlYXgsICglZXNpKQogICAgICAgIGptcCAgICAgbmV4dGJhbmsKCmNsZWFudXA6IAogICAgICAgIG1vdmwgICAgJERSQ0JFTkRBRFIsICVlZGkgICAgICAgIC8qIERSQU0gZW5kaW5nIGFkZHJlc3MgcmVnaXN0ZXIgICovCiAgICAgICAgbW92dyAgICAkNCwlY3gKICAgICAgICB4b3J3ICAgICVheCwlYXgKY2xlYW51cGxwOiAKCW1vdmIgICAoJWVkaSksICVhbAogICAgICAgIG9yYiAgICAgJWFsLCVhbAogICAgICAgIGp6ICAgICAgZW1wdHliYW5rCgogICAgICAgIGFkZGIgICAgJWFoLCVhbAogICAgICAgIGpucyAgICAgbm90dG9vbXVjaAoKICAgICAgICBtb3ZiICAgICQweDdmLCVhbApub3R0b29tdWNoOiAKICAgICAgICBtb3ZiICAgICVhbCwlYWgKICAgICAgICBvcmIgICAgICQweDgwLCVhbAoJbW92YiAgICAlYWwsICglZWRpKQplbXB0eWJhbms6IAogICAgICAgIGluY2wgICAgJWVkaQogICAgICAgIGxvb3AgICAgY2xlYW51cGxwCgojaWYgZGVmaW5lZChDRkdfU0RSQU1fQ0FTX0xBVEVOQ1lfMlQpIHx8IGRlZmluZWQoQ0ZHX1NEUkFNX0NBU19MQVRFTkNZXzNUKQoJLyogc2V0IHRoZSBDQVMgbGF0ZW5jeSBub3cgc2luY2UgaXQgaXMgaGFyZCB0byBkbwoJICogd2hlbiB3ZSBydW4gZnJvbSB0aGUgUkFNICovCgltb3ZsICAgICREUkNUTUNUTCwgJWVkaSAgICAgICAgICAvKiBEUkFNIHRpbWluZyByZWdpc3RlciAqLwoJbW92YiAgICAoJWVkaSksICVhbAkKI2lmZGVmIENGR19TRFJBTV9DQVNfTEFURU5DWV8yVAoJYW5kYiAgICAkMHhlZiwgJWFsCiNlbmRpZgojaWZkZWYgQ0ZHX1NEUkFNX0NBU19MQVRFTkNZXzNUCglvcmIgICAgICQweDEwLCAlYWwKI2VuZGlmCSAKCW1vdmIgICAgJWFsLCAoJWVkaSkKI2VuZGlmCiAgICAgICAgbW92bCAgICAkRFJDQ1RMLCAlZWRpICAgICAgICAgICAgLyogRFJBTSBDb250cm9sIHJlZ2lzdGVyICovCiAgICAgICAgbW92YiAgICAkMHgzLCVhbCAgICAgICAgICAgICAgICAgLyogTG9hZCBtb2RlIHJlZ2lzdGVyIGNtZCAqLwoJbW92YiAgICAgJWFsLCAoJWVkaSkKCW1vdncgICAgICVheCwgKCVlc2kpCgoKICAgICAgICBtb3ZsICAgICREUkNDVEwsICVlZGkgICAgICAgICAgICAvKiBEUkFNIENvbnRyb2wgcmVnaXN0ZXIgKi8KICAgICAgICBtb3ZiICAgICQweDE4LCVhbCAgICAgICAgICAgICAgICAvKiAgRW5hYmxlIHJlZnJlc2ggYW5kIE5PUk1BTCBtb2RlICovCgltb3ZiICAgICVhbCwgKCVlZGkpCgogICAgICAgIGptcCAgICAgZHJhbV9kb25lCgpiYWRfcmFtOiAKICAgICAgICB4b3JsICAgICVlZHgsJWVkeAogICAgICAgIHhvcmwgICAgJWVkaSwlZWRpCiAgICAgICAgam1wICAgICBiYWRfcmVpbnQKCmRyYW1fZG9uZTogCgkKCS8qIHJlYWRiYWNrIERSQ0JFTkRBRFIgYW5kIHJldHVybiB0aGUgbnVtYmVyCgkgKiBvZiBhdmFpbGFibGUgcmFtIGJ5dGVzIGluICVlYXggKi8gCgogICAgICAgIG1vdmwgICAgJERSQ0JFTkRBRFIsICVlZGkgICAgICAgIC8qIERSQU0gZW5kaW5nIGFkZHJlc3MgcmVnaXN0ZXIgICovCgkKCW1vdmwJKCVlZGkpLCAlZWF4Cgltb3ZsCSVlYXgsICVlY3gKCWFuZGwJJDB4ODAwMDAwMDAsICVlY3gKCWp6CWJhbmsyCglhbmRsCSQweDdmMDAwMDAwLCAlZWF4CglzaHJsCSQyLCAlZWF4IAoJbW92bAklZWF4LCAlZWJ4CgpiYW5rMjogCW1vdmwJKCVlZGkpLCAlZWF4Cgltb3ZsCSVlYXgsICVlY3gKCWFuZGwJJDB4MDA4MDAwMDAsICVlY3gKCWp6CWJhbmsxCglhbmRsCSQweDAwN2YwMDAwLCAlZWF4CglzaGxsCSQ2LCAlZWF4IAoJbW92bAklZWF4LCAlZWJ4CgpiYW5rMTogCW1vdmwJKCVlZGkpLCAlZWF4Cgltb3ZsCSVlYXgsICVlY3gKCWFuZGwJJDB4MDAwMDgwMDAsICVlY3gKCWp6CWJhbmswCglhbmRsCSQweDAwMDA3ZjAwLCAlZWF4CglzaGxsCSQxNCwgJWVheCAKCW1vdmwJJWVheCwgJWVieAoKYmFuazA6IAltb3ZsCSglZWRpKSwgJWVheAoJbW92bAklZWF4LCAlZWN4CglhbmRsCSQweDAwMDAwMDgwLCAlZWN4Cglqeglkb25lCglhbmRsCSQweDAwMDAwMDdmLCAlZWF4CglzaGxsCSQyMiwgJWVheCAKCW1vdmwJJWVheCwgJWVieAoKZG9uZToJbW92bAklZWJ4LCAlZWF4CgoJam1wCSolZWJwCgoKI2VuZGlmIC8qIENPTkZJR19TQzUyMCAqLwo=