[1] "/Users/jornbrouwer/Onedrive/Programeren/the_big_five/thebigfive/RScript/SpaandersBV_dataset_2"
[1] "../LogFiles/logfile-v1_minimale_productie.csv"
Productielijnen

Budget-bladen
- Rendered time period is: 5d 0H 0M 0S
Machine 1 - (Hout) zaagmachine


Machine 4 - Voorboormachine
Machine 5 - Schuurmachine


Machine 6 - Verfmachine


Budget-poten
Machine 7 - IJzerzaag-machine


Machine 9 - Lasmachine


Machine 10 - Poedercoat-machine


Luxe-bladen
Render time
- Rendered time period is: 5d 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
Machine 7 - IJzerzaag-machine


Machine 8 - (IJzer) buigmachine
M8 <- subset(logfile,select=c(Timestamp,Sender,Message,InputBuffer,OutputBuffer,Workload,ItemType),
subset=((machines_V==8)&(itemtype_V=="E")&(timestamps_V<=renderTime[dummyRenderedTime])))
#par(mfrow = c(1,1))
#plot(M8$Timestamp,M8$OutputBuffer, main="Buigmachine",xlab = "Timestamp in seconds",ylab="1st outputbuffer")
#lines(M8$Timestamp,M8$OutputBuffer)
#print(head(M8, n=50))
#print(tail(M8, n=50))
#par(mfrow = c(1,2))
#gebogenPoten <- M8$OutputBuffer
#gebogenPoten <- as.numeric(gebogenPoten)
#hist(gebogenPoten,main="Gebogen luxe poten", xlab="bucket grootte", ylab="hoeveelheid luxe gebogen poten")
#d <- density(gezaagdeBladen)
#plot(d)
#polygon(d,col="red",border="blue")
#xaxis <- seq(1:length(gebogenPoten))
#boxplot(x = gebogenPoten,y = xaxis, main="boxplot luxe gebogen poten", ylab="Hoeveelheid luxe gebogen poten")
#print(summary(gezaagdeBladen))
#print(unique(gezaagdeBladen))
Machine 9 - Lasmachine


Machine 11 - polijstmachine


