[1] "/Users/jornbrouwer/Onedrive/Programeren/the_big_five/thebigfive/RScript/SpaandersBV_dataset_2"
[1] 7488000
[1] "260d 0H 0M 0S"

Simulatie informatie

1.0 Logbestand: logfile-v16-1

1.1 aantal gemaakte budget-tafels: 16653

1.2 aantal gemaakte luxe-tafels: 1800

1.3 Gesimuleerde tijd: 260d 0H 0M 27S

1.4 aantal reparaties: 7

1.5 Aantal keer dat machines zijn omgesteld tussen luxe- en budgettafels: 12

1.6 verloren budget items 8457

1.6 verloren luxe items 16811



Productielijnen

Budget-bladen

  • Rendered time period is: 260d 0H 0M 0S

Machine 1 - (Hout) zaagmachine


Machine 4 - Voorboormachine


Machine 5 - Schuurmachine


Machine 6 - Verfmachine


Budget-poten

  • Rendered time period is: 260d 0H 0M 0S

Machine 7 - IJzerzaag-machine


Machine 9 - Lasmachine


Machine 10 - Poedercoat-machine


Luxe-bladen

Render time

  • Rendered time period is: 260d 0H 0M 0S

Machine 1 - (Hout) zaagmachine

Machine 2 - (Hout) lijmmachine

Machine 3 - (Hout) Freezemachine

Machine 4 - (Hout) Voorboormachine

Machine 5 - (Hout) Schuurmachine

Machine 6 - (Hout) Verfmachine

Luxe-poten

  • Rendered time period is: 260d 0H 0M 0S

Machine 7 - IJzerzaag-machine

Machine 8 - (IJzer) buigmachine

Machine 9 - Lasmachine

Machine 11 - polijstmachine


