Lyogdmk6c2V0IHRzPTggc3RzPTQgc3c9NCBub2V0OgogKgogKiBWSU0gLSBWaSBJTXByb3ZlZAlieSBCcmFtIE1vb2xlbmFhcgogKgogKiBEbyAiOmhlbHAgdWdhbmRhIiAgaW4gVmltIHRvIHJlYWQgY29weWluZyBhbmQgdXNhZ2UgY29uZGl0aW9ucy4KICogRG8gIjpoZWxwIGNyZWRpdHMiIGluIFZpbSB0byBzZWUgYSBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQuCiAqIFNlZSBSRUFETUUudHh0IGZvciBhbiBvdmVydmlldyBvZiB0aGUgVmltIHNvdXJjZSBjb2RlLgogKi8KCi8qCiAqIGRpZ3JhcGguYzogY29kZSBmb3IgZGlncmFwaHMKICovCgojaW5jbHVkZSAidmltLmgiCgojaWYgZGVmaW5lZChGRUFUX0RJR1JBUEhTKSB8fCBkZWZpbmVkKFBST1RPKQoKdHlwZWRlZiBpbnQgcmVzdWx0X1Q7Cgp0eXBlZGVmIHN0cnVjdCBkaWdyYXBoCnsKICAgIGNoYXJfdQljaGFyMTsKICAgIGNoYXJfdQljaGFyMjsKICAgIHJlc3VsdF9UCXJlc3VsdDsKfSBkaWdyX1Q7CgpzdGF0aWMgdm9pZCBwcmludGRpZ3JhcGgoZGlncl9UICpkcCwgcmVzdWx0X1QgKnByZXZpb3VzKTsKCi8qIGRpZ3JhcGhzIGFkZGVkIGJ5IHRoZSB1c2VyICovCnN0YXRpYyBnYXJyYXlfVAl1c2VyX2RpZ3JhcGhzID0gezAsIDAsIChpbnQpc2l6ZW9mKGRpZ3JfVCksIDEwLCBOVUxMfTsKCi8qCiAqIE5vdGU6IENoYXJhY3RlcnMgbWFya2VkIHdpdGggWFggYXJlIG5vdCBpbmNsdWRlZCBsaXRlcmFsbHksIGJlY2F1c2Ugc29tZQogKiBjb21waWxlcnMgY2Fubm90IGhhbmRsZSB0aGVtIChBbWlnYSBTQVMvQyBpcyB0aGUgbW9zdCBwaWNreSBvbmUpLgogKi8Kc3RhdGljIGRpZ3JfVCBkaWdyYXBoZGVmYXVsdFtdID0KCiNpZmRlZiBfX01JTlRfXwoJLyoKCSAqIEFUQVJJIGRpZ3JhcGhzCgkgKi8KICAgICAgIHt7J0MnLCAnLCcsIDEyOH0sCS8qIH5AIFhYICovCgl7J3UnLCAnIicsIDEyOX0sCS8qIIEgKi8KCXsnZScsICdcJycsIDEzMH0sCS8qIIIgKi8KCXsnYScsICdeJywgMTMxfSwJLyoggyAqLwoJeydhJywgJyInLCAxMzJ9LAkvKiCEICovCgl7J2EnLCAnYCcsIDEzM30sCS8qIIUgKi8KCXsnYScsICdAJywgMTM0fSwJLyoghiAqLwoJeydjJywgJywnLCAxMzV9LAkvKiB+RyBYWCAqLwoJeydlJywgJ14nLCAxMzZ9LAkvKiB+SCBYWCAqLwoJeydlJywgJyInLCAxMzd9LAkvKiCJICovCgl7J2UnLCAnYCcsIDEzOH0sCS8qIIogKi8KCXsnaScsICciJywgMTM5fSwJLyogiyAqLwoJeydpJywgJ14nLCAxNDB9LAkvKiCMICovCgl7J2knLCAnYCcsIDE0MX0sCS8qII0gKi8KCXsnQScsICciJywgMTQyfSwJLyogjiAqLwoJeydBJywgJ0AnLCAxNDN9LAkvKiCPICovCgl7J0UnLCAnXCcnLCAxNDR9LAkvKiCQICovCgl7J2EnLCAnZScsIDE0NX0sCS8qIJEgKi8KCXsnQScsICdFJywgMTQ2fSwJLyogkiAqLwoJeydvJywgJ14nLCAxNDd9LAkvKiCTICovCgl7J28nLCAnIicsIDE0OH0sCS8qIJQgKi8KCXsnbycsICdgJywgMTQ5fSwJLyoglSAqLwoJeyd1JywgJ14nLCAxNTB9LAkvKiCWICovCgl7J3UnLCAnYCcsIDE1MX0sCS8qIJcgKi8KCXsneScsICciJywgMTUyfSwJLyogmCAqLwoJeydPJywgJyInLCAxNTN9LAkvKiCZICovCgl7J1UnLCAnIicsIDE1NH0sCS8qIJogKi8KCXsnYycsICd8JywgMTU1fSwJLyogmyAqLwoJeyckJywgJyQnLCAxNTZ9LAkvKiCcICovCgl7J1knLCAnLScsIDE1N30sCS8qIH5dIFhYICovCgl7J3MnLCAncycsIDE1OH0sCS8qIJ4gKi8KCXsnZicsICdmJywgMTU5fSwJLyognyAqLwoJeydhJywgJ1wnJywgMTYwfSwJLyogoCAqLwoJeydpJywgJ1wnJywgMTYxfSwJLyogoSAqLwoJeydvJywgJ1wnJywgMTYyfSwJLyogoiAqLwoJeyd1JywgJ1wnJywgMTYzfSwJLyogoyAqLwoJeyduJywgJ34nLCAxNjR9LAkvKiCkICovCgl7J04nLCAnficsIDE2NX0sCS8qIKUgKi8KCXsnYScsICdhJywgMTY2fSwJLyogpiAqLwoJeydvJywgJ28nLCAxNjd9LAkvKiCnICovCgl7J34nLCAnPycsIDE2OH0sCS8qIKggKi8KCXsnLScsICdhJywgMTY5fSwJLyogqSAqLwoJeydhJywgJy0nLCAxNzB9LAkvKiCqICovCgl7JzEnLCAnMicsIDE3MX0sCS8qIKsgKi8KCXsnMScsICc0JywgMTcyfSwJLyogrCAqLwoJeyd+JywgJyEnLCAxNzN9LAkvKiCtICovCgl7JzwnLCAnPCcsIDE3NH0sCS8qIK4gKi8KCXsnPicsICc+JywgMTc1fSwJLyogryAqLwoJeydqJywgJ3UnLCAyMzB9LAkvKiDmICovCgl7J28nLCAnLycsIDIzN30sCS8qIO0gKi8KCXsnKycsICctJywgMjQxfSwJLyog8SAqLwoJeyc+JywgJz0nLCAyNDJ9LAkvKiDyICovCgl7JzwnLCAnPScsIDI0M30sCS8qIPMgKi8KCXsnOicsICctJywgMjQ2fSwJLyog9iAqLwoJeyd+JywgJ34nLCAyNDd9LAkvKiD3ICovCgl7J34nLCAnbycsIDI0OH0sCS8qIPggKi8KCXsnMicsICcyJywgMjUzfSwJLyog/SAqLwoJe05VTCwgTlVMLCBOVUx9Cgl9OwoKI2Vsc2UJLyogIV9fTUlOVF9fICovCiMgaWZkZWYgSFBVWF9ESUdSQVBIUwoKCS8qCgkgKiBkaWZmZXJlbnQgSFBVWCBkaWdyYXBocwoJICovCiAgICAgICB7eydBJywgJ2AnLCAxNjF9LAkvKiChICovCgl7J0EnLCAnXicsIDE2Mn0sCS8qIKIgKi8KCXsnRScsICdgJywgMTYzfSwJLyogoyAqLwoJeydFJywgJ14nLCAxNjR9LAkvKiCkICovCgl7J0UnLCAnIicsIDE2NX0sCS8qIKUgKi8KCXsnSScsICdeJywgMTY2fSwJLyogpiAqLwoJeydJJywgJyInLCAxNjd9LAkvKiCnICovCgl7J1wnJywgJ1wnJywgMTY4fSwJLyogqCAqLwoJeydgJywgJ2AnLCAxNjl9LAkvKiCpICovCgl7J14nLCAnXicsIDE3MH0sCS8qIKogKi8KCXsnIicsICciJywgMTcxfSwJLyogqyAqLwoJeyd+JywgJ34nLCAxNzJ9LAkvKiCsICovCgl7J1UnLCAnYCcsIDE3M30sCS8qIK0gKi8KCXsnVScsICdeJywgMTc0fSwJLyogriAqLwoJeydMJywgJz0nLCAxNzV9LAkvKiCvICovCgl7J34nLCAnXycsIDE3Nn0sCS8qILAgKi8KCXsnWScsICdcJycsIDE3N30sCS8qILEgKi8KCXsneScsICdcJycsIDE3OH0sCS8qILIgKi8KCXsnficsICdvJywgMTc5fSwJLyogsyAqLwoJeydDJywgJywnLCAxODB9LAkvKiC0ICovCgl7J2MnLCAnLCcsIDE4MX0sCS8qILUgKi8KCXsnTicsICd+JywgMTgyfSwJLyogtiAqLwoJeyduJywgJ34nLCAxODN9LAkvKiC3ICovCgl7J34nLCAnIScsIDE4NH0sCS8qILggKi8KCXsnficsICc/JywgMTg1fSwJLyoguSAqLwoJeydvJywgJ3gnLCAxODZ9LAkvKiC6ICovCgl7J0wnLCAnLScsIDE4N30sCS8qILsgKi8KCXsnWScsICc9JywgMTg4fSwJLyogvCAqLwoJeydwJywgJ3AnLCAxODl9LAkvKiC9ICovCgl7J2YnLCAnbCcsIDE5MH0sCS8qIL4gKi8KCXsnYycsICd8JywgMTkxfSwJLyogvyAqLwoJeydhJywgJ14nLCAxOTJ9LAkvKiDAICovCgl7J2UnLCAnXicsIDE5M30sCS8qIMEgKi8KCXsnbycsICdeJywgMTk0fSwJLyogwiAqLwoJeyd1JywgJ14nLCAxOTV9LAkvKiDDICovCgl7J2EnLCAnXCcnLCAxOTZ9LAkvKiDEICovCgl7J2UnLCAnXCcnLCAxOTd9LAkvKiDFICovCgl7J28nLCAnXCcnLCAxOTh9LAkvKiDGICovCgl7J3UnLCAnXCcnLCAxOTl9LAkvKiDHICovCgl7J2EnLCAnYCcsIDIwMH0sCS8qIMggKi8KCXsnZScsICdgJywgMjAxfSwJLyogySAqLwoJeydvJywgJ2AnLCAyMDJ9LAkvKiDKICovCgl7J3UnLCAnYCcsIDIwM30sCS8qIMsgKi8KCXsnYScsICciJywgMjA0fSwJLyogzCAqLwoJeydlJywgJyInLCAyMDV9LAkvKiDNICovCgl7J28nLCAnIicsIDIwNn0sCS8qIM4gKi8KCXsndScsICciJywgMjA3fSwJLyogzyAqLwoJeydBJywgJ28nLCAyMDh9LAkvKiDQICovCgl7J2knLCAnXicsIDIwOX0sCS8qINEgKi8KCXsnTycsICcvJywgMjEwfSwJLyog0iAqLwoJeydBJywgJ0UnLCAyMTF9LAkvKiDTICovCgl7J2EnLCAnbycsIDIxMn0sCS8qINQgKi8KCXsnaScsICdcJycsIDIxM30sCS8qINUgKi8KCXsnbycsICcvJywgMjE0fSwJLyog1iAqLwoJeydhJywgJ2UnLCAyMTV9LAkvKiDXICovCgl7J0EnLCAnIicsIDIxNn0sCS8qINggKi8KCXsnaScsICdgJywgMjE3fSwJLyog2SAqLwoJeydPJywgJyInLCAyMTh9LAkvKiDaICovCgl7J1UnLCAnIicsIDIxOX0sCS8qINsgKi8KCXsnRScsICdcJycsIDIyMH0sCS8qINwgKi8KCXsnaScsICciJywgMjIxfSwJLyog3SAqLwoJeydzJywgJ3MnLCAyMjJ9LAkvKiDeICovCgl7J08nLCAnXicsIDIyM30sCS8qIN8gKi8KCXsnQScsICdcJycsIDIyNH0sCS8qIOAgKi8KCXsnQScsICd+JywgMjI1fSwJLyog4SAqLwoJeydhJywgJ34nLCAyMjZ9LAkvKiDiICovCgl7J0QnLCAnLScsIDIyN30sCS8qIOMgKi8KCXsnZCcsICctJywgMjI4fSwJLyog5CAqLwoJeydJJywgJ1wnJywgMjI5fSwJLyog5SAqLwoJeydJJywgJ2AnLCAyMzB9LAkvKiDmICovCgl7J08nLCAnXCcnLCAyMzF9LAkvKiDnICovCgl7J08nLCAnYCcsIDIzMn0sCS8qIOggKi8KCXsnTycsICd+JywgMjMzfSwJLyog6SAqLwoJeydvJywgJ34nLCAyMzR9LAkvKiDqICovCgl7J1MnLCAnficsIDIzNX0sCS8qIOsgKi8KCXsncycsICd+JywgMjM2fSwJLyog7CAqLwoJeydVJywgJ1wnJywgMjM3fSwJLyog7SAqLwoJeydZJywgJyInLCAyMzh9LAkvKiDuICovCgl7J3knLCAnIicsIDIzOX0sCS8qIO8gKi8KCXsncCcsICctJywgMjQwfSwJLyog8CAqLwoJeydwJywgJ34nLCAyNDF9LAkvKiDxICovCgl7J34nLCAnLicsIDI0Mn0sCS8qIPIgKi8KCXsnaicsICd1JywgMjQzfSwJLyog8yAqLwoJeydQJywgJ3AnLCAyNDR9LAkvKiD0ICovCgl7JzMnLCAnNCcsIDI0NX0sCS8qIPUgKi8KCXsnLScsICctJywgMjQ2fSwJLyog9iAqLwoJeycxJywgJzQnLCAyNDd9LAkvKiD3ICovCgl7JzEnLCAnMicsIDI0OH0sCS8qIPggKi8KCXsnYScsICdfJywgMjQ5fSwJLyog+SAqLwoJeydvJywgJ18nLCAyNTB9LAkvKiD6ICovCgl7JzwnLCAnPCcsIDI1MX0sCS8qIPsgKi8KCXsneCcsICd4JywgMjUyfSwJLyog/CAqLwoJeyc+JywgJz4nLCAyNTN9LAkvKiD9ICovCgl7JysnLCAnLScsIDI1NH0sCS8qIP4gKi8KCXsnbicsICd1JywgMjU1fSwJLyogeCBYWCAqLwoJe05VTCwgTlVMLCBOVUx9Cgl9OwoKIyBlbHNlCS8qICFIUFVYX0RJR1JBUEhTICovCgojICBpZmRlZiBFQkNESUMKCgkvKgoJICogRUJDRElDIC0gSVNPIGRpZ3JhcGhzCgkgKiBUT0RPOiBFQkNESUMgVGFibGUgaXMgQ29kZS1QYWdlIDEwNDcKCSAqLwogICAgICAge3snYScsICdeJywgICAgNjZ9LAkvKiDiICovCgl7J2EnLCAnIicsICAgIDY3fSwJLyog5CAqLwoJeydhJywgJ2AnLCAgICA2OH0sCS8qIOAgKi8KCXsnYScsICdcJycsICAgNjl9LAkvKiDhICovCgl7J2EnLCAnficsICAgIDcwfSwJLyog4yAqLwoJeydhJywgJ0AnLCAgICA3MX0sCS8qIOUgKi8KCXsnYScsICdhJywgICAgNzF9LAkvKiDlICovCgl7J2MnLCAnLCcsICAgIDcyfSwJLyog5yAqLwoJeyduJywgJ34nLCAgICA3M30sCS8qIPEgKi8KCXsnYycsICd8JywgICAgNzR9LAkvKiCiICovCgl7J2UnLCAnXCcnLCAgIDgxfSwJLyog6SAqLwoJeydlJywgJ14nLCAgICA4Mn0sCS8qIOogKi8KCXsnZScsICciJywgICAgODN9LAkvKiDrICovCgl7J2UnLCAnYCcsICAgIDg0fSwJLyog6CAqLwoJeydpJywgJ1wnJywgICA4NX0sCS8qIO0gKi8KCXsnaScsICdeJywgICAgODZ9LAkvKiDuICovCgl7J2knLCAnIicsICAgIDg3fSwJLyog7yAqLwoJeydpJywgJ2AnLCAgICA4OH0sCS8qIOwgKi8KCXsncycsICdzJywgICAgODl9LAkvKiDfICovCgl7J0EnLCAnXicsICAgIDk4fSwJLyogwiAqLwoJeydBJywgJyInLCAgICA5OX0sCS8qIMQgKi8KCXsnQScsICdgJywgICAxMDB9LAkvKiDAICovCgl7J0EnLCAnXCcnLCAgMTAxfSwJLyogwSAqLwoJeydBJywgJ34nLCAgIDEwMn0sCS8qIMMgKi8KCXsnQScsICdAJywgICAxMDN9LAkvKiDFICovCgl7J0EnLCAnQScsICAgMTAzfSwJLyogxSAqLwoJeydDJywgJywnLCAgIDEwNH0sCS8qIMcgKi8KCXsnTicsICd+JywgICAxMDV9LAkvKiDRICovCgl7J3wnLCAnfCcsICAgMTA2fSwJLyogpiAqLwoJeydvJywgJy8nLCAgIDExMn0sCS8qIPggKi8KCXsnRScsICdcJycsICAxMTN9LAkvKiDJICovCgl7J0UnLCAnXicsICAgMTE0fSwJLyogyiAqLwoJeydFJywgJyInLCAgIDExNX0sCS8qIMsgKi8KCXsnRScsICdgJywgICAxMTZ9LAkvKiDIICovCgl7J0knLCAnXCcnLCAgMTE3fSwJLyogzSAqLwoJeydJJywgJ14nLCAgIDExOH0sCS8qIM4gKi8KCXsnSScsICciJywgICAxMTl9LAkvKiDPICovCgl7J0knLCAnYCcsICAgMTIwfSwJLyogzCAqLwoJeydPJywgJy8nLCAgIDEyOH0sCS8qIDAvIFhYICovCgl7JzwnLCAnPCcsICAgMTM4fSwJLyogqyAqLwoJeyc+JywgJz4nLCAgIDEzOX0sCS8qILsgKi8KCXsnZCcsICctJywgICAxNDB9LAkvKiDwICovCgl7J3knLCAnXCcnLCAgMTQxfSwJLyog/SAqLwoJeydpJywgJ3AnLCAgIDE0Mn0sCS8qIP4gKi8KCXsnKycsICctJywgICAxNDN9LAkvKiCxICovCgl7J34nLCAnbycsICAgMTQ0fSwJLyogsCAqLwoJeydhJywgJy0nLCAgIDE1NH0sCS8qIKogKi8KCXsnbycsICctJywgICAxNTV9LAkvKiC6ICovCgl7J2EnLCAnZScsICAgMTU2fSwJLyog5iAqLwoJeycsJywgJywnLCAgIDE1N30sCS8qICwgWFggKi8KCXsnQScsICdFJywgICAxNTh9LAkvKiDGICovCgl7J28nLCAneCcsICAgMTU5fSwJLyogpCAtIGN1cnJlbmN5IHN5bWJvbCBpbiBJU08gODg1OS0xICovCgl7J2UnLCAnPScsICAgMTU5fSwJLyogpCAtIGV1cm8gc3ltYm9sIGluIElTTyA4ODU5LTE1ICovCgl7J0UnLCAndScsICAgMTU5fSwJLyogpCAtIGV1cm8gc3ltYm9sIGluIElTTyA4ODU5LTE1ICovCgl7J2onLCAndScsICAgMTYwfSwJLyogtSAqLwoJeyd5JywgJyInLCAgIDE2N30sCS8qIHggWFggKi8KCXsnficsICchJywgICAxNzB9LAkvKiChICovCgl7J34nLCAnPycsICAgMTcxfSwJLyogvyAqLwoJeydEJywgJy0nLCAgIDE3Mn0sCS8qINAgKi8KCXsnSScsICdwJywgICAxNzR9LAkvKiDeICovCgl7J3InLCAnTycsICAgMTc1fSwJLyogriAqLwoJeyctJywgJywnLCAgIDE3Nn0sCS8qIKwgKi8KCXsnJCcsICckJywgICAxNzd9LAkvKiCjICovCgl7J1knLCAnLScsICAgMTc4fSwJLyogpSAqLwoJeyd+JywgJy4nLCAgIDE3OX0sCS8qILcgKi8KCXsnYycsICdPJywgICAxODB9LAkvKiCpICovCgl7J3AnLCAnYScsICAgMTgxfSwJLyogpyAqLwoJeydwJywgJ3AnLCAgIDE4Mn0sCS8qILYgKi8KCXsnMScsICc0JywgICAxODN9LAkvKiC8ICovCgl7JzEnLCAnMicsICAgMTg0fSwJLyogvSAqLwoJeyczJywgJzQnLCAgIDE4NX0sCS8qIL4gKi8KCXsnWScsICdcJycsICAxODZ9LAkvKiDdICovCgl7JyInLCAnIicsICAgMTg3fSwJLyogqCAqLwoJeyctJywgJz0nLCAgIDE4OH0sCS8qIK8gKi8KCXsnXCcnLCAnXCcnLCAxOTB9LAkvKiC0ICovCgl7J08nLCAnRScsICAgMTkxfSwJLyog1yAtIE9FIGluIElTTyA4ODU5LTE1ICovCgl7Jy8nLCAnXFwnLCAgMTkxfSwJLyog1yAtIG11bHRpcGxpY2F0aW9uIHN5bWJvbCBpbiBJU08gODg1OS0xICovCgl7Jy0nLCAnLScsICAgMjAyfSwJLyogrSAqLwoJeydvJywgJ14nLCAgIDIwM30sCS8qIPQgKi8KCXsnbycsICciJywgICAyMDR9LAkvKiD2ICovCgl7J28nLCAnYCcsICAgMjA1fSwJLyog8iAqLwoJeydvJywgJ1wnJywgIDIwNn0sCS8qIPMgKi8KCXsnbycsICd+JywgICAyMDd9LAkvKiD1ICovCgl7JzEnLCAnMScsICAgMjE4fSwJLyoguSAqLwoJeyd1JywgJ14nLCAgIDIxOX0sCS8qIPsgKi8KCXsndScsICciJywgICAyMjB9LAkvKiD8ICovCgl7J3UnLCAnYCcsICAgMjIxfSwJLyog+SAqLwoJeyd1JywgJ1wnJywgIDIyMn0sCS8qIPogKi8KCXsnOicsICctJywgICAyMjV9LAkvKiD3IC0gZGl2aXNpb24gc3ltYm9sIGluIElTTyA4ODU5LTEgKi8KCXsnbycsICdlJywgICAyMjV9LAkvKiD3IC0gb2UgaW4gSVNPIDg4NTktMTUgKi8KCXsnMicsICcyJywgICAyMzR9LAkvKiCyICovCgl7J08nLCAnXicsICAgMjM1fSwJLyog1CAqLwoJeydPJywgJyInLCAgIDIzNn0sCS8qINYgKi8KCXsnTycsICdgJywgICAyMzd9LAkvKiDSICovCgl7J08nLCAnXCcnLCAgMjM4fSwJLyog0yAqLwoJeydPJywgJ34nLCAgIDIzOX0sCS8qINUgKi8KCXsnMycsICczJywgICAyNTB9LAkvKiCzICovCgl7J1UnLCAnXicsICAgMjUxfSwJLyog2yAqLwoJeydVJywgJyInLCAgIDI1Mn0sCS8qINwgKi8KCXsnVScsICdgJywgICAyNTN9LAkvKiDZICovCgl7J1UnLCAnXCcnLCAgMjU0fSwJLyog2iAqLwoJe05VTCwgTlVMLCBOVUx9Cgl9OwoKIyAgZWxzZQojICAgaWZkZWYgT0xEX0RJR1JBUEhTCgoJLyoKCSAqIGRpZ3JhcGhzIGNvbXBhdGlibGUgd2l0aCBWaW0gNS54CgkgKi8KICAgICAgIHt7J34nLCAnIScsIDE2MX0sCS8qIKEgKi8KCXsnYycsICd8JywgMTYyfSwJLyogoiAqLwoJeyckJywgJyQnLCAxNjN9LAkvKiCjICovCgl7J28nLCAneCcsIDE2NH0sCS8qIKQgLSBjdXJyZW5jeSBzeW1ib2wgaW4gSVNPIDg4NTktMSAqLwoJeydlJywgJz0nLCAxNjR9LAkvKiCkIC0gZXVybyBzeW1ib2wgaW4gSVNPIDg4NTktMTUgKi8KCXsnWScsICctJywgMTY1fSwJLyogpSAqLwoJeyd8JywgJ3wnLCAxNjZ9LAkvKiCmICovCgl7J3AnLCAnYScsIDE2N30sCS8qIKcgKi8KCXsnIicsICciJywgMTY4fSwJLyogqCAqLwoJeydjJywgJ08nLCAxNjl9LAkvKiCpICovCgl7J2EnLCAnLScsIDE3MH0sCS8qIKogKi8KCXsnPCcsICc8JywgMTcxfSwJLyogqyAqLwoJeyctJywgJywnLCAxNzJ9LAkvKiCsICovCgl7Jy0nLCAnLScsIDE3M30sCS8qIK0gKi8KCXsncicsICdPJywgMTc0fSwJLyogriAqLwoJeyctJywgJz0nLCAxNzV9LAkvKiCvICovCgl7J34nLCAnbycsIDE3Nn0sCS8qILAgKi8KCXsnKycsICctJywgMTc3fSwJLyogsSAqLwoJeycyJywgJzInLCAxNzh9LAkvKiCyICovCgl7JzMnLCAnMycsIDE3OX0sCS8qILMgKi8KCXsnXCcnLCAnXCcnLCAxODB9LAkvKiC0ICovCgl7J2onLCAndScsIDE4MX0sCS8qILUgKi8KCXsncCcsICdwJywgMTgyfSwJLyogtiAqLwoJeyd+JywgJy4nLCAxODN9LAkvKiC3ICovCgl7JywnLCAnLCcsIDE4NH0sCS8qILggKi8KCXsnMScsICcxJywgMTg1fSwJLyoguSAqLwoJeydvJywgJy0nLCAxODZ9LAkvKiC6ICovCgl7Jz4nLCAnPicsIDE4N30sCS8qILsgKi8KCXsnMScsICc0JywgMTg4fSwJLyogvCAqLwoJeycxJywgJzInLCAxODl9LAkvKiC9ICovCgl7JzMnLCAnNCcsIDE5MH0sCS8qIL4gKi8KCXsnficsICc/JywgMTkxfSwJLyogvyAqLwoJeydBJywgJ2AnLCAxOTJ9LAkvKiDAICovCgl7J0EnLCAnXCcnLCAxOTN9LAkvKiDBICovCgl7J0EnLCAnXicsIDE5NH0sCS8qIMIgKi8KCXsnQScsICd+JywgMTk1fSwJLyogwyAqLwoJeydBJywgJyInLCAxOTZ9LAkvKiDEICovCgl7J0EnLCAnQCcsIDE5N30sCS8qIMUgKi8KCXsnQScsICdBJywgMTk3fSwJLyogxSAqLwoJeydBJywgJ0UnLCAxOTh9LAkvKiDGICovCgl7J0MnLCAnLCcsIDE5OX0sCS8qIMcgKi8KCXsnRScsICdgJywgMjAwfSwJLyogyCAqLwoJeydFJywgJ1wnJywgMjAxfSwJLyogySAqLwoJeydFJywgJ14nLCAyMDJ9LAkvKiDKICovCgl7J0UnLCAnIicsIDIwM30sCS8qIMsgKi8KCXsnSScsICdgJywgMjA0fSwJLyogzCAqLwoJeydJJywgJ1wnJywgMjA1fSwJLyogzSAqLwoJeydJJywgJ14nLCAyMDZ9LAkvKiDOICovCgl7J0knLCAnIicsIDIwN30sCS8qIM8gKi8KCXsnRCcsICctJywgMjA4fSwJLyog0CAqLwoJeydOJywgJ34nLCAyMDl9LAkvKiDRICovCgl7J08nLCAnYCcsIDIxMH0sCS8qINIgKi8KCXsnTycsICdcJycsIDIxMX0sCS8qINMgKi8KCXsnTycsICdeJywgMjEyfSwJLyog1CAqLwoJeydPJywgJ34nLCAyMTN9LAkvKiDVICovCgl7J08nLCAnIicsIDIxNH0sCS8qINYgKi8KCXsnLycsICdcXCcsIDIxNX0sCS8qINcgLSBtdWx0aXBsaWNhdGlvbiBzeW1ib2wgaW4gSVNPIDg4NTktMSAqLwoJeydPJywgJ0UnLCAyMTV9LAkvKiDXIC0gT0UgaW4gSVNPIDg4NTktMTUgKi8KCXsnTycsICcvJywgMjE2fSwJLyog2CAqLwoJeydVJywgJ2AnLCAyMTd9LAkvKiDZICovCgl7J1UnLCAnXCcnLCAyMTh9LAkvKiDaICovCgl7J1UnLCAnXicsIDIxOX0sCS8qINsgKi8KCXsnVScsICciJywgMjIwfSwJLyog3CAqLwoJeydZJywgJ1wnJywgMjIxfSwJLyog3SAqLwoJeydJJywgJ3AnLCAyMjJ9LAkvKiDeICovCgl7J3MnLCAncycsIDIyM30sCS8qIN8gKi8KCXsnYScsICdgJywgMjI0fSwJLyog4CAqLwoJeydhJywgJ1wnJywgMjI1fSwJLyog4SAqLwoJeydhJywgJ14nLCAyMjZ9LAkvKiDiICovCgl7J2EnLCAnficsIDIyN30sCS8qIOMgKi8KCXsnYScsICciJywgMjI4fSwJLyog5CAqLwoJeydhJywgJ0AnLCAyMjl9LAkvKiDlICovCgl7J2EnLCAnYScsIDIyOX0sCS8qIOUgKi8KCXsnYScsICdlJywgMjMwfSwJLyog5iAqLwoJeydjJywgJywnLCAyMzF9LAkvKiDnICovCgl7J2UnLCAnYCcsIDIzMn0sCS8qIOggKi8KCXsnZScsICdcJycsIDIzM30sCS8qIOkgKi8KCXsnZScsICdeJywgMjM0fSwJLyog6iAqLwoJeydlJywgJyInLCAyMzV9LAkvKiDrICovCgl7J2knLCAnYCcsIDIzNn0sCS8qIOwgKi8KCXsnaScsICdcJycsIDIzN30sCS8qIO0gKi8KCXsnaScsICdeJywgMjM4fSwJLyog7iAqLwoJeydpJywgJyInLCAyMzl9LAkvKiDvICovCgl7J2QnLCAnLScsIDI0MH0sCS8qIPAgKi8KCXsnbicsICd+JywgMjQxfSwJLyog8SAqLwoJeydvJywgJ2AnLCAyNDJ9LAkvKiDyICovCgl7J28nLCAnXCcnLCAyNDN9LAkvKiDzICovCgl7J28nLCAnXicsIDI0NH0sCS8qIPQgKi8KCXsnbycsICd+JywgMjQ1fSwJLyog9SAqLwoJeydvJywgJyInLCAyNDZ9LAkvKiD2ICovCgl7JzonLCAnLScsIDI0N30sCS8qIPcgLSBkaXZpc2lvbiBzeW1ib2wgaW4gSVNPIDg4NTktMSAqLwoJeydvJywgJ2UnLCAyNDd9LAkvKiD3IC0gb2UgaW4gSVNPIDg4NTktMTUgKi8KCXsnbycsICcvJywgMjQ4fSwJLyog+CAqLwoJeyd1JywgJ2AnLCAyNDl9LAkvKiD5ICovCgl7J3UnLCAnXCcnLCAyNTB9LAkvKiD6ICovCgl7J3UnLCAnXicsIDI1MX0sCS8qIPsgKi8KCXsndScsICciJywgMjUyfSwJLyog/CAqLwoJeyd5JywgJ1wnJywgMjUzfSwJLyog/SAqLwoJeydpJywgJ3AnLCAyNTR9LAkvKiD+ICovCgl7J3knLCAnIicsIDI1NX0sCS8qIHggWFggKi8KCXtOVUwsIE5VTCwgTlVMfQoJfTsKIyAgIGVsc2UgLyogT0xEX0RJR1JBUEhTICovCgoJLyoKCSAqIGRpZ3JhcGhzIGZvciBVbmljb2RlIGZyb20gUkZDMTM0NQoJICogKGFsc28gd29yayBmb3IgSVNPLTg4NTktMSBha2EgbGF0aW4xKQoJICovCiAgICAgICB7Cgl7J04nLCAnVScsIDB4MGF9LAkvKiBMRiBmb3IgTlVMICovCgl7J1MnLCAnSCcsIDB4MDF9LAoJeydTJywgJ1gnLCAweDAyfSwKCXsnRScsICdYJywgMHgwM30sCgl7J0UnLCAnVCcsIDB4MDR9LAoJeydFJywgJ1EnLCAweDA1fSwKCXsnQScsICdLJywgMHgwNn0sCgl7J0InLCAnTCcsIDB4MDd9LAoJeydCJywgJ1MnLCAweDA4fSwKCXsnSCcsICdUJywgMHgwOX0sCgl7J0wnLCAnRicsIDB4MGF9LAoJeydWJywgJ1QnLCAweDBifSwKCXsnRicsICdGJywgMHgwY30sCgl7J0MnLCAnUicsIDB4MGR9LAoJeydTJywgJ08nLCAweDBlfSwKCXsnUycsICdJJywgMHgwZn0sCgl7J0QnLCAnTCcsIDB4MTB9LAoJeydEJywgJzEnLCAweDExfSwKCXsnRCcsICcyJywgMHgxMn0sCgl7J0QnLCAnMycsIDB4MTN9LAoJeydEJywgJzQnLCAweDE0fSwKCXsnTicsICdLJywgMHgxNX0sCgl7J1MnLCAnWScsIDB4MTZ9LAoJeydFJywgJ0InLCAweDE3fSwKCXsnQycsICdOJywgMHgxOH0sCgl7J0UnLCAnTScsIDB4MTl9LAoJeydTJywgJ0InLCAweDFhfSwKCXsnRScsICdDJywgMHgxYn0sCgl7J0YnLCAnUycsIDB4MWN9LAoJeydHJywgJ1MnLCAweDFkfSwKCXsnUicsICdTJywgMHgxZX0sCgl7J1UnLCAnUycsIDB4MWZ9LAoJeydTJywgJ1AnLCAweDIwfSwKCXsnTicsICdiJywgMHgyM30sCgl7J0QnLCAnTycsIDB4MjR9LAoJeydBJywgJ3QnLCAweDQwfSwKCXsnPCcsICcoJywgMHg1Yn0sCgl7Jy8nLCAnLycsIDB4NWN9LAoJeycpJywgJz4nLCAweDVkfSwKCXsnXCcnLCAnPicsIDB4NWV9LAoJeydcJycsICchJywgMHg2MH0sCgl7JygnLCAnIScsIDB4N2J9LAoJeychJywgJyEnLCAweDdjfSwKCXsnIScsICcpJywgMHg3ZH0sCgl7J1wnJywgJz8nLCAweDdlfSwKCXsnRCcsICdUJywgMHg3Zn0sCgl7J1AnLCAnQScsIDB4ODB9LAoJeydIJywgJ08nLCAweDgxfSwKCXsnQicsICdIJywgMHg4Mn0sCgl7J04nLCAnSCcsIDB4ODN9LAoJeydJJywgJ04nLCAweDg0fSwKCXsnTicsICdMJywgMHg4NX0sCgl7J1MnLCAnQScsIDB4ODZ9LAoJeydFJywgJ1MnLCAweDg3fSwKCXsnSCcsICdTJywgMHg4OH0sCgl7J0gnLCAnSicsIDB4ODl9LAoJeydWJywgJ1MnLCAweDhhfSwKCXsnUCcsICdEJywgMHg4Yn0sCgl7J1AnLCAnVScsIDB4OGN9LAoJeydSJywgJ0knLCAweDhkfSwKCXsnUycsICcyJywgMHg4ZX0sCgl7J1MnLCAnMycsIDB4OGZ9LAoJeydEJywgJ0MnLCAweDkwfSwKCXsnUCcsICcxJywgMHg5MX0sCgl7J1AnLCAnMicsIDB4OTJ9LAoJeydUJywgJ1MnLCAweDkzfSwKCXsnQycsICdDJywgMHg5NH0sCgl7J00nLCAnVycsIDB4OTV9LAoJeydTJywgJ0cnLCAweDk2fSwKCXsnRScsICdHJywgMHg5N30sCgl7J1MnLCAnUycsIDB4OTh9LAoJeydHJywgJ0MnLCAweDk5fSwKCXsnUycsICdDJywgMHg5YX0sCgl7J0MnLCAnSScsIDB4OWJ9LAoJeydTJywgJ1QnLCAweDljfSwKCXsnTycsICdDJywgMHg5ZH0sCgl7J1AnLCAnTScsIDB4OWV9LAoJeydBJywgJ0MnLCAweDlmfSwKCXsnTicsICdTJywgMHhhMH0sCiNkZWZpbmUgREdfU1RBUlRfTEFUSU4gMHhhMQoJeychJywgJ0knLCAweGExfSwKCXsnficsICchJywgMHhhMX0sCS8vIKEgVmltIDUueCBjb21wYXRpYmxlCgl7J0MnLCAndCcsIDB4YTJ9LAoJeydjJywgJ3wnLCAweGEyfSwJLy8goiBWaW0gNS54IGNvbXBhdGlibGUKCXsnUCcsICdkJywgMHhhM30sCgl7JyQnLCAnJCcsIDB4YTN9LAkvLyCjIFZpbSA1LnggY29tcGF0aWJsZQoJeydDJywgJ3UnLCAweGE0fSwKCXsnbycsICd4JywgMHhhNH0sCS8vIKQgVmltIDUueCBjb21wYXRpYmxlCgl7J1knLCAnZScsIDB4YTV9LAoJeydZJywgJy0nLCAweGE1fSwJLy8gpSBWaW0gNS54IGNvbXBhdGlibGUKCXsnQicsICdCJywgMHhhNn0sCgl7J3wnLCAnfCcsIDB4YTZ9LAkvLyCmIFZpbSA1LnggY29tcGF0aWJsZQoJeydTJywgJ0UnLCAweGE3fSwKCXsnXCcnLCAnOicsIDB4YTh9LAoJeydDJywgJ28nLCAweGE5fSwKCXsnYycsICdPJywgMHhhOX0sCS8vIKkgVmltIDUueCBjb21wYXRpYmxlCgl7Jy0nLCAnYScsIDB4YWF9LAoJeyc8JywgJzwnLCAweGFifSwKCXsnTicsICdPJywgMHhhY30sCgl7Jy0nLCAnLCcsIDB4YWN9LAkvLyCsIFZpbSA1LnggY29tcGF0aWJsZQoJeyctJywgJy0nLCAweGFkfSwKCXsnUicsICdnJywgMHhhZX0sCgl7J1wnJywgJ20nLCAweGFmfSwKCXsnLScsICc9JywgMHhhZn0sCS8vIK8gVmltIDUueCBjb21wYXRpYmxlCgl7J0QnLCAnRycsIDB4YjB9LAoJeyd+JywgJ28nLCAweGIwfSwJLy8gsCBWaW0gNS54IGNvbXBhdGlibGUKCXsnKycsICctJywgMHhiMX0sCgl7JzInLCAnUycsIDB4YjJ9LAoJeycyJywgJzInLCAweGIyfSwJLy8gsiBWaW0gNS54IGNvbXBhdGlibGUKCXsnMycsICdTJywgMHhiM30sCgl7JzMnLCAnMycsIDB4YjN9LAkvLyCzIFZpbSA1LnggY29tcGF0aWJsZQoJeydcJycsICdcJycsIDB4YjR9LAoJeydNJywgJ3knLCAweGI1fSwKCXsnUCcsICdJJywgMHhiNn0sCgl7J3AnLCAncCcsIDB4YjZ9LAkvLyC2IFZpbSA1LnggY29tcGF0aWJsZQoJeycuJywgJ00nLCAweGI3fSwKCXsnficsICcuJywgMHhiN30sCS8vILcgVmltIDUueCBjb21wYXRpYmxlCgl7J1wnJywgJywnLCAweGI4fSwKCXsnMScsICdTJywgMHhiOX0sCgl7JzEnLCAnMScsIDB4Yjl9LAkvLyC5IFZpbSA1LnggY29tcGF0aWJsZQoJeyctJywgJ28nLCAweGJhfSwKCXsnPicsICc+JywgMHhiYn0sCgl7JzEnLCAnNCcsIDB4YmN9LAoJeycxJywgJzInLCAweGJkfSwKCXsnMycsICc0JywgMHhiZX0sCgl7Jz8nLCAnSScsIDB4YmZ9LAoJeyd+JywgJz8nLCAweGJmfSwJLy8gvyBWaW0gNS54IGNvbXBhdGlibGUKCXsnQScsICchJywgMHhjMH0sCgl7J0EnLCAnYCcsIDB4YzB9LAkvLyDAIFZpbSA1LnggY29tcGF0aWJsZQoJeydBJywgJ1wnJywgMHhjMX0sCgl7J0EnLCAnPicsIDB4YzJ9LAoJeydBJywgJ14nLCAweGMyfSwJLy8gwiBWaW0gNS54IGNvbXBhdGlibGUKCXsnQScsICc/JywgMHhjM30sCgl7J0EnLCAnficsIDB4YzN9LAkvLyDDIFZpbSA1LnggY29tcGF0aWJsZQoJeydBJywgJzonLCAweGM0fSwKCXsnQScsICciJywgMHhjNH0sCS8vIMQgVmltIDUueCBjb21wYXRpYmxlCgl7J0EnLCAnQScsIDB4YzV9LAoJeydBJywgJ0AnLCAweGM1fSwJLy8gxSBWaW0gNS54IGNvbXBhdGlibGUKCXsnQScsICdFJywgMHhjNn0sCgl7J0MnLCAnLCcsIDB4Yzd9LAoJeydFJywgJyEnLCAweGM4fSwKCXsnRScsICdgJywgMHhjOH0sCS8vIMggVmltIDUueCBjb21wYXRpYmxlCgl7J0UnLCAnXCcnLCAweGM5fSwKCXsnRScsICc+JywgMHhjYX0sCgl7J0UnLCAnXicsIDB4Y2F9LAkvLyDKIFZpbSA1LnggY29tcGF0aWJsZQoJeydFJywgJzonLCAweGNifSwKCXsnRScsICciJywgMHhjYn0sCS8vIMsgVmltIDUueCBjb21wYXRpYmxlCgl7J0knLCAnIScsIDB4Y2N9LAoJeydJJywgJ2AnLCAweGNjfSwJLy8gzCBWaW0gNS54IGNvbXBhdGlibGUKCXsnSScsICdcJycsIDB4Y2R9LAoJeydJJywgJz4nLCAweGNlfSwKCXsnSScsICdeJywgMHhjZX0sCS8vIM4gVmltIDUueCBjb21wYXRpYmxlCgl7J0knLCAnOicsIDB4Y2Z9LAoJeydJJywgJyInLCAweGNmfSwJLy8gzyBWaW0gNS54IGNvbXBhdGlibGUKCXsnRCcsICctJywgMHhkMH0sCgl7J04nLCAnPycsIDB4ZDF9LAoJeydOJywgJ34nLCAweGQxfSwJLy8g0SBWaW0gNS54IGNvbXBhdGlibGUKCXsnTycsICchJywgMHhkMn0sCgl7J08nLCAnYCcsIDB4ZDJ9LAkvLyDSIFZpbSA1LnggY29tcGF0aWJsZQoJeydPJywgJ1wnJywgMHhkM30sCgl7J08nLCAnPicsIDB4ZDR9LAoJeydPJywgJ14nLCAweGQ0fSwJLy8g1CBWaW0gNS54IGNvbXBhdGlibGUKCXsnTycsICc/JywgMHhkNX0sCgl7J08nLCAnficsIDB4ZDV9LAkvLyDVIFZpbSA1LnggY29tcGF0aWJsZQoJeydPJywgJzonLCAweGQ2fSwKCXsnKicsICdYJywgMHhkN30sCgl7Jy8nLCAnXFwnLCAweGQ3fSwJLy8g1yBWaW0gNS54IGNvbXBhdGlibGUKCXsnTycsICcvJywgMHhkOH0sCgl7J1UnLCAnIScsIDB4ZDl9LAoJeydVJywgJ2AnLCAweGQ5fSwJLy8g2SBWaW0gNS54IGNvbXBhdGlibGUKCXsnVScsICdcJycsIDB4ZGF9LAoJeydVJywgJz4nLCAweGRifSwKCXsnVScsICdeJywgMHhkYn0sCS8vINsgVmltIDUueCBjb21wYXRpYmxlCgl7J1UnLCAnOicsIDB4ZGN9LAoJeydZJywgJ1wnJywgMHhkZH0sCgl7J1QnLCAnSCcsIDB4ZGV9LAoJeydJJywgJ3AnLCAweGRlfSwJLy8g3iBWaW0gNS54IGNvbXBhdGlibGUKCXsncycsICdzJywgMHhkZn0sCgl7J2EnLCAnIScsIDB4ZTB9LAoJeydhJywgJ2AnLCAweGUwfSwJLy8g4CBWaW0gNS54IGNvbXBhdGlibGUKCXsnYScsICdcJycsIDB4ZTF9LAoJeydhJywgJz4nLCAweGUyfSwKCXsnYScsICdeJywgMHhlMn0sCS8vIOIgVmltIDUueCBjb21wYXRpYmxlCgl7J2EnLCAnPycsIDB4ZTN9LAoJeydhJywgJ34nLCAweGUzfSwJLy8g4yBWaW0gNS54IGNvbXBhdGlibGUKCXsnYScsICc6JywgMHhlNH0sCgl7J2EnLCAnIicsIDB4ZTR9LAkvLyDkIFZpbSA1LnggY29tcGF0aWJsZQoJeydhJywgJ2EnLCAweGU1fSwKCXsnYScsICdAJywgMHhlNX0sCS8vIOUgVmltIDUueCBjb21wYXRpYmxlCgl7J2EnLCAnZScsIDB4ZTZ9LAoJeydjJywgJywnLCAweGU3fSwKCXsnZScsICchJywgMHhlOH0sCgl7J2UnLCAnYCcsIDB4ZTh9LAkvLyDoIFZpbSA1LnggY29tcGF0aWJsZQoJeydlJywgJ1wnJywgMHhlOX0sCgl7J2UnLCAnPicsIDB4ZWF9LAoJeydlJywgJ14nLCAweGVhfSwJLy8g6iBWaW0gNS54IGNvbXBhdGlibGUKCXsnZScsICc6JywgMHhlYn0sCgl7J2UnLCAnIicsIDB4ZWJ9LAkvLyDrIFZpbSA1LnggY29tcGF0aWJsZQoJeydpJywgJyEnLCAweGVjfSwKCXsnaScsICdgJywgMHhlY30sCS8vIOwgVmltIDUueCBjb21wYXRpYmxlCgl7J2knLCAnXCcnLCAweGVkfSwKCXsnaScsICc+JywgMHhlZX0sCgl7J2knLCAnXicsIDB4ZWV9LAkvLyDuIFZpbSA1LnggY29tcGF0aWJsZQoJeydpJywgJzonLCAweGVmfSwKCXsnZCcsICctJywgMHhmMH0sCgl7J24nLCAnPycsIDB4ZjF9LAoJeyduJywgJ34nLCAweGYxfSwJLy8g8SBWaW0gNS54IGNvbXBhdGlibGUKCXsnbycsICchJywgMHhmMn0sCgl7J28nLCAnYCcsIDB4ZjJ9LAkvLyDyIFZpbSA1LnggY29tcGF0aWJsZQoJeydvJywgJ1wnJywgMHhmM30sCgl7J28nLCAnPicsIDB4ZjR9LAoJeydvJywgJ14nLCAweGY0fSwJLy8g9CBWaW0gNS54IGNvbXBhdGlibGUKCXsnbycsICc/JywgMHhmNX0sCgl7J28nLCAnficsIDB4ZjV9LAkvLyD1IFZpbSA1LnggY29tcGF0aWJsZQoJeydvJywgJzonLCAweGY2fSwKCXsnLScsICc6JywgMHhmN30sCgl7J28nLCAnLycsIDB4Zjh9LAoJeyd1JywgJyEnLCAweGY5fSwKCXsndScsICdgJywgMHhmOX0sCS8vIPkgVmltIDUueCBjb21wYXRpYmxlCgl7J3UnLCAnXCcnLCAweGZhfSwKCXsndScsICc+JywgMHhmYn0sCgl7J3UnLCAnXicsIDB4ZmJ9LAkvLyD7IFZpbSA1LnggY29tcGF0aWJsZQoJeyd1JywgJzonLCAweGZjfSwKCXsneScsICdcJycsIDB4ZmR9LAoJeyd0JywgJ2gnLCAweGZlfSwKCXsneScsICc6JywgMHhmZn0sCgl7J3knLCAnIicsIDB4ZmZ9LAkvLyB4IFhYICBWaW0gNS54IGNvbXBhdGlibGUKCiMJZGVmaW5lIFVTRV9VTklDT0RFX0RJR1JBUEhTCgoJeydBJywgJy0nLCAweDAxMDB9LAoJeydhJywgJy0nLCAweDAxMDF9LAoJeydBJywgJygnLCAweDAxMDJ9LAoJeydhJywgJygnLCAweDAxMDN9LAoJeydBJywgJzsnLCAweDAxMDR9LAoJeydhJywgJzsnLCAweDAxMDV9LAoJeydDJywgJ1wnJywgMHgwMTA2fSwKCXsnYycsICdcJycsIDB4MDEwN30sCgl7J0MnLCAnPicsIDB4MDEwOH0sCgl7J2MnLCAnPicsIDB4MDEwOX0sCgl7J0MnLCAnLicsIDB4MDEwYX0sCgl7J2MnLCAnLicsIDB4MDEwYn0sCgl7J0MnLCAnPCcsIDB4MDEwY30sCgl7J2MnLCAnPCcsIDB4MDEwZH0sCgl7J0QnLCAnPCcsIDB4MDEwZX0sCgl7J2QnLCAnPCcsIDB4MDEwZn0sCgl7J0QnLCAnLycsIDB4MDExMH0sCgl7J2QnLCAnLycsIDB4MDExMX0sCgl7J0UnLCAnLScsIDB4MDExMn0sCgl7J2UnLCAnLScsIDB4MDExM30sCgl7J0UnLCAnKCcsIDB4MDExNH0sCgl7J2UnLCAnKCcsIDB4MDExNX0sCgl7J0UnLCAnLicsIDB4MDExNn0sCgl7J2UnLCAnLicsIDB4MDExN30sCgl7J0UnLCAnOycsIDB4MDExOH0sCgl7J2UnLCAnOycsIDB4MDExOX0sCgl7J0UnLCAnPCcsIDB4MDExYX0sCgl7J2UnLCAnPCcsIDB4MDExYn0sCgl7J0cnLCAnPicsIDB4MDExY30sCgl7J2cnLCAnPicsIDB4MDExZH0sCgl7J0cnLCAnKCcsIDB4MDExZX0sCgl7J2cnLCAnKCcsIDB4MDExZn0sCgl7J0cnLCAnLicsIDB4MDEyMH0sCgl7J2cnLCAnLicsIDB4MDEyMX0sCgl7J0cnLCAnLCcsIDB4MDEyMn0sCgl7J2cnLCAnLCcsIDB4MDEyM30sCgl7J0gnLCAnPicsIDB4MDEyNH0sCgl7J2gnLCAnPicsIDB4MDEyNX0sCgl7J0gnLCAnLycsIDB4MDEyNn0sCgl7J2gnLCAnLycsIDB4MDEyN30sCgl7J0knLCAnPycsIDB4MDEyOH0sCgl7J2knLCAnPycsIDB4MDEyOX0sCgl7J0knLCAnLScsIDB4MDEyYX0sCgl7J2knLCAnLScsIDB4MDEyYn0sCgl7J0knLCAnKCcsIDB4MDEyY30sCgl7J2knLCAnKCcsIDB4MDEyZH0sCgl7J0knLCAnOycsIDB4MDEyZX0sCgl7J2knLCAnOycsIDB4MDEyZn0sCgl7J0knLCAnLicsIDB4MDEzMH0sCgl7J2knLCAnLicsIDB4MDEzMX0sCgl7J0knLCAnSicsIDB4MDEzMn0sCgl7J2knLCAnaicsIDB4MDEzM30sCgl7J0onLCAnPicsIDB4MDEzNH0sCgl7J2onLCAnPicsIDB4MDEzNX0sCgl7J0snLCAnLCcsIDB4MDEzNn0sCgl7J2snLCAnLCcsIDB4MDEzN30sCgl7J2snLCAnaycsIDB4MDEzOH0sCgl7J0wnLCAnXCcnLCAweDAxMzl9LAoJeydsJywgJ1wnJywgMHgwMTNhfSwKCXsnTCcsICcsJywgMHgwMTNifSwKCXsnbCcsICcsJywgMHgwMTNjfSwKCXsnTCcsICc8JywgMHgwMTNkfSwKCXsnbCcsICc8JywgMHgwMTNlfSwKCXsnTCcsICcuJywgMHgwMTNmfSwKCXsnbCcsICcuJywgMHgwMTQwfSwKCXsnTCcsICcvJywgMHgwMTQxfSwKCXsnbCcsICcvJywgMHgwMTQyfSwKCXsnTicsICdcJycsIDB4MDE0M30sCgl7J24nLCAnXCcnLCAweDAxNDR9LAoJeydOJywgJywnLCAweDAxNDV9LAoJeyduJywgJywnLCAweDAxNDZ9LAoJeydOJywgJzwnLCAweDAxNDd9LAoJeyduJywgJzwnLCAweDAxNDh9LAoJeydcJycsICduJywgMHgwMTQ5fSwKCXsnTicsICdHJywgMHgwMTRhfSwKCXsnbicsICdnJywgMHgwMTRifSwKCXsnTycsICctJywgMHgwMTRjfSwKCXsnbycsICctJywgMHgwMTRkfSwKCXsnTycsICcoJywgMHgwMTRlfSwKCXsnbycsICcoJywgMHgwMTRmfSwKCXsnTycsICciJywgMHgwMTUwfSwKCXsnbycsICciJywgMHgwMTUxfSwKCXsnTycsICdFJywgMHgwMTUyfSwKCXsnbycsICdlJywgMHgwMTUzfSwKCXsnUicsICdcJycsIDB4MDE1NH0sCgl7J3InLCAnXCcnLCAweDAxNTV9LAoJeydSJywgJywnLCAweDAxNTZ9LAoJeydyJywgJywnLCAweDAxNTd9LAoJeydSJywgJzwnLCAweDAxNTh9LAoJeydyJywgJzwnLCAweDAxNTl9LAoJeydTJywgJ1wnJywgMHgwMTVhfSwKCXsncycsICdcJycsIDB4MDE1Yn0sCgl7J1MnLCAnPicsIDB4MDE1Y30sCgl7J3MnLCAnPicsIDB4MDE1ZH0sCgl7J1MnLCAnLCcsIDB4MDE1ZX0sCgl7J3MnLCAnLCcsIDB4MDE1Zn0sCgl7J1MnLCAnPCcsIDB4MDE2MH0sCgl7J3MnLCAnPCcsIDB4MDE2MX0sCgl7J1QnLCAnLCcsIDB4MDE2Mn0sCgl7J3QnLCAnLCcsIDB4MDE2M30sCgl7J1QnLCAnPCcsIDB4MDE2NH0sCgl7J3QnLCAnPCcsIDB4MDE2NX0sCgl7J1QnLCAnLycsIDB4MDE2Nn0sCgl7J3QnLCAnLycsIDB4MDE2N30sCgl7J1UnLCAnPycsIDB4MDE2OH0sCgl7J3UnLCAnPycsIDB4MDE2OX0sCgl7J1UnLCAnLScsIDB4MDE2YX0sCgl7J3UnLCAnLScsIDB4MDE2Yn0sCgl7J1UnLCAnKCcsIDB4MDE2Y30sCgl7J3UnLCAnKCcsIDB4MDE2ZH0sCgl7J1UnLCAnMCcsIDB4MDE2ZX0sCgl7J3UnLCAnMCcsIDB4MDE2Zn0sCgl7J1UnLCAnIicsIDB4MDE3MH0sCgl7J3UnLCAnIicsIDB4MDE3MX0sCgl7J1UnLCAnOycsIDB4MDE3Mn0sCgl7J3UnLCAnOycsIDB4MDE3M30sCgl7J1cnLCAnPicsIDB4MDE3NH0sCgl7J3cnLCAnPicsIDB4MDE3NX0sCgl7J1knLCAnPicsIDB4MDE3Nn0sCgl7J3knLCAnPicsIDB4MDE3N30sCgl7J1knLCAnOicsIDB4MDE3OH0sCgl7J1onLCAnXCcnLCAweDAxNzl9LAoJeyd6JywgJ1wnJywgMHgwMTdhfSwKCXsnWicsICcuJywgMHgwMTdifSwKCXsneicsICcuJywgMHgwMTdjfSwKCXsnWicsICc8JywgMHgwMTdkfSwKCXsneicsICc8JywgMHgwMTdlfSwKCXsnTycsICc5JywgMHgwMWEwfSwKCXsnbycsICc5JywgMHgwMWExfSwKCXsnTycsICdJJywgMHgwMWEyfSwKCXsnbycsICdpJywgMHgwMWEzfSwKCXsneScsICdyJywgMHgwMWE2fSwKCXsnVScsICc5JywgMHgwMWFmfSwKCXsndScsICc5JywgMHgwMWIwfSwKCXsnWicsICcvJywgMHgwMWI1fSwKCXsneicsICcvJywgMHgwMWI2fSwKCXsnRScsICdEJywgMHgwMWI3fSwKCXsnQScsICc8JywgMHgwMWNkfSwKCXsnYScsICc8JywgMHgwMWNlfSwKCXsnSScsICc8JywgMHgwMWNmfSwKCXsnaScsICc8JywgMHgwMWQwfSwKCXsnTycsICc8JywgMHgwMWQxfSwKCXsnbycsICc8JywgMHgwMWQyfSwKCXsnVScsICc8JywgMHgwMWQzfSwKCXsndScsICc8JywgMHgwMWQ0fSwKCXsnQScsICcxJywgMHgwMWRlfSwKCXsnYScsICcxJywgMHgwMWRmfSwKCXsnQScsICc3JywgMHgwMWUwfSwKCXsnYScsICc3JywgMHgwMWUxfSwKCXsnQScsICczJywgMHgwMWUyfSwKCXsnYScsICczJywgMHgwMWUzfSwKCXsnRycsICcvJywgMHgwMWU0fSwKCXsnZycsICcvJywgMHgwMWU1fSwKCXsnRycsICc8JywgMHgwMWU2fSwKCXsnZycsICc8JywgMHgwMWU3fSwKCXsnSycsICc8JywgMHgwMWU4fSwKCXsnaycsICc8JywgMHgwMWU5fSwKCXsnTycsICc7JywgMHgwMWVhfSwKCXsnbycsICc7JywgMHgwMWVifSwKCXsnTycsICcxJywgMHgwMWVjfSwKCXsnbycsICcxJywgMHgwMWVkfSwKCXsnRScsICdaJywgMHgwMWVlfSwKCXsnZScsICd6JywgMHgwMWVmfSwKCXsnaicsICc8JywgMHgwMWYwfSwKCXsnRycsICdcJycsIDB4MDFmNH0sCgl7J2cnLCAnXCcnLCAweDAxZjV9LAoJeyc7JywgJ1MnLCAweDAyYmZ9LAoJeydcJycsICc8JywgMHgwMmM3fSwKCXsnXCcnLCAnKCcsIDB4MDJkOH0sCgl7J1wnJywgJy4nLCAweDAyZDl9LAoJeydcJycsICcwJywgMHgwMmRhfSwKCXsnXCcnLCAnOycsIDB4MDJkYn0sCgl7J1wnJywgJyInLCAweDAyZGR9LAojZGVmaW5lIERHX1NUQVJUX0dSRUVLIDB4MDM4NgoJeydBJywgJyUnLCAweDAzODZ9LAoJeydFJywgJyUnLCAweDAzODh9LAoJeydZJywgJyUnLCAweDAzODl9LAoJeydJJywgJyUnLCAweDAzOGF9LAoJeydPJywgJyUnLCAweDAzOGN9LAoJeydVJywgJyUnLCAweDAzOGV9LAoJeydXJywgJyUnLCAweDAzOGZ9LAoJeydpJywgJzMnLCAweDAzOTB9LAoJeydBJywgJyonLCAweDAzOTF9LAoJeydCJywgJyonLCAweDAzOTJ9LAoJeydHJywgJyonLCAweDAzOTN9LAoJeydEJywgJyonLCAweDAzOTR9LAoJeydFJywgJyonLCAweDAzOTV9LAoJeydaJywgJyonLCAweDAzOTZ9LAoJeydZJywgJyonLCAweDAzOTd9LAoJeydIJywgJyonLCAweDAzOTh9LAoJeydJJywgJyonLCAweDAzOTl9LAoJeydLJywgJyonLCAweDAzOWF9LAoJeydMJywgJyonLCAweDAzOWJ9LAoJeydNJywgJyonLCAweDAzOWN9LAoJeydOJywgJyonLCAweDAzOWR9LAoJeydDJywgJyonLCAweDAzOWV9LAoJeydPJywgJyonLCAweDAzOWZ9LAoJeydQJywgJyonLCAweDAzYTB9LAoJeydSJywgJyonLCAweDAzYTF9LAoJeydTJywgJyonLCAweDAzYTN9LAoJeydUJywgJyonLCAweDAzYTR9LAoJeydVJywgJyonLCAweDAzYTV9LAoJeydGJywgJyonLCAweDAzYTZ9LAoJeydYJywgJyonLCAweDAzYTd9LAoJeydRJywgJyonLCAweDAzYTh9LAoJeydXJywgJyonLCAweDAzYTl9LAoJeydKJywgJyonLCAweDAzYWF9LAoJeydWJywgJyonLCAweDAzYWJ9LAoJeydhJywgJyUnLCAweDAzYWN9LAoJeydlJywgJyUnLCAweDAzYWR9LAoJeyd5JywgJyUnLCAweDAzYWV9LAoJeydpJywgJyUnLCAweDAzYWZ9LAoJeyd1JywgJzMnLCAweDAzYjB9LAoJeydhJywgJyonLCAweDAzYjF9LAoJeydiJywgJyonLCAweDAzYjJ9LAoJeydnJywgJyonLCAweDAzYjN9LAoJeydkJywgJyonLCAweDAzYjR9LAoJeydlJywgJyonLCAweDAzYjV9LAoJeyd6JywgJyonLCAweDAzYjZ9LAoJeyd5JywgJyonLCAweDAzYjd9LAoJeydoJywgJyonLCAweDAzYjh9LAoJeydpJywgJyonLCAweDAzYjl9LAoJeydrJywgJyonLCAweDAzYmF9LAoJeydsJywgJyonLCAweDAzYmJ9LAoJeydtJywgJyonLCAweDAzYmN9LAoJeyduJywgJyonLCAweDAzYmR9LAoJeydjJywgJyonLCAweDAzYmV9LAoJeydvJywgJyonLCAweDAzYmZ9LAoJeydwJywgJyonLCAweDAzYzB9LAoJeydyJywgJyonLCAweDAzYzF9LAoJeycqJywgJ3MnLCAweDAzYzJ9LAoJeydzJywgJyonLCAweDAzYzN9LAoJeyd0JywgJyonLCAweDAzYzR9LAoJeyd1JywgJyonLCAweDAzYzV9LAoJeydmJywgJyonLCAweDAzYzZ9LAoJeyd4JywgJyonLCAweDAzYzd9LAoJeydxJywgJyonLCAweDAzYzh9LAoJeyd3JywgJyonLCAweDAzYzl9LAoJeydqJywgJyonLCAweDAzY2F9LAoJeyd2JywgJyonLCAweDAzY2J9LAoJeydvJywgJyUnLCAweDAzY2N9LAoJeyd1JywgJyUnLCAweDAzY2R9LAoJeyd3JywgJyUnLCAweDAzY2V9LAoJeydcJycsICdHJywgMHgwM2Q4fSwKCXsnLCcsICdHJywgMHgwM2Q5fSwKCXsnVCcsICczJywgMHgwM2RhfSwKCXsndCcsICczJywgMHgwM2RifSwKCXsnTScsICczJywgMHgwM2RjfSwKCXsnbScsICczJywgMHgwM2RkfSwKCXsnSycsICczJywgMHgwM2RlfSwKCXsnaycsICczJywgMHgwM2RmfSwKCXsnUCcsICczJywgMHgwM2UwfSwKCXsncCcsICczJywgMHgwM2UxfSwKCXsnXCcnLCAnJScsIDB4MDNmNH0sCgl7J2onLCAnMycsIDB4MDNmNX0sCiNkZWZpbmUgREdfU1RBUlRfQ1lSSUxMSUMgMHgwNDAxCgl7J0knLCAnTycsIDB4MDQwMX0sCgl7J0QnLCAnJScsIDB4MDQwMn0sCgl7J0cnLCAnJScsIDB4MDQwM30sCgl7J0knLCAnRScsIDB4MDQwNH0sCgl7J0QnLCAnUycsIDB4MDQwNX0sCgl7J0knLCAnSScsIDB4MDQwNn0sCgl7J1knLCAnSScsIDB4MDQwN30sCgl7J0onLCAnJScsIDB4MDQwOH0sCgl7J0wnLCAnSicsIDB4MDQwOX0sCgl7J04nLCAnSicsIDB4MDQwYX0sCgl7J1QnLCAncycsIDB4MDQwYn0sCgl7J0snLCAnSicsIDB4MDQwY30sCgl7J1YnLCAnJScsIDB4MDQwZX0sCgl7J0QnLCAnWicsIDB4MDQwZn0sCgl7J0EnLCAnPScsIDB4MDQxMH0sCgl7J0InLCAnPScsIDB4MDQxMX0sCgl7J1YnLCAnPScsIDB4MDQxMn0sCgl7J0cnLCAnPScsIDB4MDQxM30sCgl7J0QnLCAnPScsIDB4MDQxNH0sCgl7J0UnLCAnPScsIDB4MDQxNX0sCgl7J1onLCAnJScsIDB4MDQxNn0sCgl7J1onLCAnPScsIDB4MDQxN30sCgl7J0knLCAnPScsIDB4MDQxOH0sCgl7J0onLCAnPScsIDB4MDQxOX0sCgl7J0snLCAnPScsIDB4MDQxYX0sCgl7J0wnLCAnPScsIDB4MDQxYn0sCgl7J00nLCAnPScsIDB4MDQxY30sCgl7J04nLCAnPScsIDB4MDQxZH0sCgl7J08nLCAnPScsIDB4MDQxZX0sCgl7J1AnLCAnPScsIDB4MDQxZn0sCgl7J1InLCAnPScsIDB4MDQyMH0sCgl7J1MnLCAnPScsIDB4MDQyMX0sCgl7J1QnLCAnPScsIDB4MDQyMn0sCgl7J1UnLCAnPScsIDB4MDQyM30sCgl7J0YnLCAnPScsIDB4MDQyNH0sCgl7J0gnLCAnPScsIDB4MDQyNX0sCgl7J0MnLCAnPScsIDB4MDQyNn0sCgl7J0MnLCAnJScsIDB4MDQyN30sCgl7J1MnLCAnJScsIDB4MDQyOH0sCgl7J1MnLCAnYycsIDB4MDQyOX0sCgl7Jz0nLCAnIicsIDB4MDQyYX0sCgl7J1knLCAnPScsIDB4MDQyYn0sCgl7JyUnLCAnIicsIDB4MDQyY30sCgl7J0onLCAnRScsIDB4MDQyZH0sCgl7J0onLCAnVScsIDB4MDQyZX0sCgl7J0onLCAnQScsIDB4MDQyZn0sCgl7J2EnLCAnPScsIDB4MDQzMH0sCgl7J2InLCAnPScsIDB4MDQzMX0sCgl7J3YnLCAnPScsIDB4MDQzMn0sCgl7J2cnLCAnPScsIDB4MDQzM30sCgl7J2QnLCAnPScsIDB4MDQzNH0sCgl7J2UnLCAnPScsIDB4MDQzNX0sCgl7J3onLCAnJScsIDB4MDQzNn0sCgl7J3onLCAnPScsIDB4MDQzN30sCgl7J2knLCAnPScsIDB4MDQzOH0sCgl7J2onLCAnPScsIDB4MDQzOX0sCgl7J2snLCAnPScsIDB4MDQzYX0sCgl7J2wnLCAnPScsIDB4MDQzYn0sCgl7J20nLCAnPScsIDB4MDQzY30sCgl7J24nLCAnPScsIDB4MDQzZH0sCgl7J28nLCAnPScsIDB4MDQzZX0sCgl7J3AnLCAnPScsIDB4MDQzZn0sCgl7J3InLCAnPScsIDB4MDQ0MH0sCgl7J3MnLCAnPScsIDB4MDQ0MX0sCgl7J3QnLCAnPScsIDB4MDQ0Mn0sCgl7J3UnLCAnPScsIDB4MDQ0M30sCgl7J2YnLCAnPScsIDB4MDQ0NH0sCgl7J2gnLCAnPScsIDB4MDQ0NX0sCgl7J2MnLCAnPScsIDB4MDQ0Nn0sCgl7J2MnLCAnJScsIDB4MDQ0N30sCgl7J3MnLCAnJScsIDB4MDQ0OH0sCgl7J3MnLCAnYycsIDB4MDQ0OX0sCgl7Jz0nLCAnXCcnLCAweDA0NGF9LAoJeyd5JywgJz0nLCAweDA0NGJ9LAoJeyclJywgJ1wnJywgMHgwNDRjfSwKCXsnaicsICdlJywgMHgwNDRkfSwKCXsnaicsICd1JywgMHgwNDRlfSwKCXsnaicsICdhJywgMHgwNDRmfSwKCXsnaScsICdvJywgMHgwNDUxfSwKCXsnZCcsICclJywgMHgwNDUyfSwKCXsnZycsICclJywgMHgwNDUzfSwKCXsnaScsICdlJywgMHgwNDU0fSwKCXsnZCcsICdzJywgMHgwNDU1fSwKCXsnaScsICdpJywgMHgwNDU2fSwKCXsneScsICdpJywgMHgwNDU3fSwKCXsnaicsICclJywgMHgwNDU4fSwKCXsnbCcsICdqJywgMHgwNDU5fSwKCXsnbicsICdqJywgMHgwNDVhfSwKCXsndCcsICdzJywgMHgwNDVifSwKCXsnaycsICdqJywgMHgwNDVjfSwKCXsndicsICclJywgMHgwNDVlfSwKCXsnZCcsICd6JywgMHgwNDVmfSwKCXsnWScsICczJywgMHgwNDYyfSwKCXsneScsICczJywgMHgwNDYzfSwKCXsnTycsICczJywgMHgwNDZhfSwKCXsnbycsICczJywgMHgwNDZifSwKCXsnRicsICczJywgMHgwNDcyfSwKCXsnZicsICczJywgMHgwNDczfSwKCXsnVicsICczJywgMHgwNDc0fSwKCXsndicsICczJywgMHgwNDc1fSwKCXsnQycsICczJywgMHgwNDgwfSwKCXsnYycsICczJywgMHgwNDgxfSwKCXsnRycsICczJywgMHgwNDkwfSwKCXsnZycsICczJywgMHgwNDkxfSwKI2RlZmluZSBER19TVEFSVF9IRUJSRVcgMHgwNWQwCgl7J0EnLCAnKycsIDB4MDVkMH0sCgl7J0InLCAnKycsIDB4MDVkMX0sCgl7J0cnLCAnKycsIDB4MDVkMn0sCgl7J0QnLCAnKycsIDB4MDVkM30sCgl7J0gnLCAnKycsIDB4MDVkNH0sCgl7J1cnLCAnKycsIDB4MDVkNX0sCgl7J1onLCAnKycsIDB4MDVkNn0sCgl7J1gnLCAnKycsIDB4MDVkN30sCgl7J1QnLCAnaicsIDB4MDVkOH0sCgl7J0onLCAnKycsIDB4MDVkOX0sCgl7J0snLCAnJScsIDB4MDVkYX0sCgl7J0snLCAnKycsIDB4MDVkYn0sCgl7J0wnLCAnKycsIDB4MDVkY30sCgl7J00nLCAnJScsIDB4MDVkZH0sCgl7J00nLCAnKycsIDB4MDVkZX0sCgl7J04nLCAnJScsIDB4MDVkZn0sCgl7J04nLCAnKycsIDB4MDVlMH0sCgl7J1MnLCAnKycsIDB4MDVlMX0sCgl7J0UnLCAnKycsIDB4MDVlMn0sCgl7J1AnLCAnJScsIDB4MDVlM30sCgl7J1AnLCAnKycsIDB4MDVlNH0sCgl7J1onLCAnaicsIDB4MDVlNX0sCgl7J1onLCAnSicsIDB4MDVlNn0sCgl7J1EnLCAnKycsIDB4MDVlN30sCgl7J1InLCAnKycsIDB4MDVlOH0sCgl7J1MnLCAnaCcsIDB4MDVlOX0sCgl7J1QnLCAnKycsIDB4MDVlYX0sCiNkZWZpbmUgREdfU1RBUlRfQVJBQklDIDB4MDYwYwoJeycsJywgJysnLCAweDA2MGN9LAoJeyc7JywgJysnLCAweDA2MWJ9LAoJeyc/JywgJysnLCAweDA2MWZ9LAoJeydIJywgJ1wnJywgMHgwNjIxfSwKCXsnYScsICdNJywgMHgwNjIyfSwKCXsnYScsICdIJywgMHgwNjIzfSwKCXsndycsICdIJywgMHgwNjI0fSwKCXsnYScsICdoJywgMHgwNjI1fSwKCXsneScsICdIJywgMHgwNjI2fSwKCXsnYScsICcrJywgMHgwNjI3fSwKCXsnYicsICcrJywgMHgwNjI4fSwKCXsndCcsICdtJywgMHgwNjI5fSwKCXsndCcsICcrJywgMHgwNjJhfSwKCXsndCcsICdrJywgMHgwNjJifSwKCXsnZycsICcrJywgMHgwNjJjfSwKCXsnaCcsICdrJywgMHgwNjJkfSwKCXsneCcsICcrJywgMHgwNjJlfSwKCXsnZCcsICcrJywgMHgwNjJmfSwKCXsnZCcsICdrJywgMHgwNjMwfSwKCXsncicsICcrJywgMHgwNjMxfSwKCXsneicsICcrJywgMHgwNjMyfSwKCXsncycsICcrJywgMHgwNjMzfSwKCXsncycsICduJywgMHgwNjM0fSwKCXsnYycsICcrJywgMHgwNjM1fSwKCXsnZCcsICdkJywgMHgwNjM2fSwKCXsndCcsICdqJywgMHgwNjM3fSwKCXsneicsICdIJywgMHgwNjM4fSwKCXsnZScsICcrJywgMHgwNjM5fSwKCXsnaScsICcrJywgMHgwNjNhfSwKCXsnKycsICcrJywgMHgwNjQwfSwKCXsnZicsICcrJywgMHgwNjQxfSwKCXsncScsICcrJywgMHgwNjQyfSwKCXsnaycsICcrJywgMHgwNjQzfSwKCXsnbCcsICcrJywgMHgwNjQ0fSwKCXsnbScsICcrJywgMHgwNjQ1fSwKCXsnbicsICcrJywgMHgwNjQ2fSwKCXsnaCcsICcrJywgMHgwNjQ3fSwKCXsndycsICcrJywgMHgwNjQ4fSwKCXsnaicsICcrJywgMHgwNjQ5fSwKCXsneScsICcrJywgMHgwNjRhfSwKCXsnOicsICcrJywgMHgwNjRifSwKCXsnIicsICcrJywgMHgwNjRjfSwKCXsnPScsICcrJywgMHgwNjRkfSwKCXsnLycsICcrJywgMHgwNjRlfSwKCXsnXCcnLCAnKycsIDB4MDY0Zn0sCgl7JzEnLCAnKycsIDB4MDY1MH0sCgl7JzMnLCAnKycsIDB4MDY1MX0sCgl7JzAnLCAnKycsIDB4MDY1Mn0sCgl7J2EnLCAnUycsIDB4MDY3MH0sCgl7J3AnLCAnKycsIDB4MDY3ZX0sCgl7J3YnLCAnKycsIDB4MDZhNH0sCgl7J2cnLCAnZicsIDB4MDZhZn0sCgl7JzAnLCAnYScsIDB4MDZmMH0sCgl7JzEnLCAnYScsIDB4MDZmMX0sCgl7JzInLCAnYScsIDB4MDZmMn0sCgl7JzMnLCAnYScsIDB4MDZmM30sCgl7JzQnLCAnYScsIDB4MDZmNH0sCgl7JzUnLCAnYScsIDB4MDZmNX0sCgl7JzYnLCAnYScsIDB4MDZmNn0sCgl7JzcnLCAnYScsIDB4MDZmN30sCgl7JzgnLCAnYScsIDB4MDZmOH0sCgl7JzknLCAnYScsIDB4MDZmOX0sCiNkZWZpbmUgREdfU1RBUlRfTEFUSU5fRVhURU5ERUQgMHgxZTAyCgl7J0InLCAnLicsIDB4MWUwMn0sCgl7J2InLCAnLicsIDB4MWUwM30sCgl7J0InLCAnXycsIDB4MWUwNn0sCgl7J2InLCAnXycsIDB4MWUwN30sCgl7J0QnLCAnLicsIDB4MWUwYX0sCgl7J2QnLCAnLicsIDB4MWUwYn0sCgl7J0QnLCAnXycsIDB4MWUwZX0sCgl7J2QnLCAnXycsIDB4MWUwZn0sCgl7J0QnLCAnLCcsIDB4MWUxMH0sCgl7J2QnLCAnLCcsIDB4MWUxMX0sCgl7J0YnLCAnLicsIDB4MWUxZX0sCgl7J2YnLCAnLicsIDB4MWUxZn0sCgl7J0cnLCAnLScsIDB4MWUyMH0sCgl7J2cnLCAnLScsIDB4MWUyMX0sCgl7J0gnLCAnLicsIDB4MWUyMn0sCgl7J2gnLCAnLicsIDB4MWUyM30sCgl7J0gnLCAnOicsIDB4MWUyNn0sCgl7J2gnLCAnOicsIDB4MWUyN30sCgl7J0gnLCAnLCcsIDB4MWUyOH0sCgl7J2gnLCAnLCcsIDB4MWUyOX0sCgl7J0snLCAnXCcnLCAweDFlMzB9LAoJeydrJywgJ1wnJywgMHgxZTMxfSwKCXsnSycsICdfJywgMHgxZTM0fSwKCXsnaycsICdfJywgMHgxZTM1fSwKCXsnTCcsICdfJywgMHgxZTNhfSwKCXsnbCcsICdfJywgMHgxZTNifSwKCXsnTScsICdcJycsIDB4MWUzZX0sCgl7J20nLCAnXCcnLCAweDFlM2Z9LAoJeydNJywgJy4nLCAweDFlNDB9LAoJeydtJywgJy4nLCAweDFlNDF9LAoJeydOJywgJy4nLCAweDFlNDR9LAoJeyduJywgJy4nLCAweDFlNDV9LAoJeydOJywgJ18nLCAweDFlNDh9LAoJeyduJywgJ18nLCAweDFlNDl9LAoJeydQJywgJ1wnJywgMHgxZTU0fSwKCXsncCcsICdcJycsIDB4MWU1NX0sCgl7J1AnLCAnLicsIDB4MWU1Nn0sCgl7J3AnLCAnLicsIDB4MWU1N30sCgl7J1InLCAnLicsIDB4MWU1OH0sCgl7J3InLCAnLicsIDB4MWU1OX0sCgl7J1InLCAnXycsIDB4MWU1ZX0sCgl7J3InLCAnXycsIDB4MWU1Zn0sCgl7J1MnLCAnLicsIDB4MWU2MH0sCgl7J3MnLCAnLicsIDB4MWU2MX0sCgl7J1QnLCAnLicsIDB4MWU2YX0sCgl7J3QnLCAnLicsIDB4MWU2Yn0sCgl7J1QnLCAnXycsIDB4MWU2ZX0sCgl7J3QnLCAnXycsIDB4MWU2Zn0sCgl7J1YnLCAnPycsIDB4MWU3Y30sCgl7J3YnLCAnPycsIDB4MWU3ZH0sCgl7J1cnLCAnIScsIDB4MWU4MH0sCgl7J1cnLCAnYCcsIDB4MWU4MH0sIC8vIGV4dHJhIGFsdGVybmF0aXZlLCBlYXNpZXIgdG8gcmVtZW1iZXIKCXsndycsICchJywgMHgxZTgxfSwKCXsndycsICdgJywgMHgxZTgxfSwgLy8gZXh0cmEgYWx0ZXJuYXRpdmUsIGVhc2llciB0byByZW1lbWJlcgoJeydXJywgJ1wnJywgMHgxZTgyfSwKCXsndycsICdcJycsIDB4MWU4M30sCgl7J1cnLCAnOicsIDB4MWU4NH0sCgl7J3cnLCAnOicsIDB4MWU4NX0sCgl7J1cnLCAnLicsIDB4MWU4Nn0sCgl7J3cnLCAnLicsIDB4MWU4N30sCgl7J1gnLCAnLicsIDB4MWU4YX0sCgl7J3gnLCAnLicsIDB4MWU4Yn0sCgl7J1gnLCAnOicsIDB4MWU4Y30sCgl7J3gnLCAnOicsIDB4MWU4ZH0sCgl7J1knLCAnLicsIDB4MWU4ZX0sCgl7J3knLCAnLicsIDB4MWU4Zn0sCgl7J1onLCAnPicsIDB4MWU5MH0sCgl7J3onLCAnPicsIDB4MWU5MX0sCgl7J1onLCAnXycsIDB4MWU5NH0sCgl7J3onLCAnXycsIDB4MWU5NX0sCgl7J2gnLCAnXycsIDB4MWU5Nn0sCgl7J3QnLCAnOicsIDB4MWU5N30sCgl7J3cnLCAnMCcsIDB4MWU5OH0sCgl7J3knLCAnMCcsIDB4MWU5OX0sCgl7J0EnLCAnMicsIDB4MWVhMn0sCgl7J2EnLCAnMicsIDB4MWVhM30sCgl7J0UnLCAnMicsIDB4MWViYX0sCgl7J2UnLCAnMicsIDB4MWViYn0sCgl7J0UnLCAnPycsIDB4MWViY30sCgl7J2UnLCAnPycsIDB4MWViZH0sCgl7J0knLCAnMicsIDB4MWVjOH0sCgl7J2knLCAnMicsIDB4MWVjOX0sCgl7J08nLCAnMicsIDB4MWVjZX0sCgl7J28nLCAnMicsIDB4MWVjZn0sCgl7J1UnLCAnMicsIDB4MWVlNn0sCgl7J3UnLCAnMicsIDB4MWVlN30sCgl7J1knLCAnIScsIDB4MWVmMn0sCgl7J1knLCAnYCcsIDB4MWVmMn0sIC8vIGV4dHJhIGFsdGVybmF0aXZlLCBlYXNpZXIgdG8gcmVtZW1iZXIKCXsneScsICchJywgMHgxZWYzfSwKCXsneScsICdgJywgMHgxZWYzfSwgLy8gZXh0cmEgYWx0ZXJuYXRpdmUsIGVhc2llciB0byByZW1lbWJlcgoJeydZJywgJzInLCAweDFlZjZ9LAoJeyd5JywgJzInLCAweDFlZjd9LAoJeydZJywgJz8nLCAweDFlZjh9LAoJeyd5JywgJz8nLCAweDFlZjl9LAojZGVmaW5lIERHX1NUQVJUX0dSRUVLX0VYVEVOREVEIDB4MWYwMAoJeyc7JywgJ1wnJywgMHgxZjAwfSwKCXsnLCcsICdcJycsIDB4MWYwMX0sCgl7JzsnLCAnIScsIDB4MWYwMn0sCgl7JywnLCAnIScsIDB4MWYwM30sCgl7Jz8nLCAnOycsIDB4MWYwNH0sCgl7Jz8nLCAnLCcsIDB4MWYwNX0sCgl7JyEnLCAnOicsIDB4MWYwNn0sCgl7Jz8nLCAnOicsIDB4MWYwN30sCiNkZWZpbmUgREdfU1RBUlRfUFVOQ1RVQVRJT04gMHgyMDAyCgl7JzEnLCAnTicsIDB4MjAwMn0sCgl7JzEnLCAnTScsIDB4MjAwM30sCgl7JzMnLCAnTScsIDB4MjAwNH0sCgl7JzQnLCAnTScsIDB4MjAwNX0sCgl7JzYnLCAnTScsIDB4MjAwNn0sCgl7JzEnLCAnVCcsIDB4MjAwOX0sCgl7JzEnLCAnSCcsIDB4MjAwYX0sCgl7Jy0nLCAnMScsIDB4MjAxMH0sCgl7Jy0nLCAnTicsIDB4MjAxM30sCgl7Jy0nLCAnTScsIDB4MjAxNH0sCgl7Jy0nLCAnMycsIDB4MjAxNX0sCgl7JyEnLCAnMicsIDB4MjAxNn0sCgl7Jz0nLCAnMicsIDB4MjAxN30sCgl7J1wnJywgJzYnLCAweDIwMTh9LAoJeydcJycsICc5JywgMHgyMDE5fSwKCXsnLicsICc5JywgMHgyMDFhfSwKCXsnOScsICdcJycsIDB4MjAxYn0sCgl7JyInLCAnNicsIDB4MjAxY30sCgl7JyInLCAnOScsIDB4MjAxZH0sCgl7JzonLCAnOScsIDB4MjAxZX0sCgl7JzknLCAnIicsIDB4MjAxZn0sCgl7Jy8nLCAnLScsIDB4MjAyMH0sCgl7Jy8nLCAnPScsIDB4MjAyMX0sCgl7Jy4nLCAnLicsIDB4MjAyNX0sCgl7JywnLCAnLicsIDB4MjAyNn0sCgl7JyUnLCAnMCcsIDB4MjAzMH0sCgl7JzEnLCAnXCcnLCAweDIwMzJ9LAoJeycyJywgJ1wnJywgMHgyMDMzfSwKCXsnMycsICdcJycsIDB4MjAzNH0sCgl7JzEnLCAnIicsIDB4MjAzNX0sCgl7JzInLCAnIicsIDB4MjAzNn0sCgl7JzMnLCAnIicsIDB4MjAzN30sCgl7J0MnLCAnYScsIDB4MjAzOH0sCgl7JzwnLCAnMScsIDB4MjAzOX0sCgl7Jz4nLCAnMScsIDB4MjAzYX0sCgl7JzonLCAnWCcsIDB4MjAzYn0sCgl7J1wnJywgJy0nLCAweDIwM2V9LAoJeycvJywgJ2YnLCAweDIwNDR9LAojZGVmaW5lIERHX1NUQVJUX1NVQl9TVVBFUiAweDIwNzAKCXsnMCcsICdTJywgMHgyMDcwfSwKCXsnNCcsICdTJywgMHgyMDc0fSwKCXsnNScsICdTJywgMHgyMDc1fSwKCXsnNicsICdTJywgMHgyMDc2fSwKCXsnNycsICdTJywgMHgyMDc3fSwKCXsnOCcsICdTJywgMHgyMDc4fSwKCXsnOScsICdTJywgMHgyMDc5fSwKCXsnKycsICdTJywgMHgyMDdhfSwKCXsnLScsICdTJywgMHgyMDdifSwKCXsnPScsICdTJywgMHgyMDdjfSwKCXsnKCcsICdTJywgMHgyMDdkfSwKCXsnKScsICdTJywgMHgyMDdlfSwKCXsnbicsICdTJywgMHgyMDdmfSwKCXsnMCcsICdzJywgMHgyMDgwfSwKCXsnMScsICdzJywgMHgyMDgxfSwKCXsnMicsICdzJywgMHgyMDgyfSwKCXsnMycsICdzJywgMHgyMDgzfSwKCXsnNCcsICdzJywgMHgyMDg0fSwKCXsnNScsICdzJywgMHgyMDg1fSwKCXsnNicsICdzJywgMHgyMDg2fSwKCXsnNycsICdzJywgMHgyMDg3fSwKCXsnOCcsICdzJywgMHgyMDg4fSwKCXsnOScsICdzJywgMHgyMDg5fSwKCXsnKycsICdzJywgMHgyMDhhfSwKCXsnLScsICdzJywgMHgyMDhifSwKCXsnPScsICdzJywgMHgyMDhjfSwKCXsnKCcsICdzJywgMHgyMDhkfSwKCXsnKScsICdzJywgMHgyMDhlfSwKI2RlZmluZSBER19TVEFSVF9DVVJSRU5DWSAweDIwYTQKCXsnTCcsICdpJywgMHgyMGE0fSwKCXsnUCcsICd0JywgMHgyMGE3fSwKCXsnVycsICc9JywgMHgyMGE5fSwKCXsnPScsICdlJywgMHgyMGFjfSwgLyogZXVybyAqLwoJeydFJywgJ3UnLCAweDIwYWN9LCAvKiBldXJvICovCgl7Jz0nLCAnUicsIDB4MjBiZH0sIC8qIHJvdWJsZSAqLwoJeyc9JywgJ1AnLCAweDIwYmR9LCAvKiByb3VibGUgKi8KI2RlZmluZSBER19TVEFSVF9PVEhFUjEgMHgyMTAzCgl7J28nLCAnQycsIDB4MjEwM30sCgl7J2MnLCAnbycsIDB4MjEwNX0sCgl7J28nLCAnRicsIDB4MjEwOX0sCgl7J04nLCAnMCcsIDB4MjExNn0sCgl7J1AnLCAnTycsIDB4MjExN30sCgl7J1InLCAneCcsIDB4MjExZX0sCgl7J1MnLCAnTScsIDB4MjEyMH0sCgl7J1QnLCAnTScsIDB4MjEyMn0sCgl7J08nLCAnbScsIDB4MjEyNn0sCgl7J0EnLCAnTycsIDB4MjEyYn0sCgl7JzEnLCAnMycsIDB4MjE1M30sCgl7JzInLCAnMycsIDB4MjE1NH0sCgl7JzEnLCAnNScsIDB4MjE1NX0sCgl7JzInLCAnNScsIDB4MjE1Nn0sCgl7JzMnLCAnNScsIDB4MjE1N30sCgl7JzQnLCAnNScsIDB4MjE1OH0sCgl7JzEnLCAnNicsIDB4MjE1OX0sCgl7JzUnLCAnNicsIDB4MjE1YX0sCgl7JzEnLCAnOCcsIDB4MjE1Yn0sCgl7JzMnLCAnOCcsIDB4MjE1Y30sCgl7JzUnLCAnOCcsIDB4MjE1ZH0sCgl7JzcnLCAnOCcsIDB4MjE1ZX0sCiNkZWZpbmUgREdfU1RBUlRfUk9NQU4gMHgyMTYwCgl7JzEnLCAnUicsIDB4MjE2MH0sCgl7JzInLCAnUicsIDB4MjE2MX0sCgl7JzMnLCAnUicsIDB4MjE2Mn0sCgl7JzQnLCAnUicsIDB4MjE2M30sCgl7JzUnLCAnUicsIDB4MjE2NH0sCgl7JzYnLCAnUicsIDB4MjE2NX0sCgl7JzcnLCAnUicsIDB4MjE2Nn0sCgl7JzgnLCAnUicsIDB4MjE2N30sCgl7JzknLCAnUicsIDB4MjE2OH0sCgl7J2EnLCAnUicsIDB4MjE2OX0sCgl7J2InLCAnUicsIDB4MjE2YX0sCgl7J2MnLCAnUicsIDB4MjE2Yn0sCgl7JzEnLCAncicsIDB4MjE3MH0sCgl7JzInLCAncicsIDB4MjE3MX0sCgl7JzMnLCAncicsIDB4MjE3Mn0sCgl7JzQnLCAncicsIDB4MjE3M30sCgl7JzUnLCAncicsIDB4MjE3NH0sCgl7JzYnLCAncicsIDB4MjE3NX0sCgl7JzcnLCAncicsIDB4MjE3Nn0sCgl7JzgnLCAncicsIDB4MjE3N30sCgl7JzknLCAncicsIDB4MjE3OH0sCgl7J2EnLCAncicsIDB4MjE3OX0sCgl7J2InLCAncicsIDB4MjE3YX0sCgl7J2MnLCAncicsIDB4MjE3Yn0sCiNkZWZpbmUgREdfU1RBUlRfQVJST1dTIDB4MjE5MAoJeyc8JywgJy0nLCAweDIxOTB9LAoJeyctJywgJyEnLCAweDIxOTF9LAoJeyctJywgJz4nLCAweDIxOTJ9LAoJeyctJywgJ3YnLCAweDIxOTN9LAoJeyc8JywgJz4nLCAweDIxOTR9LAoJeydVJywgJ0QnLCAweDIxOTV9LAoJeyc8JywgJz0nLCAweDIxZDB9LAoJeyc9JywgJz4nLCAweDIxZDJ9LAoJeyc9JywgJz0nLCAweDIxZDR9LAojZGVmaW5lIERHX1NUQVJUX01BVEggMHgyMjAwCgl7J0YnLCAnQScsIDB4MjIwMH0sCgl7J2QnLCAnUCcsIDB4MjIwMn0sCgl7J1QnLCAnRScsIDB4MjIwM30sCgl7Jy8nLCAnMCcsIDB4MjIwNX0sCgl7J0QnLCAnRScsIDB4MjIwNn0sCgl7J04nLCAnQicsIDB4MjIwN30sCgl7JygnLCAnLScsIDB4MjIwOH0sCgl7Jy0nLCAnKScsIDB4MjIwYn0sCgl7JyonLCAnUCcsIDB4MjIwZn0sCgl7JysnLCAnWicsIDB4MjIxMX0sCgl7Jy0nLCAnMicsIDB4MjIxMn0sCgl7Jy0nLCAnKycsIDB4MjIxM30sCgl7JyonLCAnLScsIDB4MjIxN30sCgl7J08nLCAnYicsIDB4MjIxOH0sCgl7J1MnLCAnYicsIDB4MjIxOX0sCgl7J1InLCAnVCcsIDB4MjIxYX0sCgl7JzAnLCAnKCcsIDB4MjIxZH0sCgl7JzAnLCAnMCcsIDB4MjIxZX0sCgl7Jy0nLCAnTCcsIDB4MjIxZn0sCgl7Jy0nLCAnVicsIDB4MjIyMH0sCgl7J1AnLCAnUCcsIDB4MjIyNX0sCgl7J0EnLCAnTicsIDB4MjIyN30sCgl7J08nLCAnUicsIDB4MjIyOH0sCgl7JygnLCAnVScsIDB4MjIyOX0sCgl7JyknLCAnVScsIDB4MjIyYX0sCgl7J0knLCAnbicsIDB4MjIyYn0sCgl7J0QnLCAnSScsIDB4MjIyY30sCgl7J0knLCAnbycsIDB4MjIyZX0sCgl7Jy4nLCAnOicsIDB4MjIzNH0sCgl7JzonLCAnLicsIDB4MjIzNX0sCgl7JzonLCAnUicsIDB4MjIzNn0sCgl7JzonLCAnOicsIDB4MjIzN30sCgl7Jz8nLCAnMScsIDB4MjIzY30sCgl7J0MnLCAnRycsIDB4MjIzZX0sCgl7Jz8nLCAnLScsIDB4MjI0M30sCgl7Jz8nLCAnPScsIDB4MjI0NX0sCgl7Jz8nLCAnMicsIDB4MjI0OH0sCgl7Jz0nLCAnPycsIDB4MjI0Y30sCgl7J0gnLCAnSScsIDB4MjI1M30sCgl7JyEnLCAnPScsIDB4MjI2MH0sCgl7Jz0nLCAnMycsIDB4MjI2MX0sCgl7Jz0nLCAnPCcsIDB4MjI2NH0sCgl7Jz4nLCAnPScsIDB4MjI2NX0sCgl7JzwnLCAnKicsIDB4MjI2YX0sCgl7JyonLCAnPicsIDB4MjI2Yn0sCgl7JyEnLCAnPCcsIDB4MjI2ZX0sCgl7JyEnLCAnPicsIDB4MjI2Zn0sCgl7JygnLCAnQycsIDB4MjI4Mn0sCgl7JyknLCAnQycsIDB4MjI4M30sCgl7JygnLCAnXycsIDB4MjI4Nn0sCgl7JyknLCAnXycsIDB4MjI4N30sCgl7JzAnLCAnLicsIDB4MjI5OX0sCgl7JzAnLCAnMicsIDB4MjI5YX0sCgl7Jy0nLCAnVCcsIDB4MjJhNX0sCgl7Jy4nLCAnUCcsIDB4MjJjNX0sCgl7JzonLCAnMycsIDB4MjJlZX0sCgl7Jy4nLCAnMycsIDB4MjJlZn0sCiNkZWZpbmUgREdfU1RBUlRfVEVDSE5JQ0FMIDB4MjMwMgoJeydFJywgJ2gnLCAweDIzMDJ9LAoJeyc8JywgJzcnLCAweDIzMDh9LAoJeyc+JywgJzcnLCAweDIzMDl9LAoJeyc3JywgJzwnLCAweDIzMGF9LAoJeyc3JywgJz4nLCAweDIzMGJ9LAoJeydOJywgJ0knLCAweDIzMTB9LAoJeycoJywgJ0EnLCAweDIzMTJ9LAoJeydUJywgJ1InLCAweDIzMTV9LAoJeydJJywgJ3UnLCAweDIzMjB9LAoJeydJJywgJ2wnLCAweDIzMjF9LAoJeyc8JywgJy8nLCAweDIzMjl9LAoJeycvJywgJz4nLCAweDIzMmF9LAojZGVmaW5lIERHX1NUQVJUX09USEVSMiAweDI0MjMKCXsnVicsICdzJywgMHgyNDIzfSwKCXsnMScsICdoJywgMHgyNDQwfSwKCXsnMycsICdoJywgMHgyNDQxfSwKCXsnMicsICdoJywgMHgyNDQyfSwKCXsnNCcsICdoJywgMHgyNDQzfSwKCXsnMScsICdqJywgMHgyNDQ2fSwKCXsnMicsICdqJywgMHgyNDQ3fSwKCXsnMycsICdqJywgMHgyNDQ4fSwKCXsnNCcsICdqJywgMHgyNDQ5fSwKCXsnMScsICcuJywgMHgyNDg4fSwKCXsnMicsICcuJywgMHgyNDg5fSwKCXsnMycsICcuJywgMHgyNDhhfSwKCXsnNCcsICcuJywgMHgyNDhifSwKCXsnNScsICcuJywgMHgyNDhjfSwKCXsnNicsICcuJywgMHgyNDhkfSwKCXsnNycsICcuJywgMHgyNDhlfSwKCXsnOCcsICcuJywgMHgyNDhmfSwKCXsnOScsICcuJywgMHgyNDkwfSwKI2RlZmluZSBER19TVEFSVF9EUkFXSU5HIDB4MjUwMAoJeydoJywgJ2gnLCAweDI1MDB9LAoJeydIJywgJ0gnLCAweDI1MDF9LAoJeyd2JywgJ3YnLCAweDI1MDJ9LAoJeydWJywgJ1YnLCAweDI1MDN9LAoJeyczJywgJy0nLCAweDI1MDR9LAoJeyczJywgJ18nLCAweDI1MDV9LAoJeyczJywgJyEnLCAweDI1MDZ9LAoJeyczJywgJy8nLCAweDI1MDd9LAoJeyc0JywgJy0nLCAweDI1MDh9LAoJeyc0JywgJ18nLCAweDI1MDl9LAoJeyc0JywgJyEnLCAweDI1MGF9LAoJeyc0JywgJy8nLCAweDI1MGJ9LAoJeydkJywgJ3InLCAweDI1MGN9LAoJeydkJywgJ1InLCAweDI1MGR9LAoJeydEJywgJ3InLCAweDI1MGV9LAoJeydEJywgJ1InLCAweDI1MGZ9LAoJeydkJywgJ2wnLCAweDI1MTB9LAoJeydkJywgJ0wnLCAweDI1MTF9LAoJeydEJywgJ2wnLCAweDI1MTJ9LAoJeydMJywgJ0QnLCAweDI1MTN9LAoJeyd1JywgJ3InLCAweDI1MTR9LAoJeyd1JywgJ1InLCAweDI1MTV9LAoJeydVJywgJ3InLCAweDI1MTZ9LAoJeydVJywgJ1InLCAweDI1MTd9LAoJeyd1JywgJ2wnLCAweDI1MTh9LAoJeyd1JywgJ0wnLCAweDI1MTl9LAoJeydVJywgJ2wnLCAweDI1MWF9LAoJeydVJywgJ0wnLCAweDI1MWJ9LAoJeyd2JywgJ3InLCAweDI1MWN9LAoJeyd2JywgJ1InLCAweDI1MWR9LAoJeydWJywgJ3InLCAweDI1MjB9LAoJeydWJywgJ1InLCAweDI1MjN9LAoJeyd2JywgJ2wnLCAweDI1MjR9LAoJeyd2JywgJ0wnLCAweDI1MjV9LAoJeydWJywgJ2wnLCAweDI1Mjh9LAoJeydWJywgJ0wnLCAweDI1MmJ9LAoJeydkJywgJ2gnLCAweDI1MmN9LAoJeydkJywgJ0gnLCAweDI1MmZ9LAoJeydEJywgJ2gnLCAweDI1MzB9LAoJeydEJywgJ0gnLCAweDI1MzN9LAoJeyd1JywgJ2gnLCAweDI1MzR9LAoJeyd1JywgJ0gnLCAweDI1Mzd9LAoJeydVJywgJ2gnLCAweDI1Mzh9LAoJeydVJywgJ0gnLCAweDI1M2J9LAoJeyd2JywgJ2gnLCAweDI1M2N9LAoJeyd2JywgJ0gnLCAweDI1M2Z9LAoJeydWJywgJ2gnLCAweDI1NDJ9LAoJeydWJywgJ0gnLCAweDI1NGJ9LAoJeydGJywgJ0QnLCAweDI1NzF9LAoJeydCJywgJ0QnLCAweDI1NzJ9LAojZGVmaW5lIERHX1NUQVJUX0JMT0NLIDB4MjU4MAoJeydUJywgJ0InLCAweDI1ODB9LAoJeydMJywgJ0InLCAweDI1ODR9LAoJeydGJywgJ0InLCAweDI1ODh9LAoJeydsJywgJ0InLCAweDI1OGN9LAoJeydSJywgJ0InLCAweDI1OTB9LAoJeycuJywgJ1MnLCAweDI1OTF9LAoJeyc6JywgJ1MnLCAweDI1OTJ9LAoJeyc/JywgJ1MnLCAweDI1OTN9LAojZGVmaW5lIERHX1NUQVJUX1NIQVBFUyAweDI1YTAKCXsnZicsICdTJywgMHgyNWEwfSwKCXsnTycsICdTJywgMHgyNWExfSwKCXsnUicsICdPJywgMHgyNWEyfSwKCXsnUicsICdyJywgMHgyNWEzfSwKCXsnUicsICdGJywgMHgyNWE0fSwKCXsnUicsICdZJywgMHgyNWE1fSwKCXsnUicsICdIJywgMHgyNWE2fSwKCXsnUicsICdaJywgMHgyNWE3fSwKCXsnUicsICdLJywgMHgyNWE4fSwKCXsnUicsICdYJywgMHgyNWE5fSwKCXsncycsICdCJywgMHgyNWFhfSwKCXsnUycsICdSJywgMHgyNWFjfSwKCXsnTycsICdyJywgMHgyNWFkfSwKCXsnVScsICdUJywgMHgyNWIyfSwKCXsndScsICdUJywgMHgyNWIzfSwKCXsnUCcsICdSJywgMHgyNWI2fSwKCXsnVCcsICdyJywgMHgyNWI3fSwKCXsnRCcsICd0JywgMHgyNWJjfSwKCXsnZCcsICdUJywgMHgyNWJkfSwKCXsnUCcsICdMJywgMHgyNWMwfSwKCXsnVCcsICdsJywgMHgyNWMxfSwKCXsnRCcsICdiJywgMHgyNWM2fSwKCXsnRCcsICd3JywgMHgyNWM3fSwKCXsnTCcsICdaJywgMHgyNWNhfSwKCXsnMCcsICdtJywgMHgyNWNifSwKCXsnMCcsICdvJywgMHgyNWNlfSwKCXsnMCcsICdNJywgMHgyNWNmfSwKCXsnMCcsICdMJywgMHgyNWQwfSwKCXsnMCcsICdSJywgMHgyNWQxfSwKCXsnUycsICduJywgMHgyNWQ4fSwKCXsnSScsICdjJywgMHgyNWQ5fSwKCXsnRicsICdkJywgMHgyNWUyfSwKCXsnQicsICdkJywgMHgyNWUzfSwKI2RlZmluZSBER19TVEFSVF9TWU1CT0xTIDB4MjYwNQoJeycqJywgJzInLCAweDI2MDV9LAoJeycqJywgJzEnLCAweDI2MDZ9LAoJeyc8JywgJ0gnLCAweDI2MWN9LAoJeyc+JywgJ0gnLCAweDI2MWV9LAoJeycwJywgJ3UnLCAweDI2M2F9LAoJeycwJywgJ1UnLCAweDI2M2J9LAoJeydTJywgJ1UnLCAweDI2M2N9LAoJeydGJywgJ20nLCAweDI2NDB9LAoJeydNJywgJ2wnLCAweDI2NDJ9LAoJeydjJywgJ1MnLCAweDI2NjB9LAoJeydjJywgJ0gnLCAweDI2NjF9LAoJeydjJywgJ0QnLCAweDI2NjJ9LAoJeydjJywgJ0MnLCAweDI2NjN9LAoJeydNJywgJ2QnLCAweDI2Njl9LAoJeydNJywgJzgnLCAweDI2NmF9LAoJeydNJywgJzInLCAweDI2NmJ9LAoJeydNJywgJ2InLCAweDI2NmR9LAoJeydNJywgJ3gnLCAweDI2NmV9LAoJeydNJywgJ1gnLCAweDI2NmZ9LAojZGVmaW5lIERHX1NUQVJUX0RJTkdCQVRTIDB4MjcxMwoJeydPJywgJ0snLCAweDI3MTN9LAoJeydYJywgJ1gnLCAweDI3MTd9LAoJeyctJywgJ1gnLCAweDI3MjB9LAojZGVmaW5lIERHX1NUQVJUX0NKS19TWU1CT0xTIDB4MzAwMAoJeydJJywgJ1MnLCAweDMwMDB9LAoJeycsJywgJ18nLCAweDMwMDF9LAoJeycuJywgJ18nLCAweDMwMDJ9LAoJeycrJywgJyInLCAweDMwMDN9LAoJeycrJywgJ18nLCAweDMwMDR9LAoJeycqJywgJ18nLCAweDMwMDV9LAoJeyc7JywgJ18nLCAweDMwMDZ9LAoJeycwJywgJ18nLCAweDMwMDd9LAoJeyc8JywgJysnLCAweDMwMGF9LAoJeyc+JywgJysnLCAweDMwMGJ9LAoJeyc8JywgJ1wnJywgMHgzMDBjfSwKCXsnPicsICdcJycsIDB4MzAwZH0sCgl7JzwnLCAnIicsIDB4MzAwZX0sCgl7Jz4nLCAnIicsIDB4MzAwZn0sCgl7JygnLCAnIicsIDB4MzAxMH0sCgl7JyknLCAnIicsIDB4MzAxMX0sCgl7Jz0nLCAnVCcsIDB4MzAxMn0sCgl7Jz0nLCAnXycsIDB4MzAxM30sCgl7JygnLCAnXCcnLCAweDMwMTR9LAoJeycpJywgJ1wnJywgMHgzMDE1fSwKCXsnKCcsICdJJywgMHgzMDE2fSwKCXsnKScsICdJJywgMHgzMDE3fSwKCXsnLScsICc/JywgMHgzMDFjfSwKI2RlZmluZSBER19TVEFSVF9ISVJBR0FOQSAweDMwNDEKCXsnQScsICc1JywgMHgzMDQxfSwKCXsnYScsICc1JywgMHgzMDQyfSwKCXsnSScsICc1JywgMHgzMDQzfSwKCXsnaScsICc1JywgMHgzMDQ0fSwKCXsnVScsICc1JywgMHgzMDQ1fSwKCXsndScsICc1JywgMHgzMDQ2fSwKCXsnRScsICc1JywgMHgzMDQ3fSwKCXsnZScsICc1JywgMHgzMDQ4fSwKCXsnTycsICc1JywgMHgzMDQ5fSwKCXsnbycsICc1JywgMHgzMDRhfSwKCXsnaycsICdhJywgMHgzMDRifSwKCXsnZycsICdhJywgMHgzMDRjfSwKCXsnaycsICdpJywgMHgzMDRkfSwKCXsnZycsICdpJywgMHgzMDRlfSwKCXsnaycsICd1JywgMHgzMDRmfSwKCXsnZycsICd1JywgMHgzMDUwfSwKCXsnaycsICdlJywgMHgzMDUxfSwKCXsnZycsICdlJywgMHgzMDUyfSwKCXsnaycsICdvJywgMHgzMDUzfSwKCXsnZycsICdvJywgMHgzMDU0fSwKCXsncycsICdhJywgMHgzMDU1fSwKCXsneicsICdhJywgMHgzMDU2fSwKCXsncycsICdpJywgMHgzMDU3fSwKCXsneicsICdpJywgMHgzMDU4fSwKCXsncycsICd1JywgMHgzMDU5fSwKCXsneicsICd1JywgMHgzMDVhfSwKCXsncycsICdlJywgMHgzMDVifSwKCXsneicsICdlJywgMHgzMDVjfSwKCXsncycsICdvJywgMHgzMDVkfSwKCXsneicsICdvJywgMHgzMDVlfSwKCXsndCcsICdhJywgMHgzMDVmfSwKCXsnZCcsICdhJywgMHgzMDYwfSwKCXsndCcsICdpJywgMHgzMDYxfSwKCXsnZCcsICdpJywgMHgzMDYyfSwKCXsndCcsICdVJywgMHgzMDYzfSwKCXsndCcsICd1JywgMHgzMDY0fSwKCXsnZCcsICd1JywgMHgzMDY1fSwKCXsndCcsICdlJywgMHgzMDY2fSwKCXsnZCcsICdlJywgMHgzMDY3fSwKCXsndCcsICdvJywgMHgzMDY4fSwKCXsnZCcsICdvJywgMHgzMDY5fSwKCXsnbicsICdhJywgMHgzMDZhfSwKCXsnbicsICdpJywgMHgzMDZifSwKCXsnbicsICd1JywgMHgzMDZjfSwKCXsnbicsICdlJywgMHgzMDZkfSwKCXsnbicsICdvJywgMHgzMDZlfSwKCXsnaCcsICdhJywgMHgzMDZmfSwKCXsnYicsICdhJywgMHgzMDcwfSwKCXsncCcsICdhJywgMHgzMDcxfSwKCXsnaCcsICdpJywgMHgzMDcyfSwKCXsnYicsICdpJywgMHgzMDczfSwKCXsncCcsICdpJywgMHgzMDc0fSwKCXsnaCcsICd1JywgMHgzMDc1fSwKCXsnYicsICd1JywgMHgzMDc2fSwKCXsncCcsICd1JywgMHgzMDc3fSwKCXsnaCcsICdlJywgMHgzMDc4fSwKCXsnYicsICdlJywgMHgzMDc5fSwKCXsncCcsICdlJywgMHgzMDdhfSwKCXsnaCcsICdvJywgMHgzMDdifSwKCXsnYicsICdvJywgMHgzMDdjfSwKCXsncCcsICdvJywgMHgzMDdkfSwKCXsnbScsICdhJywgMHgzMDdlfSwKCXsnbScsICdpJywgMHgzMDdmfSwKCXsnbScsICd1JywgMHgzMDgwfSwKCXsnbScsICdlJywgMHgzMDgxfSwKCXsnbScsICdvJywgMHgzMDgyfSwKCXsneScsICdBJywgMHgzMDgzfSwKCXsneScsICdhJywgMHgzMDg0fSwKCXsneScsICdVJywgMHgzMDg1fSwKCXsneScsICd1JywgMHgzMDg2fSwKCXsneScsICdPJywgMHgzMDg3fSwKCXsneScsICdvJywgMHgzMDg4fSwKCXsncicsICdhJywgMHgzMDg5fSwKCXsncicsICdpJywgMHgzMDhhfSwKCXsncicsICd1JywgMHgzMDhifSwKCXsncicsICdlJywgMHgzMDhjfSwKCXsncicsICdvJywgMHgzMDhkfSwKCXsndycsICdBJywgMHgzMDhlfSwKCXsndycsICdhJywgMHgzMDhmfSwKCXsndycsICdpJywgMHgzMDkwfSwKCXsndycsICdlJywgMHgzMDkxfSwKCXsndycsICdvJywgMHgzMDkyfSwKCXsnbicsICc1JywgMHgzMDkzfSwKCXsndicsICd1JywgMHgzMDk0fSwKCXsnIicsICc1JywgMHgzMDlifSwKCXsnMCcsICc1JywgMHgzMDljfSwKCXsnKicsICc1JywgMHgzMDlkfSwKCXsnKycsICc1JywgMHgzMDllfSwKI2RlZmluZSBER19TVEFSVF9LQVRBS0FOQSAweDMwYTEKCXsnYScsICc2JywgMHgzMGExfSwKCXsnQScsICc2JywgMHgzMGEyfSwKCXsnaScsICc2JywgMHgzMGEzfSwKCXsnSScsICc2JywgMHgzMGE0fSwKCXsndScsICc2JywgMHgzMGE1fSwKCXsnVScsICc2JywgMHgzMGE2fSwKCXsnZScsICc2JywgMHgzMGE3fSwKCXsnRScsICc2JywgMHgzMGE4fSwKCXsnbycsICc2JywgMHgzMGE5fSwKCXsnTycsICc2JywgMHgzMGFhfSwKCXsnSycsICdhJywgMHgzMGFifSwKCXsnRycsICdhJywgMHgzMGFjfSwKCXsnSycsICdpJywgMHgzMGFkfSwKCXsnRycsICdpJywgMHgzMGFlfSwKCXsnSycsICd1JywgMHgzMGFmfSwKCXsnRycsICd1JywgMHgzMGIwfSwKCXsnSycsICdlJywgMHgzMGIxfSwKCXsnRycsICdlJywgMHgzMGIyfSwKCXsnSycsICdvJywgMHgzMGIzfSwKCXsnRycsICdvJywgMHgzMGI0fSwKCXsnUycsICdhJywgMHgzMGI1fSwKCXsnWicsICdhJywgMHgzMGI2fSwKCXsnUycsICdpJywgMHgzMGI3fSwKCXsnWicsICdpJywgMHgzMGI4fSwKCXsnUycsICd1JywgMHgzMGI5fSwKCXsnWicsICd1JywgMHgzMGJhfSwKCXsnUycsICdlJywgMHgzMGJifSwKCXsnWicsICdlJywgMHgzMGJjfSwKCXsnUycsICdvJywgMHgzMGJkfSwKCXsnWicsICdvJywgMHgzMGJlfSwKCXsnVCcsICdhJywgMHgzMGJmfSwKCXsnRCcsICdhJywgMHgzMGMwfSwKCXsnVCcsICdpJywgMHgzMGMxfSwKCXsnRCcsICdpJywgMHgzMGMyfSwKCXsnVCcsICdVJywgMHgzMGMzfSwKCXsnVCcsICd1JywgMHgzMGM0fSwKCXsnRCcsICd1JywgMHgzMGM1fSwKCXsnVCcsICdlJywgMHgzMGM2fSwKCXsnRCcsICdlJywgMHgzMGM3fSwKCXsnVCcsICdvJywgMHgzMGM4fSwKCXsnRCcsICdvJywgMHgzMGM5fSwKCXsnTicsICdhJywgMHgzMGNhfSwKCXsnTicsICdpJywgMHgzMGNifSwKCXsnTicsICd1JywgMHgzMGNjfSwKCXsnTicsICdlJywgMHgzMGNkfSwKCXsnTicsICdvJywgMHgzMGNlfSwKCXsnSCcsICdhJywgMHgzMGNmfSwKCXsnQicsICdhJywgMHgzMGQwfSwKCXsnUCcsICdhJywgMHgzMGQxfSwKCXsnSCcsICdpJywgMHgzMGQyfSwKCXsnQicsICdpJywgMHgzMGQzfSwKCXsnUCcsICdpJywgMHgzMGQ0fSwKCXsnSCcsICd1JywgMHgzMGQ1fSwKCXsnQicsICd1JywgMHgzMGQ2fSwKCXsnUCcsICd1JywgMHgzMGQ3fSwKCXsnSCcsICdlJywgMHgzMGQ4fSwKCXsnQicsICdlJywgMHgzMGQ5fSwKCXsnUCcsICdlJywgMHgzMGRhfSwKCXsnSCcsICdvJywgMHgzMGRifSwKCXsnQicsICdvJywgMHgzMGRjfSwKCXsnUCcsICdvJywgMHgzMGRkfSwKCXsnTScsICdhJywgMHgzMGRlfSwKCXsnTScsICdpJywgMHgzMGRmfSwKCXsnTScsICd1JywgMHgzMGUwfSwKCXsnTScsICdlJywgMHgzMGUxfSwKCXsnTScsICdvJywgMHgzMGUyfSwKCXsnWScsICdBJywgMHgzMGUzfSwKCXsnWScsICdhJywgMHgzMGU0fSwKCXsnWScsICdVJywgMHgzMGU1fSwKCXsnWScsICd1JywgMHgzMGU2fSwKCXsnWScsICdPJywgMHgzMGU3fSwKCXsnWScsICdvJywgMHgzMGU4fSwKCXsnUicsICdhJywgMHgzMGU5fSwKCXsnUicsICdpJywgMHgzMGVhfSwKCXsnUicsICd1JywgMHgzMGVifSwKCXsnUicsICdlJywgMHgzMGVjfSwKCXsnUicsICdvJywgMHgzMGVkfSwKCXsnVycsICdBJywgMHgzMGVlfSwKCXsnVycsICdhJywgMHgzMGVmfSwKCXsnVycsICdpJywgMHgzMGYwfSwKCXsnVycsICdlJywgMHgzMGYxfSwKCXsnVycsICdvJywgMHgzMGYyfSwKCXsnTicsICc2JywgMHgzMGYzfSwKCXsnVicsICd1JywgMHgzMGY0fSwKCXsnSycsICdBJywgMHgzMGY1fSwKCXsnSycsICdFJywgMHgzMGY2fSwKCXsnVicsICdhJywgMHgzMGY3fSwKCXsnVicsICdpJywgMHgzMGY4fSwKCXsnVicsICdlJywgMHgzMGY5fSwKCXsnVicsICdvJywgMHgzMGZhfSwKCXsnLicsICc2JywgMHgzMGZifSwKCXsnLScsICc2JywgMHgzMGZjfSwKCXsnKicsICc2JywgMHgzMGZkfSwKCXsnKycsICc2JywgMHgzMGZlfSwKI2RlZmluZSBER19TVEFSVF9CT1BPTU9GTyAweDMxMDUKCXsnYicsICc0JywgMHgzMTA1fSwKCXsncCcsICc0JywgMHgzMTA2fSwKCXsnbScsICc0JywgMHgzMTA3fSwKCXsnZicsICc0JywgMHgzMTA4fSwKCXsnZCcsICc0JywgMHgzMTA5fSwKCXsndCcsICc0JywgMHgzMTBhfSwKCXsnbicsICc0JywgMHgzMTBifSwKCXsnbCcsICc0JywgMHgzMTBjfSwKCXsnZycsICc0JywgMHgzMTBkfSwKCXsnaycsICc0JywgMHgzMTBlfSwKCXsnaCcsICc0JywgMHgzMTBmfSwKCXsnaicsICc0JywgMHgzMTEwfSwKCXsncScsICc0JywgMHgzMTExfSwKCXsneCcsICc0JywgMHgzMTEyfSwKCXsneicsICdoJywgMHgzMTEzfSwKCXsnYycsICdoJywgMHgzMTE0fSwKCXsncycsICdoJywgMHgzMTE1fSwKCXsncicsICc0JywgMHgzMTE2fSwKCXsneicsICc0JywgMHgzMTE3fSwKCXsnYycsICc0JywgMHgzMTE4fSwKCXsncycsICc0JywgMHgzMTE5fSwKCXsnYScsICc0JywgMHgzMTFhfSwKCXsnbycsICc0JywgMHgzMTFifSwKCXsnZScsICc0JywgMHgzMTFjfSwKCXsnYScsICdpJywgMHgzMTFlfSwKCXsnZScsICdpJywgMHgzMTFmfSwKCXsnYScsICd1JywgMHgzMTIwfSwKCXsnbycsICd1JywgMHgzMTIxfSwKCXsnYScsICduJywgMHgzMTIyfSwKCXsnZScsICduJywgMHgzMTIzfSwKCXsnYScsICdOJywgMHgzMTI0fSwKCXsnZScsICdOJywgMHgzMTI1fSwKCXsnZScsICdyJywgMHgzMTI2fSwKCXsnaScsICc0JywgMHgzMTI3fSwKCXsndScsICc0JywgMHgzMTI4fSwKCXsnaScsICd1JywgMHgzMTI5fSwKCXsndicsICc0JywgMHgzMTJhfSwKCXsnbicsICdHJywgMHgzMTJifSwKCXsnZycsICduJywgMHgzMTJjfSwKI2RlZmluZSBER19TVEFSVF9PVEhFUjMgMHgzMjIwCgl7JzEnLCAnYycsIDB4MzIyMH0sCgl7JzInLCAnYycsIDB4MzIyMX0sCgl7JzMnLCAnYycsIDB4MzIyMn0sCgl7JzQnLCAnYycsIDB4MzIyM30sCgl7JzUnLCAnYycsIDB4MzIyNH0sCgl7JzYnLCAnYycsIDB4MzIyNX0sCgl7JzcnLCAnYycsIDB4MzIyNn0sCgl7JzgnLCAnYycsIDB4MzIyN30sCgl7JzknLCAnYycsIDB4MzIyOH0sCgkvKiBjb2RlIHBvaW50cyAweGUwMDAgLSAweGVmZmYgZXhjbHVkZWQsIHRoZXkgaGF2ZSBubyBhc3NpZ25lZAoJICogY2hhcmFjdGVycywgb25seSB1c2VkIGluIHByb3Bvc2Fscy4gKi8KCXsnZicsICdmJywgMHhmYjAwfSwKCXsnZicsICdpJywgMHhmYjAxfSwKCXsnZicsICdsJywgMHhmYjAyfSwKCXsnZicsICd0JywgMHhmYjA1fSwKCXsncycsICd0JywgMHhmYjA2fSwKCgl7TlVMLCBOVUwsIE5VTH0KICAgICAgIH07CgojICAgZW5kaWYgLyogT0xEX0RJR1JBUEhTICovCiMgIGVuZGlmIC8qIEVCQ0RJQyAqLwojIGVuZGlmICAgIC8qICFIUFVYX0RJR1JBUEhTICovCiNlbmRpZgkvKiAhX19NSU5UX18gKi8KCi8qCiAqIGhhbmRsZSBkaWdyYXBocyBhZnRlciB0eXBpbmcgYSBjaGFyYWN0ZXIKICovCiAgICBpbnQKZG9fZGlncmFwaChpbnQgYykKewogICAgc3RhdGljIGludAliYWNrc3BhY2VkOwkvKiBjaGFyYWN0ZXIgYmVmb3JlIEtfQlMgKi8KICAgIHN0YXRpYyBpbnQJbGFzdGNoYXI7CS8qIGxhc3QgdHlwZWQgY2hhcmFjdGVyICovCgogICAgaWYgKGMgPT0gLTEpCQkvKiBpbml0IHZhbHVlcyAqLwogICAgewoJYmFja3NwYWNlZCA9IC0xOwogICAgfQogICAgZWxzZSBpZiAocF9kZykKICAgIHsKCWlmIChiYWNrc3BhY2VkID49IDApCgkgICAgYyA9IGdldGRpZ3JhcGgoYmFja3NwYWNlZCwgYywgRkFMU0UpOwoJYmFja3NwYWNlZCA9IC0xOwoJaWYgKChjID09IEtfQlMgfHwgYyA9PSBDdHJsX0gpICYmIGxhc3RjaGFyID49IDApCgkgICAgYmFja3NwYWNlZCA9IGxhc3RjaGFyOwogICAgfQogICAgbGFzdGNoYXIgPSBjOwogICAgcmV0dXJuIGM7Cn0KCi8qCiAqIEZpbmQgYSBkaWdyYXBoIGZvciAidmFsIi4gIElmIGZvdW5kIHJldHVybiB0aGUgc3RyaW5nIHRvIGRpc3BsYXkgaXQuCiAqIElmIG5vdCBmb3VuZCByZXR1cm4gTlVMTC4KICovCiAgICBjaGFyX3UgKgpnZXRfZGlncmFwaF9mb3JfY2hhcihpbnQgdmFsX2FyZykKewogICAgaW50CQl2YWwgPSB2YWxfYXJnOwogICAgaW50CQlpOwogICAgaW50CQl1c2VfZGVmYXVsdHM7CiAgICBkaWdyX1QJKmRwOwogICAgc3RhdGljICAgICAgY2hhcl91ICAgICAgclszXTsKCiNpZiBkZWZpbmVkKFVTRV9VTklDT0RFX0RJR1JBUEhTKQogICAgaWYgKCFlbmNfdXRmOCkKICAgIHsKCWNoYXJfdQkgICAgYnVmWzZdLCAqdG87Cgl2aW1jb252X1QgICB2YzsKCgkvLyBjb252ZXJ0IHRoZSBjaGFyYWN0ZXIgZnJvbSAnZW5jb2RpbmcnIHRvIFVuaWNvZGUKCWkgPSBtYl9jaGFyMmJ5dGVzKHZhbCwgYnVmKTsKCXZjLnZjX3R5cGUgPSBDT05WX05PTkU7CglpZiAoY29udmVydF9zZXR1cCgmdmMsIHBfZW5jLCAoY2hhcl91ICopInV0Zi04IikgPT0gT0spCgl7CgkgICAgdmMudmNfZmFpbCA9IFRSVUU7CgkgICAgdG8gPSBzdHJpbmdfY29udmVydCgmdmMsIGJ1ZiwgJmkpOwoJICAgIGlmICh0byAhPSBOVUxMKQoJICAgIHsKCQl2YWwgPSB1dGZfcHRyMmNoYXIodG8pOwoJCXZpbV9mcmVlKHRvKTsKCSAgICB9CgkgICAgKHZvaWQpY29udmVydF9zZXR1cCgmdmMsIE5VTEwsIE5VTEwpOwoJfQogICAgfQojZW5kaWYKCiAgICBmb3IgKHVzZV9kZWZhdWx0cyA9IDA7IHVzZV9kZWZhdWx0cyA8PSAxOyB1c2VfZGVmYXVsdHMrKykKICAgIHsKCWlmICh1c2VfZGVmYXVsdHMgPT0gMCkKCSAgICBkcCA9IChkaWdyX1QgKil1c2VyX2RpZ3JhcGhzLmdhX2RhdGE7CgllbHNlCgkgICAgZHAgPSBkaWdyYXBoZGVmYXVsdDsKCWZvciAoaSA9IDA7IHVzZV9kZWZhdWx0cyA/IGRwLT5jaGFyMSAhPSBOVUwKCQkJCQkgICAgICAgOiBpIDwgdXNlcl9kaWdyYXBocy5nYV9sZW47ICsraSkKCXsKCSAgICBpZiAoZHAtPnJlc3VsdCA9PSB2YWwpCgkgICAgewoJCXJbMF0gPSBkcC0+Y2hhcjE7CgkJclsxXSA9IGRwLT5jaGFyMjsKCQlyWzJdID0gTlVMOwoJCXJldHVybiByOwoJICAgIH0KCSAgICArK2RwOwoJfQogICAgfQogICAgcmV0dXJuIE5VTEw7Cn0KCi8qCiAqIEdldCBhIGRpZ3JhcGguICBVc2VkIGFmdGVyIHR5cGluZyBDVFJMLUsgb24gdGhlIGNvbW1hbmQgbGluZSBvciBpbiBub3JtYWwKICogbW9kZS4KICogUmV0dXJucyBjb21wb3NlZCBjaGFyYWN0ZXIsIG9yIE5VTCB3aGVuIEVTQyB3YXMgdXNlZC4KICovCiAgICBpbnQKZ2V0X2RpZ3JhcGgoCiAgICBpbnQJCWNtZGxpbmUpCS8qIFRSVUUgd2hlbiBjYWxsZWQgZnJvbSB0aGUgY21kbGluZSAqLwp7CiAgICBpbnQJCWMsIGNjOwoKICAgICsrbm9fbWFwcGluZzsKICAgICsrYWxsb3dfa2V5czsKICAgIGMgPSBwbGFpbl92Z2V0YygpOwogICAgLS1ub19tYXBwaW5nOwogICAgLS1hbGxvd19rZXlzOwogICAgaWYgKGMgIT0gRVNDKQkJLyogRVNDIGNhbmNlbHMgQ1RSTC1LICovCiAgICB7CglpZiAoSVNfU1BFQ0lBTChjKSkJLyogaW5zZXJ0IHNwZWNpYWwga2V5IGNvZGUgKi8KCSAgICByZXR1cm4gYzsKCWlmIChjbWRsaW5lKQoJewoJICAgIGlmIChjaGFyMmNlbGxzKGMpID09IDEKI2lmIGRlZmluZWQoRkVBVF9DUllQVCkgfHwgZGVmaW5lZChGRUFUX0VWQUwpCgkJICAgICYmIGNtZGxpbmVfc3RhciA9PSAwCiNlbmRpZgoJCSAgICApCgkJcHV0Y21kbGluZShjLCBUUlVFKTsKCX0KI2lmZGVmIEZFQVRfQ01ETF9JTkZPCgllbHNlCgkgICAgYWRkX3RvX3Nob3djbWQoYyk7CiNlbmRpZgoJKytub19tYXBwaW5nOwoJKythbGxvd19rZXlzOwoJY2MgPSBwbGFpbl92Z2V0YygpOwoJLS1ub19tYXBwaW5nOwoJLS1hbGxvd19rZXlzOwoJaWYgKGNjICE9IEVTQykJICAgIC8qIEVTQyBjYW5jZWxzIENUUkwtSyAqLwoJICAgIHJldHVybiBnZXRkaWdyYXBoKGMsIGNjLCBUUlVFKTsKICAgIH0KICAgIHJldHVybiBOVUw7Cn0KCi8qCiAqIExvb2t1cCB0aGUgcGFpciAiY2hhcjEiLCAiY2hhcjIiIGluIHRoZSBkaWdyYXBoIHRhYmxlcy4KICogSWYgbm8gbWF0Y2gsIHJldHVybiAiY2hhcjIiLgogKiBJZiAibWV0YV9jaGFyIiBpcyBUUlVFIGFuZCAiY2hhcjEiIGlzIGEgc3BhY2UsIHJldHVybiAiY2hhcjIiIHwgMHg4MC4KICovCiAgICBzdGF0aWMgaW50CmdldGV4YWN0ZGlncmFwaChpbnQgY2hhcjEsIGludCBjaGFyMiwgaW50IG1ldGFfY2hhcikKewogICAgaW50CQlpOwogICAgaW50CQlyZXR2YWwgPSAwOwogICAgZGlncl9UCSpkcDsKCiAgICBpZiAoSVNfU1BFQ0lBTChjaGFyMSkgfHwgSVNfU1BFQ0lBTChjaGFyMikpCglyZXR1cm4gY2hhcjI7CgogICAgLyoKICAgICAqIFNlYXJjaCB1c2VyIGRpZ3JhcGhzIGZpcnN0LgogICAgICovCiAgICBkcCA9IChkaWdyX1QgKil1c2VyX2RpZ3JhcGhzLmdhX2RhdGE7CiAgICBmb3IgKGkgPSAwOyBpIDwgdXNlcl9kaWdyYXBocy5nYV9sZW47ICsraSkKICAgIHsKCWlmICgoaW50KWRwLT5jaGFyMSA9PSBjaGFyMSAmJiAoaW50KWRwLT5jaGFyMiA9PSBjaGFyMikKCXsKCSAgICByZXR2YWwgPSBkcC0+cmVzdWx0OwoJICAgIGJyZWFrOwoJfQoJKytkcDsKICAgIH0KCiAgICAvKgogICAgICogU2VhcmNoIGRlZmF1bHQgZGlncmFwaHMuCiAgICAgKi8KICAgIGlmIChyZXR2YWwgPT0gMCkKICAgIHsKCWRwID0gZGlncmFwaGRlZmF1bHQ7Cglmb3IgKGkgPSAwOyBkcC0+Y2hhcjEgIT0gMDsgKytpKQoJewoJICAgIGlmICgoaW50KWRwLT5jaGFyMSA9PSBjaGFyMSAmJiAoaW50KWRwLT5jaGFyMiA9PSBjaGFyMikKCSAgICB7CgkJcmV0dmFsID0gZHAtPnJlc3VsdDsKCQlicmVhazsKCSAgICB9CgkgICAgKytkcDsKCX0KICAgIH0KI2lmZGVmIFVTRV9VTklDT0RFX0RJR1JBUEhTCiAgICBpZiAocmV0dmFsICE9IDAgJiYgIWVuY191dGY4KQogICAgewoJY2hhcl91CSAgICBidWZbNl0sICp0bzsKCXZpbWNvbnZfVCAgIHZjOwoKCS8qCgkgKiBDb252ZXJ0IHRoZSBVbmljb2RlIGRpZ3JhcGggdG8gJ2VuY29kaW5nJy4KCSAqLwoJaSA9IHV0Zl9jaGFyMmJ5dGVzKHJldHZhbCwgYnVmKTsKCXJldHZhbCA9IDA7Cgl2Yy52Y190eXBlID0gQ09OVl9OT05FOwoJaWYgKGNvbnZlcnRfc2V0dXAoJnZjLCAoY2hhcl91ICopInV0Zi04IiwgcF9lbmMpID09IE9LKQoJewoJICAgIHZjLnZjX2ZhaWwgPSBUUlVFOwoJICAgIHRvID0gc3RyaW5nX2NvbnZlcnQoJnZjLCBidWYsICZpKTsKCSAgICBpZiAodG8gIT0gTlVMTCkKCSAgICB7CgkJcmV0dmFsID0gKCptYl9wdHIyY2hhcikodG8pOwoJCXZpbV9mcmVlKHRvKTsKCSAgICB9CgkgICAgKHZvaWQpY29udmVydF9zZXR1cCgmdmMsIE5VTEwsIE5VTEwpOwoJfQogICAgfQojZW5kaWYKCiAgICAvKiBJZ25vcmUgbXVsdGktYnl0ZSBjaGFyYWN0ZXJzIHdoZW4gbm90IGluIG11bHRpLWJ5dGUgbW9kZS4gKi8KICAgIGlmICghaGFzX21ieXRlICYmIHJldHZhbCA+IDB4ZmYpCglyZXR2YWwgPSAwOwoKICAgIGlmIChyZXR2YWwgPT0gMCkJCS8qIGRpZ3JhcGggZGVsZXRlZCBvciBub3QgZm91bmQgKi8KICAgIHsKCWlmIChjaGFyMSA9PSAnICcgJiYgbWV0YV9jaGFyKQkvKiA8c3BhY2U+IDxjaGFyPiAtLT4gbWV0YS1jaGFyICovCgkgICAgcmV0dXJuIChjaGFyMiB8IDB4ODApOwoJcmV0dXJuIGNoYXIyOwogICAgfQogICAgcmV0dXJuIHJldHZhbDsKfQoKLyoKICogR2V0IGRpZ3JhcGguCiAqIEFsbG93IGZvciBib3RoIGNoYXIxLWNoYXIyIGFuZCBjaGFyMi1jaGFyMQogKi8KICAgIGludApnZXRkaWdyYXBoKGludCBjaGFyMSwgaW50IGNoYXIyLCBpbnQgbWV0YV9jaGFyKQp7CiAgICBpbnQJICAgIHJldHZhbDsKCiAgICBpZiAoKChyZXR2YWwgPSBnZXRleGFjdGRpZ3JhcGgoY2hhcjEsIGNoYXIyLCBtZXRhX2NoYXIpKSA9PSBjaGFyMikKCSAgICAmJiAoY2hhcjEgIT0gY2hhcjIpCgkgICAgJiYgKChyZXR2YWwgPSBnZXRleGFjdGRpZ3JhcGgoY2hhcjIsIGNoYXIxLCBtZXRhX2NoYXIpKSA9PSBjaGFyMSkpCglyZXR1cm4gY2hhcjI7CiAgICByZXR1cm4gcmV0dmFsOwp9CgovKgogKiBBZGQgdGhlIGRpZ3JhcGhzIGluIHRoZSBhcmd1bWVudCB0byB0aGUgZGlncmFwaCB0YWJsZS4KICogZm9ybWF0OiB7YzF9e2MyfSBjaGFyIHtjMX17YzJ9IGNoYXIgLi4uCiAqLwogICAgdm9pZApwdXRkaWdyYXBoKGNoYXJfdSAqc3RyKQp7CiAgICBpbnQJCWNoYXIxLCBjaGFyMiwgbjsKICAgIGludAkJaTsKICAgIGRpZ3JfVAkqZHA7CgogICAgd2hpbGUgKCpzdHIgIT0gTlVMKQogICAgewoJc3RyID0gc2tpcHdoaXRlKHN0cik7CglpZiAoKnN0ciA9PSBOVUwpCgkgICAgcmV0dXJuOwoJY2hhcjEgPSAqc3RyKys7CgljaGFyMiA9ICpzdHIrKzsKCWlmIChjaGFyMiA9PSAwKQoJewoJICAgIGVtc2coXyhlX2ludmFyZykpOwoJICAgIHJldHVybjsKCX0KCWlmIChjaGFyMSA9PSBFU0MgfHwgY2hhcjIgPT0gRVNDKQoJewoJICAgIGVtc2coXygiRTEwNDogRXNjYXBlIG5vdCBhbGxvd2VkIGluIGRpZ3JhcGgiKSk7CgkgICAgcmV0dXJuOwoJfQoJc3RyID0gc2tpcHdoaXRlKHN0cik7CglpZiAoIVZJTV9JU0RJR0lUKCpzdHIpKQoJewoJICAgIGVtc2coXyhlX251bWJlcl9leHApKTsKCSAgICByZXR1cm47Cgl9CgluID0gZ2V0ZGlnaXRzKCZzdHIpOwoKCS8qIElmIHRoZSBkaWdyYXBoIGFscmVhZHkgZXhpc3RzLCByZXBsYWNlIHRoZSByZXN1bHQuICovCglkcCA9IChkaWdyX1QgKil1c2VyX2RpZ3JhcGhzLmdhX2RhdGE7Cglmb3IgKGkgPSAwOyBpIDwgdXNlcl9kaWdyYXBocy5nYV9sZW47ICsraSkKCXsKCSAgICBpZiAoKGludClkcC0+Y2hhcjEgPT0gY2hhcjEgJiYgKGludClkcC0+Y2hhcjIgPT0gY2hhcjIpCgkgICAgewoJCWRwLT5yZXN1bHQgPSBuOwoJCWJyZWFrOwoJICAgIH0KCSAgICArK2RwOwoJfQoKCS8qIEFkZCBhIG5ldyBkaWdyYXBoIHRvIHRoZSB0YWJsZS4gKi8KCWlmIChpID09IHVzZXJfZGlncmFwaHMuZ2FfbGVuKQoJewoJICAgIGlmIChnYV9ncm93KCZ1c2VyX2RpZ3JhcGhzLCAxKSA9PSBPSykKCSAgICB7CgkJZHAgPSAoZGlncl9UICopdXNlcl9kaWdyYXBocy5nYV9kYXRhICsgdXNlcl9kaWdyYXBocy5nYV9sZW47CgkJZHAtPmNoYXIxID0gY2hhcjE7CgkJZHAtPmNoYXIyID0gY2hhcjI7CgkJZHAtPnJlc3VsdCA9IG47CgkJKyt1c2VyX2RpZ3JhcGhzLmdhX2xlbjsKCSAgICB9Cgl9CiAgICB9Cn0KCiNpZiBkZWZpbmVkKFVTRV9VTklDT0RFX0RJR1JBUEhTKQogICAgc3RhdGljIHZvaWQKZGlncmFwaF9oZWFkZXIoY2hhciAqbXNnKQp7CiAgICBpZiAobXNnX2NvbCA+IDApCgltc2dfcHV0Y2hhcignXG4nKTsKICAgIG1zZ19vdXR0cmFuc19hdHRyKChjaGFyX3UgKiltc2csIEhMX0FUVFIoSExGX0NNKSk7CiAgICBtc2dfcHV0Y2hhcignXG4nKTsKfQojZW5kaWYKCiAgICB2b2lkCmxpc3RkaWdyYXBocyhpbnQgdXNlX2hlYWRlcnMpCnsKICAgIGludAkJaTsKICAgIGRpZ3JfVAkqZHA7CiAgICByZXN1bHRfVAlwcmV2aW91cyA9IDA7CgogICAgbXNnX3B1dGNoYXIoJ1xuJyk7CgogICAgZHAgPSBkaWdyYXBoZGVmYXVsdDsKICAgIGZvciAoaSA9IDA7IGRwLT5jaGFyMSAhPSBOVUwgJiYgIWdvdF9pbnQ7ICsraSkKICAgIHsKI2lmIGRlZmluZWQoVVNFX1VOSUNPREVfRElHUkFQSFMpCglkaWdyX1QgdG1wOwoKCS8qIE1heSBuZWVkIHRvIGNvbnZlcnQgdGhlIHJlc3VsdCB0byAnZW5jb2RpbmcnLiAqLwoJdG1wLmNoYXIxID0gZHAtPmNoYXIxOwoJdG1wLmNoYXIyID0gZHAtPmNoYXIyOwoJdG1wLnJlc3VsdCA9IGdldGV4YWN0ZGlncmFwaCh0bXAuY2hhcjEsIHRtcC5jaGFyMiwgRkFMU0UpOwoJaWYgKHRtcC5yZXN1bHQgIT0gMCAmJiB0bXAucmVzdWx0ICE9IHRtcC5jaGFyMgoJCQkJCSAgJiYgKGhhc19tYnl0ZSB8fCB0bXAucmVzdWx0IDw9IDI1NSkpCgkgICAgcHJpbnRkaWdyYXBoKCZ0bXAsIHVzZV9oZWFkZXJzID8gJnByZXZpb3VzIDogTlVMTCk7CiNlbHNlCgoJaWYgKGdldGV4YWN0ZGlncmFwaChkcC0+Y2hhcjEsIGRwLT5jaGFyMiwgRkFMU0UpID09IGRwLT5yZXN1bHQKCQkmJiAoaGFzX21ieXRlIHx8IGRwLT5yZXN1bHQgPD0gMjU1KSkKCSAgICBwcmludGRpZ3JhcGgoZHAsIHVzZV9oZWFkZXJzID8gJnByZXZpb3VzIDogTlVMTCk7CiNlbmRpZgoJKytkcDsKCXVpX2JyZWFrY2hlY2soKTsKICAgIH0KCiAgICBkcCA9IChkaWdyX1QgKil1c2VyX2RpZ3JhcGhzLmdhX2RhdGE7CiAgICBmb3IgKGkgPSAwOyBpIDwgdXNlcl9kaWdyYXBocy5nYV9sZW4gJiYgIWdvdF9pbnQ7ICsraSkKICAgIHsKI2lmIGRlZmluZWQoVVNFX1VOSUNPREVfRElHUkFQSFMpCglpZiAocHJldmlvdXMgPj0gMCAmJiB1c2VfaGVhZGVycykKCSAgICBkaWdyYXBoX2hlYWRlcihfKCJDdXN0b20iKSk7CglwcmV2aW91cyA9IC0xOwojZW5kaWYKCXByaW50ZGlncmFwaChkcCwgTlVMTCk7Cgl1aV9icmVha2NoZWNrKCk7CgkrK2RwOwogICAgfQogICAgbXVzdF9yZWRyYXcgPSBDTEVBUjsgICAgLyogY2xlYXIgc2NyZWVuLCBiZWNhdXNlIHNvbWUgZGlncmFwaHMgbWF5IGJlCgkJCSAgICAgICB3cm9uZywgaW4gd2hpY2ggY2FzZSB3ZSBtZXNzZWQgdXAgU2NyZWVuTGluZXMgKi8KfQoKc3RydWN0IGRnX2hlYWRlcl9lbnRyeSB7CiAgICBpbnQJICAgIGRnX3N0YXJ0OwogICAgY2hhciAgICAqZGdfaGVhZGVyOwp9IGhlYWRlcl90YWJsZVtdID0gewogICAge0RHX1NUQVJUX0xBVElOLCBOXygiTGF0aW4gc3VwcGxlbWVudCIpfSwKICAgIHtER19TVEFSVF9HUkVFSywgTl8oIkdyZWVrIGFuZCBDb3B0aWMiKX0sCiAgICB7REdfU1RBUlRfQ1lSSUxMSUMsIE5fKCJDeXJpbGxpYyIpfSwKICAgIHtER19TVEFSVF9IRUJSRVcsIE5fKCJIZWJyZXciKX0sCiAgICB7REdfU1RBUlRfQVJBQklDLCBOXygiQXJhYmljIil9LAogICAge0RHX1NUQVJUX0xBVElOX0VYVEVOREVELCBOXygiTGF0aW4gZXh0ZW5kZWQiKX0sCiAgICB7REdfU1RBUlRfR1JFRUtfRVhURU5ERUQsIE5fKCJHcmVlayBleHRlbmRlZCIpfSwKICAgIHtER19TVEFSVF9QVU5DVFVBVElPTiwgTl8oIlB1bmN0dWF0aW9uIil9LAogICAge0RHX1NUQVJUX1NVQl9TVVBFUiwgTl8oIlN1cGVyLSBhbmQgc3Vic2NyaXB0cyIpfSwKICAgIHtER19TVEFSVF9DVVJSRU5DWSwgTl8oIkN1cnJlbmN5Iil9LAogICAge0RHX1NUQVJUX09USEVSMSwgTl8oIk90aGVyIil9LAogICAge0RHX1NUQVJUX1JPTUFOLCBOXygiUm9tYW4gbnVtYmVycyIpfSwKICAgIHtER19TVEFSVF9BUlJPV1MsIE5fKCJBcnJvd3MiKX0sCiAgICB7REdfU1RBUlRfTUFUSCwgTl8oIk1hdGhlbWF0aWNhbCBvcGVyYXRvcnMiKX0sCiAgICB7REdfU1RBUlRfVEVDSE5JQ0FMLCBOXygiVGVjaG5pY2FsIil9LAogICAge0RHX1NUQVJUX09USEVSMiwgTl8oIk90aGVyIil9LAogICAge0RHX1NUQVJUX0RSQVdJTkcsIE5fKCJCb3ggZHJhd2luZyIpfSwKICAgIHtER19TVEFSVF9CTE9DSywgTl8oIkJsb2NrIGVsZW1lbnRzIil9LAogICAge0RHX1NUQVJUX1NIQVBFUywgTl8oIkdlb21ldHJpYyBzaGFwZXMiKX0sCiAgICB7REdfU1RBUlRfU1lNQk9MUywgTl8oIlN5bWJvbHMiKX0sCiAgICB7REdfU1RBUlRfRElOR0JBVFMsIE5fKCJEaW5nYmF0cyIpfSwKICAgIHtER19TVEFSVF9DSktfU1lNQk9MUywgTl8oIkNKSyBzeW1ib2xzIGFuZCBwdW5jdHVhdGlvbiIpfSwKICAgIHtER19TVEFSVF9ISVJBR0FOQSwgTl8oIkhpcmFnYW5hIil9LAogICAge0RHX1NUQVJUX0tBVEFLQU5BLCBOXygiS2F0YWthbmEiKX0sCiAgICB7REdfU1RBUlRfQk9QT01PRk8sIE5fKCJCb3BvbW9mbyIpfSwKICAgIHtER19TVEFSVF9PVEhFUjMsIE5fKCJPdGhlciIpfSwKICAgIHsweGZmZmZmZmYsIE5VTEx9LAp9OwoKICAgIHN0YXRpYyB2b2lkCnByaW50ZGlncmFwaChkaWdyX1QgKmRwLCByZXN1bHRfVCAqcHJldmlvdXMpCnsKICAgIGNoYXJfdQlidWZbMzBdOwogICAgY2hhcl91CSpwOwoKICAgIGludAkJbGlzdF93aWR0aDsKCiAgICBpZiAoKGR5X2ZsYWdzICYgRFlfVUhFWCkgfHwgaGFzX21ieXRlKQoJbGlzdF93aWR0aCA9IDEzOwogICAgZWxzZQoJbGlzdF93aWR0aCA9IDExOwoKICAgIGlmIChkcC0+cmVzdWx0ICE9IDApCiAgICB7CiNpZiBkZWZpbmVkKFVTRV9VTklDT0RFX0RJR1JBUEhTKQoJaWYgKHByZXZpb3VzICE9IE5VTEwpCgl7CgkgICAgaW50IGk7CgoJICAgIGZvciAoaSA9IDA7IGhlYWRlcl90YWJsZVtpXS5kZ19oZWFkZXIgIT0gTlVMTDsgKytpKQoJCWlmICgqcHJldmlvdXMgPCBoZWFkZXJfdGFibGVbaV0uZGdfc3RhcnQKCQkJJiYgZHAtPnJlc3VsdCA+PSBoZWFkZXJfdGFibGVbaV0uZGdfc3RhcnQKCQkJJiYgZHAtPnJlc3VsdCA8IGhlYWRlcl90YWJsZVtpICsgMV0uZGdfc3RhcnQpCgkJewoJCSAgICBkaWdyYXBoX2hlYWRlcihfKGhlYWRlcl90YWJsZVtpXS5kZ19oZWFkZXIpKTsKCQkgICAgYnJlYWs7CgkJfQoJICAgICpwcmV2aW91cyA9IGRwLT5yZXN1bHQ7Cgl9CiNlbmRpZgoJaWYgKG1zZ19jb2wgPiBDb2x1bW5zIC0gbGlzdF93aWR0aCkKCSAgICBtc2dfcHV0Y2hhcignXG4nKTsKCWlmIChtc2dfY29sKQoJICAgIHdoaWxlIChtc2dfY29sICUgbGlzdF93aWR0aCAhPSAwKQoJCW1zZ19wdXRjaGFyKCcgJyk7CgoJcCA9IGJ1ZjsKCSpwKysgPSBkcC0+Y2hhcjE7CgkqcCsrID0gZHAtPmNoYXIyOwoJKnArKyA9ICcgJzsKCSpwID0gTlVMOwoJbXNnX291dHRyYW5zKGJ1Zik7CglwID0gYnVmOwoJaWYgKGhhc19tYnl0ZSkKCXsKCSAgICAvKiBhZGQgYSBzcGFjZSB0byBkcmF3IGEgY29tcG9zaW5nIGNoYXIgb24gKi8KCSAgICBpZiAoZW5jX3V0ZjggJiYgdXRmX2lzY29tcG9zaW5nKGRwLT5yZXN1bHQpKQoJCSpwKysgPSAnICc7CgkgICAgcCArPSAoKm1iX2NoYXIyYnl0ZXMpKGRwLT5yZXN1bHQsIHApOwoJfQoJZWxzZQoJICAgICpwKysgPSAoY2hhcl91KWRwLT5yZXN1bHQ7CgkqcCA9IE5VTDsKCW1zZ19vdXR0cmFuc19hdHRyKGJ1ZiwgSExfQVRUUihITEZfOCkpOwoJcCA9IGJ1ZjsKCWlmIChjaGFyMmNlbGxzKGRwLT5yZXN1bHQpID09IDEpCgkgICAgKnArKyA9ICcgJzsKCXZpbV9zbnByaW50ZigoY2hhciAqKXAsIHNpemVvZihidWYpIC0gKHAgLSBidWYpLCAiICUzZCIsIGRwLT5yZXN1bHQpOwoJbXNnX291dHRyYW5zKGJ1Zik7CiAgICB9Cn0KCiNlbmRpZiAvKiBGRUFUX0RJR1JBUEhTICovCgojaWYgZGVmaW5lZChGRUFUX0tFWU1BUCkgfHwgZGVmaW5lZChQUk9UTykKCi8qIHN0cnVjdHVyZSB1c2VkIGZvciBiX2ttYXBfZ2EuZ2FfZGF0YSAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBjaGFyX3UJKmZyb207CiAgICBjaGFyX3UJKnRvOwp9IGttYXBfVDsKCiNkZWZpbmUgS01BUF9NQVhMRU4gMjAJICAgIC8qIG1heGltdW0gbGVuZ3RoIG9mICJmcm9tIiBvciAidG8iICovCgpzdGF0aWMgdm9pZCBrZXltYXBfdW5sb2FkKHZvaWQpOwoKLyoKICogU2V0IHVwIGtleSBtYXBwaW5nIHRhYmxlcyBmb3IgdGhlICdrZXltYXAnIG9wdGlvbi4KICogUmV0dXJucyBOVUxMIGlmIE9LLCBhbiBlcnJvciBtZXNzYWdlIGZvciBmYWlsdXJlLiAgVGhpcyBvbmx5IG5lZWRzIHRvIGJlCiAqIHVzZWQgd2hlbiBzZXR0aW5nIHRoZSBvcHRpb24sIG5vdCBsYXRlciB3aGVuIHRoZSB2YWx1ZSBoYXMgYWxyZWFkeSBiZWVuCiAqIGNoZWNrZWQuCiAqLwogICAgY2hhciAqCmtleW1hcF9pbml0KHZvaWQpCnsKICAgIGN1cmJ1Zi0+Yl9rbWFwX3N0YXRlICY9IH5LRVlNQVBfSU5JVDsKCiAgICBpZiAoKmN1cmJ1Zi0+Yl9wX2tleW1hcCA9PSBOVUwpCiAgICB7CgkvKiBTdG9wIGFueSBhY3RpdmUga2V5bWFwIGFuZCBjbGVhciB0aGUgdGFibGUuICBBbHNvIHJlbW92ZQoJICogYjprZXltYXBfbmFtZSwgYXMgbm8ga2V5bWFwIGlzIGFjdGl2ZSBub3cuICovCglrZXltYXBfdW5sb2FkKCk7Cglkb19jbWRsaW5lX2NtZCgoY2hhcl91ICopInVubGV0ISBiOmtleW1hcF9uYW1lIik7CiAgICB9CiAgICBlbHNlCiAgICB7CgljaGFyX3UJKmJ1ZjsKCXNpemVfdCAgYnVmbGVuOwoKCS8qIFNvdXJjZSB0aGUga2V5bWFwIGZpbGUuICBJdCB3aWxsIGNvbnRhaW4gYSAiOmxvYWRrZXltYXAiIGNvbW1hbmQKCSAqIHdoaWNoIHdpbGwgY2FsbCBleF9sb2Fka2V5bWFwKCkgYmVsb3cuICovCglidWZsZW4gPSBTVFJMRU4oY3VyYnVmLT5iX3Bfa2V5bWFwKSArIFNUUkxFTihwX2VuYykgKyAxNDsKCWJ1ZiA9IGFsbG9jKGJ1Zmxlbik7CglpZiAoYnVmID09IE5VTEwpCgkgICAgcmV0dXJuIGVfb3V0b2ZtZW07CgoJLyogdHJ5IGZpbmRpbmcgImtleW1hcC8na2V5bWFwJ18nZW5jb2RpbmcnLnZpbSIgIGluICdydW50aW1lcGF0aCcgKi8KCXZpbV9zbnByaW50ZigoY2hhciAqKWJ1ZiwgYnVmbGVuLCAia2V5bWFwLyVzXyVzLnZpbSIsCgkJCQkJCSAgIGN1cmJ1Zi0+Yl9wX2tleW1hcCwgcF9lbmMpOwoJaWYgKHNvdXJjZV9ydW50aW1lKGJ1ZiwgMCkgPT0gRkFJTCkKCXsKCSAgICAvKiB0cnkgZmluZGluZyAia2V5bWFwLydrZXltYXAnLnZpbSIgaW4gJ3J1bnRpbWVwYXRoJyAgKi8KCSAgICB2aW1fc25wcmludGYoKGNoYXIgKilidWYsIGJ1ZmxlbiwgImtleW1hcC8lcy52aW0iLAoJCQkJCQkJICBjdXJidWYtPmJfcF9rZXltYXApOwoJICAgIGlmIChzb3VyY2VfcnVudGltZShidWYsIDApID09IEZBSUwpCgkgICAgewoJCXZpbV9mcmVlKGJ1Zik7CgkJcmV0dXJuIE5fKCJFNTQ0OiBLZXltYXAgZmlsZSBub3QgZm91bmQiKTsKCSAgICB9Cgl9Cgl2aW1fZnJlZShidWYpOwogICAgfQoKICAgIHJldHVybiBOVUxMOwp9CgovKgogKiAiOmxvYWRrZXltYXAiIGNvbW1hbmQ6IGxvYWQgdGhlIGZvbGxvd2luZyBsaW5lcyBhcyB0aGUga2V5bWFwLgogKi8KICAgIHZvaWQKZXhfbG9hZGtleW1hcChleGFyZ19UICplYXApCnsKICAgIGNoYXJfdQkqbGluZTsKICAgIGNoYXJfdQkqcDsKICAgIGNoYXJfdQkqczsKICAgIGttYXBfVAkqa3A7CiNkZWZpbmUgS01BUF9MTEVOICAgMjAwCSAgICAvKiBtYXggbGVuZ3RoIG9mICJ0byIgYW5kICJmcm9tIiB0b2dldGhlciAqLwogICAgY2hhcl91CWJ1ZltLTUFQX0xMRU4gKyAxMV07CiAgICBpbnQJCWk7CiAgICBjaGFyX3UJKnNhdmVfY3BvID0gcF9jcG87CgogICAgaWYgKCFnZXRsaW5lX2VxdWFsKGVhcC0+Z2V0bGluZSwgZWFwLT5jb29raWUsIGdldHNvdXJjZWxpbmUpKQogICAgewoJZW1zZyhfKCJFMTA1OiBVc2luZyA6bG9hZGtleW1hcCBub3QgaW4gYSBzb3VyY2VkIGZpbGUiKSk7CglyZXR1cm47CiAgICB9CgogICAgLyoKICAgICAqIFN0b3AgYW55IGFjdGl2ZSBrZXltYXAgYW5kIGNsZWFyIHRoZSB0YWJsZS4KICAgICAqLwogICAga2V5bWFwX3VubG9hZCgpOwoKICAgIGN1cmJ1Zi0+Yl9rbWFwX3N0YXRlID0gMDsKICAgIGdhX2luaXQyKCZjdXJidWYtPmJfa21hcF9nYSwgKGludClzaXplb2Yoa21hcF9UKSwgMjApOwoKICAgIC8qIFNldCAnY3BvcHRpb25zJyB0byAiQyIgdG8gYXZvaWQgbGluZSBjb250aW51YXRpb24uICovCiAgICBwX2NwbyA9IChjaGFyX3UgKikiQyI7CgogICAgLyoKICAgICAqIEdldCBlYWNoIGxpbmUgb2YgdGhlIHNvdXJjZWQgZmlsZSwgYnJlYWsgYXQgdGhlIGVuZC4KICAgICAqLwogICAgZm9yICg7OykKICAgIHsKCWxpbmUgPSBlYXAtPmdldGxpbmUoMCwgZWFwLT5jb29raWUsIDApOwoJaWYgKGxpbmUgPT0gTlVMTCkKCSAgICBicmVhazsKCglwID0gc2tpcHdoaXRlKGxpbmUpOwoJaWYgKCpwICE9ICciJyAmJiAqcCAhPSBOVUwgJiYgZ2FfZ3JvdygmY3VyYnVmLT5iX2ttYXBfZ2EsIDEpID09IE9LKQoJewoJICAgIGtwID0gKGttYXBfVCAqKWN1cmJ1Zi0+Yl9rbWFwX2dhLmdhX2RhdGEgKyBjdXJidWYtPmJfa21hcF9nYS5nYV9sZW47CgkgICAgcyA9IHNraXB0b3doaXRlKHApOwoJICAgIGtwLT5mcm9tID0gdmltX3N0cm5zYXZlKHAsIChpbnQpKHMgLSBwKSk7CgkgICAgcCA9IHNraXB3aGl0ZShzKTsKCSAgICBzID0gc2tpcHRvd2hpdGUocCk7CgkgICAga3AtPnRvID0gdmltX3N0cm5zYXZlKHAsIChpbnQpKHMgLSBwKSk7CgoJICAgIGlmIChrcC0+ZnJvbSA9PSBOVUxMIHx8IGtwLT50byA9PSBOVUxMCgkJICAgIHx8IFNUUkxFTihrcC0+ZnJvbSkgKyBTVFJMRU4oa3AtPnRvKSA+PSBLTUFQX0xMRU4KCQkgICAgfHwgKmtwLT5mcm9tID09IE5VTCB8fCAqa3AtPnRvID09IE5VTCkKCSAgICB7CgkJaWYgKGtwLT50byAhPSBOVUxMICYmICprcC0+dG8gPT0gTlVMKQoJCSAgICBlbXNnKF8oIkU3OTE6IEVtcHR5IGtleW1hcCBlbnRyeSIpKTsKCQl2aW1fZnJlZShrcC0+ZnJvbSk7CgkJdmltX2ZyZWUoa3AtPnRvKTsKCSAgICB9CgkgICAgZWxzZQoJCSsrY3VyYnVmLT5iX2ttYXBfZ2EuZ2FfbGVuOwoJfQoJdmltX2ZyZWUobGluZSk7CiAgICB9CgogICAgLyoKICAgICAqIHNldHVwICI6bG5vcmVtYXAiIHRvIG1hcCB0aGUga2V5cwogICAgICovCiAgICBmb3IgKGkgPSAwOyBpIDwgY3VyYnVmLT5iX2ttYXBfZ2EuZ2FfbGVuOyArK2kpCiAgICB7Cgl2aW1fc25wcmludGYoKGNoYXIgKilidWYsIHNpemVvZihidWYpLCAiPGJ1ZmZlcj4gJXMgJXMiLAoJCQkJKChrbWFwX1QgKiljdXJidWYtPmJfa21hcF9nYS5nYV9kYXRhKVtpXS5mcm9tLAoJCQkJICgoa21hcF9UICopY3VyYnVmLT5iX2ttYXBfZ2EuZ2FfZGF0YSlbaV0udG8pOwoJKHZvaWQpZG9fbWFwKDIsIGJ1ZiwgTEFOR01BUCwgRkFMU0UpOwogICAgfQoKICAgIHBfY3BvID0gc2F2ZV9jcG87CgogICAgY3VyYnVmLT5iX2ttYXBfc3RhdGUgfD0gS0VZTUFQX0xPQURFRDsKICAgIHN0YXR1c19yZWRyYXdfY3VyYnVmKCk7Cn0KCi8qCiAqIFN0b3AgdXNpbmcgJ2tleW1hcCcuCiAqLwogICAgc3RhdGljIHZvaWQKa2V5bWFwX3VubG9hZCh2b2lkKQp7CiAgICBjaGFyX3UJYnVmW0tNQVBfTUFYTEVOICsgMTBdOwogICAgaW50CQlpOwogICAgY2hhcl91CSpzYXZlX2NwbyA9IHBfY3BvOwogICAga21hcF9UCSprcDsKCiAgICBpZiAoIShjdXJidWYtPmJfa21hcF9zdGF0ZSAmIEtFWU1BUF9MT0FERUQpKQoJcmV0dXJuOwoKICAgIC8qIFNldCAnY3BvcHRpb25zJyB0byAiQyIgdG8gYXZvaWQgbGluZSBjb250aW51YXRpb24uICovCiAgICBwX2NwbyA9IChjaGFyX3UgKikiQyI7CgogICAgLyogY2xlYXIgdGhlICI6bG1hcCJzICovCiAgICBrcCA9IChrbWFwX1QgKiljdXJidWYtPmJfa21hcF9nYS5nYV9kYXRhOwogICAgZm9yIChpID0gMDsgaSA8IGN1cmJ1Zi0+Yl9rbWFwX2dhLmdhX2xlbjsgKytpKQogICAgewoJdmltX3NucHJpbnRmKChjaGFyICopYnVmLCBzaXplb2YoYnVmKSwgIjxidWZmZXI+ICVzIiwga3BbaV0uZnJvbSk7Cgkodm9pZClkb19tYXAoMSwgYnVmLCBMQU5HTUFQLCBGQUxTRSk7CiAgICB9CiAgICBrZXltYXBfY2xlYXIoJmN1cmJ1Zi0+Yl9rbWFwX2dhKTsKCiAgICBwX2NwbyA9IHNhdmVfY3BvOwoKICAgIGdhX2NsZWFyKCZjdXJidWYtPmJfa21hcF9nYSk7CiAgICBjdXJidWYtPmJfa21hcF9zdGF0ZSAmPSB+S0VZTUFQX0xPQURFRDsKICAgIHN0YXR1c19yZWRyYXdfY3VyYnVmKCk7Cn0KCiAgICB2b2lkCmtleW1hcF9jbGVhcihnYXJyYXlfVCAqa21hcCkKewogICAgaW50CSAgICBpOwogICAga21hcF9UICAqa3AgPSAoa21hcF9UICopa21hcC0+Z2FfZGF0YTsKCiAgICBmb3IgKGkgPSAwOyBpIDwga21hcC0+Z2FfbGVuOyArK2kpCiAgICB7Cgl2aW1fZnJlZShrcFtpXS5mcm9tKTsKCXZpbV9mcmVlKGtwW2ldLnRvKTsKICAgIH0KfQojZW5kaWYgLyogRkVBVF9LRVlNQVAgKi8K