LS0tCnRpdGxlOiAiU2ltdWxhdGlvbiBSZXBvcnQiCmF1dGhvcjogIlNwYWFuZGVycyBCLlYuIgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2sKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KIyAxLjEgTG9hZCBsaWJyYXJpZXMKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKbGlicmFyeShyZWFkcikKbGlicmFyeShkcGx5cikgIyBMaWJyYXJ5IGZvciBmaWx0ZXJpbmcgZGF0YQpsaWJyYXJ5KGx1YnJpZGF0ZSkgIyBMaWJyYXJ5IGZvciBjb252ZXJ0aW5nIHRpbWVzdGFtcHMgKHNlY29uZHMgaW4gb3VyIGNhc2UpIHRvIGZvcm1hdHRlZCBkYXRldGltZXMKbGlicmFyeSh0aWR5cikgIyBsaWJyYXJ5IGZvciBlZmZlY3RpdmUgZGF0YSBzaGFwaW5nCmxpYnJhcnkoZ2dwbG90MikgIyBsaWJyYXJ5IGZvciBlZmZlY3RpdmUgZGF0YSBzaGFwaW5nCmxpYnJhcnkoc2hpbnkpCmxpYnJhcnkoZ3JpZCkKbGlicmFyeShncmlkRXh0cmEpCmBgYAoKCmBgYHtyIGVjaG89RkFMU0V9CiMgLjIgU2V0IFdvcmtpbmcgRGlyZWN0b3J5CiNzZXR3ZCgifi9PbmVkcml2ZS9Qcm9ncmFtZXJlbi90aGVfYmlnX2ZpdmUvdGhlYmlnZml2ZS9SU2NyaXB0LyIpCiNwcmludChnZXR3ZCkKcHJpbnQoZ2V0d2QoKSkKIyBsb2dmaWxlIDwtIHJlYWQuY3N2KCJMb2dGaWxlcy9sb2dmaWxlLTE2LTAxLmNzdiIsIGhlYWRlciA9IFRSVUUsIHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkgIyBSZWFkIGxvZyBmaWxlCiMgbG9nZmlsZSA8LSByZWFkLmNzdigifi9Vc2Vycy9qb3JuYnJvdXdlci9PbmVkcml2ZS9Qcm9ncmFtZXJlbi90aGVfYmlnX2ZpdmUvdGhlYmlnZml2ZS9SU2NyaXB0L0xvZ0ZpbGVzL2xvZ2ZpbGUtMTctMDEuY3N2IiwgaGVhZGVyID0gVFJVRSwgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKSAjIFJlYWQgbG9nIGZpbGUKIyBsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9TcGFhbmRlcnNCVl8xamFhcl9nb2Vka29wZU1hY2hpbmVzX29tc3RlbGxlbl8xX3dlZWsuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCmxvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjFfbWluaW1hbGVfcHJvZHVjdGllLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQojbG9nZmlsZSA8LSByZWFkLmNzdigiLi4vTG9nRmlsZXMvbG9nZmlsZS12Ml9taW5pbWFsZV9wcm9kdWN0aWUuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCiNsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9sb2dmaWxlLXYyX21pbmltYWxlX3Byb2R1Y3RpZS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKI2xvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjNfbWluaW1hbGVfcHJvZHVjdGllLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQojbG9nZmlsZSA8LSByZWFkLmNzdigiLi4vTG9nRmlsZXMvbG9nZmlsZS12NF9taW5pbWFsZV9wcm9kdWN0aWUuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCnNpbV9uYW1lIDwtIGMoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjFfbWluaW1hbGVfcHJvZHVjdGllLmNzdiIpCiNwcmludChzaW1fbmFtZSkKCmBgYAoKYGBge3IgaW5jbHVkZT1GQUxTRX0Kc291cmNlKCJQT1NfdGltZV9jb252ZXJ0ZXIuUiIpCgpzaG93VGltZSA8LSAocmVuZGVyVGltZVtkdW1teVJlbmRlcmVkVGltZV0pKjMKc2hvd1RpbWUgPC0gc2Vjb25kc190b19wZXJpb2Qoc2hvd1RpbWUpCnNob3dUaW1lIDwtIGFzLmNoYXJhY3Rlci5QT1NJWHQoc2hvd1RpbWUpCnByaW50KHNob3dUaW1lKQpgYGAKCmBgYHtyIGluY2x1ZGU9RkFMU0V9CiMgVGVzdCB0aW1lc3RhbXBzIGZvciBjb252ZXJ0aWUKI3ByaW50KHNlY29uZHNfdG9fcGVyaW9kKDI5OTUyMDAwKSkKI3ByaW50KHNlY29uZHNfdG9fcGVyaW9kKDc0ODgwMDAqMyo0KSkKI3ByaW50KHNlY29uZHNfdG9fcGVyaW9kKDg5ODU2MDAwKSkKYGBgCgoKYGBge3IgU2V0dXAsIGluY2x1ZGU9RkFMU0V9CnByaW50KGdldHdkKCkpCgpzb3VyY2UoIkluaXRpYWxpemUuUiIpCmBgYAoKYGBge3IgZWNobz1GQUxTRX0KI3ByaW50KHRhaWwobG9nZmlsZSwgbj0yMDApKQpgYGAKCi0tLQoKIyMjIFNpbXVsYXRpZSBpbmZvcm1hdGllCgoxLjAgTG9nYmVzdGFuZDogX19gciBzaW1fbmFtZWBfXwoKMS4xIGFhbnRhbCBnZW1hYWt0ZSBidWRnZXQtdGFmZWxzOiBfX2ByIG5HZXByb2R1Y2VlcmRlQnVkZ2V0VGFmZWxzYF9fCgoxLjIgIGFhbnRhbCBnZW1hYWt0ZSBsdXhlLXRhZmVsczogX19gciBuR2Vwcm9kdWNlZXJkZUx1eGVUYWZlbHNgX18KCjEuMyBHZXNpbXVsZWVyZGUgdGlqZDogX19gciBmaW5hbFNpbVRpbWVgX18KCjEuNCBhYW50YWwgcmVwYXJhdGllczogX19gciBuTWFjaGluZXNCcm9rZW5gX18KCjEuNSBBYW50YWwga2VlciBkYXQgbWFjaGluZXMgemlqbiBvbWdlc3RlbGQgdHVzc2VuIGx1eGUtIGVuIGJ1ZGdldHRhZmVsczogX19gciBtYWNoaW5lX2NvbmZpZ3NfVWBfXwoKMS42IGdlbWlkZGVsZGUgYmV6ZXR0aW5nc2dyYWFkIHR1c3NlbmxpZ2dlbmRlIGJ1ZmZlcnM6IF9fYHIgdG90YWxCZXpldHRpbmdzR3JhYWRgX18KCi0tLQoKYGBge3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KI3NvdXJjZSgiZXhwZW5zaXZlSXRlbXMuUiIpCiMjIyAxIC0gR2VuZXJhbCBTaW11bGF0aW9uIFZhcmlhYmxlcwoKIyAxLjEgYWFudGFsIGdlbWFha3RlIGJ1ZGdldC10YWZlbHM6IF9fYHIgbkdlcHJvZHVjZWVyZGVCdWRnZXRUYWZlbHNgX18KIyAKIyAxLjIgIGFhbnRhbCBnZW1hYWt0ZSBsdXhlLXRhZmVsczogX19gciBuR2Vwcm9kdWNlZXJkZUx1eGVUYWZlbHNgX18KIyAKIyAxLjMgR2VzaW11bGVlcmRlIHRpamQ6IF9fYHIgZmluYWxTaW1UaW1lYF9fCiMgCiMgMS40IGFhbnRhbCByZXBhcmF0aWVzOiBfX2ByIG5NYWNoaW5lc0Jyb2tlbmBfXwojIAojIDEuNSBBYW50YWwga2VlciBkYXQgbWFjaGluZXMgemlqbiBvbWdlc3RlbGQgdHVzc2VuIGx1eGUtIGVuIGJ1ZGdldHRhZmVsczogX19gciBtYWNoaW5lX2NvbmZpZ3NfVWBfXwojIAojIDEuNiBnZW1pZGRlbGRlIGJlemV0dGluZ3NncmFhZCB0dXNzZW5saWdnZW5kZSBidWZmZXJzOiBfX2ByIHRvdGFsQmV6ZXR0aW5nc0dyYWFkYF9fCgpgYGAKCi0tLQoKIyAgUHJvZHVjdGllbGlqbmVuIHsudGFic2V0IC50YWJzZXQtZmFkZSAudGFic2V0LXBpbGxzfQoKYGBge3IgZWNobz1GQUxTRX0KcGFyKG1mcm93ID0gYygxLCAyKSkgIyBDcmVhdGUgYSB4IGdyaWQgZm9yIGRpYWdyYW1zCgpiZXpldHRpbmdzZ3JhYWRUYWZlbEl0ZW1zIDwtIGMobTFfbWVhbixtNF9tZWFuLG01X21lYW4pCmJhcnBsb3QoYmV6ZXR0aW5nc2dyYWFkVGFmZWxJdGVtcywgbWFpbj0iZ2VtaWRkZWxkZSB2YW4gZGUgYnVmZmVycyBbMV1bNF1bNV0iKQoKYmV6ZXR0aW5zZ3JhYWRUYWZlbHBvdGVuIDwtYyhtN19tZWFuLCBtOV9tZWFuKQoKYmFycGxvdChiZXpldHRpbnNncmFhZFRhZmVscG90ZW4sIG1haW49ImdlbWlkZGVsZGUgdmFuIGRlIGJ1ZmZlcnMgWzddWzldIikKCnRvdGFsQmV6ZXR0aW5nc0dyYWFkIDwtIGMoYmV6ZXR0aW5nc2dyYWFkVGFmZWxJdGVtcyxiZXpldHRpbnNncmFhZFRhZmVscG90ZW4pCnRvdGFsQmV6ZXR0aW5nc0dyYWFkIDwtIG1lYW4odG90YWxCZXpldHRpbmdzR3JhYWQpCmBgYAoKCiMjIEJ1ZGdldC1ibGFkZW4KCi0gUmVuZGVyZWQgdGltZSBwZXJpb2QgaXM6IF9fYHIgc2hvd1RpbWVgX18KCiMjIyBNYWNoaW5lIDEgLSAoSG91dCkgemFhZ21hY2hpbmUKCmBgYHtyIGVjaG89RkFMU0V9Ck0xIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09MSkmKGl0ZW10eXBlX1Y9PSJDIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtkdW1teVJlbmRlcmVkVGltZV0pKSkKCiNwcmludChoZWFkKE0xLG49MTAwKSkKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNMSRUaW1lc3RhbXAsTTEkT3V0cHV0QnVmZmVyLCBtYWluPSJIb3V0emFhZ21hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjFzdCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNMSRUaW1lc3RhbXAsTTEkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZXphYWdkZUJsYWRlbiA8LSBNMSRPdXRwdXRCdWZmZXIKZ2V6YWFnZGVCbGFkZW4gPC0gYXMubnVtZXJpYyhnZXphYWdkZUJsYWRlbikKCmhpc3QoZ2V6YWFnZGVCbGFkZW4sbWFpbj0iR2V6YWFnZGUgYnVkZ2V0IHRhZmVsYmxhZGVuIiwgeGxhYj0iYnVja2V0IGdyb290dGUiLCB5bGFiPSJob2V2ZWVsaGVpZCBnZXphYWdkZWJsYWRlbiIpCgojZCA8LSBkZW5zaXR5KGdlemFhZ2RlQmxhZGVuKQojcGxvdChkKQojcG9seWdvbihkLGNvbD0icmVkIixib3JkZXI9ImJsdWUiKQoKeGF4aXMgPC0gc2VxKDE6bGVuZ3RoKGdlemFhZ2RlQmxhZGVuKSkKYm94cGxvdCh4ID0gZ2V6YWFnZGVCbGFkZW4seSA9IHhheGlzLCBtYWluPSJib3hwbG90IGJ1ZGdldCB0YWZlbGJsYWRlbiIsIHlsYWI9Im5HZXphYWdkZUJsYWRlbiIpCgptMV9tZWFuIDwtIG1lYW4oZ2V6YWFnZGVCbGFkZW4pCiNwcmludChtMV9tZWFuKQojcHJpbnQoc3VtbWFyeShnZXphYWdkZUJsYWRlbikpCiNwcmludCh1bmlxdWUoZ2V6YWFnZGVCbGFkZW4pKQpgYGAKCmBgYHtyIHBpZTEsIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9Ck0xX2NvbmZpZyA8LSBjKGZpbHRlcihNMSwgTTEkTWVzc2FnZT09IkNPTkZJRyIpKQpNMV9jb25maWcgPC0gTTFfY29uZmlnJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNMV9pZGxlIDwtIGMoZmlsdGVyKE0xLCBNMSRNZXNzYWdlPT0iUFJPRFVDVElPTl9JRExFIikpCk0xX2lkbGUgPC0gTTFfaWRsZSRUaW1lc3RhbXAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTFfcHJvY2Vzc2luZyA8LSBjKGZpbHRlcihNMSwgTTEkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0lORyIpKQpNMV9wcm9jZXNzaW5nIDwtIE0xX3Byb2Nlc3NpbmckVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk0xX3Byb2Nlc3NlZCA8LSBjKGZpbHRlcihNMSwgTTEkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0VEIikpCk0xX3Byb2Nlc3NlZCA8LSBNMV9wcm9jZXNzZWQkVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCiNwcmludChsZW5ndGgoTTFfaWRsZSkpCiNwcmludChsZW5ndGgoTTFfcHJvY2Vzc2VkKSkKI3ByaW50KGxlbmd0aChNMV9wcm9jZXNzaW5nKSkKI3ByaW50KE0xX3Byb2Nlc3NpbmdbMl0gLSBNMV9pZGxlWzJdKQojcHJpbnQoTTFfcHJvY2Vzc2VkWzJdIC0gTTFfcHJvY2Vzc2luZ1syXSkKI3ByaW50KE0xX2lkbGVbM10gLSBNMV9wcm9jZXNzZWRbMl0pCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCgojcHJpbnQoY29fdGltZSkgCm5Db25maWdzIDwtIGxlbmd0aChNMV9jb25maWcpCmNvX3RpbWUgPC0gbkNvbmZpZ3MgKiAzMDAgI2V2ZXJ5IGNvbmZpZyB0YWtlcyAzMDBzICg1bWludXRlcykKCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCgoKI25Qcm9jZXNzaW5ncyA8LSBsZW5ndGgoTTFfcHJvY2Vzc2luZykgLTEKI25Qcm9jZXNzaW5ncyA8LSBsZW5ndGgoTTFfcHJvY2Vzc2VkKSAtMQojblByb2Nlc3NpbmdzIDwtIGxlbmd0aChNMV9pZGxlKSAtMSAKCnByaW50KG5Qcm9jZXNzaW5ncykKaWRfdGltZSA8LSAwCnBnX3RpbWUgPC0gMApwZF90aW1lIDwtIDAKZm9yKGkgaW4gMTpuUHJvY2Vzc2luZ3MpCnsKICBpZF90aW1lX3Rha2VuIDwtIE0xX3Byb2Nlc3NpbmdbaV0gLSBNMV9pZGxlW2ldICNpZGxlIHRpbWUgCiAgcGdfdGltZV90YWtlbiA8LSBNMV9wcm9jZXNzZWRbaV0gLSBNMV9wcm9jZXNzaW5nW2ldICNwcm9jZXNzaW5nIHRpbWUKICBwZF90aW1lX3Rha2VuIDwtIE0xX2lkbGVbaSsxXSAtIE0xX3Byb2Nlc3NlZFtpXSAgI3Byb2Nlc3NlZCB0aW1lCiAgCiAgaWRfdGltZSA8LSBpZF90aW1lICsgaWRfdGltZV90YWtlbgogIHBnX3RpbWUgPC0gcGdfdGltZSArIHBnX3RpbWVfdGFrZW4KICBwZF90aW1lIDwtIHBkX3RpbWUgKyBwZF90aW1lX3Rha2VuCn0KIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKc2xpY2VzIDwtIGMoY29fdGltZSwgaWRfdGltZSwgcGdfdGltZSxwZF90aW1lKQoKCgojcHJpbnQoaWRfdGltZSkgCiNwcmludChwZ190aW1lKVwKCmxhYmVscyA8LSBjKCJDT05GSUciLCAiSURMRSIsICJQUk9DRVNTSU5HIiwgIlBST0NFU1NFRCIpCgpwaWUoc2xpY2VzLCAgbGFiZWxzID0gbGFiZWxzLAogICAgICAgIG1haW4gPSAiVGlqZCBwZXIgc3RhdGUiLAogICAgICAgIHhsYWIgPSAiU3RhdGVzIiwKICAgICAgICB5bGFiID0gIlRpamQgKHNlY29uZGVuKSIsCiAgICAgICAgbGFzPTEsCiAgICAgICAgY29sID0gcmFpbmJvdyhsZW5ndGgobGFiZWxzKSkpCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCmBgYAoKLS0tCgojIyMgTWFjaGluZSA0IC0gVm9vcmJvb3JtYWNoaW5lCmBgYHtyIGVjaG89RkFMU0V9Ck00IDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NCkmKGl0ZW10eXBlX1Y9PSJDIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtkdW1teVJlbmRlcmVkVGltZV0pKSkKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNNCRUaW1lc3RhbXAsTTQkT3V0cHV0QnVmZmVyLCBtYWluPSJWb29yYm9vcm1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjJuZCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNNCRUaW1lc3RhbXAsTTQkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZWJvb3JkZVBsYXRlbiA8LSBNNCRPdXRwdXRCdWZmZXIKZ2Vib29yZGVQbGF0ZW4gPC0gYXMubnVtZXJpYyhnZWJvb3JkZVBsYXRlbikKaGlzdChnZWJvb3JkZVBsYXRlbikKYm94cGxvdChnZWJvb3JkZVBsYXRlbikKCm00X21lYW4gPC0gbWVhbihnZWJvb3JkZVBsYXRlbikKI3ByaW50KG00X21lYW4pCiNwcmludCh1bmlxdWUoZ2Vib29yZGVQbGF0ZW4pKQojcHJpbnQoc3VtbWFyeShnZWJvb3JkZVBsYXRlbikpCmBgYAotLS0KCmBgYHtyIHBpZTQsIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9Ck00X2NvbmZpZyA8LSBjKGZpbHRlcihNNCwgTTQkTWVzc2FnZT09IkNPTkZJRyIpKQpNNF9jb25maWcgPC0gTTRfY29uZmlnJFRpbWVzdGFtcAojcHJpbnQoTTRfY29uZmlnKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNNF9pZGxlIDwtIGMoZmlsdGVyKE00LCBNNCRNZXNzYWdlPT0iUFJPRFVDVElPTl9JRExFIikpCk00X2lkbGUgPC0gTTRfaWRsZSRUaW1lc3RhbXAKI3ByaW50KGxlbmd0aChNNF9pZGxlKSkKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTRfcHJvY2Vzc2luZyA8LSBjKGZpbHRlcihNNCwgTTQkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0lORyIpKQpNNF9wcm9jZXNzaW5nIDwtIE00X3Byb2Nlc3NpbmckVGltZXN0YW1wCiNwcmludChsZW5ndGgoTTRfcHJvY2Vzc2luZykpCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk00X3Byb2Nlc3NlZCA8LSBjKGZpbHRlcihNNCwgTTQkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0VEIikpCk00X3Byb2Nlc3NlZCA8LSBNNF9wcm9jZXNzZWQkVGltZXN0YW1wCiNwcmludChsZW5ndGgoTTRfcHJvY2Vzc2VkKSkKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKbkNvbmZpZ3MgPC0gbGVuZ3RoKE00X2NvbmZpZykKY29fdGltZSA8LSBuQ29uZmlncyAqIDMwMApuUHJvY2Vzc2luZ3MgPC0gbGVuZ3RoKE00X3Byb2Nlc3NpbmcpLTEKI3ByaW50KG5Qcm9jZXNzaW5ncykKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKaWRfdGltZSA8LSAwCnBnX3RpbWUgPC0gMApwZF90aW1lIDwtIDAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKZm9yKGkgaW4gMTpuUHJvY2Vzc2luZ3MpCnsKICBpZF90aW1lX3Rha2VuIDwtIE00X3Byb2Nlc3NpbmdbaV0gLSBNNF9pZGxlW2ldICNpZGxlIHRpbWUgCiAgcGdfdGltZV90YWtlbiA8LSBNNF9wcm9jZXNzZWRbaV0gLSBNNF9wcm9jZXNzaW5nW2ldICNwcm9jZXNzaW5nIHRpbWUKICBwZF90aW1lX3Rha2VuIDwtIE00X2lkbGVbaSsxXSAtIE00X3Byb2Nlc3NlZFtpXSAgI3Byb2Nlc3NlZCB0aW1lCiAgCiAgaWRfdGltZSA8LSBpZF90aW1lICsgaWRfdGltZV90YWtlbgogIHBnX3RpbWUgPC0gcGdfdGltZSArIHBnX3RpbWVfdGFrZW4KICBwZF90aW1lIDwtIHBkX3RpbWUgKyBwZF90aW1lX3Rha2VuCiAgI3ByaW50KHBkX3RpbWVfdGFrZW4pCn0KIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKc2xpY2VzIDwtIGMoY29fdGltZSwgaWRfdGltZSwgcGdfdGltZSwgcGRfdGltZSkKCmxhYmVsIDwtIGMoIkNPTkZJRyIsICJJRExFIiwgIlBST0NFU1NJTkciLCAiUFJPQ0VTU0VEIikKCnBpZShzbGljZXMsICBsYWJlbCA9IGxhYmVscywKICAgICAgICBtYWluID0gIlRpamQgcGVyIHN0YXRlIiwKICAgICAgICB4bGFiID0gIlN0YXRlcyIsCiAgICAgICAgeWxhYiA9ICJUaWpkIChzZWNvbmRlbikiLAogICAgICAgIGNvbCA9IHJhaW5ib3cobGVuZ3RoKGxhYmVscykpKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpgYGAKCgotLS0KCiMjIyBNYWNoaW5lIDUgLSBTY2h1dXJtYWNoaW5lCmBgYHtyIGVjaG89RkFMU0V9Ck01IDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NSkmKGl0ZW10eXBlX1Y9PSJDIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtkdW1teVJlbmRlcmVkVGltZV0pKSkKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNNSRUaW1lc3RhbXAsTTUkT3V0cHV0QnVmZmVyLCBtYWluPSJTY2h1dXJtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIzcmRvdXRwdXRidWZmZXIiKQpsaW5lcyhNNSRUaW1lc3RhbXAsTTUkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZXNjaHV1cmRlUGxhdGVuIDwtIE01JE91dHB1dEJ1ZmZlcgpnZXNjaHV1cmRlUGxhdGVuIDwtIGFzLm51bWVyaWMoZ2VzY2h1dXJkZVBsYXRlbikKaGlzdChnZXNjaHV1cmRlUGxhdGVuKQpib3hwbG90KGdlc2NodXVyZGVQbGF0ZW4pCgptNV9tZWFuIDwtIG1lYW4oZ2VzY2h1dXJkZVBsYXRlbikKI3ByaW50KG01X21lYW4pCiNwcmludCh1bmlxdWUoZ2VzY2h1dXJkZVBsYXRlbikpCiNwcmludChzdW1tYXJ5KGdlc2NodXVyZGVQbGF0ZW4pKQpgYGAKCgpgYGB7ciBwaWU1LCBldmFsPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQpNNV9jb25maWcgPC0gYyhmaWx0ZXIoTTUsIE01JE1lc3NhZ2U9PSJDT05GSUciKSkKTTVfY29uZmlnIDwtIE01X2NvbmZpZyRUaW1lc3RhbXAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTVfaWRsZSA8LSBjKGZpbHRlcihNNSwgTTUkTWVzc2FnZT09IlBST0RVQ1RJT05fSURMRSIpKQpNNV9pZGxlIDwtIE01X2lkbGUkVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk01X3Byb2Nlc3NpbmcgPC0gYyhmaWx0ZXIoTTUsIE01JE1lc3NhZ2U9PSJQUk9EVUNUSU9OX1BST0NFU1NJTkciKSkKTTVfcHJvY2Vzc2luZyA8LSBNNV9wcm9jZXNzaW5nJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNNV9wcm9jZXNzZWQgPC0gYyhmaWx0ZXIoTTUsIE01JE1lc3NhZ2U9PSJQUk9EVUNUSU9OX1BST0NFU1NFRCIpKQpNNV9wcm9jZXNzZWQgPC0gTTVfcHJvY2Vzc2VkJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpuQ29uZmlncyA8LSBsZW5ndGgoTTVfY29uZmlnKQpjb190aW1lIDwtIG5Db25maWdzICogMzAwCm5Qcm9jZXNzaW5ncyA8LSBsZW5ndGgoTTVfcHJvY2Vzc2luZyktMQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwppZF90aW1lIDwtIDAKcGdfdGltZSA8LSAwCnBkX3RpbWUgPC0gMAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpmb3IoaSBpbiAxOm5Qcm9jZXNzaW5ncykKewogIGlkX3RpbWVfdGFrZW4gPC0gTTVfcHJvY2Vzc2luZ1tpXSAtIE01X2lkbGVbaV0gI2lkbGUgdGltZSAKICBwZ190aW1lX3Rha2VuIDwtIE01X3Byb2Nlc3NlZFtpXSAtIE01X3Byb2Nlc3NpbmdbaV0gI3Byb2Nlc3NpbmcgdGltZQogIHBkX3RpbWVfdGFrZW4gPC0gTTVfaWRsZVtpKzFdIC0gTTVfcHJvY2Vzc2VkW2ldICAjcHJvY2Vzc2VkIHRpbWUKICAKICBpZF90aW1lIDwtIGlkX3RpbWUgKyBpZF90aW1lX3Rha2VuCiAgcGdfdGltZSA8LSBwZ190aW1lICsgcGdfdGltZV90YWtlbgogIHBkX3RpbWUgPC0gcGRfdGltZSArIHBkX3RpbWVfdGFrZW4KICAjcHJpbnQocGRfdGltZV90YWtlbikKfQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpzbGljZXMgPC0gYyhjb190aW1lLCBpZF90aW1lLCBwZ190aW1lLCBwZF90aW1lKQoKbGFiZWwgPC0gYygiQ09ORklHIiwgIklETEUiLCAiUFJPQ0VTU0lORyIsICJQUk9DRVNTRUQiKQoKcGllKHNsaWNlcywgIGxhYmVsID0gbGFiZWxzLAogICAgICAgIG1haW4gPSAiVGlqZCBwZXIgc3RhdGUiLAogICAgICAgIHhsYWIgPSAiU3RhdGVzIiwKICAgICAgICB5bGFiID0gIlRpamQgKHNlY29uZGVuKSIsCiAgICAgICAgY29sID0gcmFpbmJvdyhsZW5ndGgobGFiZWxzKSkpCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCmBgYAoKLS0tCgojIyMgTWFjaGluZSA2IC0gVmVyZm1hY2hpbmUKYGBge3IgZWNobz1GQUxTRX0KTTYgPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT02KSYoaXRlbXR5cGVfVj09IkMiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW2R1bW15UmVuZGVyZWRUaW1lXSkpKQoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE02JFRpbWVzdGFtcCxNNiRPdXRwdXRCdWZmZXIsbWFpbj0iVmVyZm1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9ImZpbmFsb3V0cHV0YnVmZmVyIikKbGluZXMoTTYkVGltZXN0YW1wLE02JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2V2ZXJmZGVQbGF0ZW4gPC0gTTYkT3V0cHV0QnVmZmVyCmdldmVyZmRlUGxhdGVuIDwtIGFzLm51bWVyaWMoZ2V2ZXJmZGVQbGF0ZW4pCmhpc3QoZ2V2ZXJmZGVQbGF0ZW4pCmJveHBsb3QoZ2V2ZXJmZGVQbGF0ZW4pCgojcHJpbnQodW5pcXVlKGdldmVyZmRlUGxhdGVuKSkKI3ByaW50KHN1bW1hcnkoZ2V2ZXJmZGVQbGF0ZW4pKQpgYGAKCmBgYHtyIHBpZTYsIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9Ck02X2NvbmZpZyA8LSBjKGZpbHRlcihNNiwgTTYkTWVzc2FnZT09IkNPTkZJRyIpKQpNNl9jb25maWcgPC0gTTZfY29uZmlnJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNNl9pZGxlIDwtIGMoZmlsdGVyKE02LCBNNiRNZXNzYWdlPT0iUFJPRFVDVElPTl9JRExFIikpCk02X2lkbGUgPC0gTTZfaWRsZSRUaW1lc3RhbXAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTZfcHJvY2Vzc2luZyA8LSBjKGZpbHRlcihNNiwgTTYkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0lORyIpKQpNNl9wcm9jZXNzaW5nIDwtIE02X3Byb2Nlc3NpbmckVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk02X3Byb2Nlc3NlZCA8LSBjKGZpbHRlcihNNiwgTTYkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0VEIikpCk02X3Byb2Nlc3NlZCA8LSBNNl9wcm9jZXNzZWQkVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCm5Db25maWdzIDwtIGxlbmd0aChNNl9jb25maWcpCmNvX3RpbWUgPC0gbkNvbmZpZ3MgKiAzMDAKblByb2Nlc3NpbmdzIDwtIGxlbmd0aChNNl9wcm9jZXNzZWQpCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCmlkX3RpbWUgPC0gMApwZ190aW1lIDwtIDAKcGRfdGltZSA8LSAwCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCiMgcHJpbnQobGVuZ3RoKE02X2lkbGUpKQojIAojIHByaW50KGxlbmd0aChNNl9wcm9jZXNzaW5nKSkKIyBwcmludChsZW5ndGgoTTZfcHJvY2Vzc2VkKSkKIyB4IDwtIGxlbmd0aChNNl9pZGxlKQojIHkgPC0gbGVuZ3RoKE02X3Byb2Nlc3NpbmcpCiMgeiA8LSBsZW5ndGgoTTZfcHJvY2Vzc2VkKQojIHByaW50KHRhaWwoTTZfaWRsZSkpCiMgcHJpbnQodGFpbChNNl9wcm9jZXNzaW5nKSkKIyBwcmludCh0YWlsKE02X3Byb2Nlc3NlZCkpCiMgcHJpbnQoTTZfcHJvY2Vzc2luZ1syXSAtIE02X2lkbGVbMl0pCiMgcHJpbnQoTTZfcHJvY2Vzc2VkWzJdIC0gTTZfcHJvY2Vzc2luZ1syXSkKIHByaW50KE02X2lkbGVbMTAwMV0gLSBNNl9wcm9jZXNzZWRbMTAwMF0pCgpmb3IoaSBpbiAxOm5Qcm9jZXNzaW5ncykKewogIGlkX3RpbWVfdGFrZW4gPC0gTTZfcHJvY2Vzc2luZ1tpXSAtIE02X2lkbGVbaV0gI2lkbGUgdGltZSAKICBwZ190aW1lX3Rha2VuIDwtIE02X3Byb2Nlc3NlZFtpXSAtIE02X3Byb2Nlc3NpbmdbaV0gI3Byb2Nlc3NpbmcgdGltZQogIHBkX3RpbWVfdGFrZW4gPC0gTTZfaWRsZVtpXSAtIE02X3Byb2Nlc3NlZFtpXSAgI3Byb2Nlc3NlZCB0aW1lCiAgCiAgcHJpbnQocGRfdGltZV90YWtlbikKICAKICBpZF90aW1lIDwtIGlkX3RpbWUgKyBpZF90aW1lX3Rha2VuCiAgcGdfdGltZSA8LSBwZ190aW1lICsgcGdfdGltZV90YWtlbgogIHBkX3RpbWUgPC0gcGRfdGltZSArIHBkX3RpbWVfdGFrZW4KfQogCiNwcmludChpZF90aW1lKQojcHJpbnQocGdfdGltZSkKI3ByaW50KHBkX3RpbWUpCgojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpzbGljZXMgPC0gYyhjb190aW1lLCBpZF90aW1lLCBwZ190aW1lLCBhYnMocGRfdGltZSkpCgpsYWJlbCA8LSBjKCJDT05GSUciLCAiSURMRSIsICJQUk9DRVNTSU5HIiwgIlBST0NFU1NFRCIpCgpwaWUoc2xpY2VzLCAgbGFiZWwgPSBsYWJlbHMsCiAgICAgICAgbWFpbiA9ICJUaWpkIHBlciBzdGF0ZSIsCiAgICAgICAgeGxhYiA9ICJTdGF0ZXMiLAogICAgICAgIHlsYWIgPSAiVGlqZCAoc2Vjb25kZW4pIiwKICAgICAgICBjb2wgPSByYWluYm93KGxlbmd0aChsYWJlbHMpKSkKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKYGBgCgotLS0tCgojIyBCdWRnZXQtcG90ZW4KCiMjIyBNYWNoaW5lIDcgLSBJSnplcnphYWctbWFjaGluZQpgYGB7ciBlY2hvPUZBTFNFfQpNNyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTcpJihpdGVtdHlwZV9WPT0iQyIpJih0aW1lc3RhbXBzX1Y8PXJlbmRlclRpbWVbZHVtbXlSZW5kZXJlZFRpbWVdKSkpCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTckVGltZXN0YW1wLE03JE91dHB1dEJ1ZmZlcixtYWluPSJJSnplcnphYWdtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIxc3Qgb3V0cHV0YnVmZmVyIikKbGluZXMoTTckVGltZXN0YW1wLE03JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2V6YWFnZGVQb3RlbiA8LSBNNyRPdXRwdXRCdWZmZXIKZ2V6YWFnZGVQb3RlbiA8LSBhcy5udW1lcmljKGdlemFhZ2RlUG90ZW4pCmhpc3QoZ2V6YWFnZGVQb3RlbikKYm94cGxvdChnZXphYWdkZVBvdGVuKQoKbTdfbWVhbiA8LSBtZWFuKGdlemFhZ2RlUG90ZW4pCiNwcmludChtN19tZWFuKQoKI3ByaW50KHN1bW1hcnkoZ2V6YWFnZGVQb3RlbikpCmBgYAoKLS0tCgojIyMgTWFjaGluZSA5IC0gTGFzbWFjaGluZQpgYGB7ciBlY2hvPUZBTFNFfQpNOSA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTkpJihpdGVtdHlwZV9WPT0iQyIpJih0aW1lc3RhbXBzX1Y8PXJlbmRlclRpbWVbZHVtbXlSZW5kZXJlZFRpbWVdKSkpCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTkkVGltZXN0YW1wLE05JE91dHB1dEJ1ZmZlcixtYWluPSJMYXNtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIybmQgb3V0cHV0YnVmZmVyIikKbGluZXMoTTkkVGltZXN0YW1wLE05JE91dHB1dEJ1ZmZlcikKcGFyKG1mcm93ID0gYygxLDIpKQpnZWxhc2RlUG90ZW4gPC0gTTkkT3V0cHV0QnVmZmVyCmdlbGFzZGVQb3RlbiA8LSBhcy5udW1lcmljKGdlbGFzZGVQb3RlbikKaGlzdChnZWxhc2RlUG90ZW4pCmJveHBsb3QoZ2VsYXNkZVBvdGVuKQoKbTlfbWVhbiA8LSBtZWFuKGdlbGFzZGVQb3RlbikKI3ByaW50KG05X21lYW4pCgojcHJpbnQoc3VtbWFyeShnZWxhc2RlUG90ZW4pKQpgYGAKCi0tLQoKIyMjIE1hY2hpbmUgMTAgLSBQb2VkZXJjb2F0LW1hY2hpbmUKYGBge3IgZWNobz1GQUxTRX0KTTEwIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTEwKSYoaXRlbXR5cGVfVj09IkMiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW2R1bW15UmVuZGVyZWRUaW1lXSkpKQoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE0xMCRUaW1lc3RhbXAsTTEwJE91dHB1dEJ1ZmZlcixtYWluPSJQb2VkZXJjb2F0bWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iZmluYWwgb3V0cHV0YnVmZmVyIikKbGluZXMoTTEwJFRpbWVzdGFtcCxNMTAkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZWNvYXRlUG90ZW4gPC0gTTEwJE91dHB1dEJ1ZmZlcgpnZWNvYXRlUG90ZW4gPC0gYXMubnVtZXJpYyhnZWNvYXRlUG90ZW4pCmhpc3QoZ2Vjb2F0ZVBvdGVuKQpib3hwbG90KGdlY29hdGVQb3RlbikKCiNtMTBfbWVhbiA8LSBtZWFuKGdlY29hdGVQb3RlbikKI3ByaW50KG0xMF9tZWFuKQoKI3ByaW50KHN1bW1hcnkoZ2Vjb2F0ZVBvdGVuKSkKYGBgCgotLS0KCiMjIEx1eGUtYmxhZGVuCgpSZW5kZXIgdGltZQoKLSBSZW5kZXJlZCB0aW1lIHBlcmlvZCBpczogX19gciBzaG93VGltZWBfXwoKIyMjIE1hY2hpbmUgMSAtIChIb3V0KSB6YWFnbWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KTTEgPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT0xKSYoaXRlbXR5cGVfVj09IkUiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW2R1bW15UmVuZGVyZWRUaW1lXSkpKQoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE0xJFRpbWVzdGFtcCxNMSRPdXRwdXRCdWZmZXIsIG1haW49IkhvdXR6YWFnbWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iMXN0IG91dHB1dGJ1ZmZlciIpCmxpbmVzKE0xJFRpbWVzdGFtcCxNMSRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlemFhZ2RlQmxhZGVuIDwtIE0xJE91dHB1dEJ1ZmZlcgpnZXphYWdkZUJsYWRlbiA8LSBhcy5udW1lcmljKGdlemFhZ2RlQmxhZGVuKQpoaXN0KGdlemFhZ2RlQmxhZGVuLG1haW49IkdlemFhZ2RlIGR1cmUgdGFmZWxibGFkZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIGdlemFhZ2RlYmxhZGVuIikKCiNkIDwtIGRlbnNpdHkoZ2V6YWFnZGVCbGFkZW4pCiNwbG90KGQpCiNwb2x5Z29uKGQsY29sPSJyZWQiLGJvcmRlcj0iYmx1ZSIpCgp4YXhpcyA8LSBzZXEoMTpsZW5ndGgoZ2V6YWFnZGVCbGFkZW4pKQpib3hwbG90KHggPSBnZXphYWdkZUJsYWRlbix5ID0geGF4aXMsIG1haW49ImJveHBsb3QgZHVyZSB0YWZlbGJsYWRlbiIsIHlsYWI9Im5HZXphYWdkZUJsYWRlbiIpCgojcHJpbnQoc3VtbWFyeShnZXphYWdkZUJsYWRlbikpCiNwcmludCh1bmlxdWUoZ2V6YWFnZGVCbGFkZW4pKQpgYGAKCiMjIyBNYWNoaW5lIDIgLSAoSG91dCkgbGlqbW1hY2hpbmUKCmBgYHtyIGVjaG89RkFMU0V9Ck0yIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09MikmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtkdW1teVJlbmRlcmVkVGltZV0pKSkKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNMiRUaW1lc3RhbXAsTTIkT3V0cHV0QnVmZmVyLCBtYWluPSJMaWptbWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iMXN0IG91dHB1dGJ1ZmZlciIpCmxpbmVzKE0yJFRpbWVzdGFtcCxNMiRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlbGlqbWRlQmxhZGVuIDwtIE0yJE91dHB1dEJ1ZmZlcgpnZWxpam1kZUJsYWRlbiA8LSBhcy5udW1lcmljKGdlbGlqbWRlQmxhZGVuKQpoaXN0KGdlbGlqbWRlQmxhZGVuLG1haW49IkdlbGlqbWRlIGR1cmUgdGFmZWxibGFkZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIGdlbGlqbWRlYmxhZGVuIikKCiNkIDwtIGRlbnNpdHkoZ2V6YWFnZGVCbGFkZW4pCiNwbG90KGQpCiNwb2x5Z29uKGQsY29sPSJyZWQiLGJvcmRlcj0iYmx1ZSIpCgp4YXhpcyA8LSBzZXEoMTpsZW5ndGgoZ2VsaWptZGVCbGFkZW4pKQpib3hwbG90KHggPSBnZWxpam1kZUJsYWRlbix5ID0geGF4aXMsIG1haW49IkdlbGlqbWRlIGR1cmUgdGFmZWxibGFkZW4iLCB5bGFiPSJnZWxpam1kZUJsYWRlbiIpCgojcHJpbnQoc3VtbWFyeShnZXphYWdkZUJsYWRlbikpCiNwcmludCh1bmlxdWUoZ2V6YWFnZGVCbGFkZW4pKQpgYGAKCgojIyMgTWFjaGluZSAzIC0gKEhvdXQpIEZyZWV6ZW1hY2hpbmUKCmBgYHtyIGVjaG89RkFMU0V9Ck0zIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09MykmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtkdW1teVJlbmRlcmVkVGltZV0pKSkKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNMyRUaW1lc3RhbXAsTTMkT3V0cHV0QnVmZmVyLCBtYWluPSJGcmVlemVtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIxc3Qgb3V0cHV0YnVmZmVyIikKbGluZXMoTTMkVGltZXN0YW1wLE0zJE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2VmcmVlemRlQmxhZGVuIDwtIE0zJE91dHB1dEJ1ZmZlcgpnZWZyZWV6ZGVCbGFkZW4gPC0gYXMubnVtZXJpYyhnZWZyZWV6ZGVCbGFkZW4pCmhpc3QoZ2VmcmVlemRlQmxhZGVuLG1haW49IkdlZnJlZXpkZSBkdXJlIHRhZmVsYmxhZGVuIiwgeGxhYj0iYnVja2V0IGdyb290dGUiLCB5bGFiPSJob2V2ZWVsaGVpZCBnZWZyZWV6ZGUgYmxhZGVuIikKCiNkIDwtIGRlbnNpdHkoZ2V6YWFnZGVCbGFkZW4pCiNwbG90KGQpCiNwb2x5Z29uKGQsY29sPSJyZWQiLGJvcmRlcj0iYmx1ZSIpCgp4YXhpcyA8LSBzZXEoMTpsZW5ndGgoZ2VmcmVlemRlQmxhZGVuKSkKYm94cGxvdCh4ID0gZ2VmcmVlemRlQmxhZGVuLHkgPSB4YXhpcywgbWFpbj0iR2VmcmVlemRlIGR1cmUgdGFmZWxibGFkZW4iLCB5bGFiPSJIb2V2ZWVsaGVpZCBnZWZyZWV6ZGUgYmxhZGVuIikKCiNwcmludChzdW1tYXJ5KGdlemFhZ2RlQmxhZGVuKSkKI3ByaW50KHVuaXF1ZShnZXphYWdkZUJsYWRlbikpCmBgYAoKIyMjIE1hY2hpbmUgNCAtIChIb3V0KSBWb29yYm9vcm1hY2hpbmUKCmBgYHtyIGVjaG89RkFMU0V9Ck00IDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NCkmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtkdW1teVJlbmRlcmVkVGltZV0pKSkKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNNCRUaW1lc3RhbXAsTTQkT3V0cHV0QnVmZmVyLCBtYWluPSJWb29yYm9vcm1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjJuZCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNNCRUaW1lc3RhbXAsTTQkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZWJvb3JkZVBsYXRlbiA8LSBNNCRPdXRwdXRCdWZmZXIKZ2Vib29yZGVQbGF0ZW4gPC0gYXMubnVtZXJpYyhnZWJvb3JkZVBsYXRlbikKCmhpc3QoZ2Vib29yZGVQbGF0ZW4sbWFpbj0iVm9vcmdlYm9vcmRlIGR1cmUgdGFmZWxibGFkZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIHZvb3JnZWJvb3JkZSBwbGF0ZW4iKQoKeGF4aXMgPC0gc2VxKDE6bGVuZ3RoKGdlYm9vcmRlUGxhdGVuKSkKYm94cGxvdChnZWJvb3JkZVBsYXRlbix5ID0geGF4aXMsIG1haW49IlZvb3JnZWJvb3JkZSBkdXJlIHRhZmVsYmxhZGVuIiwgeWxhYj0iSG9ldmVlbGhlaWQgVm9vcmdlYm9vcmRlIGJsYWRlbiIpCgojcHJpbnQodW5pcXVlKGdlYm9vcmRlUGxhdGVuKSkKI3ByaW50KHN1bW1hcnkoZ2Vib29yZGVQbGF0ZW4pKQpgYGAKCiMjIyBNYWNoaW5lIDUgLSAoSG91dCkgU2NodXVybWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KTTUgPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT01KSYoaXRlbXR5cGVfVj09IkUiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW2R1bW15UmVuZGVyZWRUaW1lXSkpKQoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE01JFRpbWVzdGFtcCxNNSRPdXRwdXRCdWZmZXIsIG1haW49IlNjaHV1cm1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjNyZCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNNSRUaW1lc3RhbXAsTTUkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZXNjaHV1cmRlUGxhdGVuIDwtIE01JE91dHB1dEJ1ZmZlcgpnZXNjaHV1cmRlUGxhdGVuIDwtIGFzLm51bWVyaWMoZ2VzY2h1dXJkZVBsYXRlbikKaGlzdChnZXNjaHV1cmRlUGxhdGVuLG1haW49Ikdlc2NodXVyZGUgZHVyZSB0YWZlbGJsYWRlbiIsIHhsYWI9ImJ1Y2tldCBncm9vdHRlIiwgeWxhYj0iaG9ldmVlbGhlaWQgZ2VzY2h1dXJkZSBwbGF0ZW4iKQoKeGF4aXMgPC0gc2VxKDE6bGVuZ3RoKGdlc2NodXVyZGVQbGF0ZW4pKQpib3hwbG90KGdlc2NodXVyZGVQbGF0ZW4seSA9IHhheGlzLCBtYWluPSJHZXNjaHV1cmRlIGR1cmUgdGFmZWxibGFkZW4iLCB5bGFiPSJIb2V2ZWVsaGVpZCBnZXNjaHV1cmRlIGJsYWRlbiIpCgojcHJpbnQodW5pcXVlKGdlc2NodXVyZGVQbGF0ZW4pKQojcHJpbnQoc3VtbWFyeShnZXNjaHV1cmRlUGxhdGVuKSkKYGBgCgojIyMgTWFjaGluZSA2IC0gKEhvdXQpIFZlcmZtYWNoaW5lCgpgYGB7ciBlY2hvPUZBTFNFfQpNNiA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTYpJihpdGVtdHlwZV9WPT0iRSIpJih0aW1lc3RhbXBzX1Y8PXJlbmRlclRpbWVbZHVtbXlSZW5kZXJlZFRpbWVdKSkpCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTYkVGltZXN0YW1wLE02JE91dHB1dEJ1ZmZlcixtYWluPSJWZXJmbWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iZmluYWxvdXRwdXRidWZmZXIiKQpsaW5lcyhNNiRUaW1lc3RhbXAsTTYkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZXZlcmZkZVBsYXRlbiA8LSBNNiRPdXRwdXRCdWZmZXIKZ2V2ZXJmZGVQbGF0ZW4gPC0gYXMubnVtZXJpYyhnZXZlcmZkZVBsYXRlbikKaGlzdChnZXZlcmZkZVBsYXRlbikKYm94cGxvdChnZXZlcmZkZVBsYXRlbikKCiNwcmludCh1bmlxdWUoZ2V2ZXJmZGVQbGF0ZW4pKQojcHJpbnQoc3VtbWFyeShnZXZlcmZkZVBsYXRlbikpCmBgYAoKIyMgTHV4ZS1wb3RlbgoKIyMjIE1hY2hpbmUgNyAtIElKemVyemFhZy1tYWNoaW5lCgpgYGB7ciBlY2hvPUZBTFNFfQpNNyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTcpJihpdGVtdHlwZV9WPT0iRSIpJih0aW1lc3RhbXBzX1Y8PXJlbmRlclRpbWVbZHVtbXlSZW5kZXJlZFRpbWVdKSkpCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTckVGltZXN0YW1wLE03JE91dHB1dEJ1ZmZlcixtYWluPSJJSnplcnphYWdtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIxc3Qgb3V0cHV0YnVmZmVyIikKbGluZXMoTTckVGltZXN0YW1wLE03JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2V6YWFnZGVQb3RlbiA8LSBNNyRPdXRwdXRCdWZmZXIKZ2V6YWFnZGVQb3RlbiA8LSBhcy5udW1lcmljKGdlemFhZ2RlUG90ZW4pCmhpc3QoZ2V6YWFnZGVQb3RlbixtYWluPSJHZXphYWdkZSBsdXhlIHBvdGVuIiwgeGxhYj0iYnVja2V0IGdyb290dGUiLCB5bGFiPSJob2V2ZWVsaGVpZCBsdXhlIGdlemFhZ2RlIHBvdGVuIikKCnhheGlzIDwtIHNlcSgxOmxlbmd0aChnZXphYWdkZVBvdGVuKSkKYm94cGxvdChnZXphYWdkZVBvdGVuLCB5ID0geGF4aXMsIG1haW49ImJveHBsb3QgbHV4ZSBnZXphYWdkZSBwb3RlbiIsIHlsYWI9IkhvZXZlZWxoZWlkIGx1eGUgZ2V6YWFnZGUgcG90ZW4iKQojcHJpbnQoc3VtbWFyeShnZXphYWdkZVBvdGVuKSkKYGBgCgojIyMgTWFjaGluZSA4IC0gKElKemVyKSBidWlnbWFjaGluZQoKYGBge3J9Ck04IDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQsSXRlbVR5cGUpLAogICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09OCkmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtkdW1teVJlbmRlcmVkVGltZV0pKSkKCiNwYXIobWZyb3cgPSBjKDEsMSkpCiNwbG90KE04JFRpbWVzdGFtcCxNOCRPdXRwdXRCdWZmZXIsIG1haW49IkJ1aWdtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIxc3Qgb3V0cHV0YnVmZmVyIikKI2xpbmVzKE04JFRpbWVzdGFtcCxNOCRPdXRwdXRCdWZmZXIpCgojcHJpbnQoaGVhZChNOCwgbj01MCkpCiNwcmludCh0YWlsKE04LCBuPTUwKSkKCiNwYXIobWZyb3cgPSBjKDEsMikpCiNnZWJvZ2VuUG90ZW4gPC0gTTgkT3V0cHV0QnVmZmVyCiNnZWJvZ2VuUG90ZW4gPC0gYXMubnVtZXJpYyhnZWJvZ2VuUG90ZW4pCiNoaXN0KGdlYm9nZW5Qb3RlbixtYWluPSJHZWJvZ2VuIGx1eGUgcG90ZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIGx1eGUgZ2Vib2dlbiBwb3RlbiIpCgojZCA8LSBkZW5zaXR5KGdlemFhZ2RlQmxhZGVuKQojcGxvdChkKQojcG9seWdvbihkLGNvbD0icmVkIixib3JkZXI9ImJsdWUiKQoKI3hheGlzIDwtIHNlcSgxOmxlbmd0aChnZWJvZ2VuUG90ZW4pKQojYm94cGxvdCh4ID0gZ2Vib2dlblBvdGVuLHkgPSB4YXhpcywgbWFpbj0iYm94cGxvdCBsdXhlIGdlYm9nZW4gcG90ZW4iLCB5bGFiPSJIb2V2ZWVsaGVpZCBsdXhlIGdlYm9nZW4gcG90ZW4iKQoKI3ByaW50KHN1bW1hcnkoZ2V6YWFnZGVCbGFkZW4pKQojcHJpbnQodW5pcXVlKGdlemFhZ2RlQmxhZGVuKSkKYGBgCgojIyMgTWFjaGluZSA5IC0gTGFzbWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KTTkgPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT05KSYoaXRlbXR5cGVfVj09IkUiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW2R1bW15UmVuZGVyZWRUaW1lXSkpKQoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE05JFRpbWVzdGFtcCxNOSRPdXRwdXRCdWZmZXIsbWFpbj0iTGFzbWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iMm5kIG91dHB1dGJ1ZmZlciIpCmxpbmVzKE05JFRpbWVzdGFtcCxNOSRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlbGFzZGVQb3RlbiA8LSBNOSRPdXRwdXRCdWZmZXIKZ2VsYXNkZVBvdGVuIDwtIGFzLm51bWVyaWMoZ2VsYXNkZVBvdGVuKQpoaXN0KGdlbGFzZGVQb3RlbixtYWluPSJHZWxhc2RlIGx1eGUgcG90ZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIGdlbGFzZGUgbHV4ZSBwb3RlbiIpCgp4YXhpcyA8LSBzZXEoMTpsZW5ndGgoZ2VsYXNkZVBvdGVuKSkKYm94cGxvdChnZWxhc2RlUG90ZW4seSA9IHhheGlzLCBtYWluPSJib3hwbG90IGx1eGUgZ2VsYXNkZSBwb3RlbiIsIHlsYWI9IkhvZXZlZWxoZWlkIGx1eGUgZ2VsYXNkZSBwb3RlbiIpCgojcHJpbnQoc3VtbWFyeShnZWxhc2RlUG90ZW4pKQpgYGAKCiMjIyBNYWNoaW5lIDExIC0gcG9saWpzdG1hY2hpbmUKCmBgYHtyIGVjaG89RkFMU0V9Ck0xMSA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT0xMSkmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtkdW1teVJlbmRlcmVkVGltZV0pKSkKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNMTEkVGltZXN0YW1wLE0xMSRPdXRwdXRCdWZmZXIsbWFpbj0iUG9saWpzdG1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9ImZpbmFsIG91dHB1dGJ1ZmZlciIpCmxpbmVzKE0xMSRUaW1lc3RhbXAsTTExJE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2Vwb2xpanN0ZVBvdGVuIDwtIE0xMSRPdXRwdXRCdWZmZXIKZ2Vwb2xpanN0ZVBvdGVuIDwtIGFzLm51bWVyaWMoZ2Vwb2xpanN0ZVBvdGVuKQpoaXN0KGdlcG9saWpzdGVQb3RlbikKYm94cGxvdChnZXBvbGlqc3RlUG90ZW4pCgojcHJpbnQoc3VtbWFyeShnZWNvYXRlUG90ZW4pKQpgYGAKCi0tLQo=