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

Simulatie informatie

1.0 Logbestand: ../LogFiles/logfile-v10-1_minimale_productie.csv

1.1 aantal gemaakte budget-tafels: 3110

1.2 aantal gemaakte luxe-tafels: 2164

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

1.4 aantal reparaties: 7

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



Productielijnen

Budget-bladen

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

Machine 1 - (Hout) zaagmachine


Machine 4 - Voorboormachine


Machine 5 - Schuurmachine


Machine 6 - Verfmachine


Budget-poten

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

Machine 7 - IJzerzaag-machine


Machine 9 - Lasmachine


Machine 10 - Poedercoat-machine


Luxe-bladen

Render time

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

Machine 1 - (Hout) zaagmachine

no non-missing arguments to min; returning Infno non-missing arguments to max; returning -Infno non-missing arguments to min; returning Infno non-missing arguments to max; returning -InfError in plot.window(...) : need finite 'xlim' values

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: 1d 0H 0M 0S

Machine 7 - IJzerzaag-machine

Machine 8 - (IJzer) buigmachine

Machine 9 - Lasmachine

Machine 11 - polijstmachine


LS0tCnRpdGxlOiAiU2ltdWxhdGlvbiBSZXBvcnQiCmF1dGhvcjogIlNwYWFuZGVycyBCLlYuIgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2sKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KIyAxLjEgTG9hZCBsaWJyYXJpZXMKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKbGlicmFyeShyZWFkcikKbGlicmFyeShkcGx5cikgIyBMaWJyYXJ5IGZvciBmaWx0ZXJpbmcgZGF0YQpsaWJyYXJ5KGx1YnJpZGF0ZSkgIyBMaWJyYXJ5IGZvciBjb252ZXJ0aW5nIHRpbWVzdGFtcHMgKHNlY29uZHMgaW4gb3VyIGNhc2UpIHRvIGZvcm1hdHRlZCBkYXRldGltZXMKbGlicmFyeSh0aWR5cikgIyBsaWJyYXJ5IGZvciBlZmZlY3RpdmUgZGF0YSBzaGFwaW5nCmxpYnJhcnkoZ2dwbG90MikgIyBsaWJyYXJ5IGZvciBlZmZlY3RpdmUgZGF0YSBzaGFwaW5nCmxpYnJhcnkoc2hpbnkpCmxpYnJhcnkoZ3JpZCkKbGlicmFyeShncmlkRXh0cmEpCmBgYAoKCmBgYHtyIGVjaG89RkFMU0V9CiMgLjIgU2V0IFdvcmtpbmcgRGlyZWN0b3J5CiNzZXR3ZCgifi9PbmVkcml2ZS9Qcm9ncmFtZXJlbi90aGVfYmlnX2ZpdmUvdGhlYmlnZml2ZS9SU2NyaXB0LyIpCiNwcmludChnZXR3ZCkKcHJpbnQoZ2V0d2QoKSkKIyBsb2dmaWxlIDwtIHJlYWQuY3N2KCJMb2dGaWxlcy9sb2dmaWxlLTE2LTAxLmNzdiIsIGhlYWRlciA9IFRSVUUsIHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkgIyBSZWFkIGxvZyBmaWxlCiMgbG9nZmlsZSA8LSByZWFkLmNzdigifi9Vc2Vycy9qb3JuYnJvdXdlci9PbmVkcml2ZS9Qcm9ncmFtZXJlbi90aGVfYmlnX2ZpdmUvdGhlYmlnZml2ZS9SU2NyaXB0L0xvZ0ZpbGVzL2xvZ2ZpbGUtMTctMDEuY3N2IiwgaGVhZGVyID0gVFJVRSwgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKSAjIFJlYWQgbG9nIGZpbGUKIyBsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9TcGFhbmRlcnNCVl8xamFhcl9nb2Vka29wZU1hY2hpbmVzX29tc3RlbGxlbl8xX3dlZWsuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCiNsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9sb2dmaWxlLXYxX21pbmltYWxlX3Byb2R1Y3RpZS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKI2xvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjJfbWluaW1hbGVfcHJvZHVjdGllLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQojbG9nZmlsZSA8LSByZWFkLmNzdigiLi4vTG9nRmlsZXMvbG9nZmlsZS12Ml9taW5pbWFsZV9wcm9kdWN0aWUuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCiNsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9sb2dmaWxlLXYzX21pbmltYWxlX3Byb2R1Y3RpZS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKI2xvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjRfbWluaW1hbGVfcHJvZHVjdGllLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQojbG9nZmlsZSA8LSByZWFkLmNzdigiLi4vTG9nRmlsZXMvbG9nZmlsZS12NV9taW5pbWFsZV9wcm9kdWN0aWUuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCiNsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9sb2dmaWxlLXY2X21pbmltYWxlX3Byb2R1Y3RpZS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKI2xvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjdfbWluaW1hbGVfcHJvZHVjdGllLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQoKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKI1R3ZWVkZSBzaW11bGF0aWVyZWVrcwojbG9nZmlsZSA8LSByZWFkLmNzdigiLi4vTG9nRmlsZXMvbG9nZmlsZS12MTAtMS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKc2ltX25hbWUgPC0gYygiLi4vTG9nRmlsZXMvbG9nZmlsZS12MTAtMV9taW5pbWFsZV9wcm9kdWN0aWUuY3N2IikKI3ByaW50KHNpbV9uYW1lKQp0aW1lc3RhbXBzX1YgPC0gYyhsb2dmaWxlJFRpbWVzdGFtcCkKbWFjaGluZXNfViA8LSBjKGxvZ2ZpbGUkTWFjaGluZUlEKQpzZW5kZXJfViA8LSBjKGxvZ2ZpbGUkU2VuZGVyKQptZXNzYWdlc19WIDwtIGMobG9nZmlsZSRNZXNzYWdlKQppbnB1dF9WIDwtIGMobG9nZmlsZSRJbnB1dEJ1ZmZlcikKb3V0cHV0X1YgPC0gYyhsb2dmaWxlJE91dHB1dEJ1ZmZlcikKd29ya2xvYWRfViA8LSBjKGxvZ2ZpbGUkV29ya2xvYWQpCml0ZW10eXBlX1YgPC0gYyhsb2dmaWxlJEl0ZW1UeXBlKQpgYGAKCmBgYHtyIGVjaG89RkFMU0V9CnNvdXJjZSgiUE9TX3RpbWVfY29udmVydGVyLlIiKQoKIyBzaG93VGltZSA8LSAocmVuZGVyVGltZVtzaG93dGltZV0pKjMKIyByZW5kZXJpbmdUaW1lIDwtIHNob3dUaW1lCiMgcHJpbnQocmVuZGVyVGltZSkKI3ByaW50KHJlbmRlcmluZ1RpbWUpCnNob3dUaW1lIDwtIHNlY29uZHNfdG9fcGVyaW9kKHJlbmRlcmluZ1RpbWUqMykKc2hvd1RpbWUgPC0gYXMuY2hhcmFjdGVyLlBPU0lYdChzaG93VGltZSkKcHJpbnQoc2hvd1RpbWUpCmBgYAoKYGBge3IgaW5jbHVkZT1GQUxTRX0KIyBUZXN0IHRpbWVzdGFtcHMgZm9yIGNvbnZlcnRpZQojcHJpbnQoc2Vjb25kc190b19wZXJpb2QoMjk5NTIwMDApKQojcHJpbnQoc2Vjb25kc190b19wZXJpb2QoNzQ4ODAwMCozKjQpKQojcHJpbnQoc2Vjb25kc190b19wZXJpb2QoODk4NTYwMDApKQpgYGAKCgpgYGB7ciBTZXR1cCwgaW5jbHVkZT1GQUxTRX0KcHJpbnQoZ2V0d2QoKSkKCnNvdXJjZSgiSW5pdGlhbGl6ZS5SIikKYGBgCgpgYGB7ciBlY2hvPUZBTFNFfQojcHJpbnQodGFpbChsb2dmaWxlLCBuPTIwMCkpCm5HZXByb2R1Y2VlcmRlVGFmZWxzIDwtIHRhaWwobG9nZmlsZSRNYWNoaW5lSUQsbj0yKQpuR2Vwcm9kdWNlZXJkZUJ1ZGdldFRhZmVscyA8LSBuR2Vwcm9kdWNlZXJkZVRhZmVsc1sxXQpwcmludChuR2Vwcm9kdWNlZXJkZUJ1ZGdldFRhZmVsc1syXSkKbkdlcHJvZHVjZWVyZGVMdXhlVGFmZWxzIDwtIG5HZXByb2R1Y2VlcmRlVGFmZWxzWzJdCmBgYAoKLS0tCgojIyMgU2ltdWxhdGllIGluZm9ybWF0aWUKCjEuMCBMb2diZXN0YW5kOiBfX2ByIHNpbV9uYW1lYF9fCgoxLjEgYWFudGFsIGdlbWFha3RlIGJ1ZGdldC10YWZlbHM6IF9fYHIgbkdlcHJvZHVjZWVyZGVCdWRnZXRUYWZlbHNgX18KCjEuMiAgYWFudGFsIGdlbWFha3RlIGx1eGUtdGFmZWxzOiBfX2ByIG5HZXByb2R1Y2VlcmRlTHV4ZVRhZmVsc2BfXwoKMS4zIEdlc2ltdWxlZXJkZSB0aWpkOiBfX2ByIGZpbmFsU2ltVGltZWBfXwoKMS40IGFhbnRhbCByZXBhcmF0aWVzOiBfX2ByIG5NYWNoaW5lc0Jyb2tlbmBfXwoKYGBge3IgZWNobz1GQUxTRX0KblRpbWVzQnJva2VuIDwtIGZpbHRlcihsb2dmaWxlLCBsb2dmaWxlJE1lc3NhZ2U9PSJSRVBBSVIiKQpuVGltZXN0YW1wc0Jyb2tlbiA8LSBhcy5udW1lcmljKG5UaW1lc0Jyb2tlbiRUaW1lc3RhbXApCiNwcmludChoZWFkKG5UaW1lc0Jyb2tlbikpCmhpc3Qoc3VtbWFyeShuVGltZXN0YW1wc0Jyb2tlbiksIG1haW49InJlcGFyYXRpZXRpamRzdGlwcGVuIikKYGBgCgoxLjUgQWFudGFsIGtlZXIgZGF0IG1hY2hpbmVzIHppam4gb21nZXN0ZWxkIHR1c3NlbiBsdXhlLSBlbiBidWRnZXR0YWZlbHM6IF9fYHIgbWFjaGluZV9jb25maWdzX1VgX18KCmBgYHtyIGVjaG89RkFMU0V9Cm5UaW1lc1JlY29uZmlndXJlZCA8LSBmaWx0ZXIobG9nZmlsZSwgbG9nZmlsZSRNZXNzYWdlPT0iQ09ORklHIikKI3ByaW50KGhlYWQoblRpbWVzUmVjb25maWd1cmVkKSkKYGBgCgpgYGB7ciBldmFsPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQoKIyBNIDwtIHN1YnNldChsb2dmaWxlLCBzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKQojICAgICAgICAgICAgICxzdWJzZXQ9KHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtzaG93VGltZV0pKQojIAojIG5UaW1lc1JlY29uZmlndXJlZCA8LSBmaWx0ZXIoTSwgTSRNZXNzYWdlPT0iQ09ORklHIikKIyAjcHJpbnQoaGVhZChuVGltZXNSZWNvbmZpZ3VyZWQpKQojIG5UaW1lc1JlY29uZmlndXJlZCA8LSB1bmlxdWUoblRpbWVzUmVjb25maWd1cmVkJFRpbWVzdGFtcCkKIyBuVGltZXNSZWNvbmZpZ3VyZWQgPC0gYXMubnVtZXJpYyhuVGltZXNSZWNvbmZpZ3VyZWQpCiMgc3VtbWFyeShuVGltZXNSZWNvbmZpZ3VyZWQpCiMgCiMgcGFyKG1mcm93ID0gYygxLCAyKSkgIyBDcmVhdGUgYSB4IGdyaWQgZm9yIGRpYWdyYW1zCiMgaGlzdChuVGltZXNSZWNvbmZpZ3VyZWQsIG1haW49Ikhpc3RvZ3JhbSB2YW4gYWFudGFsIENPTkZJR1MgdmFuIE1hY2hpbmUgMSIsIHhsYWI9IlRpbWVzdGFtcCIseWxhYj0iRnJlcXVlbmN5IikKIyAjYm94cGxvdChuVGltZXNSZWNvbmZpZ3VyZWQkVGltZXN0YW1wKQojIAojIHBsb3QoblRpbWVzUmVjb25maWd1cmVkKQojIGxpbmVzKG5UaW1lc1JlY29uZmlndXJlZCkKCiMxLjYgZ2VtaWRkZWxkZSBiZXpldHRpbmdzZ3JhYWQgdHVzc2VubGlnZ2VuZGUgYnVmZmVyczogX19gciB0b3RhbEJlemV0dGluZ3NHcmFhZGBfXwpgYGAKCi0tLQoKYGBge3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KI3NvdXJjZSgiZXhwZW5zaXZlSXRlbXMuUiIpCiMjIyAxIC0gR2VuZXJhbCBTaW11bGF0aW9uIFZhcmlhYmxlcwoKIyAxLjEgYWFudGFsIGdlbWFha3RlIGJ1ZGdldC10YWZlbHM6IF9fYHIgbkdlcHJvZHVjZWVyZGVCdWRnZXRUYWZlbHNgX18KIyAKIyAxLjIgIGFhbnRhbCBnZW1hYWt0ZSBsdXhlLXRhZmVsczogX19gciBuR2Vwcm9kdWNlZXJkZUx1eGVUYWZlbHNgX18KIyAKIyAxLjMgR2VzaW11bGVlcmRlIHRpamQ6IF9fYHIgZmluYWxTaW1UaW1lYF9fCiMgCiMgMS40IGFhbnRhbCByZXBhcmF0aWVzOiBfX2ByIG5NYWNoaW5lc0Jyb2tlbmBfXwojIAojIDEuNSBBYW50YWwga2VlciBkYXQgbWFjaGluZXMgemlqbiBvbWdlc3RlbGQgdHVzc2VuIGx1eGUtIGVuIGJ1ZGdldHRhZmVsczogX19gciBtYWNoaW5lX2NvbmZpZ3NfVWBfXwojIAojIDEuNiBnZW1pZGRlbGRlIGJlemV0dGluZ3NncmFhZCB0dXNzZW5saWdnZW5kZSBidWZmZXJzOiBfX2ByIHRvdGFsQmV6ZXR0aW5nc0dyYWFkYF9fCgpgYGAKCi0tLQoKIyAgUHJvZHVjdGllbGlqbmVuIHsudGFic2V0IC50YWJzZXQtZmFkZSAudGFic2V0LXBpbGxzfQoKYGBge3IgZWNobz1GQUxTRX0KIyBwYXIobWZyb3cgPSBjKDEsIDIpKSAjIENyZWF0ZSBhIHggZ3JpZCBmb3IgZGlhZ3JhbXMKIyAKIyBiZXpldHRpbmdzZ3JhYWRUYWZlbEl0ZW1zIDwtIGMobTFfbWVhbixtNF9tZWFuLG01X21lYW4pCiMgYmFycGxvdChiZXpldHRpbmdzZ3JhYWRUYWZlbEl0ZW1zLCBtYWluPSJnZW1pZGRlbGRlIHZhbiBkZSBidWZmZXJzIFsxXVs0XVs1XSIpCiMgCiMgYmV6ZXR0aW5zZ3JhYWRUYWZlbHBvdGVuIDwtYyhtN19tZWFuLCBtOV9tZWFuKQojIAojIGJhcnBsb3QoYmV6ZXR0aW5zZ3JhYWRUYWZlbHBvdGVuLCBtYWluPSJnZW1pZGRlbGRlIHZhbiBkZSBidWZmZXJzIFs3XVs5XSIpCiMgCiMgdG90YWxCZXpldHRpbmdzR3JhYWQgPC0gYyhiZXpldHRpbmdzZ3JhYWRUYWZlbEl0ZW1zLGJlemV0dGluc2dyYWFkVGFmZWxwb3RlbikKIyB0b3RhbEJlemV0dGluZ3NHcmFhZCA8LSBtZWFuKHRvdGFsQmV6ZXR0aW5nc0dyYWFkKQpgYGAKCgojIyBCdWRnZXQtYmxhZGVuCgotIFJlbmRlcmVkIHRpbWUgcGVyaW9kIGlzOiBfX2ByIHNob3dUaW1lYF9fCgojIyMgTWFjaGluZSAxIC0gKEhvdXQpIHphYWdtYWNoaW5lCgpgYGB7ciBlY2hvPUZBTFNFfQpNMV8gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobWFjaGluZXNfVj09MSkmKGl0ZW10eXBlX1Y9PSJDIikpKQptMV90IDwtIGFzLm51bWVyaWMoTTFfJFRpbWVzdGFtcCkKTTEgPC0gc3Vic2V0KE0xXyxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtMV90IDwgcmVuZGVyaW5nVGltZSkpKQoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE0xJFRpbWVzdGFtcCxNMSRPdXRwdXRCdWZmZXIsIG1haW49IkhvdXR6YWFnbWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iMXN0IG91dHB1dGJ1ZmZlciIpCmxpbmVzKE0xJFRpbWVzdGFtcCxNMSRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlemFhZ2RlQmxhZGVuIDwtIE0xJE91dHB1dEJ1ZmZlcgpnZXphYWdkZUJsYWRlbiA8LSBhcy5udW1lcmljKGdlemFhZ2RlQmxhZGVuKQoKaGlzdChnZXphYWdkZUJsYWRlbixtYWluPSJHZXphYWdkZSBidWRnZXQgdGFmZWxibGFkZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIGdlemFhZ2RlYmxhZGVuIikKCiNkIDwtIGRlbnNpdHkoZ2V6YWFnZGVCbGFkZW4pCiNwbG90KGQpCiNwb2x5Z29uKGQsY29sPSJyZWQiLGJvcmRlcj0iYmx1ZSIpCgp4YXhpcyA8LSBzZXEoMTpsZW5ndGgoZ2V6YWFnZGVCbGFkZW4pKQpib3hwbG90KHggPSBnZXphYWdkZUJsYWRlbix5ID0geGF4aXMsIG1haW49ImJveHBsb3QgYnVkZ2V0IHRhZmVsYmxhZGVuIiwgeWxhYj0ibkdlemFhZ2RlQmxhZGVuIikKCm0xX21lYW4gPC0gbWVhbihnZXphYWdkZUJsYWRlbikKI3ByaW50KG0xX21lYW4pCiNwcmludChzdW1tYXJ5KGdlemFhZ2RlQmxhZGVuKSkKI3ByaW50KHVuaXF1ZShnZXphYWdkZUJsYWRlbikpCgptMUNvbmZpZ3MgPC0gYyhmaWx0ZXIoTTEsIE0xJE1lc3NhZ2U9PSJSRUNPTkZJR1VSRSIpKQptMV9jb25maWdzX3RpbWVzdGFtcHMgPC0gbTFDb25maWdzJFRpbWVzdGFtcAptMUNvbmZpZ3MgPC0gbGVuZ3RoKHVuaXF1ZShtMUNvbmZpZ3MkVGltZXN0YW1wKSkKCmBgYAoKYGBge3IgcGllMSwgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KTTFfY29uZmlnIDwtIGMoZmlsdGVyKE0xLCBNMSRNZXNzYWdlPT0iQ09ORklHIikpCk0xX2NvbmZpZyA8LSBNMV9jb25maWckVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk0xX2lkbGUgPC0gYyhmaWx0ZXIoTTEsIE0xJE1lc3NhZ2U9PSJQUk9EVUNUSU9OX0lETEUiKSkKTTFfaWRsZSA8LSBNMV9pZGxlJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNMV9wcm9jZXNzaW5nIDwtIGMoZmlsdGVyKE0xLCBNMSRNZXNzYWdlPT0iUFJPRFVDVElPTl9QUk9DRVNTSU5HIikpCk0xX3Byb2Nlc3NpbmcgPC0gTTFfcHJvY2Vzc2luZyRUaW1lc3RhbXAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTFfcHJvY2Vzc2VkIDwtIGMoZmlsdGVyKE0xLCBNMSRNZXNzYWdlPT0iUFJPRFVDVElPTl9QUk9DRVNTRUQiKSkKTTFfcHJvY2Vzc2VkIDwtIE0xX3Byb2Nlc3NlZCRUaW1lc3RhbXAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKI3ByaW50KGxlbmd0aChNMV9pZGxlKSkKI3ByaW50KGxlbmd0aChNMV9wcm9jZXNzZWQpKQojcHJpbnQobGVuZ3RoKE0xX3Byb2Nlc3NpbmcpKQojcHJpbnQoTTFfcHJvY2Vzc2luZ1syXSAtIE0xX2lkbGVbMl0pCiNwcmludChNMV9wcm9jZXNzZWRbMl0gLSBNMV9wcm9jZXNzaW5nWzJdKQojcHJpbnQoTTFfaWRsZVszXSAtIE0xX3Byb2Nlc3NlZFsyXSkKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKCiNwcmludChjb190aW1lKSAKbkNvbmZpZ3MgPC0gbGVuZ3RoKE0xX2NvbmZpZykKY29fdGltZSA8LSBuQ29uZmlncyAqIDMwMCAjZXZlcnkgY29uZmlnIHRha2VzIDMwMHMgKDVtaW51dGVzKQoKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKCgojblByb2Nlc3NpbmdzIDwtIGxlbmd0aChNMV9wcm9jZXNzaW5nKSAtMQojblByb2Nlc3NpbmdzIDwtIGxlbmd0aChNMV9wcm9jZXNzZWQpIC0xCiNuUHJvY2Vzc2luZ3MgPC0gbGVuZ3RoKE0xX2lkbGUpIC0xIAoKcHJpbnQoblByb2Nlc3NpbmdzKQppZF90aW1lIDwtIDAKcGdfdGltZSA8LSAwCnBkX3RpbWUgPC0gMApmb3IoaSBpbiAxOm5Qcm9jZXNzaW5ncykKewogIGlkX3RpbWVfdGFrZW4gPC0gTTFfcHJvY2Vzc2luZ1tpXSAtIE0xX2lkbGVbaV0gI2lkbGUgdGltZSAKICBwZ190aW1lX3Rha2VuIDwtIE0xX3Byb2Nlc3NlZFtpXSAtIE0xX3Byb2Nlc3NpbmdbaV0gI3Byb2Nlc3NpbmcgdGltZQogIHBkX3RpbWVfdGFrZW4gPC0gTTFfaWRsZVtpKzFdIC0gTTFfcHJvY2Vzc2VkW2ldICAjcHJvY2Vzc2VkIHRpbWUKICAKICBpZF90aW1lIDwtIGlkX3RpbWUgKyBpZF90aW1lX3Rha2VuCiAgcGdfdGltZSA8LSBwZ190aW1lICsgcGdfdGltZV90YWtlbgogIHBkX3RpbWUgPC0gcGRfdGltZSArIHBkX3RpbWVfdGFrZW4KfQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpzbGljZXMgPC0gYyhjb190aW1lLCBpZF90aW1lLCBwZ190aW1lLHBkX3RpbWUpCgoKCiNwcmludChpZF90aW1lKSAKI3ByaW50KHBnX3RpbWUpXAoKbGFiZWxzIDwtIGMoIkNPTkZJRyIsICJJRExFIiwgIlBST0NFU1NJTkciLCAiUFJPQ0VTU0VEIikKCnBpZShzbGljZXMsICBsYWJlbHMgPSBsYWJlbHMsCiAgICAgICAgbWFpbiA9ICJUaWpkIHBlciBzdGF0ZSIsCiAgICAgICAgeGxhYiA9ICJTdGF0ZXMiLAogICAgICAgIHlsYWIgPSAiVGlqZCAoc2Vjb25kZW4pIiwKICAgICAgICBsYXM9MSwKICAgICAgICBjb2wgPSByYWluYm93KGxlbmd0aChsYWJlbHMpKSkKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKYGBgCgotLS0KCiMjIyBNYWNoaW5lIDQgLSBWb29yYm9vcm1hY2hpbmUKCmBgYHtyIGVjaG89RkFMU0V9CgpNNF8gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NCkmKGl0ZW10eXBlX1Y9PSJDIikpKQptNF90IDwtIGFzLm51bWVyaWMoTTRfJFRpbWVzdGFtcCkKCk00IDwtIHN1YnNldChNNF8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICBzdWJzZXQ9KChtNF90PD1yZW5kZXJpbmdUaW1lKSkpCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTQkVGltZXN0YW1wLE00JE91dHB1dEJ1ZmZlciwgbWFpbj0iVm9vcmJvb3JtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIybmQgb3V0cHV0YnVmZmVyIikKbGluZXMoTTQkVGltZXN0YW1wLE00JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2Vib29yZGVQbGF0ZW4gPC0gTTQkT3V0cHV0QnVmZmVyCmdlYm9vcmRlUGxhdGVuIDwtIGFzLm51bWVyaWMoZ2Vib29yZGVQbGF0ZW4pCmhpc3QoZ2Vib29yZGVQbGF0ZW4pCmJveHBsb3QoZ2Vib29yZGVQbGF0ZW4pCgptNF9tZWFuIDwtIG1lYW4oZ2Vib29yZGVQbGF0ZW4pCiNwcmludChtNF9tZWFuKQojcHJpbnQodW5pcXVlKGdlYm9vcmRlUGxhdGVuKSkKI3ByaW50KHN1bW1hcnkoZ2Vib29yZGVQbGF0ZW4pKQpgYGAKCgpgYGB7ciBwaWU0LCBldmFsPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQpNNF9jb25maWcgPC0gYyhmaWx0ZXIoTTQsIE00JE1lc3NhZ2U9PSJDT05GSUciKSkKTTRfY29uZmlnIDwtIE00X2NvbmZpZyRUaW1lc3RhbXAKI3ByaW50KE00X2NvbmZpZykKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTRfaWRsZSA8LSBjKGZpbHRlcihNNCwgTTQkTWVzc2FnZT09IlBST0RVQ1RJT05fSURMRSIpKQpNNF9pZGxlIDwtIE00X2lkbGUkVGltZXN0YW1wCiNwcmludChsZW5ndGgoTTRfaWRsZSkpCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk00X3Byb2Nlc3NpbmcgPC0gYyhmaWx0ZXIoTTQsIE00JE1lc3NhZ2U9PSJQUk9EVUNUSU9OX1BST0NFU1NJTkciKSkKTTRfcHJvY2Vzc2luZyA8LSBNNF9wcm9jZXNzaW5nJFRpbWVzdGFtcAojcHJpbnQobGVuZ3RoKE00X3Byb2Nlc3NpbmcpKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNNF9wcm9jZXNzZWQgPC0gYyhmaWx0ZXIoTTQsIE00JE1lc3NhZ2U9PSJQUk9EVUNUSU9OX1BST0NFU1NFRCIpKQpNNF9wcm9jZXNzZWQgPC0gTTRfcHJvY2Vzc2VkJFRpbWVzdGFtcAojcHJpbnQobGVuZ3RoKE00X3Byb2Nlc3NlZCkpCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCm5Db25maWdzIDwtIGxlbmd0aChNNF9jb25maWcpCmNvX3RpbWUgPC0gbkNvbmZpZ3MgKiAzMDAKblByb2Nlc3NpbmdzIDwtIGxlbmd0aChNNF9wcm9jZXNzaW5nKS0xCiNwcmludChuUHJvY2Vzc2luZ3MpCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCmlkX3RpbWUgPC0gMApwZ190aW1lIDwtIDAKcGRfdGltZSA8LSAwCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCmZvcihpIGluIDE6blByb2Nlc3NpbmdzKQp7CiAgaWRfdGltZV90YWtlbiA8LSBNNF9wcm9jZXNzaW5nW2ldIC0gTTRfaWRsZVtpXSAjaWRsZSB0aW1lIAogIHBnX3RpbWVfdGFrZW4gPC0gTTRfcHJvY2Vzc2VkW2ldIC0gTTRfcHJvY2Vzc2luZ1tpXSAjcHJvY2Vzc2luZyB0aW1lCiAgcGRfdGltZV90YWtlbiA8LSBNNF9pZGxlW2krMV0gLSBNNF9wcm9jZXNzZWRbaV0gICNwcm9jZXNzZWQgdGltZQogIAogIGlkX3RpbWUgPC0gaWRfdGltZSArIGlkX3RpbWVfdGFrZW4KICBwZ190aW1lIDwtIHBnX3RpbWUgKyBwZ190aW1lX3Rha2VuCiAgcGRfdGltZSA8LSBwZF90aW1lICsgcGRfdGltZV90YWtlbgogICNwcmludChwZF90aW1lX3Rha2VuKQp9CiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCnNsaWNlcyA8LSBjKGNvX3RpbWUsIGlkX3RpbWUsIHBnX3RpbWUsIHBkX3RpbWUpCgpsYWJlbCA8LSBjKCJDT05GSUciLCAiSURMRSIsICJQUk9DRVNTSU5HIiwgIlBST0NFU1NFRCIpCgpwaWUoc2xpY2VzLCAgbGFiZWwgPSBsYWJlbHMsCiAgICAgICAgbWFpbiA9ICJUaWpkIHBlciBzdGF0ZSIsCiAgICAgICAgeGxhYiA9ICJTdGF0ZXMiLAogICAgICAgIHlsYWIgPSAiVGlqZCAoc2Vjb25kZW4pIiwKICAgICAgICBjb2wgPSByYWluYm93KGxlbmd0aChsYWJlbHMpKSkKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKYGBgCgoKLS0tCgojIyMgTWFjaGluZSA1IC0gU2NodXVybWFjaGluZQpgYGB7ciBlY2hvPUZBTFNFfQoKTTVfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTUpJihpdGVtdHlwZV9WPT0iQyIpKSkKbTVfdCA8LSBhcy5udW1lcmljKE01XyRUaW1lc3RhbXApCgpNNSA8LSBzdWJzZXQoTTVfLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgc3Vic2V0PSgobTVfdDw9cmVuZGVyaW5nVGltZSkpKQoKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNNSRUaW1lc3RhbXAsTTUkT3V0cHV0QnVmZmVyLCBtYWluPSJTY2h1dXJtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIzcmRvdXRwdXRidWZmZXIiKQpsaW5lcyhNNSRUaW1lc3RhbXAsTTUkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZXNjaHV1cmRlUGxhdGVuIDwtIE01JE91dHB1dEJ1ZmZlcgpnZXNjaHV1cmRlUGxhdGVuIDwtIGFzLm51bWVyaWMoZ2VzY2h1dXJkZVBsYXRlbikKaGlzdChnZXNjaHV1cmRlUGxhdGVuKQpib3hwbG90KGdlc2NodXVyZGVQbGF0ZW4pCgptNV9tZWFuIDwtIG1lYW4oZ2VzY2h1dXJkZVBsYXRlbikKI3ByaW50KG01X21lYW4pCiNwcmludCh1bmlxdWUoZ2VzY2h1dXJkZVBsYXRlbikpCiNwcmludChzdW1tYXJ5KGdlc2NodXVyZGVQbGF0ZW4pKQpgYGAKCgpgYGB7ciBwaWU1LCBldmFsPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQpNNV9jb25maWcgPC0gYyhmaWx0ZXIoTTUsIE01JE1lc3NhZ2U9PSJDT05GSUciKSkKTTVfY29uZmlnIDwtIE01X2NvbmZpZyRUaW1lc3RhbXAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTVfaWRsZSA8LSBjKGZpbHRlcihNNSwgTTUkTWVzc2FnZT09IlBST0RVQ1RJT05fSURMRSIpKQpNNV9pZGxlIDwtIE01X2lkbGUkVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk01X3Byb2Nlc3NpbmcgPC0gYyhmaWx0ZXIoTTUsIE01JE1lc3NhZ2U9PSJQUk9EVUNUSU9OX1BST0NFU1NJTkciKSkKTTVfcHJvY2Vzc2luZyA8LSBNNV9wcm9jZXNzaW5nJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNNV9wcm9jZXNzZWQgPC0gYyhmaWx0ZXIoTTUsIE01JE1lc3NhZ2U9PSJQUk9EVUNUSU9OX1BST0NFU1NFRCIpKQpNNV9wcm9jZXNzZWQgPC0gTTVfcHJvY2Vzc2VkJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpuQ29uZmlncyA8LSBsZW5ndGgoTTVfY29uZmlnKQpjb190aW1lIDwtIG5Db25maWdzICogMzAwCm5Qcm9jZXNzaW5ncyA8LSBsZW5ndGgoTTVfcHJvY2Vzc2luZyktMQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwppZF90aW1lIDwtIDAKcGdfdGltZSA8LSAwCnBkX3RpbWUgPC0gMAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpmb3IoaSBpbiAxOm5Qcm9jZXNzaW5ncykKewogIGlkX3RpbWVfdGFrZW4gPC0gTTVfcHJvY2Vzc2luZ1tpXSAtIE01X2lkbGVbaV0gI2lkbGUgdGltZSAKICBwZ190aW1lX3Rha2VuIDwtIE01X3Byb2Nlc3NlZFtpXSAtIE01X3Byb2Nlc3NpbmdbaV0gI3Byb2Nlc3NpbmcgdGltZQogIHBkX3RpbWVfdGFrZW4gPC0gTTVfaWRsZVtpKzFdIC0gTTVfcHJvY2Vzc2VkW2ldICAjcHJvY2Vzc2VkIHRpbWUKICAKICBpZF90aW1lIDwtIGlkX3RpbWUgKyBpZF90aW1lX3Rha2VuCiAgcGdfdGltZSA8LSBwZ190aW1lICsgcGdfdGltZV90YWtlbgogIHBkX3RpbWUgPC0gcGRfdGltZSArIHBkX3RpbWVfdGFrZW4KICAjcHJpbnQocGRfdGltZV90YWtlbikKfQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpzbGljZXMgPC0gYyhjb190aW1lLCBpZF90aW1lLCBwZ190aW1lLCBwZF90aW1lKQoKbGFiZWwgPC0gYygiQ09ORklHIiwgIklETEUiLCAiUFJPQ0VTU0lORyIsICJQUk9DRVNTRUQiKQoKcGllKHNsaWNlcywgIGxhYmVsID0gbGFiZWxzLAogICAgICAgIG1haW4gPSAiVGlqZCBwZXIgc3RhdGUiLAogICAgICAgIHhsYWIgPSAiU3RhdGVzIiwKICAgICAgICB5bGFiID0gIlRpamQgKHNlY29uZGVuKSIsCiAgICAgICAgY29sID0gcmFpbmJvdyhsZW5ndGgobGFiZWxzKSkpCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCmBgYAoKLS0tCgojIyMgTWFjaGluZSA2IC0gVmVyZm1hY2hpbmUKYGBge3IgZWNobz1GQUxTRX0KIyBNNiA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKIyAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NikmKGl0ZW10eXBlX1Y9PSJDIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQoKTTZfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTYpJihpdGVtdHlwZV9WPT0iQyIpKSkKbTZfdCA8LSBhcy5udW1lcmljKE02XyRUaW1lc3RhbXApCgpNNiA8LSBzdWJzZXQoTTZfLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgc3Vic2V0PSgobTZfdDw9cmVuZGVyaW5nVGltZSkpKQoKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNNiRUaW1lc3RhbXAsTTYkT3V0cHV0QnVmZmVyLG1haW49IlZlcmZtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSJmaW5hbG91dHB1dGJ1ZmZlciIpCmxpbmVzKE02JFRpbWVzdGFtcCxNNiRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdldmVyZmRlUGxhdGVuIDwtIE02JE91dHB1dEJ1ZmZlcgpnZXZlcmZkZVBsYXRlbiA8LSBhcy5udW1lcmljKGdldmVyZmRlUGxhdGVuKQpoaXN0KGdldmVyZmRlUGxhdGVuKQpib3hwbG90KGdldmVyZmRlUGxhdGVuKQoKI3ByaW50KHVuaXF1ZShnZXZlcmZkZVBsYXRlbikpCiNwcmludChzdW1tYXJ5KGdldmVyZmRlUGxhdGVuKSkKYGBgCgpgYGB7ciBwaWU2LCBldmFsPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQpNNl9jb25maWcgPC0gYyhmaWx0ZXIoTTYsIE02JE1lc3NhZ2U9PSJDT05GSUciKSkKTTZfY29uZmlnIDwtIE02X2NvbmZpZyRUaW1lc3RhbXAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTZfaWRsZSA8LSBjKGZpbHRlcihNNiwgTTYkTWVzc2FnZT09IlBST0RVQ1RJT05fSURMRSIpKQpNNl9pZGxlIDwtIE02X2lkbGUkVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk02X3Byb2Nlc3NpbmcgPC0gYyhmaWx0ZXIoTTYsIE02JE1lc3NhZ2U9PSJQUk9EVUNUSU9OX1BST0NFU1NJTkciKSkKTTZfcHJvY2Vzc2luZyA8LSBNNl9wcm9jZXNzaW5nJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNNl9wcm9jZXNzZWQgPC0gYyhmaWx0ZXIoTTYsIE02JE1lc3NhZ2U9PSJQUk9EVUNUSU9OX1BST0NFU1NFRCIpKQpNNl9wcm9jZXNzZWQgPC0gTTZfcHJvY2Vzc2VkJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpuQ29uZmlncyA8LSBsZW5ndGgoTTZfY29uZmlnKQpjb190aW1lIDwtIG5Db25maWdzICogMzAwCm5Qcm9jZXNzaW5ncyA8LSBsZW5ndGgoTTZfcHJvY2Vzc2VkKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwppZF90aW1lIDwtIDAKcGdfdGltZSA8LSAwCnBkX3RpbWUgPC0gMAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwojIHByaW50KGxlbmd0aChNNl9pZGxlKSkKIyAKIyBwcmludChsZW5ndGgoTTZfcHJvY2Vzc2luZykpCiMgcHJpbnQobGVuZ3RoKE02X3Byb2Nlc3NlZCkpCiMgeCA8LSBsZW5ndGgoTTZfaWRsZSkKIyB5IDwtIGxlbmd0aChNNl9wcm9jZXNzaW5nKQojIHogPC0gbGVuZ3RoKE02X3Byb2Nlc3NlZCkKIyBwcmludCh0YWlsKE02X2lkbGUpKQojIHByaW50KHRhaWwoTTZfcHJvY2Vzc2luZykpCiMgcHJpbnQodGFpbChNNl9wcm9jZXNzZWQpKQojIHByaW50KE02X3Byb2Nlc3NpbmdbMl0gLSBNNl9pZGxlWzJdKQojIHByaW50KE02X3Byb2Nlc3NlZFsyXSAtIE02X3Byb2Nlc3NpbmdbMl0pCiBwcmludChNNl9pZGxlWzEwMDFdIC0gTTZfcHJvY2Vzc2VkWzEwMDBdKQoKZm9yKGkgaW4gMTpuUHJvY2Vzc2luZ3MpCnsKICBpZF90aW1lX3Rha2VuIDwtIE02X3Byb2Nlc3NpbmdbaV0gLSBNNl9pZGxlW2ldICNpZGxlIHRpbWUgCiAgcGdfdGltZV90YWtlbiA8LSBNNl9wcm9jZXNzZWRbaV0gLSBNNl9wcm9jZXNzaW5nW2ldICNwcm9jZXNzaW5nIHRpbWUKICBwZF90aW1lX3Rha2VuIDwtIE02X2lkbGVbaV0gLSBNNl9wcm9jZXNzZWRbaV0gICNwcm9jZXNzZWQgdGltZQogIAogIHByaW50KHBkX3RpbWVfdGFrZW4pCiAgCiAgaWRfdGltZSA8LSBpZF90aW1lICsgaWRfdGltZV90YWtlbgogIHBnX3RpbWUgPC0gcGdfdGltZSArIHBnX3RpbWVfdGFrZW4KICBwZF90aW1lIDwtIHBkX3RpbWUgKyBwZF90aW1lX3Rha2VuCn0KIAojcHJpbnQoaWRfdGltZSkKI3ByaW50KHBnX3RpbWUpCiNwcmludChwZF90aW1lKQoKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKc2xpY2VzIDwtIGMoY29fdGltZSwgaWRfdGltZSwgcGdfdGltZSwgYWJzKHBkX3RpbWUpKQoKbGFiZWwgPC0gYygiQ09ORklHIiwgIklETEUiLCAiUFJPQ0VTU0lORyIsICJQUk9DRVNTRUQiKQoKcGllKHNsaWNlcywgIGxhYmVsID0gbGFiZWxzLAogICAgICAgIG1haW4gPSAiVGlqZCBwZXIgc3RhdGUiLAogICAgICAgIHhsYWIgPSAiU3RhdGVzIiwKICAgICAgICB5bGFiID0gIlRpamQgKHNlY29uZGVuKSIsCiAgICAgICAgY29sID0gcmFpbmJvdyhsZW5ndGgobGFiZWxzKSkpCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCmBgYAoKLS0tLQoKIyMgQnVkZ2V0LXBvdGVuCgotIFJlbmRlcmVkIHRpbWUgcGVyaW9kIGlzOiBfX2ByIHNob3dUaW1lYF9fCgojIyMgTWFjaGluZSA3IC0gSUp6ZXJ6YWFnLW1hY2hpbmUKYGBge3IgZWNobz1GQUxTRX0KIyBNNyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKIyAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NykmKGl0ZW10eXBlX1Y9PSJDIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQoKTTdfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTcpJihpdGVtdHlwZV9WPT0iQyIpKSkKbTdfdCA8LSBhcy5udW1lcmljKE03XyRUaW1lc3RhbXApCgpNNyA8LSBzdWJzZXQoTTdfLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgc3Vic2V0PSgobTdfdDw9cmVuZGVyaW5nVGltZSkpKQoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE03JFRpbWVzdGFtcCxNNyRPdXRwdXRCdWZmZXIsbWFpbj0iSUp6ZXJ6YWFnbWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iMXN0IG91dHB1dGJ1ZmZlciIpCmxpbmVzKE03JFRpbWVzdGFtcCxNNyRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlemFhZ2RlUG90ZW4gPC0gTTckT3V0cHV0QnVmZmVyCmdlemFhZ2RlUG90ZW4gPC0gYXMubnVtZXJpYyhnZXphYWdkZVBvdGVuKQpoaXN0KGdlemFhZ2RlUG90ZW4pCmJveHBsb3QoZ2V6YWFnZGVQb3RlbikKCm03X21lYW4gPC0gbWVhbihnZXphYWdkZVBvdGVuKQojcHJpbnQobTdfbWVhbikKCiNwcmludChzdW1tYXJ5KGdlemFhZ2RlUG90ZW4pKQpgYGAKCi0tLQoKIyMjIE1hY2hpbmUgOSAtIExhc21hY2hpbmUKYGBge3IgZWNobz1GQUxTRX0KIyBNOSA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKIyAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09OSkmKGl0ZW10eXBlX1Y9PSJDIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQoKTTlfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTkpJihpdGVtdHlwZV9WPT0iQyIpKSkKbTlfdCA8LSBhcy5udW1lcmljKE05XyRUaW1lc3RhbXApCgpNOSA8LSBzdWJzZXQoTTlfLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgc3Vic2V0PSgobTlfdDw9cmVuZGVyaW5nVGltZSkpKQoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE05JFRpbWVzdGFtcCxNOSRPdXRwdXRCdWZmZXIsbWFpbj0iTGFzbWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iMm5kIG91dHB1dGJ1ZmZlciIpCmxpbmVzKE05JFRpbWVzdGFtcCxNOSRPdXRwdXRCdWZmZXIpCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2VsYXNkZVBvdGVuIDwtIE05JE91dHB1dEJ1ZmZlcgpnZWxhc2RlUG90ZW4gPC0gYXMubnVtZXJpYyhnZWxhc2RlUG90ZW4pCmhpc3QoZ2VsYXNkZVBvdGVuKQpib3hwbG90KGdlbGFzZGVQb3RlbikKCm05X21lYW4gPC0gbWVhbihnZWxhc2RlUG90ZW4pCiNwcmludChtOV9tZWFuKQoKI3ByaW50KHN1bW1hcnkoZ2VsYXNkZVBvdGVuKSkKYGBgCgotLS0KCiMjIyBNYWNoaW5lIDEwIC0gUG9lZGVyY29hdC1tYWNoaW5lCmBgYHtyIGVjaG89RkFMU0V9CiMgTTEwIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAojICAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09MTApJihpdGVtdHlwZV9WPT0iQyIpJih0aW1lc3RhbXBzX1Y8PXJlbmRlclRpbWVbcmVuZGVyaW5nVGltZV0pKSkKCk0xMF8gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09MTApJihpdGVtdHlwZV9WPT0iQyIpKSkKbTEwX3QgPC0gYXMubnVtZXJpYyhNMTBfJFRpbWVzdGFtcCkKCk0xMCA8LSBzdWJzZXQoTTEwXyxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgIHN1YnNldD0oKG0xMF90PD1yZW5kZXJpbmdUaW1lKSkpCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTEwJFRpbWVzdGFtcCxNMTAkT3V0cHV0QnVmZmVyLG1haW49IlBvZWRlcmNvYXRtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSJmaW5hbCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNMTAkVGltZXN0YW1wLE0xMCRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlY29hdGVQb3RlbiA8LSBNMTAkT3V0cHV0QnVmZmVyCmdlY29hdGVQb3RlbiA8LSBhcy5udW1lcmljKGdlY29hdGVQb3RlbikKaGlzdChnZWNvYXRlUG90ZW4pCmJveHBsb3QoZ2Vjb2F0ZVBvdGVuKQoKI20xMF9tZWFuIDwtIG1lYW4oZ2Vjb2F0ZVBvdGVuKQojcHJpbnQobTEwX21lYW4pCgojcHJpbnQoc3VtbWFyeShnZWNvYXRlUG90ZW4pKQpgYGAKCi0tLQoKIyMgTHV4ZS1ibGFkZW4KClJlbmRlciB0aW1lCgotIFJlbmRlcmVkIHRpbWUgcGVyaW9kIGlzOiBfX2ByIHNob3dUaW1lYF9fCgojIyMgTWFjaGluZSAxIC0gKEhvdXQpIHphYWdtYWNoaW5lCgpgYGB7ciBlY2hvPUZBTFNFfQpNMV8gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobWFjaGluZXNfVj09MSkmKGl0ZW10eXBlX1Y9PSJFIikpKQptMV90IDwtIGFzLm51bWVyaWMoTTFfJFRpbWVzdGFtcCkKTTEgPC0gc3Vic2V0KE0xXyxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtMV90IDwgcmVuZGVyaW5nVGltZSkpKQoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE0xJFRpbWVzdGFtcCxNMSRPdXRwdXRCdWZmZXIsIG1haW49IkhvdXR6YWFnbWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iMXN0IG91dHB1dGJ1ZmZlciIpCmxpbmVzKE0xJFRpbWVzdGFtcCxNMSRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlemFhZ2RlQmxhZGVuIDwtIE0xJE91dHB1dEJ1ZmZlcgpnZXphYWdkZUJsYWRlbiA8LSBhcy5udW1lcmljKGdlemFhZ2RlQmxhZGVuKQpoaXN0KGdlemFhZ2RlQmxhZGVuLG1haW49IkdlemFhZ2RlIGR1cmUgdGFmZWxibGFkZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIGdlemFhZ2RlYmxhZGVuIikKCiNkIDwtIGRlbnNpdHkoZ2V6YWFnZGVCbGFkZW4pCiNwbG90KGQpCiNwb2x5Z29uKGQsY29sPSJyZWQiLGJvcmRlcj0iYmx1ZSIpCgp4YXhpcyA8LSBzZXEoMTpsZW5ndGgoZ2V6YWFnZGVCbGFkZW4pKQpib3hwbG90KHggPSBnZXphYWdkZUJsYWRlbix5ID0geGF4aXMsIG1haW49ImJveHBsb3QgZHVyZSB0YWZlbGJsYWRlbiIsIHlsYWI9Im5HZXphYWdkZUJsYWRlbiIpCgojcHJpbnQoc3VtbWFyeShnZXphYWdkZUJsYWRlbikpCiNwcmludCh1bmlxdWUoZ2V6YWFnZGVCbGFkZW4pKQpgYGAKCiMjIyBNYWNoaW5lIDIgLSAoSG91dCkgbGlqbW1hY2hpbmUKCmBgYHtyIGVjaG89RkFMU0V9CiMgTTIgPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiMgICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTIpJihpdGVtdHlwZV9WPT0iRSIpJih0aW1lc3RhbXBzX1Y8PXJlbmRlclRpbWVbcmVuZGVyaW5nVGltZV0pKSkKCk0yXyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtYWNoaW5lc19WPT0yKSYoaXRlbXR5cGVfVj09IkUiKSkpCm0yX3QgPC0gYXMubnVtZXJpYyhNMl8kVGltZXN0YW1wKQpNMiA8LSBzdWJzZXQoTTJfLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG0yX3QgPCByZW5kZXJpbmdUaW1lKSkpCgoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE0yJFRpbWVzdGFtcCxNMiRPdXRwdXRCdWZmZXIsIG1haW49Ikxpam1tYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIxc3Qgb3V0cHV0YnVmZmVyIikKbGluZXMoTTIkVGltZXN0YW1wLE0yJE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2VsaWptZGVCbGFkZW4gPC0gTTIkT3V0cHV0QnVmZmVyCmdlbGlqbWRlQmxhZGVuIDwtIGFzLm51bWVyaWMoZ2VsaWptZGVCbGFkZW4pCmhpc3QoZ2VsaWptZGVCbGFkZW4sbWFpbj0iR2VsaWptZGUgZHVyZSB0YWZlbGJsYWRlbiIsIHhsYWI9ImJ1Y2tldCBncm9vdHRlIiwgeWxhYj0iaG9ldmVlbGhlaWQgZ2VsaWptZGVibGFkZW4iKQoKI2QgPC0gZGVuc2l0eShnZXphYWdkZUJsYWRlbikKI3Bsb3QoZCkKI3BvbHlnb24oZCxjb2w9InJlZCIsYm9yZGVyPSJibHVlIikKCnhheGlzIDwtIHNlcSgxOmxlbmd0aChnZWxpam1kZUJsYWRlbikpCmJveHBsb3QoeCA9IGdlbGlqbWRlQmxhZGVuLHkgPSB4YXhpcywgbWFpbj0iR2VsaWptZGUgZHVyZSB0YWZlbGJsYWRlbiIsIHlsYWI9ImdlbGlqbWRlQmxhZGVuIikKCiNwcmludChzdW1tYXJ5KGdlemFhZ2RlQmxhZGVuKSkKI3ByaW50KHVuaXF1ZShnZXphYWdkZUJsYWRlbikpCmBgYAoKCiMjIyBNYWNoaW5lIDMgLSAoSG91dCkgRnJlZXplbWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KIyBNMyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKIyAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09MykmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQoKTTNfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG1hY2hpbmVzX1Y9PTMpJihpdGVtdHlwZV9WPT0iRSIpKSkKbTNfdCA8LSBhcy5udW1lcmljKE0zXyRUaW1lc3RhbXApCk0zIDwtIHN1YnNldChNM18sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobTNfdCA8IHJlbmRlcmluZ1RpbWUpKSkKCgoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE0zJFRpbWVzdGFtcCxNMyRPdXRwdXRCdWZmZXIsIG1haW49IkZyZWV6ZW1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjFzdCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNMyRUaW1lc3RhbXAsTTMkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZWZyZWV6ZGVCbGFkZW4gPC0gTTMkT3V0cHV0QnVmZmVyCmdlZnJlZXpkZUJsYWRlbiA8LSBhcy5udW1lcmljKGdlZnJlZXpkZUJsYWRlbikKaGlzdChnZWZyZWV6ZGVCbGFkZW4sbWFpbj0iR2VmcmVlemRlIGR1cmUgdGFmZWxibGFkZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIGdlZnJlZXpkZSBibGFkZW4iKQoKI2QgPC0gZGVuc2l0eShnZXphYWdkZUJsYWRlbikKI3Bsb3QoZCkKI3BvbHlnb24oZCxjb2w9InJlZCIsYm9yZGVyPSJibHVlIikKCnhheGlzIDwtIHNlcSgxOmxlbmd0aChnZWZyZWV6ZGVCbGFkZW4pKQpib3hwbG90KHggPSBnZWZyZWV6ZGVCbGFkZW4seSA9IHhheGlzLCBtYWluPSJHZWZyZWV6ZGUgZHVyZSB0YWZlbGJsYWRlbiIsIHlsYWI9IkhvZXZlZWxoZWlkIGdlZnJlZXpkZSBibGFkZW4iKQoKI3ByaW50KHN1bW1hcnkoZ2V6YWFnZGVCbGFkZW4pKQojcHJpbnQodW5pcXVlKGdlemFhZ2RlQmxhZGVuKSkKYGBgCgojIyMgTWFjaGluZSA0IC0gKEhvdXQpIFZvb3Jib29ybWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KIyBNNCA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKIyAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NCkmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQoKTTRfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG1hY2hpbmVzX1Y9PTQpJihpdGVtdHlwZV9WPT0iRSIpKSkKbTRfdCA8LSBhcy5udW1lcmljKE00XyRUaW1lc3RhbXApCk00IDwtIHN1YnNldChNNF8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobTRfdCA8IHJlbmRlcmluZ1RpbWUpKSkKCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTQkVGltZXN0YW1wLE00JE91dHB1dEJ1ZmZlciwgbWFpbj0iVm9vcmJvb3JtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIybmQgb3V0cHV0YnVmZmVyIikKbGluZXMoTTQkVGltZXN0YW1wLE00JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2Vib29yZGVQbGF0ZW4gPC0gTTQkT3V0cHV0QnVmZmVyCmdlYm9vcmRlUGxhdGVuIDwtIGFzLm51bWVyaWMoZ2Vib29yZGVQbGF0ZW4pCgpoaXN0KGdlYm9vcmRlUGxhdGVuLG1haW49IlZvb3JnZWJvb3JkZSBkdXJlIHRhZmVsYmxhZGVuIiwgeGxhYj0iYnVja2V0IGdyb290dGUiLCB5bGFiPSJob2V2ZWVsaGVpZCB2b29yZ2Vib29yZGUgcGxhdGVuIikKCnhheGlzIDwtIHNlcSgxOmxlbmd0aChnZWJvb3JkZVBsYXRlbikpCmJveHBsb3QoZ2Vib29yZGVQbGF0ZW4seSA9IHhheGlzLCBtYWluPSJWb29yZ2Vib29yZGUgZHVyZSB0YWZlbGJsYWRlbiIsIHlsYWI9IkhvZXZlZWxoZWlkIFZvb3JnZWJvb3JkZSBibGFkZW4iKQoKI3ByaW50KHVuaXF1ZShnZWJvb3JkZVBsYXRlbikpCiNwcmludChzdW1tYXJ5KGdlYm9vcmRlUGxhdGVuKSkKYGBgCgojIyMgTWFjaGluZSA1IC0gKEhvdXQpIFNjaHV1cm1hY2hpbmUKCmBgYHtyIGVjaG89RkFMU0V9CiMgTTUgPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiMgICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTUpJihpdGVtdHlwZV9WPT0iRSIpJih0aW1lc3RhbXBzX1Y8PXJlbmRlclRpbWVbcmVuZGVyaW5nVGltZV0pKSkKTTVfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG1hY2hpbmVzX1Y9PTUpJihpdGVtdHlwZV9WPT0iRSIpKSkKbTVfdCA8LSBhcy5udW1lcmljKE01XyRUaW1lc3RhbXApCk01IDwtIHN1YnNldChNNV8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobTVfdCA8IHJlbmRlcmluZ1RpbWUpKSkKCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTUkVGltZXN0YW1wLE01JE91dHB1dEJ1ZmZlciwgbWFpbj0iU2NodXVybWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iM3JkIG91dHB1dGJ1ZmZlciIpCmxpbmVzKE01JFRpbWVzdGFtcCxNNSRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlc2NodXVyZGVQbGF0ZW4gPC0gTTUkT3V0cHV0QnVmZmVyCmdlc2NodXVyZGVQbGF0ZW4gPC0gYXMubnVtZXJpYyhnZXNjaHV1cmRlUGxhdGVuKQpoaXN0KGdlc2NodXVyZGVQbGF0ZW4sbWFpbj0iR2VzY2h1dXJkZSBkdXJlIHRhZmVsYmxhZGVuIiwgeGxhYj0iYnVja2V0IGdyb290dGUiLCB5bGFiPSJob2V2ZWVsaGVpZCBnZXNjaHV1cmRlIHBsYXRlbiIpCgp4YXhpcyA8LSBzZXEoMTpsZW5ndGgoZ2VzY2h1dXJkZVBsYXRlbikpCmJveHBsb3QoZ2VzY2h1dXJkZVBsYXRlbix5ID0geGF4aXMsIG1haW49Ikdlc2NodXVyZGUgZHVyZSB0YWZlbGJsYWRlbiIsIHlsYWI9IkhvZXZlZWxoZWlkIGdlc2NodXVyZGUgYmxhZGVuIikKCiNwcmludCh1bmlxdWUoZ2VzY2h1dXJkZVBsYXRlbikpCiNwcmludChzdW1tYXJ5KGdlc2NodXVyZGVQbGF0ZW4pKQpgYGAKCiMjIyBNYWNoaW5lIDYgLSAoSG91dCkgVmVyZm1hY2hpbmUKCmBgYHtyIGVjaG89RkFMU0V9CiMgTTYgPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiMgICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTYpJihpdGVtdHlwZV9WPT0iRSIpJih0aW1lc3RhbXBzX1Y8PXJlbmRlclRpbWVbcmVuZGVyaW5nVGltZV0pKSkKCk02XyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtYWNoaW5lc19WPT02KSYoaXRlbXR5cGVfVj09IkUiKSkpCm02X3QgPC0gYXMubnVtZXJpYyhNNl8kVGltZXN0YW1wKQpNNiA8LSBzdWJzZXQoTTZfLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG02X3QgPCByZW5kZXJpbmdUaW1lKSkpCgoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE02JFRpbWVzdGFtcCxNNiRPdXRwdXRCdWZmZXIsbWFpbj0iVmVyZm1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9ImZpbmFsb3V0cHV0YnVmZmVyIikKbGluZXMoTTYkVGltZXN0YW1wLE02JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2V2ZXJmZGVQbGF0ZW4gPC0gTTYkT3V0cHV0QnVmZmVyCmdldmVyZmRlUGxhdGVuIDwtIGFzLm51bWVyaWMoZ2V2ZXJmZGVQbGF0ZW4pCmhpc3QoZ2V2ZXJmZGVQbGF0ZW4pCmJveHBsb3QoZ2V2ZXJmZGVQbGF0ZW4pCgojcHJpbnQodW5pcXVlKGdldmVyZmRlUGxhdGVuKSkKI3ByaW50KHN1bW1hcnkoZ2V2ZXJmZGVQbGF0ZW4pKQpgYGAKCiMjIEx1eGUtcG90ZW4KCi0gUmVuZGVyZWQgdGltZSBwZXJpb2QgaXM6IF9fYHIgc2hvd1RpbWVgX18KCiMjIyBNYWNoaW5lIDcgLSBJSnplcnphYWctbWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KIyBNNyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKIyAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NykmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQoKTTdfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG1hY2hpbmVzX1Y9PTcpJihpdGVtdHlwZV9WPT0iRSIpKSkKbTdfdCA8LSBhcy5udW1lcmljKE03XyRUaW1lc3RhbXApCk03IDwtIHN1YnNldChNN18sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobTdfdCA8IHJlbmRlcmluZ1RpbWUpKSkKCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTckVGltZXN0YW1wLE03JE91dHB1dEJ1ZmZlcixtYWluPSJJSnplcnphYWdtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIxc3Qgb3V0cHV0YnVmZmVyIikKbGluZXMoTTckVGltZXN0YW1wLE03JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2V6YWFnZGVQb3RlbiA8LSBNNyRPdXRwdXRCdWZmZXIKZ2V6YWFnZGVQb3RlbiA8LSBhcy5udW1lcmljKGdlemFhZ2RlUG90ZW4pCmhpc3QoZ2V6YWFnZGVQb3RlbixtYWluPSJHZXphYWdkZSBsdXhlIHBvdGVuIiwgeGxhYj0iYnVja2V0IGdyb290dGUiLCB5bGFiPSJob2V2ZWVsaGVpZCBsdXhlIGdlemFhZ2RlIHBvdGVuIikKCnhheGlzIDwtIHNlcSgxOmxlbmd0aChnZXphYWdkZVBvdGVuKSkKYm94cGxvdChnZXphYWdkZVBvdGVuLCB5ID0geGF4aXMsIG1haW49ImJveHBsb3QgbHV4ZSBnZXphYWdkZSBwb3RlbiIsIHlsYWI9IkhvZXZlZWxoZWlkIGx1eGUgZ2V6YWFnZGUgcG90ZW4iKQojcHJpbnQoc3VtbWFyeShnZXphYWdkZVBvdGVuKSkKYGBgCgojIyMgTWFjaGluZSA4IC0gKElKemVyKSBidWlnbWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KIyBNOCA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkLEl0ZW1UeXBlKSwKIyAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09OCkmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQoKTThfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG1hY2hpbmVzX1Y9PTgpJihpdGVtdHlwZV9WPT0iRSIpKSkKbThfdCA8LSBhcy5udW1lcmljKE04XyRUaW1lc3RhbXApCk04IDwtIHN1YnNldChNOF8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobThfdCA8IHJlbmRlcmluZ1RpbWUpKSkKCgojcHJpbnQoaGVhZChNOCRPdXRwdXRCdWZmZXIpKQojcHJpbnQodW5pcXVlKE04JE91dHB1dEJ1ZmZlcikpCiNwcmludChjb3VudCgoTTgkT3V0cHV0QnVmZmVyKSkpCiNjbGFzcyhNOCRPdXRwdXRCdWZmZXIpCiNvdXRwdXQgPC0gYWJzKE04JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNOCRUaW1lc3RhbXAsIE04JE91dHB1dEJ1ZmZlciwgbWFpbj0iQnVpZ21hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjFzdCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNOCRUaW1lc3RhbXAsTTgkT3V0cHV0QnVmZmVyKQoKI3ByaW50KGhlYWQoTTgsIG49NTApKQojcHJpbnQodGFpbChNOCwgbj01MCkpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlYm9nZW5Qb3RlbiA8LSBNOCRPdXRwdXRCdWZmZXIKZ2Vib2dlblBvdGVuIDwtIGFzLm51bWVyaWMoZ2Vib2dlblBvdGVuKQpoaXN0KGdlYm9nZW5Qb3RlbixtYWluPSJHZWJvZ2VuIGx1eGUgcG90ZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIGx1eGUgZ2Vib2dlbiBwb3RlbiIpCgojZCA8LSBkZW5zaXR5KGdlemFhZ2RlQmxhZGVuKQojcGxvdChkKQojcG9seWdvbihkLGNvbD0icmVkIixib3JkZXI9ImJsdWUiKQoKeGF4aXMgPC0gc2VxKDE6bGVuZ3RoKGdlYm9nZW5Qb3RlbikpCmJveHBsb3QoeCA9IGdlYm9nZW5Qb3Rlbix5ID0geGF4aXMsIG1haW49ImJveHBsb3QgbHV4ZSBnZWJvZ2VuIHBvdGVuIiwgeWxhYj0iSG9ldmVlbGhlaWQgbHV4ZSBnZWJvZ2VuIHBvdGVuIikKCiNwcmludChzdW1tYXJ5KGdlemFhZ2RlQmxhZGVuKSkKI3ByaW50KHVuaXF1ZShnZXphYWdkZUJsYWRlbikpCmBgYAoKIyMjIE1hY2hpbmUgOSAtIExhc21hY2hpbmUKCmBgYHtyIGVjaG89RkFMU0V9CiMgTTkgPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiMgICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTkpJihpdGVtdHlwZV9WPT0iRSIpJih0aW1lc3RhbXBzX1Y8PXJlbmRlclRpbWVbcmVuZGVyaW5nVGltZV0pKSkKCk05XyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtYWNoaW5lc19WPT05KSYoaXRlbXR5cGVfVj09IkUiKSkpCm05X3QgPC0gYXMubnVtZXJpYyhNOV8kVGltZXN0YW1wKQpNOSA8LSBzdWJzZXQoTTlfLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG05X3QgPCByZW5kZXJpbmdUaW1lKSkpCgoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE05JFRpbWVzdGFtcCxNOSRPdXRwdXRCdWZmZXIsbWFpbj0iTGFzbWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iMm5kIG91dHB1dGJ1ZmZlciIpCmxpbmVzKE05JFRpbWVzdGFtcCxNOSRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlbGFzZGVQb3RlbiA8LSBNOSRPdXRwdXRCdWZmZXIKZ2VsYXNkZVBvdGVuIDwtIGFzLm51bWVyaWMoZ2VsYXNkZVBvdGVuKQpoaXN0KGdlbGFzZGVQb3RlbixtYWluPSJHZWxhc2RlIGx1eGUgcG90ZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIGdlbGFzZGUgbHV4ZSBwb3RlbiIpCgp4YXhpcyA8LSBzZXEoMTpsZW5ndGgoZ2VsYXNkZVBvdGVuKSkKYm94cGxvdChnZWxhc2RlUG90ZW4seSA9IHhheGlzLCBtYWluPSJib3hwbG90IGx1eGUgZ2VsYXNkZSBwb3RlbiIsIHlsYWI9IkhvZXZlZWxoZWlkIGx1eGUgZ2VsYXNkZSBwb3RlbiIpCgojcHJpbnQoc3VtbWFyeShnZWxhc2RlUG90ZW4pKQpgYGAKCiMjIyBNYWNoaW5lIDExIC0gcG9saWpzdG1hY2hpbmUKCmBgYHtyIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9Ck0xMV8gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobWFjaGluZXNfVj09MTEpJihpdGVtdHlwZV9WPT0iRSIpKSkKbTExX3QgPC0gYXMubnVtZXJpYyhNMTFfJFRpbWVzdGFtcCkKTTExIDwtIHN1YnNldChNMTFfLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG0xMV90IDwgcmVuZGVyaW5nVGltZSkpKQoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE0xMSRUaW1lc3RhbXAsTTExJE91dHB1dEJ1ZmZlcixtYWluPSJQb2xpanN0bWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iZmluYWwgb3V0cHV0YnVmZmVyIikKbGluZXMoTTExJFRpbWVzdGFtcCxNMTEkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZXBvbGlqc3RlUG90ZW4gPC0gTTExJE91dHB1dEJ1ZmZlcgpnZXBvbGlqc3RlUG90ZW4gPC0gYXMubnVtZXJpYyhnZXBvbGlqc3RlUG90ZW4pCmhpc3QoZ2Vwb2xpanN0ZVBvdGVuKQpib3hwbG90KGdlcG9saWpzdGVQb3RlbikKCiNwcmludChzdW1tYXJ5KGdlY29hdGVQb3RlbikpCmBgYAoKLS0tCg==