LS0tCnRpdGxlOiAiU2ltdWxhdGlvbiBSZXBvcnQiCmF1dGhvcjogIlNwYWFuZGVycyBCLlYuIgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2sKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KIyAxLjEgTG9hZCBsaWJyYXJpZXMKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKbGlicmFyeShyZWFkcikKbGlicmFyeShkcGx5cikgIyBMaWJyYXJ5IGZvciBmaWx0ZXJpbmcgZGF0YQpsaWJyYXJ5KGx1YnJpZGF0ZSkgIyBMaWJyYXJ5IGZvciBjb252ZXJ0aW5nIHRpbWVzdGFtcHMgKHNlY29uZHMgaW4gb3VyIGNhc2UpIHRvIGZvcm1hdHRlZCBkYXRldGltZXMKbGlicmFyeSh0aWR5cikgIyBsaWJyYXJ5IGZvciBlZmZlY3RpdmUgZGF0YSBzaGFwaW5nCmxpYnJhcnkoZ2dwbG90MikgIyBsaWJyYXJ5IGZvciBlZmZlY3RpdmUgZGF0YSBzaGFwaW5nCmxpYnJhcnkoc2hpbnkpCmxpYnJhcnkoZ3JpZCkKbGlicmFyeShncmlkRXh0cmEpCmBgYAoKCmBgYHtyIGVjaG89RkFMU0V9CiMgLjIgU2V0IFdvcmtpbmcgRGlyZWN0b3J5CiNzZXR3ZCgifi9PbmVkcml2ZS9Qcm9ncmFtZXJlbi90aGVfYmlnX2ZpdmUvdGhlYmlnZml2ZS9SU2NyaXB0LyIpCiNwcmludChnZXR3ZCkKcHJpbnQoZ2V0d2QoKSkKIyBsb2dmaWxlIDwtIHJlYWQuY3N2KCJMb2dGaWxlcy9sb2dmaWxlLTE2LTAxLmNzdiIsIGhlYWRlciA9IFRSVUUsIHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkgIyBSZWFkIGxvZyBmaWxlCiMgbG9nZmlsZSA8LSByZWFkLmNzdigifi9Vc2Vycy9qb3JuYnJvdXdlci9PbmVkcml2ZS9Qcm9ncmFtZXJlbi90aGVfYmlnX2ZpdmUvdGhlYmlnZml2ZS9SU2NyaXB0L0xvZ0ZpbGVzL2xvZ2ZpbGUtMTctMDEuY3N2IiwgaGVhZGVyID0gVFJVRSwgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKSAjIFJlYWQgbG9nIGZpbGUKIyBsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9TcGFhbmRlcnNCVl8xamFhcl9nb2Vka29wZU1hY2hpbmVzX29tc3RlbGxlbl8xX3dlZWsuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCiNsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9sb2dmaWxlLXYxX21pbmltYWxlX3Byb2R1Y3RpZS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKI2xvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjJfbWluaW1hbGVfcHJvZHVjdGllLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQojbG9nZmlsZSA8LSByZWFkLmNzdigiLi4vTG9nRmlsZXMvbG9nZmlsZS12Ml9taW5pbWFsZV9wcm9kdWN0aWUuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCiNsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9sb2dmaWxlLXYzX21pbmltYWxlX3Byb2R1Y3RpZS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKI2xvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjRfbWluaW1hbGVfcHJvZHVjdGllLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQojbG9nZmlsZSA8LSByZWFkLmNzdigiLi4vTG9nRmlsZXMvbG9nZmlsZS12NV9taW5pbWFsZV9wcm9kdWN0aWUuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCiNsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9sb2dmaWxlLXY2X21pbmltYWxlX3Byb2R1Y3RpZS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKI2xvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjdfbWluaW1hbGVfcHJvZHVjdGllLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQoKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKI1R3ZWVkZSBzaW11bGF0aWVyZWVrcwojbG9nZmlsZSA8LSByZWFkLmNzdigiLi4vTG9nRmlsZXMvbG9nZmlsZS12MTAtMS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKI2xvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjEwLTIuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCiNsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9sb2dmaWxlLXYxMC0zLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQojbG9nZmlsZSA8LSByZWFkLmNzdigiLi4vTG9nRmlsZXMvbG9nZmlsZS12MTEtMS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKI2xvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjExLTIuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCiNsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9sb2dmaWxlLXYxMS0zLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwojbG9nZmlsZSA8LSByZWFkLmNzdigiLi4vTG9nRmlsZXMvbG9nZmlsZS12MTItMS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkgI1RPRE8KI2xvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjEyLTIuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpICNUT0RPCiNsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9sb2dmaWxlLXYxMi0zLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKSAjVE9ETwojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwojbG9nZmlsZSA8LSByZWFkLmNzdigiLi4vTG9nRmlsZXMvbG9nZmlsZS12MTMtMS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKI2xvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjEzLTIuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCiNsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9sb2dmaWxlLXYxMy0zLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwojbG9nZmlsZSA8LSByZWFkLmNzdigiLi4vTG9nRmlsZXMvbG9nZmlsZS12MTQtMS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkjVE9ETwojbG9nZmlsZSA8LSByZWFkLmNzdigiLi4vTG9nRmlsZXMvbG9nZmlsZS12MTQtMi5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKI2xvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjE0LTMuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCiNsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9sb2dmaWxlLXYxNS0xLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKSAKI2xvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjE1LTIuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCiNsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9sb2dmaWxlLXYxNi0xLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwoKc2ltX25hbWUgPC0gYygibG9nZmlsZS12MTYtMSIpCiNwcmludChzaW1fbmFtZSkKdGltZXN0YW1wc19WIDwtIGMobG9nZmlsZSRUaW1lc3RhbXApCm1hY2hpbmVzX1YgPC0gYyhsb2dmaWxlJE1hY2hpbmVJRCkKc2VuZGVyX1YgPC0gYyhsb2dmaWxlJFNlbmRlcikKbWVzc2FnZXNfViA8LSBjKGxvZ2ZpbGUkTWVzc2FnZSkKaW5wdXRfViA8LSBjKGxvZ2ZpbGUkSW5wdXRCdWZmZXIpCm91dHB1dF9WIDwtIGMobG9nZmlsZSRPdXRwdXRCdWZmZXIpCndvcmtsb2FkX1YgPC0gYyhsb2dmaWxlJFdvcmtsb2FkKQppdGVtdHlwZV9WIDwtIGMobG9nZmlsZSRJdGVtVHlwZSkKYGBgCgpgYGB7ciBlY2hvPUZBTFNFfQpzb3VyY2UoIlBPU190aW1lX2NvbnZlcnRlci5SIikKCiMgc2hvd1RpbWUgPC0gKHJlbmRlclRpbWVbc2hvd3RpbWVdKSozCiMgcmVuZGVyaW5nVGltZSA8LSBzaG93VGltZQojIHByaW50KHJlbmRlclRpbWUpCiNwcmludChyZW5kZXJpbmdUaW1lKQpzaG93VGltZSA8LSBzZWNvbmRzX3RvX3BlcmlvZChyZW5kZXJpbmdUaW1lKjMpCnNob3dUaW1lIDwtIGFzLmNoYXJhY3Rlci5QT1NJWHQoc2hvd1RpbWUpCnByaW50KHNob3dUaW1lKQpgYGAKCmBgYHtyIGluY2x1ZGU9RkFMU0V9CiMgVGVzdCB0aW1lc3RhbXBzIGZvciBjb252ZXJ0aWUKI3ByaW50KHNlY29uZHNfdG9fcGVyaW9kKDI5OTUyMDAwKSkKI3ByaW50KHNlY29uZHNfdG9fcGVyaW9kKDc0ODgwMDAqMyo0KSkKI3ByaW50KHNlY29uZHNfdG9fcGVyaW9kKDg5ODU2MDAwKSkKYGBgCgoKYGBge3IgU2V0dXAsIGluY2x1ZGU9RkFMU0V9CnByaW50KGdldHdkKCkpCgpzb3VyY2UoIkluaXRpYWxpemUuUiIpCmBgYAoKYGBge3IgZWNobz1GQUxTRX0KI3ByaW50KHRhaWwobG9nZmlsZSwgbj0yMDApKQpmb290ZXIgPC0gdGFpbChsb2dmaWxlJE1hY2hpbmVJRCxuPTQpCm5HZXByb2R1Y2VlcmRlQnVkZ2V0VGFmZWxzIDwtIGZvb3RlclsxXQpuR2Vwcm9kdWNlZXJkZUx1eGVUYWZlbHMgPC0gZm9vdGVyWzJdCnZlcmxvcmVuTHV4ZSA8LSBmb290ZXJbM10KdmVybG9yZW5Hb2Vka29vcCA8LSBmb290ZXJbNF0KCiNwcmludCh0YWlsKGxvZ2ZpbGUpKQoKYGBgCgotLS0KCiMjIyBTaW11bGF0aWUgaW5mb3JtYXRpZQoKMS4wIExvZ2Jlc3RhbmQ6IF9fYHIgc2ltX25hbWVgX18KCjEuMSBhYW50YWwgZ2VtYWFrdGUgYnVkZ2V0LXRhZmVsczogX19gciBuR2Vwcm9kdWNlZXJkZUJ1ZGdldFRhZmVsc2BfXwoKMS4yICBhYW50YWwgZ2VtYWFrdGUgbHV4ZS10YWZlbHM6IF9fYHIgbkdlcHJvZHVjZWVyZGVMdXhlVGFmZWxzYF9fCgoxLjMgR2VzaW11bGVlcmRlIHRpamQ6IF9fYHIgZmluYWxTaW1UaW1lYF9fCgoxLjQgYWFudGFsIHJlcGFyYXRpZXM6IF9fYHIgbk1hY2hpbmVzQnJva2VuYF9fCgpgYGB7ciBlY2hvPUZBTFNFfQpuVGltZXNCcm9rZW4gPC0gZmlsdGVyKGxvZ2ZpbGUsIGxvZ2ZpbGUkTWVzc2FnZT09IlJFUEFJUiIpCm5UaW1lc3RhbXBzQnJva2VuIDwtIGFzLm51bWVyaWMoblRpbWVzQnJva2VuJFRpbWVzdGFtcCkKI3ByaW50KGhlYWQoblRpbWVzQnJva2VuKSkKaGlzdChzdW1tYXJ5KG5UaW1lc3RhbXBzQnJva2VuKSwgbWFpbj0icmVwYXJhdGlldGlqZHN0aXBwZW4iKQpgYGAKCjEuNSBBYW50YWwga2VlciBkYXQgbWFjaGluZXMgemlqbiBvbWdlc3RlbGQgdHVzc2VuIGx1eGUtIGVuIGJ1ZGdldHRhZmVsczogX19gciBtYWNoaW5lX2NvbmZpZ3NfVWBfXwoKYGBge3IgZWNobz1GQUxTRX0KblRpbWVzUmVjb25maWd1cmVkIDwtIGZpbHRlcihsb2dmaWxlLCBsb2dmaWxlJE1lc3NhZ2U9PSJDT05GSUciKQojcHJpbnQoaGVhZChuVGltZXNSZWNvbmZpZ3VyZWQpKQpgYGAKCjEuNiB2ZXJsb3JlbiBidWRnZXQgaXRlbXMgX19gciB2ZXJsb3JlbkdvZWRrb29wYF9fCgoxLjYgdmVybG9yZW4gbHV4ZSBpdGVtcyBfX2ByIHZlcmxvcmVuTHV4ZWBfXwoKCmBgYHtyIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9CgojIE0gPC0gc3Vic2V0KGxvZ2ZpbGUsIHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpCiMgICAgICAgICAgICAgLHN1YnNldD0odGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW3Nob3dUaW1lXSkpCiMgCiMgblRpbWVzUmVjb25maWd1cmVkIDwtIGZpbHRlcihNLCBNJE1lc3NhZ2U9PSJDT05GSUciKQojICNwcmludChoZWFkKG5UaW1lc1JlY29uZmlndXJlZCkpCiMgblRpbWVzUmVjb25maWd1cmVkIDwtIHVuaXF1ZShuVGltZXNSZWNvbmZpZ3VyZWQkVGltZXN0YW1wKQojIG5UaW1lc1JlY29uZmlndXJlZCA8LSBhcy5udW1lcmljKG5UaW1lc1JlY29uZmlndXJlZCkKIyBzdW1tYXJ5KG5UaW1lc1JlY29uZmlndXJlZCkKIyAKIyBwYXIobWZyb3cgPSBjKDEsIDIpKSAjIENyZWF0ZSBhIHggZ3JpZCBmb3IgZGlhZ3JhbXMKIyBoaXN0KG5UaW1lc1JlY29uZmlndXJlZCwgbWFpbj0iSGlzdG9ncmFtIHZhbiBhYW50YWwgQ09ORklHUyB2YW4gTWFjaGluZSAxIiwgeGxhYj0iVGltZXN0YW1wIix5bGFiPSJGcmVxdWVuY3kiKQojICNib3hwbG90KG5UaW1lc1JlY29uZmlndXJlZCRUaW1lc3RhbXApCiMgCiMgcGxvdChuVGltZXNSZWNvbmZpZ3VyZWQpCiMgbGluZXMoblRpbWVzUmVjb25maWd1cmVkKQoKIzEuNiBnZW1pZGRlbGRlIGJlemV0dGluZ3NncmFhZCB0dXNzZW5saWdnZW5kZSBidWZmZXJzOiBfX2ByIHRvdGFsQmV6ZXR0aW5nc0dyYWFkYF9fCmBgYAoKLS0tCgpgYGB7ciBldmFsPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQojc291cmNlKCJleHBlbnNpdmVJdGVtcy5SIikKIyMjIDEgLSBHZW5lcmFsIFNpbXVsYXRpb24gVmFyaWFibGVzCgojIDEuMSBhYW50YWwgZ2VtYWFrdGUgYnVkZ2V0LXRhZmVsczogX19gciBuR2Vwcm9kdWNlZXJkZUJ1ZGdldFRhZmVsc2BfXwojIAojIDEuMiAgYWFudGFsIGdlbWFha3RlIGx1eGUtdGFmZWxzOiBfX2ByIG5HZXByb2R1Y2VlcmRlTHV4ZVRhZmVsc2BfXwojIAojIDEuMyBHZXNpbXVsZWVyZGUgdGlqZDogX19gciBmaW5hbFNpbVRpbWVgX18KIyAKIyAxLjQgYWFudGFsIHJlcGFyYXRpZXM6IF9fYHIgbk1hY2hpbmVzQnJva2VuYF9fCiMgCiMgMS41IEFhbnRhbCBrZWVyIGRhdCBtYWNoaW5lcyB6aWpuIG9tZ2VzdGVsZCB0dXNzZW4gbHV4ZS0gZW4gYnVkZ2V0dGFmZWxzOiBfX2ByIG1hY2hpbmVfY29uZmlnc19VYF9fCiMgCiMgMS42IGdlbWlkZGVsZGUgYmV6ZXR0aW5nc2dyYWFkIHR1c3NlbmxpZ2dlbmRlIGJ1ZmZlcnM6IF9fYHIgdG90YWxCZXpldHRpbmdzR3JhYWRgX18KCmBgYAoKLS0tCgojICBQcm9kdWN0aWVsaWpuZW4gey50YWJzZXQgLnRhYnNldC1mYWRlIC50YWJzZXQtcGlsbHN9CgpgYGB7ciBlY2hvPUZBTFNFfQojIHBhcihtZnJvdyA9IGMoMSwgMikpICMgQ3JlYXRlIGEgeCBncmlkIGZvciBkaWFncmFtcwojIAojIGJlemV0dGluZ3NncmFhZFRhZmVsSXRlbXMgPC0gYyhtMV9tZWFuLG00X21lYW4sbTVfbWVhbikKIyBiYXJwbG90KGJlemV0dGluZ3NncmFhZFRhZmVsSXRlbXMsIG1haW49ImdlbWlkZGVsZGUgdmFuIGRlIGJ1ZmZlcnMgWzFdWzRdWzVdIikKIyAKIyBiZXpldHRpbnNncmFhZFRhZmVscG90ZW4gPC1jKG03X21lYW4sIG05X21lYW4pCiMgCiMgYmFycGxvdChiZXpldHRpbnNncmFhZFRhZmVscG90ZW4sIG1haW49ImdlbWlkZGVsZGUgdmFuIGRlIGJ1ZmZlcnMgWzddWzldIikKIyAKIyB0b3RhbEJlemV0dGluZ3NHcmFhZCA8LSBjKGJlemV0dGluZ3NncmFhZFRhZmVsSXRlbXMsYmV6ZXR0aW5zZ3JhYWRUYWZlbHBvdGVuKQojIHRvdGFsQmV6ZXR0aW5nc0dyYWFkIDwtIG1lYW4odG90YWxCZXpldHRpbmdzR3JhYWQpCmBgYAoKCiMjIEJ1ZGdldC1ibGFkZW4KCi0gUmVuZGVyZWQgdGltZSBwZXJpb2QgaXM6IF9fYHIgc2hvd1RpbWVgX18KCiMjIyBNYWNoaW5lIDEgLSAoSG91dCkgemFhZ21hY2hpbmUKCmBgYHtyIGVjaG89RkFMU0V9Ck0xXyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtYWNoaW5lc19WPT0xKSYoaXRlbXR5cGVfVj09IkMiKSkpCm0xX3QgPC0gYXMubnVtZXJpYyhNMV8kVGltZXN0YW1wKQpNMSA8LSBzdWJzZXQoTTFfLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG0xX3QgPCByZW5kZXJpbmdUaW1lKSkpCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTEkVGltZXN0YW1wLE0xJE91dHB1dEJ1ZmZlciwgbWFpbj0iSG91dHphYWdtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIxc3Qgb3V0cHV0YnVmZmVyIikKbGluZXMoTTEkVGltZXN0YW1wLE0xJE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2V6YWFnZGVCbGFkZW4gPC0gTTEkT3V0cHV0QnVmZmVyCmdlemFhZ2RlQmxhZGVuIDwtIGFzLm51bWVyaWMoZ2V6YWFnZGVCbGFkZW4pCgpoaXN0KGdlemFhZ2RlQmxhZGVuLG1haW49IkdlemFhZ2RlIGJ1ZGdldCB0YWZlbGJsYWRlbiIsIHhsYWI9ImJ1Y2tldCBncm9vdHRlIiwgeWxhYj0iaG9ldmVlbGhlaWQgZ2V6YWFnZGVibGFkZW4iKQoKI2QgPC0gZGVuc2l0eShnZXphYWdkZUJsYWRlbikKI3Bsb3QoZCkKI3BvbHlnb24oZCxjb2w9InJlZCIsYm9yZGVyPSJibHVlIikKCnhheGlzIDwtIHNlcSgxOmxlbmd0aChnZXphYWdkZUJsYWRlbikpCmJveHBsb3QoeCA9IGdlemFhZ2RlQmxhZGVuLHkgPSB4YXhpcywgbWFpbj0iYm94cGxvdCBidWRnZXQgdGFmZWxibGFkZW4iLCB5bGFiPSJuR2V6YWFnZGVCbGFkZW4iKQoKbTFfbWVhbiA8LSBtZWFuKGdlemFhZ2RlQmxhZGVuKQojcHJpbnQobTFfbWVhbikKI3ByaW50KHN1bW1hcnkoZ2V6YWFnZGVCbGFkZW4pKQojcHJpbnQodW5pcXVlKGdlemFhZ2RlQmxhZGVuKSkKCm0xQ29uZmlncyA8LSBjKGZpbHRlcihNMSwgTTEkTWVzc2FnZT09IlJFQ09ORklHVVJFIikpCm0xX2NvbmZpZ3NfdGltZXN0YW1wcyA8LSBtMUNvbmZpZ3MkVGltZXN0YW1wCm0xQ29uZmlncyA8LSBsZW5ndGgodW5pcXVlKG0xQ29uZmlncyRUaW1lc3RhbXApKQoKYGBgCgpgYGB7ciBwaWUxLCBldmFsPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQpNMV9jb25maWcgPC0gYyhmaWx0ZXIoTTEsIE0xJE1lc3NhZ2U9PSJDT05GSUciKSkKTTFfY29uZmlnIDwtIE0xX2NvbmZpZyRUaW1lc3RhbXAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTFfaWRsZSA8LSBjKGZpbHRlcihNMSwgTTEkTWVzc2FnZT09IlBST0RVQ1RJT05fSURMRSIpKQpNMV9pZGxlIDwtIE0xX2lkbGUkVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk0xX3Byb2Nlc3NpbmcgPC0gYyhmaWx0ZXIoTTEsIE0xJE1lc3NhZ2U9PSJQUk9EVUNUSU9OX1BST0NFU1NJTkciKSkKTTFfcHJvY2Vzc2luZyA8LSBNMV9wcm9jZXNzaW5nJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNMV9wcm9jZXNzZWQgPC0gYyhmaWx0ZXIoTTEsIE0xJE1lc3NhZ2U9PSJQUk9EVUNUSU9OX1BST0NFU1NFRCIpKQpNMV9wcm9jZXNzZWQgPC0gTTFfcHJvY2Vzc2VkJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwojcHJpbnQobGVuZ3RoKE0xX2lkbGUpKQojcHJpbnQobGVuZ3RoKE0xX3Byb2Nlc3NlZCkpCiNwcmludChsZW5ndGgoTTFfcHJvY2Vzc2luZykpCiNwcmludChNMV9wcm9jZXNzaW5nWzJdIC0gTTFfaWRsZVsyXSkKI3ByaW50KE0xX3Byb2Nlc3NlZFsyXSAtIE0xX3Byb2Nlc3NpbmdbMl0pCiNwcmludChNMV9pZGxlWzNdIC0gTTFfcHJvY2Vzc2VkWzJdKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwoKI3ByaW50KGNvX3RpbWUpIApuQ29uZmlncyA8LSBsZW5ndGgoTTFfY29uZmlnKQpjb190aW1lIDwtIG5Db25maWdzICogMzAwICNldmVyeSBjb25maWcgdGFrZXMgMzAwcyAoNW1pbnV0ZXMpCgojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwoKCiNuUHJvY2Vzc2luZ3MgPC0gbGVuZ3RoKE0xX3Byb2Nlc3NpbmcpIC0xCiNuUHJvY2Vzc2luZ3MgPC0gbGVuZ3RoKE0xX3Byb2Nlc3NlZCkgLTEKI25Qcm9jZXNzaW5ncyA8LSBsZW5ndGgoTTFfaWRsZSkgLTEgCgpwcmludChuUHJvY2Vzc2luZ3MpCmlkX3RpbWUgPC0gMApwZ190aW1lIDwtIDAKcGRfdGltZSA8LSAwCmZvcihpIGluIDE6blByb2Nlc3NpbmdzKQp7CiAgaWRfdGltZV90YWtlbiA8LSBNMV9wcm9jZXNzaW5nW2ldIC0gTTFfaWRsZVtpXSAjaWRsZSB0aW1lIAogIHBnX3RpbWVfdGFrZW4gPC0gTTFfcHJvY2Vzc2VkW2ldIC0gTTFfcHJvY2Vzc2luZ1tpXSAjcHJvY2Vzc2luZyB0aW1lCiAgcGRfdGltZV90YWtlbiA8LSBNMV9pZGxlW2krMV0gLSBNMV9wcm9jZXNzZWRbaV0gICNwcm9jZXNzZWQgdGltZQogIAogIGlkX3RpbWUgPC0gaWRfdGltZSArIGlkX3RpbWVfdGFrZW4KICBwZ190aW1lIDwtIHBnX3RpbWUgKyBwZ190aW1lX3Rha2VuCiAgcGRfdGltZSA8LSBwZF90aW1lICsgcGRfdGltZV90YWtlbgp9CiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCnNsaWNlcyA8LSBjKGNvX3RpbWUsIGlkX3RpbWUsIHBnX3RpbWUscGRfdGltZSkKCgoKI3ByaW50KGlkX3RpbWUpIAojcHJpbnQocGdfdGltZSlcCgpsYWJlbHMgPC0gYygiQ09ORklHIiwgIklETEUiLCAiUFJPQ0VTU0lORyIsICJQUk9DRVNTRUQiKQoKcGllKHNsaWNlcywgIGxhYmVscyA9IGxhYmVscywKICAgICAgICBtYWluID0gIlRpamQgcGVyIHN0YXRlIiwKICAgICAgICB4bGFiID0gIlN0YXRlcyIsCiAgICAgICAgeWxhYiA9ICJUaWpkIChzZWNvbmRlbikiLAogICAgICAgIGxhcz0xLAogICAgICAgIGNvbCA9IHJhaW5ib3cobGVuZ3RoKGxhYmVscykpKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpgYGAKCi0tLQoKIyMjIE1hY2hpbmUgNCAtIFZvb3Jib29ybWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KCk00XyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT00KSYoaXRlbXR5cGVfVj09IkMiKSkpCm00X3QgPC0gYXMubnVtZXJpYyhNNF8kVGltZXN0YW1wKQoKTTQgPC0gc3Vic2V0KE00XyxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgIHN1YnNldD0oKG00X3Q8PXJlbmRlcmluZ1RpbWUpKSkKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNNCRUaW1lc3RhbXAsTTQkT3V0cHV0QnVmZmVyLCBtYWluPSJWb29yYm9vcm1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjJuZCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNNCRUaW1lc3RhbXAsTTQkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZWJvb3JkZVBsYXRlbiA8LSBNNCRPdXRwdXRCdWZmZXIKZ2Vib29yZGVQbGF0ZW4gPC0gYXMubnVtZXJpYyhnZWJvb3JkZVBsYXRlbikKaGlzdChnZWJvb3JkZVBsYXRlbikKYm94cGxvdChnZWJvb3JkZVBsYXRlbikKCm00X21lYW4gPC0gbWVhbihnZWJvb3JkZVBsYXRlbikKI3ByaW50KG00X21lYW4pCiNwcmludCh1bmlxdWUoZ2Vib29yZGVQbGF0ZW4pKQojcHJpbnQoc3VtbWFyeShnZWJvb3JkZVBsYXRlbikpCmBgYAoKCmBgYHtyIHBpZTQsIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9Ck00X2NvbmZpZyA8LSBjKGZpbHRlcihNNCwgTTQkTWVzc2FnZT09IkNPTkZJRyIpKQpNNF9jb25maWcgPC0gTTRfY29uZmlnJFRpbWVzdGFtcAojcHJpbnQoTTRfY29uZmlnKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNNF9pZGxlIDwtIGMoZmlsdGVyKE00LCBNNCRNZXNzYWdlPT0iUFJPRFVDVElPTl9JRExFIikpCk00X2lkbGUgPC0gTTRfaWRsZSRUaW1lc3RhbXAKI3ByaW50KGxlbmd0aChNNF9pZGxlKSkKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTRfcHJvY2Vzc2luZyA8LSBjKGZpbHRlcihNNCwgTTQkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0lORyIpKQpNNF9wcm9jZXNzaW5nIDwtIE00X3Byb2Nlc3NpbmckVGltZXN0YW1wCiNwcmludChsZW5ndGgoTTRfcHJvY2Vzc2luZykpCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk00X3Byb2Nlc3NlZCA8LSBjKGZpbHRlcihNNCwgTTQkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0VEIikpCk00X3Byb2Nlc3NlZCA8LSBNNF9wcm9jZXNzZWQkVGltZXN0YW1wCiNwcmludChsZW5ndGgoTTRfcHJvY2Vzc2VkKSkKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKbkNvbmZpZ3MgPC0gbGVuZ3RoKE00X2NvbmZpZykKY29fdGltZSA8LSBuQ29uZmlncyAqIDMwMApuUHJvY2Vzc2luZ3MgPC0gbGVuZ3RoKE00X3Byb2Nlc3NpbmcpLTEKI3ByaW50KG5Qcm9jZXNzaW5ncykKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKaWRfdGltZSA8LSAwCnBnX3RpbWUgPC0gMApwZF90aW1lIDwtIDAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKZm9yKGkgaW4gMTpuUHJvY2Vzc2luZ3MpCnsKICBpZF90aW1lX3Rha2VuIDwtIE00X3Byb2Nlc3NpbmdbaV0gLSBNNF9pZGxlW2ldICNpZGxlIHRpbWUgCiAgcGdfdGltZV90YWtlbiA8LSBNNF9wcm9jZXNzZWRbaV0gLSBNNF9wcm9jZXNzaW5nW2ldICNwcm9jZXNzaW5nIHRpbWUKICBwZF90aW1lX3Rha2VuIDwtIE00X2lkbGVbaSsxXSAtIE00X3Byb2Nlc3NlZFtpXSAgI3Byb2Nlc3NlZCB0aW1lCiAgCiAgaWRfdGltZSA8LSBpZF90aW1lICsgaWRfdGltZV90YWtlbgogIHBnX3RpbWUgPC0gcGdfdGltZSArIHBnX3RpbWVfdGFrZW4KICBwZF90aW1lIDwtIHBkX3RpbWUgKyBwZF90aW1lX3Rha2VuCiAgI3ByaW50KHBkX3RpbWVfdGFrZW4pCn0KIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKc2xpY2VzIDwtIGMoY29fdGltZSwgaWRfdGltZSwgcGdfdGltZSwgcGRfdGltZSkKCmxhYmVsIDwtIGMoIkNPTkZJRyIsICJJRExFIiwgIlBST0NFU1NJTkciLCAiUFJPQ0VTU0VEIikKCnBpZShzbGljZXMsICBsYWJlbCA9IGxhYmVscywKICAgICAgICBtYWluID0gIlRpamQgcGVyIHN0YXRlIiwKICAgICAgICB4bGFiID0gIlN0YXRlcyIsCiAgICAgICAgeWxhYiA9ICJUaWpkIChzZWNvbmRlbikiLAogICAgICAgIGNvbCA9IHJhaW5ib3cobGVuZ3RoKGxhYmVscykpKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpgYGAKCgotLS0KCiMjIyBNYWNoaW5lIDUgLSBTY2h1dXJtYWNoaW5lCmBgYHtyIGVjaG89RkFMU0V9CgpNNV8gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NSkmKGl0ZW10eXBlX1Y9PSJDIikpKQptNV90IDwtIGFzLm51bWVyaWMoTTVfJFRpbWVzdGFtcCkKCk01IDwtIHN1YnNldChNNV8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICBzdWJzZXQ9KChtNV90PD1yZW5kZXJpbmdUaW1lKSkpCgoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE01JFRpbWVzdGFtcCxNNSRPdXRwdXRCdWZmZXIsIG1haW49IlNjaHV1cm1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjNyZG91dHB1dGJ1ZmZlciIpCmxpbmVzKE01JFRpbWVzdGFtcCxNNSRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlc2NodXVyZGVQbGF0ZW4gPC0gTTUkT3V0cHV0QnVmZmVyCmdlc2NodXVyZGVQbGF0ZW4gPC0gYXMubnVtZXJpYyhnZXNjaHV1cmRlUGxhdGVuKQpoaXN0KGdlc2NodXVyZGVQbGF0ZW4pCmJveHBsb3QoZ2VzY2h1dXJkZVBsYXRlbikKCm01X21lYW4gPC0gbWVhbihnZXNjaHV1cmRlUGxhdGVuKQojcHJpbnQobTVfbWVhbikKI3ByaW50KHVuaXF1ZShnZXNjaHV1cmRlUGxhdGVuKSkKI3ByaW50KHN1bW1hcnkoZ2VzY2h1dXJkZVBsYXRlbikpCmBgYAoKCmBgYHtyIHBpZTUsIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9Ck01X2NvbmZpZyA8LSBjKGZpbHRlcihNNSwgTTUkTWVzc2FnZT09IkNPTkZJRyIpKQpNNV9jb25maWcgPC0gTTVfY29uZmlnJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNNV9pZGxlIDwtIGMoZmlsdGVyKE01LCBNNSRNZXNzYWdlPT0iUFJPRFVDVElPTl9JRExFIikpCk01X2lkbGUgPC0gTTVfaWRsZSRUaW1lc3RhbXAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTVfcHJvY2Vzc2luZyA8LSBjKGZpbHRlcihNNSwgTTUkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0lORyIpKQpNNV9wcm9jZXNzaW5nIDwtIE01X3Byb2Nlc3NpbmckVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk01X3Byb2Nlc3NlZCA8LSBjKGZpbHRlcihNNSwgTTUkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0VEIikpCk01X3Byb2Nlc3NlZCA8LSBNNV9wcm9jZXNzZWQkVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCm5Db25maWdzIDwtIGxlbmd0aChNNV9jb25maWcpCmNvX3RpbWUgPC0gbkNvbmZpZ3MgKiAzMDAKblByb2Nlc3NpbmdzIDwtIGxlbmd0aChNNV9wcm9jZXNzaW5nKS0xCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCmlkX3RpbWUgPC0gMApwZ190aW1lIDwtIDAKcGRfdGltZSA8LSAwCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCmZvcihpIGluIDE6blByb2Nlc3NpbmdzKQp7CiAgaWRfdGltZV90YWtlbiA8LSBNNV9wcm9jZXNzaW5nW2ldIC0gTTVfaWRsZVtpXSAjaWRsZSB0aW1lIAogIHBnX3RpbWVfdGFrZW4gPC0gTTVfcHJvY2Vzc2VkW2ldIC0gTTVfcHJvY2Vzc2luZ1tpXSAjcHJvY2Vzc2luZyB0aW1lCiAgcGRfdGltZV90YWtlbiA8LSBNNV9pZGxlW2krMV0gLSBNNV9wcm9jZXNzZWRbaV0gICNwcm9jZXNzZWQgdGltZQogIAogIGlkX3RpbWUgPC0gaWRfdGltZSArIGlkX3RpbWVfdGFrZW4KICBwZ190aW1lIDwtIHBnX3RpbWUgKyBwZ190aW1lX3Rha2VuCiAgcGRfdGltZSA8LSBwZF90aW1lICsgcGRfdGltZV90YWtlbgogICNwcmludChwZF90aW1lX3Rha2VuKQp9CiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCnNsaWNlcyA8LSBjKGNvX3RpbWUsIGlkX3RpbWUsIHBnX3RpbWUsIHBkX3RpbWUpCgpsYWJlbCA8LSBjKCJDT05GSUciLCAiSURMRSIsICJQUk9DRVNTSU5HIiwgIlBST0NFU1NFRCIpCgpwaWUoc2xpY2VzLCAgbGFiZWwgPSBsYWJlbHMsCiAgICAgICAgbWFpbiA9ICJUaWpkIHBlciBzdGF0ZSIsCiAgICAgICAgeGxhYiA9ICJTdGF0ZXMiLAogICAgICAgIHlsYWIgPSAiVGlqZCAoc2Vjb25kZW4pIiwKICAgICAgICBjb2wgPSByYWluYm93KGxlbmd0aChsYWJlbHMpKSkKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKYGBgCgotLS0KCiMjIyBNYWNoaW5lIDYgLSBWZXJmbWFjaGluZQpgYGB7ciBlY2hvPUZBTFNFfQojIE02IDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAojICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT02KSYoaXRlbXR5cGVfVj09IkMiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW3JlbmRlcmluZ1RpbWVdKSkpCgpNNl8gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NikmKGl0ZW10eXBlX1Y9PSJDIikpKQptNl90IDwtIGFzLm51bWVyaWMoTTZfJFRpbWVzdGFtcCkKCk02IDwtIHN1YnNldChNNl8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICBzdWJzZXQ9KChtNl90PD1yZW5kZXJpbmdUaW1lKSkpCgoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE02JFRpbWVzdGFtcCxNNiRPdXRwdXRCdWZmZXIsbWFpbj0iVmVyZm1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9ImZpbmFsb3V0cHV0YnVmZmVyIikKbGluZXMoTTYkVGltZXN0YW1wLE02JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2V2ZXJmZGVQbGF0ZW4gPC0gTTYkT3V0cHV0QnVmZmVyCmdldmVyZmRlUGxhdGVuIDwtIGFzLm51bWVyaWMoZ2V2ZXJmZGVQbGF0ZW4pCmhpc3QoZ2V2ZXJmZGVQbGF0ZW4pCmJveHBsb3QoZ2V2ZXJmZGVQbGF0ZW4pCgojcHJpbnQodW5pcXVlKGdldmVyZmRlUGxhdGVuKSkKI3ByaW50KHN1bW1hcnkoZ2V2ZXJmZGVQbGF0ZW4pKQpgYGAKCmBgYHtyIHBpZTYsIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9Ck02X2NvbmZpZyA8LSBjKGZpbHRlcihNNiwgTTYkTWVzc2FnZT09IkNPTkZJRyIpKQpNNl9jb25maWcgPC0gTTZfY29uZmlnJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNNl9pZGxlIDwtIGMoZmlsdGVyKE02LCBNNiRNZXNzYWdlPT0iUFJPRFVDVElPTl9JRExFIikpCk02X2lkbGUgPC0gTTZfaWRsZSRUaW1lc3RhbXAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTZfcHJvY2Vzc2luZyA8LSBjKGZpbHRlcihNNiwgTTYkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0lORyIpKQpNNl9wcm9jZXNzaW5nIDwtIE02X3Byb2Nlc3NpbmckVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk02X3Byb2Nlc3NlZCA8LSBjKGZpbHRlcihNNiwgTTYkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0VEIikpCk02X3Byb2Nlc3NlZCA8LSBNNl9wcm9jZXNzZWQkVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCm5Db25maWdzIDwtIGxlbmd0aChNNl9jb25maWcpCmNvX3RpbWUgPC0gbkNvbmZpZ3MgKiAzMDAKblByb2Nlc3NpbmdzIDwtIGxlbmd0aChNNl9wcm9jZXNzZWQpCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCmlkX3RpbWUgPC0gMApwZ190aW1lIDwtIDAKcGRfdGltZSA8LSAwCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCiMgcHJpbnQobGVuZ3RoKE02X2lkbGUpKQojIAojIHByaW50KGxlbmd0aChNNl9wcm9jZXNzaW5nKSkKIyBwcmludChsZW5ndGgoTTZfcHJvY2Vzc2VkKSkKIyB4IDwtIGxlbmd0aChNNl9pZGxlKQojIHkgPC0gbGVuZ3RoKE02X3Byb2Nlc3NpbmcpCiMgeiA8LSBsZW5ndGgoTTZfcHJvY2Vzc2VkKQojIHByaW50KHRhaWwoTTZfaWRsZSkpCiMgcHJpbnQodGFpbChNNl9wcm9jZXNzaW5nKSkKIyBwcmludCh0YWlsKE02X3Byb2Nlc3NlZCkpCiMgcHJpbnQoTTZfcHJvY2Vzc2luZ1syXSAtIE02X2lkbGVbMl0pCiMgcHJpbnQoTTZfcHJvY2Vzc2VkWzJdIC0gTTZfcHJvY2Vzc2luZ1syXSkKIHByaW50KE02X2lkbGVbMTAwMV0gLSBNNl9wcm9jZXNzZWRbMTAwMF0pCgpmb3IoaSBpbiAxOm5Qcm9jZXNzaW5ncykKewogIGlkX3RpbWVfdGFrZW4gPC0gTTZfcHJvY2Vzc2luZ1tpXSAtIE02X2lkbGVbaV0gI2lkbGUgdGltZSAKICBwZ190aW1lX3Rha2VuIDwtIE02X3Byb2Nlc3NlZFtpXSAtIE02X3Byb2Nlc3NpbmdbaV0gI3Byb2Nlc3NpbmcgdGltZQogIHBkX3RpbWVfdGFrZW4gPC0gTTZfaWRsZVtpXSAtIE02X3Byb2Nlc3NlZFtpXSAgI3Byb2Nlc3NlZCB0aW1lCiAgCiAgcHJpbnQocGRfdGltZV90YWtlbikKICAKICBpZF90aW1lIDwtIGlkX3RpbWUgKyBpZF90aW1lX3Rha2VuCiAgcGdfdGltZSA8LSBwZ190aW1lICsgcGdfdGltZV90YWtlbgogIHBkX3RpbWUgPC0gcGRfdGltZSArIHBkX3RpbWVfdGFrZW4KfQogCiNwcmludChpZF90aW1lKQojcHJpbnQocGdfdGltZSkKI3ByaW50KHBkX3RpbWUpCgojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpzbGljZXMgPC0gYyhjb190aW1lLCBpZF90aW1lLCBwZ190aW1lLCBhYnMocGRfdGltZSkpCgpsYWJlbCA8LSBjKCJDT05GSUciLCAiSURMRSIsICJQUk9DRVNTSU5HIiwgIlBST0NFU1NFRCIpCgpwaWUoc2xpY2VzLCAgbGFiZWwgPSBsYWJlbHMsCiAgICAgICAgbWFpbiA9ICJUaWpkIHBlciBzdGF0ZSIsCiAgICAgICAgeGxhYiA9ICJTdGF0ZXMiLAogICAgICAgIHlsYWIgPSAiVGlqZCAoc2Vjb25kZW4pIiwKICAgICAgICBjb2wgPSByYWluYm93KGxlbmd0aChsYWJlbHMpKSkKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKYGBgCgotLS0tCgojIyBCdWRnZXQtcG90ZW4KCi0gUmVuZGVyZWQgdGltZSBwZXJpb2QgaXM6IF9fYHIgc2hvd1RpbWVgX18KCiMjIyBNYWNoaW5lIDcgLSBJSnplcnphYWctbWFjaGluZQpgYGB7ciBlY2hvPUZBTFNFfQojIE03IDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAojICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT03KSYoaXRlbXR5cGVfVj09IkMiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW3JlbmRlcmluZ1RpbWVdKSkpCgpNN18gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NykmKGl0ZW10eXBlX1Y9PSJDIikpKQptN190IDwtIGFzLm51bWVyaWMoTTdfJFRpbWVzdGFtcCkKCk03IDwtIHN1YnNldChNN18sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICBzdWJzZXQ9KChtN190PD1yZW5kZXJpbmdUaW1lKSkpCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTckVGltZXN0YW1wLE03JE91dHB1dEJ1ZmZlcixtYWluPSJJSnplcnphYWdtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIxc3Qgb3V0cHV0YnVmZmVyIikKbGluZXMoTTckVGltZXN0YW1wLE03JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2V6YWFnZGVQb3RlbiA8LSBNNyRPdXRwdXRCdWZmZXIKZ2V6YWFnZGVQb3RlbiA8LSBhcy5udW1lcmljKGdlemFhZ2RlUG90ZW4pCmhpc3QoZ2V6YWFnZGVQb3RlbikKYm94cGxvdChnZXphYWdkZVBvdGVuKQoKbTdfbWVhbiA8LSBtZWFuKGdlemFhZ2RlUG90ZW4pCiNwcmludChtN19tZWFuKQoKI3ByaW50KHN1bW1hcnkoZ2V6YWFnZGVQb3RlbikpCmBgYAoKLS0tCgojIyMgTWFjaGluZSA5IC0gTGFzbWFjaGluZQpgYGB7ciBlY2hvPUZBTFNFfQojIE05IDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAojICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT05KSYoaXRlbXR5cGVfVj09IkMiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW3JlbmRlcmluZ1RpbWVdKSkpCgpNOV8gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09OSkmKGl0ZW10eXBlX1Y9PSJDIikpKQptOV90IDwtIGFzLm51bWVyaWMoTTlfJFRpbWVzdGFtcCkKCk05IDwtIHN1YnNldChNOV8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICBzdWJzZXQ9KChtOV90PD1yZW5kZXJpbmdUaW1lKSkpCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTkkVGltZXN0YW1wLE05JE91dHB1dEJ1ZmZlcixtYWluPSJMYXNtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIybmQgb3V0cHV0YnVmZmVyIikKbGluZXMoTTkkVGltZXN0YW1wLE05JE91dHB1dEJ1ZmZlcikKcGFyKG1mcm93ID0gYygxLDIpKQpnZWxhc2RlUG90ZW4gPC0gTTkkT3V0cHV0QnVmZmVyCmdlbGFzZGVQb3RlbiA8LSBhcy5udW1lcmljKGdlbGFzZGVQb3RlbikKaGlzdChnZWxhc2RlUG90ZW4pCmJveHBsb3QoZ2VsYXNkZVBvdGVuKQoKbTlfbWVhbiA8LSBtZWFuKGdlbGFzZGVQb3RlbikKI3ByaW50KG05X21lYW4pCgojcHJpbnQoc3VtbWFyeShnZWxhc2RlUG90ZW4pKQpgYGAKCi0tLQoKIyMjIE1hY2hpbmUgMTAgLSBQb2VkZXJjb2F0LW1hY2hpbmUKYGBge3IgZWNobz1GQUxTRX0KIyBNMTAgPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiMgICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT0xMCkmKGl0ZW10eXBlX1Y9PSJDIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQoKTTEwXyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT0xMCkmKGl0ZW10eXBlX1Y9PSJDIikpKQptMTBfdCA8LSBhcy5udW1lcmljKE0xMF8kVGltZXN0YW1wKQoKTTEwIDwtIHN1YnNldChNMTBfLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgc3Vic2V0PSgobTEwX3Q8PXJlbmRlcmluZ1RpbWUpKSkKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNMTAkVGltZXN0YW1wLE0xMCRPdXRwdXRCdWZmZXIsbWFpbj0iUG9lZGVyY29hdG1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9ImZpbmFsIG91dHB1dGJ1ZmZlciIpCmxpbmVzKE0xMCRUaW1lc3RhbXAsTTEwJE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2Vjb2F0ZVBvdGVuIDwtIE0xMCRPdXRwdXRCdWZmZXIKZ2Vjb2F0ZVBvdGVuIDwtIGFzLm51bWVyaWMoZ2Vjb2F0ZVBvdGVuKQpoaXN0KGdlY29hdGVQb3RlbikKYm94cGxvdChnZWNvYXRlUG90ZW4pCgojbTEwX21lYW4gPC0gbWVhbihnZWNvYXRlUG90ZW4pCiNwcmludChtMTBfbWVhbikKCiNwcmludChzdW1tYXJ5KGdlY29hdGVQb3RlbikpCmBgYAoKLS0tCgojIyBMdXhlLWJsYWRlbgoKUmVuZGVyIHRpbWUKCi0gUmVuZGVyZWQgdGltZSBwZXJpb2QgaXM6IF9fYHIgc2hvd1RpbWVgX18KCiMjIyBNYWNoaW5lIDEgLSAoSG91dCkgemFhZ21hY2hpbmUKCmBgYHtyIGVjaG89RkFMU0V9Ck0xXyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtYWNoaW5lc19WPT0xKSYoaXRlbXR5cGVfVj09IkUiKSkpCm0xX3QgPC0gYXMubnVtZXJpYyhNMV8kVGltZXN0YW1wKQpNMSA8LSBzdWJzZXQoTTFfLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG0xX3QgPCByZW5kZXJpbmdUaW1lKSkpCiNwcmludChoZWFkKE0xKSkKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE0xJFRpbWVzdGFtcCxNMSRPdXRwdXRCdWZmZXIsIG1haW49IkhvdXR6YWFnbWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iMXN0IG91dHB1dGJ1ZmZlciIpCmxpbmVzKE0xJFRpbWVzdGFtcCxNMSRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlemFhZ2RlQmxhZGVuIDwtIE0xJE91dHB1dEJ1ZmZlcgpnZXphYWdkZUJsYWRlbiA8LSBhcy5udW1lcmljKGdlemFhZ2RlQmxhZGVuKQpoaXN0KGdlemFhZ2RlQmxhZGVuLG1haW49IkdlemFhZ2RlIGR1cmUgdGFmZWxibGFkZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIGdlemFhZ2RlYmxhZGVuIikKCiNkIDwtIGRlbnNpdHkoZ2V6YWFnZGVCbGFkZW4pCiNwbG90KGQpCiNwb2x5Z29uKGQsY29sPSJyZWQiLGJvcmRlcj0iYmx1ZSIpCgp4YXhpcyA8LSBzZXEoMTpsZW5ndGgoZ2V6YWFnZGVCbGFkZW4pKQpib3hwbG90KHggPSBnZXphYWdkZUJsYWRlbix5ID0geGF4aXMsIG1haW49ImJveHBsb3QgZHVyZSB0YWZlbGJsYWRlbiIsIHlsYWI9Im5HZXphYWdkZUJsYWRlbiIpCgojcHJpbnQoc3VtbWFyeShnZXphYWdkZUJsYWRlbikpCiNwcmludCh1bmlxdWUoZ2V6YWFnZGVCbGFkZW4pKQpgYGAKCiMjIyBNYWNoaW5lIDIgLSAoSG91dCkgbGlqbW1hY2hpbmUKCmBgYHtyIGVjaG89RkFMU0V9CiMgTTIgPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiMgICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTIpJihpdGVtdHlwZV9WPT0iRSIpJih0aW1lc3RhbXBzX1Y8PXJlbmRlclRpbWVbcmVuZGVyaW5nVGltZV0pKSkKCk0yXyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtYWNoaW5lc19WPT0yKSYoaXRlbXR5cGVfVj09IkUiKSkpCm0yX3QgPC0gYXMubnVtZXJpYyhNMl8kVGltZXN0YW1wKQpNMiA8LSBzdWJzZXQoTTJfLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG0yX3QgPCByZW5kZXJpbmdUaW1lKSkpCgoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE0yJFRpbWVzdGFtcCxNMiRPdXRwdXRCdWZmZXIsIG1haW49Ikxpam1tYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIxc3Qgb3V0cHV0YnVmZmVyIikKbGluZXMoTTIkVGltZXN0YW1wLE0yJE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2VsaWptZGVCbGFkZW4gPC0gTTIkT3V0cHV0QnVmZmVyCmdlbGlqbWRlQmxhZGVuIDwtIGFzLm51bWVyaWMoZ2VsaWptZGVCbGFkZW4pCmhpc3QoZ2VsaWptZGVCbGFkZW4sbWFpbj0iR2VsaWptZGUgZHVyZSB0YWZlbGJsYWRlbiIsIHhsYWI9ImJ1Y2tldCBncm9vdHRlIiwgeWxhYj0iaG9ldmVlbGhlaWQgZ2VsaWptZGVibGFkZW4iKQoKI2QgPC0gZGVuc2l0eShnZXphYWdkZUJsYWRlbikKI3Bsb3QoZCkKI3BvbHlnb24oZCxjb2w9InJlZCIsYm9yZGVyPSJibHVlIikKCnhheGlzIDwtIHNlcSgxOmxlbmd0aChnZWxpam1kZUJsYWRlbikpCmJveHBsb3QoeCA9IGdlbGlqbWRlQmxhZGVuLHkgPSB4YXhpcywgbWFpbj0iR2VsaWptZGUgZHVyZSB0YWZlbGJsYWRlbiIsIHlsYWI9ImdlbGlqbWRlQmxhZGVuIikKCiNwcmludChzdW1tYXJ5KGdlemFhZ2RlQmxhZGVuKSkKI3ByaW50KHVuaXF1ZShnZXphYWdkZUJsYWRlbikpCmBgYAoKCiMjIyBNYWNoaW5lIDMgLSAoSG91dCkgRnJlZXplbWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KIyBNMyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKIyAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09MykmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQoKTTNfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG1hY2hpbmVzX1Y9PTMpJihpdGVtdHlwZV9WPT0iRSIpKSkKbTNfdCA8LSBhcy5udW1lcmljKE0zXyRUaW1lc3RhbXApCk0zIDwtIHN1YnNldChNM18sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobTNfdCA8IHJlbmRlcmluZ1RpbWUpKSkKCgoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE0zJFRpbWVzdGFtcCxNMyRPdXRwdXRCdWZmZXIsIG1haW49IkZyZWV6ZW1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjFzdCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNMyRUaW1lc3RhbXAsTTMkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZWZyZWV6ZGVCbGFkZW4gPC0gTTMkT3V0cHV0QnVmZmVyCmdlZnJlZXpkZUJsYWRlbiA8LSBhcy5udW1lcmljKGdlZnJlZXpkZUJsYWRlbikKaGlzdChnZWZyZWV6ZGVCbGFkZW4sbWFpbj0iR2VmcmVlemRlIGR1cmUgdGFmZWxibGFkZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIGdlZnJlZXpkZSBibGFkZW4iKQoKI2QgPC0gZGVuc2l0eShnZXphYWdkZUJsYWRlbikKI3Bsb3QoZCkKI3BvbHlnb24oZCxjb2w9InJlZCIsYm9yZGVyPSJibHVlIikKCnhheGlzIDwtIHNlcSgxOmxlbmd0aChnZWZyZWV6ZGVCbGFkZW4pKQpib3hwbG90KHggPSBnZWZyZWV6ZGVCbGFkZW4seSA9IHhheGlzLCBtYWluPSJHZWZyZWV6ZGUgZHVyZSB0YWZlbGJsYWRlbiIsIHlsYWI9IkhvZXZlZWxoZWlkIGdlZnJlZXpkZSBibGFkZW4iKQoKI3ByaW50KHN1bW1hcnkoZ2V6YWFnZGVCbGFkZW4pKQojcHJpbnQodW5pcXVlKGdlemFhZ2RlQmxhZGVuKSkKYGBgCgojIyMgTWFjaGluZSA0IC0gKEhvdXQpIFZvb3Jib29ybWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KIyBNNCA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKIyAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NCkmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQoKTTRfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG1hY2hpbmVzX1Y9PTQpJihpdGVtdHlwZV9WPT0iRSIpKSkKbTRfdCA8LSBhcy5udW1lcmljKE00XyRUaW1lc3RhbXApCk00IDwtIHN1YnNldChNNF8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobTRfdCA8IHJlbmRlcmluZ1RpbWUpKSkKCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTQkVGltZXN0YW1wLE00JE91dHB1dEJ1ZmZlciwgbWFpbj0iVm9vcmJvb3JtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIybmQgb3V0cHV0YnVmZmVyIikKbGluZXMoTTQkVGltZXN0YW1wLE00JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2Vib29yZGVQbGF0ZW4gPC0gTTQkT3V0cHV0QnVmZmVyCmdlYm9vcmRlUGxhdGVuIDwtIGFzLm51bWVyaWMoZ2Vib29yZGVQbGF0ZW4pCgpoaXN0KGdlYm9vcmRlUGxhdGVuLG1haW49IlZvb3JnZWJvb3JkZSBkdXJlIHRhZmVsYmxhZGVuIiwgeGxhYj0iYnVja2V0IGdyb290dGUiLCB5bGFiPSJob2V2ZWVsaGVpZCB2b29yZ2Vib29yZGUgcGxhdGVuIikKCnhheGlzIDwtIHNlcSgxOmxlbmd0aChnZWJvb3JkZVBsYXRlbikpCmJveHBsb3QoZ2Vib29yZGVQbGF0ZW4seSA9IHhheGlzLCBtYWluPSJWb29yZ2Vib29yZGUgZHVyZSB0YWZlbGJsYWRlbiIsIHlsYWI9IkhvZXZlZWxoZWlkIFZvb3JnZWJvb3JkZSBibGFkZW4iKQoKI3ByaW50KHVuaXF1ZShnZWJvb3JkZVBsYXRlbikpCiNwcmludChzdW1tYXJ5KGdlYm9vcmRlUGxhdGVuKSkKYGBgCgojIyMgTWFjaGluZSA1IC0gKEhvdXQpIFNjaHV1cm1hY2hpbmUKCmBgYHtyIGVjaG89RkFMU0V9CiMgTTUgPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiMgICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTUpJihpdGVtdHlwZV9WPT0iRSIpJih0aW1lc3RhbXBzX1Y8PXJlbmRlclRpbWVbcmVuZGVyaW5nVGltZV0pKSkKTTVfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG1hY2hpbmVzX1Y9PTUpJihpdGVtdHlwZV9WPT0iRSIpKSkKbTVfdCA8LSBhcy5udW1lcmljKE01XyRUaW1lc3RhbXApCk01IDwtIHN1YnNldChNNV8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobTVfdCA8IHJlbmRlcmluZ1RpbWUpKSkKCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTUkVGltZXN0YW1wLE01JE91dHB1dEJ1ZmZlciwgbWFpbj0iU2NodXVybWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iM3JkIG91dHB1dGJ1ZmZlciIpCmxpbmVzKE01JFRpbWVzdGFtcCxNNSRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlc2NodXVyZGVQbGF0ZW4gPC0gTTUkT3V0cHV0QnVmZmVyCmdlc2NodXVyZGVQbGF0ZW4gPC0gYXMubnVtZXJpYyhnZXNjaHV1cmRlUGxhdGVuKQpoaXN0KGdlc2NodXVyZGVQbGF0ZW4sbWFpbj0iR2VzY2h1dXJkZSBkdXJlIHRhZmVsYmxhZGVuIiwgeGxhYj0iYnVja2V0IGdyb290dGUiLCB5bGFiPSJob2V2ZWVsaGVpZCBnZXNjaHV1cmRlIHBsYXRlbiIpCgp4YXhpcyA8LSBzZXEoMTpsZW5ndGgoZ2VzY2h1dXJkZVBsYXRlbikpCmJveHBsb3QoZ2VzY2h1dXJkZVBsYXRlbix5ID0geGF4aXMsIG1haW49Ikdlc2NodXVyZGUgZHVyZSB0YWZlbGJsYWRlbiIsIHlsYWI9IkhvZXZlZWxoZWlkIGdlc2NodXVyZGUgYmxhZGVuIikKCiNwcmludCh1bmlxdWUoZ2VzY2h1dXJkZVBsYXRlbikpCiNwcmludChzdW1tYXJ5KGdlc2NodXVyZGVQbGF0ZW4pKQpgYGAKCiMjIyBNYWNoaW5lIDYgLSAoSG91dCkgVmVyZm1hY2hpbmUKCmBgYHtyIGVjaG89RkFMU0V9CiMgTTYgPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiMgICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTYpJihpdGVtdHlwZV9WPT0iRSIpJih0aW1lc3RhbXBzX1Y8PXJlbmRlclRpbWVbcmVuZGVyaW5nVGltZV0pKSkKCk02XyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtYWNoaW5lc19WPT02KSYoaXRlbXR5cGVfVj09IkUiKSkpCm02X3QgPC0gYXMubnVtZXJpYyhNNl8kVGltZXN0YW1wKQpNNiA8LSBzdWJzZXQoTTZfLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG02X3QgPCByZW5kZXJpbmdUaW1lKSkpCgoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE02JFRpbWVzdGFtcCxNNiRPdXRwdXRCdWZmZXIsbWFpbj0iVmVyZm1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9ImZpbmFsb3V0cHV0YnVmZmVyIikKbGluZXMoTTYkVGltZXN0YW1wLE02JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2V2ZXJmZGVQbGF0ZW4gPC0gTTYkT3V0cHV0QnVmZmVyCmdldmVyZmRlUGxhdGVuIDwtIGFzLm51bWVyaWMoZ2V2ZXJmZGVQbGF0ZW4pCmhpc3QoZ2V2ZXJmZGVQbGF0ZW4pCmJveHBsb3QoZ2V2ZXJmZGVQbGF0ZW4pCgojcHJpbnQodW5pcXVlKGdldmVyZmRlUGxhdGVuKSkKI3ByaW50KHN1bW1hcnkoZ2V2ZXJmZGVQbGF0ZW4pKQpgYGAKCiMjIEx1eGUtcG90ZW4KCi0gUmVuZGVyZWQgdGltZSBwZXJpb2QgaXM6IF9fYHIgc2hvd1RpbWVgX18KCiMjIyBNYWNoaW5lIDcgLSBJSnplcnphYWctbWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KIyBNNyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKIyAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NykmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQoKTTdfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG1hY2hpbmVzX1Y9PTcpJihpdGVtdHlwZV9WPT0iRSIpKSkKbTdfdCA8LSBhcy5udW1lcmljKE03XyRUaW1lc3RhbXApCk03IDwtIHN1YnNldChNN18sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobTdfdCA8IHJlbmRlcmluZ1RpbWUpKSkKCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTckVGltZXN0YW1wLE03JE91dHB1dEJ1ZmZlcixtYWluPSJJSnplcnphYWdtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIxc3Qgb3V0cHV0YnVmZmVyIikKbGluZXMoTTckVGltZXN0YW1wLE03JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2V6YWFnZGVQb3RlbiA8LSBNNyRPdXRwdXRCdWZmZXIKZ2V6YWFnZGVQb3RlbiA8LSBhcy5udW1lcmljKGdlemFhZ2RlUG90ZW4pCmhpc3QoZ2V6YWFnZGVQb3RlbixtYWluPSJHZXphYWdkZSBsdXhlIHBvdGVuIiwgeGxhYj0iYnVja2V0IGdyb290dGUiLCB5bGFiPSJob2V2ZWVsaGVpZCBsdXhlIGdlemFhZ2RlIHBvdGVuIikKCnhheGlzIDwtIHNlcSgxOmxlbmd0aChnZXphYWdkZVBvdGVuKSkKYm94cGxvdChnZXphYWdkZVBvdGVuLCB5ID0geGF4aXMsIG1haW49ImJveHBsb3QgbHV4ZSBnZXphYWdkZSBwb3RlbiIsIHlsYWI9IkhvZXZlZWxoZWlkIGx1eGUgZ2V6YWFnZGUgcG90ZW4iKQojcHJpbnQoc3VtbWFyeShnZXphYWdkZVBvdGVuKSkKYGBgCgojIyMgTWFjaGluZSA4IC0gKElKemVyKSBidWlnbWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KIyBNOCA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkLEl0ZW1UeXBlKSwKIyAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09OCkmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQoKTThfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG1hY2hpbmVzX1Y9PTgpJihpdGVtdHlwZV9WPT0iRSIpKSkKbThfdCA8LSBhcy5udW1lcmljKE04XyRUaW1lc3RhbXApCk04IDwtIHN1YnNldChNOF8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobThfdCA8IHJlbmRlcmluZ1RpbWUpKSkKCgojcHJpbnQoaGVhZChNOCRPdXRwdXRCdWZmZXIpKQojcHJpbnQodW5pcXVlKE04JE91dHB1dEJ1ZmZlcikpCiNwcmludChjb3VudCgoTTgkT3V0cHV0QnVmZmVyKSkpCiNjbGFzcyhNOCRPdXRwdXRCdWZmZXIpCiNvdXRwdXQgPC0gYWJzKE04JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNOCRUaW1lc3RhbXAsIE04JE91dHB1dEJ1ZmZlciwgbWFpbj0iQnVpZ21hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjFzdCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNOCRUaW1lc3RhbXAsTTgkT3V0cHV0QnVmZmVyKQoKI3ByaW50KGhlYWQoTTgsIG49NTApKQojcHJpbnQodGFpbChNOCwgbj01MCkpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlYm9nZW5Qb3RlbiA8LSBNOCRPdXRwdXRCdWZmZXIKZ2Vib2dlblBvdGVuIDwtIGFzLm51bWVyaWMoZ2Vib2dlblBvdGVuKQpoaXN0KGdlYm9nZW5Qb3RlbixtYWluPSJHZWJvZ2VuIGx1eGUgcG90ZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIGx1eGUgZ2Vib2dlbiBwb3RlbiIpCgojZCA8LSBkZW5zaXR5KGdlemFhZ2RlQmxhZGVuKQojcGxvdChkKQojcG9seWdvbihkLGNvbD0icmVkIixib3JkZXI9ImJsdWUiKQoKeGF4aXMgPC0gc2VxKDE6bGVuZ3RoKGdlYm9nZW5Qb3RlbikpCmJveHBsb3QoeCA9IGdlYm9nZW5Qb3Rlbix5ID0geGF4aXMsIG1haW49ImJveHBsb3QgbHV4ZSBnZWJvZ2VuIHBvdGVuIiwgeWxhYj0iSG9ldmVlbGhlaWQgbHV4ZSBnZWJvZ2VuIHBvdGVuIikKCiNwcmludChzdW1tYXJ5KGdlemFhZ2RlQmxhZGVuKSkKI3ByaW50KHVuaXF1ZShnZXphYWdkZUJsYWRlbikpCmBgYAoKIyMjIE1hY2hpbmUgOSAtIExhc21hY2hpbmUKCmBgYHtyIGVjaG89RkFMU0V9CiMgTTkgPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiMgICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTkpJihpdGVtdHlwZV9WPT0iRSIpJih0aW1lc3RhbXBzX1Y8PXJlbmRlclRpbWVbcmVuZGVyaW5nVGltZV0pKSkKCk05XyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtYWNoaW5lc19WPT05KSYoaXRlbXR5cGVfVj09IkUiKSkpCm05X3QgPC0gYXMubnVtZXJpYyhNOV8kVGltZXN0YW1wKQpNOSA8LSBzdWJzZXQoTTlfLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG05X3QgPCByZW5kZXJpbmdUaW1lKSkpCgoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE05JFRpbWVzdGFtcCxNOSRPdXRwdXRCdWZmZXIsbWFpbj0iTGFzbWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iMm5kIG91dHB1dGJ1ZmZlciIpCmxpbmVzKE05JFRpbWVzdGFtcCxNOSRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlbGFzZGVQb3RlbiA8LSBNOSRPdXRwdXRCdWZmZXIKZ2VsYXNkZVBvdGVuIDwtIGFzLm51bWVyaWMoZ2VsYXNkZVBvdGVuKQpoaXN0KGdlbGFzZGVQb3RlbixtYWluPSJHZWxhc2RlIGx1eGUgcG90ZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIGdlbGFzZGUgbHV4ZSBwb3RlbiIpCgp4YXhpcyA8LSBzZXEoMTpsZW5ndGgoZ2VsYXNkZVBvdGVuKSkKYm94cGxvdChnZWxhc2RlUG90ZW4seSA9IHhheGlzLCBtYWluPSJib3hwbG90IGx1eGUgZ2VsYXNkZSBwb3RlbiIsIHlsYWI9IkhvZXZlZWxoZWlkIGx1eGUgZ2VsYXNkZSBwb3RlbiIpCgojcHJpbnQoc3VtbWFyeShnZWxhc2RlUG90ZW4pKQpgYGAKCiMjIyBNYWNoaW5lIDExIC0gcG9saWpzdG1hY2hpbmUKCmBgYHtyIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9Ck0xMV8gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobWFjaGluZXNfVj09MTEpJihpdGVtdHlwZV9WPT0iRSIpKSkKbTExX3QgPC0gYXMubnVtZXJpYyhNMTFfJFRpbWVzdGFtcCkKTTExIDwtIHN1YnNldChNMTFfLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG0xMV90IDwgcmVuZGVyaW5nVGltZSkpKQoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE0xMSRUaW1lc3RhbXAsTTExJE91dHB1dEJ1ZmZlcixtYWluPSJQb2xpanN0bWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iZmluYWwgb3V0cHV0YnVmZmVyIikKbGluZXMoTTExJFRpbWVzdGFtcCxNMTEkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZXBvbGlqc3RlUG90ZW4gPC0gTTExJE91dHB1dEJ1ZmZlcgpnZXBvbGlqc3RlUG90ZW4gPC0gYXMubnVtZXJpYyhnZXBvbGlqc3RlUG90ZW4pCmhpc3QoZ2Vwb2xpanN0ZVBvdGVuKQpib3hwbG90KGdlcG9saWpzdGVQb3RlbikKCiNwcmludChzdW1tYXJ5KGdlY29hdGVQb3RlbikpCmBgYAoKLS0tCg==