From octave-sources-request at octave dot org Sun Apr 18 09:18:55 2004 Subject: Again Win32 imread and imwrite fixes From: "Rahman Mohamud Faisal MOORABY" To: octave-sources at octave dot org Date: Sun, 18 Apr 2004 14:18:22 +0000 This is a multi-part message in MIME format. ------=_NextPart_000_3fc9_16ed_5b7d Content-Type: text/plain; format=flowed Paul Sorry here are the files: ------------------------------------------------------------------------------------------------------------------------------------------ Paul Kienzel I have managed to make the imread and imwrite M files. I keep it such that it should still work with unix systems. The pre-requisite is to set the isunix to false for win32 systems. It was not working because octave uses the cygwin unix file tree system to access files and ImageMagick convert utility uses the native win32 file tree systems. Also, i found that the following command adds a new line character at the end of the string fname= file_in_path(IMAGEPATH,filename); Maybe this is for win32 systems alone. Attached are the imread.m and imwrite.m files Hope this helps. Faisal Mooraby _________________________________________________________________ Sign-up for a FREE BT Broadband connection today! http://www.msn.co.uk/specials/btbroadband ------=_NextPart_000_3fc9_16ed_5b7d Content-Type: application/octet-stream; name="imread.m" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="imread.m" I0lNUkVBRDogcmVhZCBpbWFnZXMgaW50byBvY3RhdmUgZnJvbSB2YXJpb3Vz IGZpbGUgZm9ybWF0cwojCiMgTm90ZTogdGhpcyByZXF1aXJlcyB0aGUgSW1h Z2VNYWdpY2sgImNvbnZlcnQiIHV0aWxpdHkKIyAgICAgICBnZXQgdGhpcyBm cm9tIHd3dy5pbWFnZW1hZ2ljay5vcmcgaWYgcmVxdWlyZWQKIyAgICAgICBh ZGRpdGlvbmFsIGRvY3VtZW50YXRpb24gb2Ygb3B0aW9ucyBpcyBhdmFpbGFi bGUgZnJvbSB0aGUKIyAgICAgICBjb252ZXJ0IG1hbiBwYWdlCiMKIyBCQVNJ QyBVU0FHRToKIyBpbWcgICAgPSBpbXJlYWQoIGZuYW1lICkKIyAgICAgICAg ICAgICAgICAgLSBpbWcgaXMgYSBncmV5c2NhbGUgKDAtMjU1KSBvZiBpbWFn ZSBpbiBmbmFtZQojIFtpbSxtYXBdPWltcmVhZCggZm5hbWUgKQojICAgICAg ICAgICAgICAgICAtIG1hcCBpcyBhIG1hdHJpeCBvZiBbcixnLGJdLCAwLTEg dHJpcGxlcwojICAgICAgICAgICAgICAgICAtIGltZyBpcyBhIG1hdHJpeCBv biBpbmRlY2VzIGludG8gbWFwCiMgW3IsZyxiXT0gaW1yZWFkKCBmbmFtZSAp CiMgICAgICAgICAgICAgICAgIC0gcixnLGIgYXJlIHJlZCxncmVlbixibHVl ICgwLTI1NSkgY29tcG9uZGVudHMKIwojIEZvcm1hdHMgZm9yIGltYWdlIGZu YW1lCiMgICAxLiBzaW1wbGUgZ3Vlc3MgZnJvbSBleHRlbnRpb24gaWUgImZp Zy5qcGciLCAiYmxhaC5naWYiCiMgICAyLiBzcGVjaWZ5IGV4cGxpY2l0bHkg ICAgICAgICAgICAgImpwZzpmaWcuanBnIiwgImdpZjpibGFoLmdpZiIKIyAg IDMuIHNwZWNpZnkgc3ViaW1hZ2UgZm9yIG11bHRpLWltYWdlIGZvcm1hdCAi dGlmZjpmaWxlLnRpZlszXSIKIyAgIDQuIHJhdyBpbWFnZXMgKHJvdyBtYWpv ciBmb3JtYXQpIHNwZWNpZnkgZ2VvbWV0cnkKIyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgInJhdzppbWdbMjU2eDE4MF0iCiMKIyBJ TVJFQUQgT1BUSU9OUzoKIyBpbXJlYWQgd2lsbCBzdXBwb3J0IG1vc3Qgb2Yg dGhlIG9wdGlvbnMgZm9yIGNvbnZlcnQuMQojCiMgaW1nICAgID0gaW1yZWFk KCBmbmFtZSAsIG9wdGlvbnMpCiMgW3IsZyxiXT0gaW1yZWFkKCBmbmFtZSAs IG9wdGlvbnMpCiMKIyB3aGVyZSBvcHRpb25zIGlzIGEgc3RyaW5nIG1hdHJp eCAob3IgbGlzdCkgb2Ygb3B0aW9ucwojCiMgZXhhbXBsZTogICBvcHRpb25z PSBbIi1yb3RhdGUgMjUiOwojICAgICAgICAgICAgICAgICAgICAgICItY3Jv cCAyMDB4MjAwKzE1MCsxNTAiOwojICAgICAgICAgICAgICAgICAgICAgICIt c2FtcGxlIDIwMCUiIF07CiMgICB3aWxsIHJvdGF0ZSwgY3JvcCwgYW5kIHRo ZW4gZXhwYW5kIHRoZSBpbWFnZS4KIyAgIG5vdGUgdGhhdCB0aGUgb3JkZXIg b2Ygb3BlcmF0aW9ucyBpcyBpbXBvcnRhbnQKIwojIFRoZSBmb2xsb3dpbmcg b3B0aW9ucyBhcmUgc3VwcG9ydGVkCiMgIC1hbnRpYWxpYXMgICAgICAgICAg IHJlbW92ZSBwaXhlbC1hbGlhc2luZwojICAtYmx1ciBnZW9tZXRyeSAgICAg ICBibHVyIHRoZSBpbWFnZQojICAtYm9yZGVyIGdlb21ldHJ5ICAgICBzdXJy b3VuZCBpbWFnZSB3aXRoIGEgYm9yZGVyIG9mIGNvbG9yCiMgIC1ib3JkZXJj b2xvciBjb2xvciAgIGJvcmRlciBjb2xvcgojICAtY29sb3JzIHZhbHVlICAg ICAgICBtYXhpbXVtIG51bWJlciBvZiBjb2xvcnMgaW4gdGhlIGltYWdlCiMg IC1jb2xvcnNwYWNlIHR5cGUgICAgIGFsdGVybmF0ZSBpbWFnZSBjb2xvcnNw YWNlCiMgIC1jb250cmFzdCAgICAgICAgICAgIGVuaGFuY2Ugb3IgcmVkdWNl IHRoZSBpbWFnZSBjb250cmFzdAojICAtY3JvcCBnZW9tZXRyeSAgICAgICBw cmVmZXJyZWQgc2l6ZSBhbmQgbG9jYXRpb24gb2YgdGhlIGNyb3BwZWQgaW1h Z2UKIyAgLWRlc3BlY2tsZSAgICAgICAgICAgcmVkdWNlIHRoZSBzcGVja2xl cyB3aXRoaW4gYW4gaW1hZ2UKIyAgLWRpdGhlciAgICAgICAgICAgICAgYXBw bHkgRmxveWQvU3RlaW5iZXJnIGVycm9yIGRpZmZ1c2lvbiB0byBpbWFnZQoj ICAtZHJhdyBzdHJpbmcgICAgICAgICBhbm5vdGF0ZSB0aGUgaW1hZ2Ugd2l0 aCBhIGdyYXBoaWMgcHJpbWl0aXZlCiMgIC1lZGdlIHJhZGl1cyAgICAgICAg IGFwcGx5IGEgZmlsdGVyIHRvIGRldGVjdCBlZGdlcyBpbiB0aGUgaW1hZ2UK IyAgLWVtYm9zcyByYWRpdXMgICAgICAgZW1ib3NzIGFuIGltYWdlCiMgIC1l bmhhbmNlICAgICAgICAgICAgIGFwcGx5IGEgZGlnaXRhbCBmaWx0ZXIgdG8g ZW5oYW5jZSBhIG5vaXN5IGltYWdlCiMgIC1lcXVhbGl6ZSAgICAgICAgICAg IHBlcmZvcm0gaGlzdG9ncmFtIGVxdWFsaXphdGlvbiB0byBhbiBpbWFnZQoj ICAtZmlsdGVyIHR5cGUgICAgICAgICB1c2UgdGhpcyBmaWx0ZXIgd2hlbiBy ZXNpemluZyBhbiBpbWFnZQojICAtZmxpcCAgICAgICAgICAgICAgICBmbGlw IGltYWdlIGluIHRoZSB2ZXJ0aWNhbCBkaXJlY3Rpb24KIyAgLWZsb3AgICAg ICAgICAgICAgICAgZmxvcCBpbWFnZSBpbiB0aGUgaG9yaXpvbnRhbCBkaXJl Y3Rpb24KIyAgLWZvbnQgbmFtZSAgICAgICAgICAgZm9udCBmb3IgcmVuZGVy aW5nIHRleHQKIyAgLWZyYW1lIGdlb21ldHJ5ICAgICAgc3Vycm91bmQgaW1h Z2Ugd2l0aCBhbiBvcm5hbWVudGFsIGJvcmRlcgojICAtZnV6eiBkaXN0YW5j ZSAgICAgICBjb2xvcnMgd2l0aGluIHRoaXMgZGlzdGFuY2UgYXJlIGNvbnNp ZGVyZWQgZXF1YWwKIyAgLWdhbW1hIHZhbHVlICAgICAgICAgbGV2ZWwgb2Yg Z2FtbWEgY29ycmVjdGlvbgojICAtZ2VvbWV0cnkgZ2VvbWV0cnkgICBwZXJm ZXJyZWQgc2l6ZSBvciBsb2NhdGlvbiBvZiB0aGUgaW1hZ2UKIyAgLWdhdXNz aWFuIGdlb21ldHJ5ICAgZ2F1c3NpYW4gYmx1ciBhbiBpbWFnZQojICAtZ3Jh dml0eSB0eXBlICAgICAgICB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCB0ZXh0 IHBsYWNlbWVudAojICAtaW1wbG9kZSBhbW91bnQgICAgICBpbXBsb2RlIGlt YWdlIHBpeGVscyBhYm91dCB0aGUgY2VudGVyCiMgIC1pbnRlbnQgdHlwZSAg ICAgICAgIEFic29sdXRlLCBQZXJjZXB0dWFsLCBSZWxhdGl2ZSwgb3IgU2F0 dXJhdGlvbgojICAtaW50ZXJsYWNlIHR5cGUgICAgICBOb25lLCBMaW5lLCBQ bGFuZSwgb3IgUGFydGl0aW9uCiMgIC1sZXZlbCB2YWx1ZSAgICAgICAgIGFk anVzdCB0aGUgbGV2ZWwgb2YgaW1hZ2UgY29udHJhc3QKIyAgLW1hcCBmaWxl bmFtZSAgICAgICAgdHJhbnNmb3JtIGltYWdlIGNvbG9ycyB0byBtYXRjaCB0 aGlzIHNldCBvZiBjb2xvcnMKIyAgLW1lZGlhbiByYWRpdXMgICAgICAgYXBw bHkgYSBtZWRpYW4gZmlsdGVyIHRvIHRoZSBpbWFnZQojICAtbW9kdWxhdGUg dmFsdWUgICAgICB2YXJ5IHRoZSBicmlnaHRuZXNzLCBzYXR1cmF0aW9uLCBh bmQgaHVlCiMgIC1tb25vY2hyb21lICAgICAgICAgIHRyYW5zZm9ybSBpbWFn ZSB0byBibGFjayBhbmQgd2hpdGUKIyAgLW1vc2FpYyAgICAgICAgICAgICAg Y3JlYXRlIGFuIG1vc2FpYyBmcm9tIGFuIGltYWdlIHNlcXVlbmNlCiMgIC1u ZWdhdGUgICAgICAgICAgICAgIHJlcGxhY2UgZXZlcnkgcGl4ZWwgd2l0aCBp dHMgY29tcGxlbWVudGFyeSBjb2xvcgojICAtbm9pc2UgcmFkaXVzICAgICAg ICBhZGQgb3IgcmVkdWNlIG5vaXNlIGluIGFuIGltYWdlCiMgIC1ub3JtYWxp emUgICAgICAgICAgIHRyYW5zZm9ybSBpbWFnZSB0byBzcGFuIHRoZSBmdWxs IHJhbmdlIG9mIGNvbG9ycwojICAtcGFpbnQgcmFkaXVzICAgICAgICBzaW11 bGF0ZSBhbiBvaWwgcGFpbnRpbmcKIyAgLXJhaXNlIHZhbHVlICAgICAgICAg bGlnaHRlbi9kYXJrZW4gaW1hZ2UgZWRnZXMgdG8gY3JlYXRlIGEgMy1EIGVm ZmVjdAojICAtcmVnaW9uIGdlb21ldHJ5ICAgICBhcHBseSBvcHRpb25zIHRv IGEgcG9ydGlvbiBvZiB0aGUgaW1hZ2UKIyAgLXJvbGwgZ2VvbWV0cnkgICAg ICAgcm9sbCBhbiBpbWFnZSB2ZXJ0aWNhbGx5IG9yIGhvcml6b250YWxseQoj ICAtcm90YXRlIGRlZ3JlZXMgICAgICBhcHBseSBQYWV0aCByb3RhdGlvbiB0 byB0aGUgaW1hZ2UKIyAgLXNhbXBsZSBnZW9tZXRyeSAgICAgc2NhbGUgaW1h Z2Ugd2l0aCBwaXhlbCBzYW1wbGluZwojICAtc2NhbGUgZ2VvbWV0cnkgICAg ICByZXNpemUgaW1hZ2UKIyAgLXNjZW5lIHZhbHVlICAgICAgICAgaW1hZ2Ug c2NlbmUgbnVtYmVyCiMgIC1zZWdtZW50IHZhbHVlcyAgICAgIHNlZ21lbnQg YW4gaW1hZ2UKIyAgLXNlZWQgdmFsdWUgICAgICAgICAgcHNldWRvLXJhbmRv bSBudW1iZXIgZ2VuZXJhdG9yIHNlZWQgdmFsdWUKIyAgLXNoYWRlIGRlZ3Jl ZXMgICAgICAgc2hhZGUgdGhlIGltYWdlIHVzaW5nIGEgZGlzdGFudCBsaWdo dCBzb3VyY2UKIyAgLXNoYXJwZW4gZ2VvbWV0cnkgICAgc2hhcnBlbiB0aGUg aW1hZ2UKIyAgLXNoYXZlIGdlb21ldHJ5ICAgICAgc2hhdmUgcGl4ZWxzIGZy b20gdGhlIGltYWdlIGVkZ2VzCiMgIC1zaGVhciBnZW9tZXRyeSAgICAgIHNs aWRlIG9uZSBlZGdlIG9mIHRoZSBpbWFnZSBhbG9uZyB0aGUgWCBvciBZIGF4 aXMKIyAgLXNpemUgZ2VvbWV0cnkgICAgICAgd2lkdGggYW5kIGhlaWdodCBv ZiBpbWFnZQojICAtc29sYXJpemUgdGhyZXNob2xkICBuZWdhdGUgYWxsIHBp eGVscyBhYm92ZSB0aGUgdGhyZXNob2xkIGxldmVsCiMgIC1zcHJlYWQgYW1v dW50ICAgICAgIGRpc3BsYWNlIGltYWdlIHBpeGVscyBieSBhIHJhbmRvbSBh bW91bnQKIyAgLXN3aXJsIGRlZ3JlZXMgICAgICAgc3dpcmwgaW1hZ2UgcGl4 ZWxzIGFib3V0IHRoZSBjZW50ZXIKIyAgLXRleHR1cmUgZmlsZW5hbWUgICAg bmFtZSBvZiB0ZXh0dXJlIHRvIHRpbGUgb250byB0aGUgaW1hZ2UgYmFja2dy b3VuZAojICAtdGhyZXNob2xkIHZhbHVlICAgICB0aHJlc2hvbGQgdGhlIGlt YWdlCiMgIC10cmFuc3BhcmVudCBjb2xvciAgIG1ha2UgdGhpcyBjb2xvciB0 cmFuc3BhcmVudCB3aXRoaW4gdGhlIGltYWdlCiMgIC10cmVlZGVwdGggdmFs dWUgICAgIGRlcHRoIG9mIHRoZSBjb2xvciB0cmVlCiMgIC10eXBlIHR5cGUg ICAgICAgICAgIGltYWdlIHR5cGUKIyAgLXVuc2hhcnAgZ2VvbWV0cnkgICAg c2hhcnBlbiB0aGUgaW1hZ2UKIyAgLXdhdmUgZ2VvbWV0cnkgICAgICAgYWx0 ZXIgYW4gaW1hZ2UgYWxvbmcgYSBzaW5lIHdhdmUKCiMgQXV0aG9yOiBBbmR5 IEFkbGVyCgpmdW5jdGlvbiBbb3V0MSxvdXQyLG91dDNdPSBpbXJlYWQoZmls ZW5hbWUsIG9wdGlvbnMgKTsKCnRyeSBzYXZlX2VtcHR5X2xpc3RfZWxlbWVu dHNfb2s9IGVtcHR5X2xpc3RfZWxlbWVudHNfb2s7CmNhdGNoIHNhdmVfZW1w dHlfbGlzdF9lbGVtZW50c19vaz0gMDsKZW5kCnRyeSBzYXZlX3dhcm5fZW1w dHlfbGlzdF9lbGVtZW50cz0gd2Fybl9lbXB0eV9saXN0X2VsZW1lbnRzOwpj YXRjaCBzYXZlX3dhcm5fZW1wdHlfbGlzdF9lbGVtZW50cz0gMDsKZW5kCnVu d2luZF9wcm90ZWN0CmVtcHR5X2xpc3RfZWxlbWVudHNfb2s9IDE7Cndhcm5f ZW1wdHlfbGlzdF9lbGVtZW50cz0gMDsKCmlmIChuYXJnaW4gPT0gMCkKICB1 c2FnZSAoWyJpbWcgICAgPSAgaW1yZWFkIChmaWxlbmFtZSxvcHRpb25zKVxu IiwgLi4uCiAgICAgICAgICAiW3IsZyxiXT0gIGltcmVhZCAoZmlsZW5hbWUs b3B0aW9ucylcbiIsIC4uLgogICAgICAgICAgIltpbWcsbWFwXT1pbXJlYWQg KGZpbGVuYW1lLG9wdGlvbnMpIiBdKTsKZWxzZWlmICghIGlzc3RyIChmaWxl bmFtZSkpCiAgZXJyb3IgKCJpbXJlYWQ6IGV4cGVjdGluZyBmaWxlbmFtZSBh cyBhIHN0cmluZyIpOwplbmRpZgoKaWYgYW55KGZpbGVuYW1lPT0nOicpIHx8 IGFueShmaWxlbmFtZT09J1snKQogICAjIHdlJ3ZlIHVzaW5nIHNwZWNpYWwg aW1hZ2VtYWdpY2sgY2hhcmFjdGVycywgc28gd2UgZG9uJ3QKICAgIyBkbyBh bnkgb2N0YXZlIHBhdGggcHJvY2Vzc2luZwogICBmbmFtZT0gZmlsZW5hbWU7 CmVsc2UKICAgZm5hbWU9IGZpbGVfaW5fcGF0aChJTUFHRVBBVEgsZmlsZW5h bWUpOwogICBpZiBpc2VtcHR5KGZuYW1lKQogICAgICBlcnJvcihbJ2ltcmVh ZDogZmlsZSAnIGZpbGVuYW1lICcgbm90IGZvdW5kJ10pOwogICBlbmQKZW5k CgojIFB1dCB0b2dldGhlciB0aGUgb3B0aW9ucyBzdHJpbmcKIyBUT0RPOiBh ZGQgc29tZSBlcnJvciBjaGVja2luZyBoZXJlCmlmIG5hcmdpbj09MQogICBv cHRpb25fc3RyPSIiOwplbHNlCiAgIG9wdGlvbl9zdHI9IiI7CiAgIGlmICAg ICAoIGlzX2xpc3QoIG9wdGlvbnMgKSApCiAgICAgIGZvciBpPSAxOmxlbmd0 aChvcHRpb25zKQogICAgICAgICBvcHRpb25fc3RyPVtvcHRpb25fc3RyLCIg IiwgbnRoKG9wdGlvbnMsaSkgXTsKICAgICAgZW5kCiAgIGVsc2VpZiAoIGlz c3RyKCBvcHRpb25zICkgKQogICAgICBmb3IgaT0gMTpzaXplKG9wdGlvbnMs MSkKICAgICAgICAgb3B0aW9uX3N0cj1bb3B0aW9uX3N0ciwiICIsIG9wdGlv bnMoaSw6KSBdOwogICAgICBlbmQKICAgZWxzZQogICAgIGVycm9yICgiaW1y ZWFkOiBleHBlY3Rpbmcgb3B0aW9ucyBhcyBhIHN0cmluZyIpOwogICBlbmQK ZW5kCiMKIyBkZWNvZGUgdGhlIG5hcmdvdXQgdG8gb3V0cHV0IHdoYXQgdGhl IHVzZXIgd2FudHMKIwppZiAgICAgbmFyZ291dD09MzsKICAgIHdhbnRncmV5 c2NhbGU9IDA7CiAgICB3YW50bWFwPSAwOwogICAgb3V0cHV0dHlwZT0icHBt IjsKZWxzZWlmIG5hcmdvdXQ9PTI7CiAgICB3YW50Z3JleXNjYWxlPSAwOyB3 YW50bWFwPSAxOwogICAgb3V0cHV0dHlwZT0icHBtIjsKZWxzZQogICAgd2Fu dGdyZXlzY2FsZT0gMTsgd2FudG1hcD0gMDsKICAgIG91dHB1dHR5cGU9InBn bSI7CmVuZAoKIyAgcG5hbWU9IHNwcmludGYoImNvbnZlcnQgJXMgJyVzJyAl czotIDI+L2Rldi9udWxsIiwKIyAgcG5hbWU9IHNwcmludGYoImNvbnZlcnQg JXMgJyVzJyAlczotICIsCiMgICAgICAgICAgICAgICAgIG9wdGlvbl9zdHIs IGZuYW1lLCBvdXRwdXR0eXBlKTsKIyAgZmlkPSBwb3BlbihwbmFtZSAsJ3In KTsKIyAgZGlzcChwbmFtZSk7IGRpc3AoZmlkKTsKCiAgICMgY3JlYXRlIHRl bXBvcmFyeSBmaWxlIG5hbWUKICAgdG5hbT0gdG1wbmFtKCk7CiAgIAogICBp ZiAoaXN1bml4KTsKICAgICAgICBwcmludGYoIllvdSBhcmUgcnVubmluZyB0 aGUgVU4qWCB2ZXJzaW9uIG9mIEltUmVhZFxuIik7CiAgIAljbWQ9IHNwcmlu dGYoImNvbnZlcnQgJXMgJyVzJyAlczolcyAyPi9kZXYvbnVsbCAiLAogICAg ICAgICAgICAgICAgICBvcHRpb25fc3RyLCBmbmFtZSwgb3V0cHV0dHlwZSwg dG5hbSk7CiAgIAogICBlbHNlCiAgIAlwcmludGYoIllvdSBhcmUgcnVubmlu ZyB0aGUgV2lOZE9XeiB2ZXJzaW9uIG9mIEltUmVhZFxuIik7CiAgIAkKICAg CSMgY29udmVydCBpbnB1dCBmaWxlIHBhdGggaW50byB3aW5kb3d6IGZvcm1h dAoJZm5hbWU9c3ByaW50ZigiY3lncGF0aCAtdyAlcyIsIGZuYW1lKTsgCglm bmFtZT1zeXN0ZW0oZm5hbWUpOwoJCgkjIGNoYW5nZSB0aGUgJ1wnIHN0cm9r ZXMgdG8gJy8nIGluIHRoZSBwYXRoIG5hbWUgdG8gcHJldmVudCBzdHJpbmcg Y29uZmxpY3RzCglmb3IgaT0xOmxlbmd0aChmbmFtZSkKCQkJaWYgZm5hbWUo aSk9PSdcXCc7CgkJCQlmbmFtZShpKT0nLyc7CgkJCWVuZAoJZW5kCgkKCSMg dGhpcyByb3V0aW5lIGJlY2F1c2UgYSBuZXdsaW5lIGNoYXJhY3RlciBpcyBh ZGRlZCBpbnRvIGZuYW1lIChtYXliZSBidWcgaW4gdGhlICJmaWxlX2luX3Bh dGgiIGZ1bmN0aW9uIDxzZWUgbGluZSAxMjM+LiAgVGhpcyBoYXMgdG8gYmUg cmVtb3ZlZC4gCglpZiBkb3VibGUoZm5hbWUobGVuZ3RoKGZuYW1lKSkpID4x MjIgfHwgZG91YmxlKGZuYW1lKGxlbmd0aChmbmFtZSkpKSA8NjU7IAoJCWZu YW1lPWZuYW1lKDE6bGVuZ3RoKGZuYW1lKS0xKTsKCWVuZAoKCSMgY3JlYXRl IHRoZSBjb21tYW5kIHN0cmluZwogICAgICAgIGNtZD0gc3ByaW50ZigiY29u dmVydCAlcyAiIiVzIiIgJXM6IiIlcyIiIixvcHRpb25fc3RyLGZuYW1lLG91 dHB1dHR5cGUsdG5hbSk7CgogICAgICAgICMgY29tbWFuZCBzdHJpbmcgY29u dmVydCB0aGUgaW5wdXQgZmlsZSBuYW1lIHBhdGggYmFjayB0byBVTipYIGZv cm0KICAgICAgICBmbmFtZT1zcHJpbnRmKCJjeWdwYXRoIC11ICIiJXMiIiIs IGZuYW1lKTsgCgkKCSMgQWdhaW4gY29udmVydCB0aGUgJ1wnIHN0cm9rZXMg dG8gJy8nIHRvIHByZXZlbnQgY29uZmxpY3RzCglmb3IgaT0xOmxlbmd0aCh0 bmFtKQoJCWlmIHRuYW0oaSk9PSdcXCc7CgkJCXRuYW0oaSk9Jy8nOwoJCWVu ZAoJZW5kCgkKCSMgZG8gc2FtZSBmb3IgdGhlIHRlbXAgZmlsZSBuYW1lIGNy ZWF0ZWQKCWZvciBpPTE6bGVuZ3RoKHRuYW0pCgkJCWlmIHRuYW0oaSk9PSdc XCc7CgkJCQl0bmFtKGkpPScvJzsKCQkJZW5kCgllbmQKCQoJIyBleGVjdXRl IGNvbW1hbmQgc3RyaW5nIHRvIGNoYW5nZSBmaWxlbmFtZSB0byBVTipYIGZv cm1hdAoJZm5hbWU9c3lzdGVtKGZuYW1lKTsKCQoJIyBjcmVhdGUgY29tbWFu ZCBzdHJpbmcgdG8gY29udmVydCB0ZW1wb3JhcnkgZmlsZSBuYW1lIHBhdGgg dG8gdW5peCBmb3JtYXQKCWlmIHRuYW0oMik9PSc6JzsKCQl0bmFtKDIpPXRu YW0oMSk7CgkJdG5hbSgxKT0nLyc7CgkJdG5hbT1zcHJpbnRmKCIvY3lnZHJp dmUlcyIsdG5hbSk7CgllbmQJCgkKICAgZW5kCSAgICAgICAgICAgIAogICAK ICAgc3lzdGVtKGNtZCk7CiAgIGZpZD0gZm9wZW4odG5hbSwicmIiKTsKIwoj IGNhbiB3ZSBvcGVuIHRoZSBwaXBlPwojIGlmIG5vdCAxKSBUaGUgZmlsZSBm b3JtYXQgaXMgd3JvbmcgYW5kIHRoZSBjb252ZXIgcHJvZ3JhbSBoYXMgYmFp bGVkIG91dAojICAgICAgICAyKSBUaGUgYXByb3ByaWF0ZSBjb252ZXJ0ZXIg cHJvZ3JhbSBoYXNuJ3QgYmVlbiBpbnN0YWxsZWQKIwogICBpZiBmaWQ8MDsK ICAgICAgdW5saW5rKHRuYW0pOwogICAgICBlcnJvcihbJ2NvdWxkIG5vdCBy ZWFkIGZpbGU6ICcgdG5hbV0pOwogICBlbmQKCiMgZ2V0IGZpbGUgdHlwZQog ICBsaW5lPSBmZ2V0bCggZmlkICk7CiAgIGlmICAgICBzdHJjbXAobGluZSwg J1AxJyk7ICAgYnBwPTE7IHNwcD0xOyBiaW5kYXRhPTA7CiAgIGVsc2VpZiBz dHJjbXAobGluZSwgJ1A0Jyk7ICAgYnBwPTE7IHNwcD0xOyBiaW5kYXRhPTE7 CiAgIGVsc2VpZiBzdHJjbXAobGluZSwgJ1AyJyk7ICAgYnBwPTg7IHNwcD0x OyBiaW5kYXRhPTA7CiAgIGVsc2VpZiBzdHJjbXAobGluZSwgJ1A1Jyk7ICAg YnBwPTg7IHNwcD0xOyBiaW5kYXRhPTE7CiAgIGVsc2VpZiBzdHJjbXAobGlu ZSwgJ1AzJyk7ICAgYnBwPTg7IHNwcD0zOyBiaW5kYXRhPTA7CiAgIGVsc2Vp ZiBzdHJjbXAobGluZSwgJ1A2Jyk7ICAgYnBwPTg7IHNwcD0zOyBiaW5kYXRh PTE7CiAgIGVsc2UKIyAgICAgcGNsb3NlKGZpZCk7CiAgICAgIGZjbG9zZShm aWQpOyB1bmxpbmsodG5hbSk7CiAgICAgIGVycm9yKFsnSW1hZ2UgZm9ybWF0 IGVycm9yIGZvciAnLGZuYW1lLCc6bGluZT0nLCBzZXRzdHIobGluZSldKTsK ICAgZW5kCgojIGlnbm9yZSBjb21tZW50cwogICBsaW5lPSBmZ2V0bCggZmlk ICk7CiAgIHdoaWxlIGxlbmd0aChsaW5lKT09MCB8fCBsaW5lKDEpPT0nIycK ICAgICAgbGluZT0gZmdldGwoIGZpZCApOwogICBlbmQKCiMgZ2V0IHdpZHRo LCBoZWlnaHQKICAgW3dpZCwgaGlnXT0gc3NjYW5mKCBsaW5lLCAnJWQgJWQn LCAnQycgKTsKCiMgZ2V0IG1heCBjb21wb25lbnQgdmFsdWUKICAgaWYgYnBw PT04CiAgICAgbWF4X2NvbXBvbmVudD0gc3NjYW5mKCBmZ2V0bChmaWQpLCAn JWQnICk7CiAgICAgaWYgKG1heF9jb21wb25lbnQgPiAyNTUpCiAgICAgICAj IFRoZSBQR00gc3RhbmRhcmQgc3VwcG9ydHMgb25seSB2YWx1ZXMgYmVsb3cg NjU1MzYKICAgICAgIGJwcCA9IDE2OwogICAgIGVuZGlmCiAgIGVuZAoKICAg aWYgYmluZGF0YQogICAgICBpZihicHAgPT0gMTYpCiAgICAgICAgICMgUEdN IGZvcm1hdCBoYXMgTVNCIGZpcnN0LCBpLmUuIGJpZyBlbmRpYW4KICAgICAg ICAgZGF0YSA9IGZyZWFkKGZpZCwgInVpbnQxNiIsIDAsICJpZWVlLWJlIik7 CiAgICAgIGVsc2UKICAgICAgICAgZGF0YSA9IGZyZWFkKGZpZCk7CiAgICAg IGVuZGlmCiAgICAgIG51bWRhdGE9IHNpemUoZGF0YSwxKTsKCiAgICAgIGlm IGJwcD09MQogICAgICAgICBkYXRhPSByZW0oIGZsb29yKCAoZGF0YSpvbmVz KDEsOCkpIC4vIC4uLgogICAgICAgICAgICAgICAgIChvbmVzKGxlbmd0aChk YXRhKSwxKSpbMTI4IDY0IDMyIDE2IDggNCAyIDFdKSApLCAyKSc7CiAgICAg IGVuZAogICBlbHNlCiAgICAgIG51bWRhdGE9IHdpZCpoaWcqc3BwOwogICAg ICBkYXRhPSB6ZXJvcyggbnVtZGF0YSwxICk7CiAgICAgIGRwdHI9IDE7Cgog ICAgICAgICBsaW5lPSBmZ2V0bCggZmlkICk7CiAgICAgIHdoaWxlICFmZW9m KCBmaWQpCiAgICAgICAgIHJkYXRhPSBzc2NhbmYoIGxpbmUgLCcgJWQnKTsK ICAgICAgICAgbnB0cj0gZHB0ciArIHNpemUocmRhdGEsMSk7CiAgICAgICAg IGRhdGEoIGRwdHI6bnB0ci0xICkgPSByZGF0YTsKICAgICAgICAgZHB0cj0g bnB0cjsKICAgICAgICAgbGluZT0gZmdldGwoIGZpZCApOwogICAgICBlbmQg IyBmZW9mCiAgIGVuZCAjaWYgYmluZGF0YQoKIyAgcGNsb3NlKGZpZCk7CiAg IGZjbG9zZShmaWQpOyB1bmxpbmsodG5hbSk7CgogICBpZiBzcHA9PTEKICAg ICAgZ3JleWltZz0gcmVzaGFwZSggZGF0YSg6KSwgd2lkLCBoaWcgKSc7CiAg IGVsc2VpZiBzcHA9PTMKICAgICAgcmVkaW1nPSByZXNoYXBlKCBkYXRhKDE6 c3BwOm51bWRhdGEpLCB3aWQsIGhpZyApJzsKICAgICAgZ3JuaW1nPSByZXNo YXBlKCBkYXRhKDI6c3BwOm51bWRhdGEpLCB3aWQsIGhpZyApJzsKICAgICAg Ymx1aW1nPSByZXNoYXBlKCBkYXRhKDM6c3BwOm51bWRhdGEpLCB3aWQsIGhp ZyApJzsKICAgZWxzZQogICAgICBlcnJvcihzcHJpbnRmKCJpbXJlYWQ6IGRv bid0IGtub3cgaG93IHRvIGhhbmRsZSBwbm0gd2l0aCBzcHA9JWQiLHNwcCkp OwogICBlbmQKCgojICAgVGhpcyBzZWN0aW9uIG91dHB1dHMgdGhlIGltYWdl IGluIHRoZSBkZXNpcmVkIG91dHB1dCBmb3JtYXQKIyBpZiB0aGUgdXNlciBy ZXF1ZXN0ZWQgdGhlIGNvbG91ciBtYXAsIHRoZSB3ZSByZWdlbmVyYXRlIGl0 IGZyb20KIyB0aGUgaW1hZ2UuCiMKIyAgIE9mIGNvdXJzZSwgMSkgVGhpcyBt YXkgcmVzdWx0IGluIGh1Z2UgY29sb3VybWFwcwojICAgICAgICAgICAgICAy KSBUaGUgY29sb3VybWFwIHdpbGwgbm90IGJlIGluIHRoZSBzYW1lIG9yZGVy IGFzCiMgICAgICAgICAgICAgICAgICAgaW4gdGhlIG9yaWdpbmFsIGZpbGUK CmlmIHdhbnRncmV5c2NhbGUKCiAgIGlmIGV4aXN0KCdncmV5aW1nJykKICAg ICAgb3V0MT0gZ3JleWltZzsKICAgZWxzZWlmIGV4aXN0KCdpZHhpbWcnKQog ICAgICBncmV5bWFwPSBtZWFuKG1hcCcpJzsKICAgICAgb3V0MT0gcmVzaGFw ZSggZ3JleW1hcCggaWR4aW1nICkgLCBzaXplKGlkeGltZywxKSwgc2l6ZShp ZHhpbWcsMikgKTsKICAgZWxzZQogICAgICBvdXQxPSAoIHJlZGltZytncm5p bWcrYmx1aW1nICkgLyAzIDsKICAgZW5kCgplbHNlaWYgd2FudG1hcAoKICAg aWYgZXhpc3QoJ2lkeGltZycpCiAgICAgIG91dDE9IGlkeGltZzsKICAgICAg b3V0Mj0gbWFwOwogICBlbHNlaWYgZXhpc3QoJ2dyZXlpbWcnKQogICAgICBb c2ltZywgc2lkeF0gPSBzb3J0KCBncmV5aW1nKDopICk7CiAgICAgIFtqbmt2 YWwsIHNpZHhdID0gc29ydCggc2lkeCApOwoKICAgICAgZGltZz0gWzE7IGRp ZmYoc2ltZyk+MCBdOwogICAgICBjaW1nPSBjdW1zdW0oIGRpbWcgKTsKICAg ICAgb3V0MT0gcmVzaGFwZSggY2ltZyggc2lkeCApICwgaGlnLCB3aWQpOwog ICAgICBvdXQyPSAoIHNpbWcoZmluZCggZGltZyApKSpbMSwxLDFdIC0gMSkv MjU2OwogICBlbHNlCiMKIyBHZW5lcmF0ZSBhIGNvbG91cm1hcCBmb3IgUkdC IGltYWdlcyBieSBwYWNraW5nIFJHQiBpbnRvCiMgYW4gaW50ZWdlciBhbmQg YXNzaWduaW5nIHRoZSB1bmlxdWUgdmFsdWVzIHRvIGEgY29sb3JtYXAuCiMK ICAgICAgY19yYW5nZT0gMjU2OyAjIHVzZSA2NTUzNiBmb3IgNDggYml0IGNv bG9yCiAgICAgIFtzaW1nLCBzaWR4XSA9IHNvcnQoIHJvdW5kKHJlZGltZyg6 KSkgKyAuLi4KICAgICAgICAgICAgICAgICAgY19yYW5nZSAqcm91bmQoZ3Ju aW1nKDopKSArIC4uLgogICAgICAgICAgICAgICAgY19yYW5nZV4yICpyb3Vu ZChibHVpbWcoOikpICk7CiAgICAgIFtqbmt2YWwsIHNpZHhdID0gc29ydCgg c2lkeCApOwoKICAgICAgZGltZz0gWzE7IGRpZmYoc2ltZyk+MCBdOwogICAg ICBjaW1nPSBjdW1zdW0oIGRpbWcgKTsKICAgICAgb3V0MT0gcmVzaGFwZSgg Y2ltZyggc2lkeCApICwgaGlnLCB3aWQgKTsKICAgICAgdG1wdj0gc2ltZyhm aW5kKCBkaW1nICkpOwogICAgICBvdXQyPSBbIHJlbSh0bXB2LGNfcmFuZ2Up LCAuLi4KICAgICAgICAgICAgICByZW0oZmxvb3IodG1wdi9jX3JhbmdlKSwg Y19yYW5nZSksIC4uLgogICAgICAgICAgICAgIGZsb29yKHRtcHYvY19yYW5n ZV4yKSBdL2NfcmFuZ2U7CiAgIGVuZAoKCmVsc2UKCiAgIGlmIGV4aXN0KCdn cmV5aW1nJykKICAgICAgb3V0MT0gZ3JleWltZzsKICAgICAgb3V0Mj0gZ3Jl eWltZzsKICAgICAgb3V0Mz0gZ3JleWltZzsKICAgZWxzZQogICAgICBvdXQx PSByZWRpbWc7CiAgICAgIG91dDI9IGdybmltZzsKICAgICAgb3V0Mz0gYmx1 aW1nOwogICBlbmQKCmVuZAoKdW53aW5kX3Byb3RlY3RfY2xlYW51cAplbXB0 eV9saXN0X2VsZW1lbnRzX29rPSBzYXZlX2VtcHR5X2xpc3RfZWxlbWVudHNf b2s7Cndhcm5fZW1wdHlfbGlzdF9lbGVtZW50cz0gc2F2ZV93YXJuX2VtcHR5 X2xpc3RfZWxlbWVudHM7CmVuZF91bndpbmRfcHJvdGVjdAoKIwojICRMb2c6 IGltcmVhZC5tLHYgJAojIFJldmlzaW9uIDEuMTAgIDIwMDQvMDQvMTUgMTE6 MjQ6MTAgIEZhaXNhbCBNb29yYWJ5CiMgU3VwcG9ydCBmb3IgV2luMzIgcGxh dGZvcm1zCiMKIyAkTG9nOiBpbXJlYWQubSx2ICQKIyBSZXZpc2lvbiAxLjkg IDIwMDQvMDIvMTggMTQ6NTQ6MTAgIHBraWVuemxlCiMgQ29sb3VyIHZhbHVl cyBmcm9tIHBwbSBhcmUgMC0yNTUgbm90IDEtMjU2CiMKIyBSZXZpc2lvbiAx LjggIDIwMDMvMTEvMTQgMTY6NTU6MTAgIHRwaWtvbmVuCiMgRml4IGVuZGlh bmVzcyBidWcgaW4gMTYtYml0IHJlYWRzLgojCiMgUmV2aXNpb24gMS42ICAy MDAzLzA5LzEyIDE0OjIyOjQyICBhZGIwMTQKIyBDaGFuZ2VzIHRvIGFsbG93 IHVzZSB3aXRoIGxhdGVzdCBDVlMgb2Ygb2N0YXZlIChkb19mb3J0cmFuX2lu ZGV4aW5nLCBldGMpCiMKIyBSZXZpc2lvbiAxLjUgIDIwMDMvMDcvMjUgMTk6 MTE6NDEgIHBraWVuemxlCiMgTWFrZSBzdXJlIGFsbCBmaWxlcyBuYW1lcyBy ZWZlcmVuY2VkIGluIHN5c3RlbSBjYWxscyBhcmUgd3JhcHBlZCBpbiBxdW90 ZXMKIyB0byBwcm90ZWN0IGFnYWluc3Qgc3BhY2VzIGluIHRoZSBwYXRoLgoj CiMgUmV2aXNpb24gMS40ICAyMDAyLzExLzI3IDA4OjQwOjExICBwa2llbnps ZQojIGF1dGhvci9saWNlbnNlIHVwZGF0ZXMKIwojIFJldmlzaW9uIDEuMyAg MjAwMi8wMy8xOSAxODoxNDoxMyAgYWFkbGVyCiMgdW5mb3J0dW5hdGVseSB1 c2luZyBwb3BlbiBzZWVtcyB0byBjcmVhdGUgcHJvYmxlbXMsIG1vc3RseQoj IG9uIHdpbjMyLCBidXQgYWxzbyBvbiBsaW51eCwgc28gd2UgbmVlZCB0byBt b3ZlIHRvIGEgdG1wZmlsZSBhcHByb2FjaAojCiMgUmV2aXNpb24gMS4yICAy MDAyLzAzLzE3IDA1OjI2OjE0ICBhYWRsZXIKIyBub3cgYWNjZXB0IGZpbGVu YW1lcyB3aXRoIHNwYWNlcwojCiMgUmV2aXNpb24gMS4xICAyMDAyLzAzLzEx IDAxOjU2OjQ3ICBhYWRsZXIKIyBnZW5lcmFsIGltYWdlIHJlYWQvd3JpdGUg ZnVuY3Rpb25hbGl0eSB1c2luZyBpbWFnZW1hZ2ljayB1dGlsaXRpZXMKIwoj Cg== ------=_NextPart_000_3fc9_16ed_5b7d Content-Type: application/octet-stream; name="imwrite.m" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="imwrite.m" I0lNV1JJVEU6IHdyaXRlIGltYWdlIGZyb20gb2N0YXZlIHRvIHZhcmlvdXMg ZmlsZSBmb3JtYXRzCiMKIyBOb3RlOiB0aGlzIHJlcXVpcmVzIHRoZSBJbWFn ZU1hZ2ljayAiY29udmVydCIgdXRpbGl0eS4KIyAgICAgICBnZXQgdGhpcyBm cm9tIHd3dy5pbWFnZW1hZ2ljay5vcmcgaWYgcmVxdWlyZWQKIyAgICAgICBh ZGRpdGlvbmFsIGRvY3VtZW50YXRpb24gb2Ygb3B0aW9ucyBpcyBhdmFpbGFi bGUgZnJvbSB0aGUKIyAgICAgICBjb252ZXJ0IG1hbiBwYWdlCiMKIyBCQVNJ QyBVU0FHRToKIyBpbXdyaXRlKCBmbmFtZSwgaW1nICkKIyAgICAgICAgICAg ICAgICAgLSBpbWcgaXMgYSBncmV5c2NhbGUgKDAtMjU1KSBvZiBpbWFnZSBp biBmbmFtZQojIGltd3JpdGUoIGZuYW1lLCBpbWcsIG1hcCApCiMgICAgICAg ICAgICAgICAgIC0gbWFwIGlzIGEgbWF0cml4IG9mIFtyLGcsYl0sIDAtMSB0 cmlwbGVzCiMgICAgICAgICAgICAgICAgIC0gaW1nIGlzIGEgbWF0cml4IG9u IGluZGVjZXMgaW50byBtYXAKIyBpbXdyaXRlKCBmbmFtZSwgcixnLGIgKTsK IyAgICAgICAgICAgICAgICAgLSByLGcsYiBhcmUgcmVkLGdyZWVuLGJsdWUg KDAtMjU1KSBjb21wb25kZW50cwojCiMgRm9ybWF0cyBmb3IgaW1hZ2UgZm5h bWUKIyAgIDEuIHNpbXBsZSBndWVzcyBmcm9tIGV4dGVudGlvbiBpZSAiZmln LmpwZyIsICJibGFoLmdpZiIKIyAgIDIuIHNwZWNpZnkgZXhwbGljaXRseSAg ICAgICAgICAgICAianBnOmZpZy5qcGciLCAiZ2lmOmJsYWguZ2lmIgojICAg My4gc3BlY2lmeSBzdWJpbWFnZSBmb3IgbXVsdGktaW1hZ2UgZm9ybWF0ICJ0 aWZmOmZpbGUudGlmWzNdIgojICAgNC4gcmF3IGltYWdlcyAocm93IG1ham9y IGZvcm1hdCkgc3BlY2lmeSBnZW9tZXRyeQojICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAicmF3OmltZ1syNTZ4MTgwXSIKIwojIElN UkVBRCBPUFRJT05TOgojIGltcmVhZCB3aWxsIHN1cHBvcnQgbW9zdCBvZiB0 aGUgb3B0aW9ucyBmb3IgY29udmVydC4xCiMKIyBpbXdyaXRlKCBmbmFtZSwg aW1nLCBvcHRpb25zICkKIyBpbXdyaXRlKCBmbmFtZSwgaW1nLCBtYXAsIG9w dGlvbnMgKQojIGltd3JpdGUoIGZuYW1lLCByLGcsYiwgb3B0aW9ucyApOwoj CiMgd2hlcmUgb3B0aW9ucyBpcyBhIHN0cmluZyBtYXRyaXggKG9yIGxpc3Qp IG9mIG9wdGlvbnMKIwojIGV4YW1wbGU6ICAgb3B0aW9ucz0gWyItcm90YXRl IDI1IjsKIyAgICAgICAgICAgICAgICAgICAgICAiLWNyb3AgMjAweDIwMCsx NTArMTUwIjsKIyAgICAgICAgICAgICAgICAgICAgICAiLXNhbXBsZSAyMDAl IiBdOwojICAgd2lsbCByb3RhdGUsIGNyb3AsIGFuZCB0aGVuIGV4cGFuZCB0 aGUgaW1hZ2UuCiMgICBub3RlIHRoYXQgdGhlIG9yZGVyIG9mIG9wZXJhdGlv bnMgaXMgaW1wb3J0YW50CiMKIyBUaGUgZm9sbG93aW5nIG9wdGlvbnMgYXJl IHN1cHBvcnRlZAojICAtYW50aWFsaWFzICAgICAgICAgICByZW1vdmUgcGl4 ZWwtYWxpYXNpbmcKIyAgLWJhY2tncm91bmQgY29sb3IgICAgYmFja2dyb3Vu ZCBjb2xvcgojICAtYmx1ciBnZW9tZXRyeSAgICAgICBibHVyIHRoZSBpbWFn ZQojICAtYm9yZGVyIGdlb21ldHJ5ICAgICBzdXJyb3VuZCBpbWFnZSB3aXRo IGEgYm9yZGVyIG9mIGNvbG9yCiMgIC1ib3JkZXJjb2xvciBjb2xvciAgIGJv cmRlciBjb2xvcgojICAtYm94IGNvbG9yICAgICAgICAgICBjb2xvciBmb3Ig YW5ub3RhdGlvbiBib3VuZGluZyBib3gKIyAgLWNoYXJjb2FsIHJhZGl1cyAg ICAgc2ltdWxhdGUgYSBjaGFyY29hbCBkcmF3aW5nCiMgIC1jb2xvcml6ZSB2 YWx1ZSAgICAgIGNvbG9yaXplIHRoZSBpbWFnZSB3aXRoIHRoZSBmaWxsIGNv bG9yCiMgIC1jb2xvcnMgdmFsdWUgICAgICAgIHByZWZlcnJlZCBudW1iZXIg b2YgY29sb3JzIGluIHRoZSBpbWFnZQojICAtY29sb3JzcGFjZSB0eXBlICAg ICBhbHRlcm5hdGUgaW1hZ2UgY29sb3JzcGFjZQojICAtY29tbWVudCBzdHJp bmcgICAgICBhbm5vdGF0ZSBpbWFnZSB3aXRoIGNvbW1lbnQKIyAgLWNvbXBy ZXNzIHR5cGUgICAgICAgdHlwZSBvZiBpbWFnZSBjb21wcmVzc2lvbgojICAt Y29udHJhc3QgICAgICAgICAgICBlbmhhbmNlIG9yIHJlZHVjZSB0aGUgaW1h Z2UgY29udHJhc3QKIyAgLWNyb3AgZ2VvbWV0cnkgICAgICAgcHJlZmVycmVk IHNpemUgYW5kIGxvY2F0aW9uIG9mIHRoZSBjcm9wcGVkIGltYWdlCiMgIC1k ZW5zaXR5IGdlb21ldHJ5ICAgIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIGRl bnNpdHkgb2YgdGhlIGltYWdlCiMgIC1kZXB0aCB2YWx1ZSAgICAgICAgIGRl cHRoIG9mIHRoZSBpbWFnZQojICAtZGVzcGVja2xlICAgICAgICAgICByZWR1 Y2UgdGhlIHNwZWNrbGVzIHdpdGhpbiBhbiBpbWFnZQojICAtZGlzcG9zZSBt ZXRob2QgICAgICBHSUYgZGlzcG9zYWwgbWV0aG9kCiMgIC1kaXRoZXIgICAg ICAgICAgICAgIGFwcGx5IEZsb3lkL1N0ZWluYmVyZyBlcnJvciBkaWZmdXNp b24gdG8gaW1hZ2UKIyAgLWRyYXcgc3RyaW5nICAgICAgICAgYW5ub3RhdGUg dGhlIGltYWdlIHdpdGggYSBncmFwaGljIHByaW1pdGl2ZQojICAtZWRnZSBy YWRpdXMgICAgICAgICBhcHBseSBhIGZpbHRlciB0byBkZXRlY3QgZWRnZXMg aW4gdGhlIGltYWdlCiMgIC1lbWJvc3MgcmFkaXVzICAgICAgIGVtYm9zcyBh biBpbWFnZQojICAtZW5oYW5jZSAgICAgICAgICAgICBhcHBseSBhIGRpZ2l0 YWwgZmlsdGVyIHRvIGVuaGFuY2UgYSBub2lzeSBpbWFnZQojICAtZXF1YWxp emUgICAgICAgICAgICBwZXJmb3JtIGhpc3RvZ3JhbSBlcXVhbGl6YXRpb24g dG8gYW4gaW1hZ2UKIyAgLWZpbGwgY29sb3IgICAgICAgICAgY29sb3IgdG8g dXNlIHdoZW4gZmlsbGluZyBhIGdyYXBoaWMgcHJpbWl0aXZlCiMgIC1maWx0 ZXIgdHlwZSAgICAgICAgIHVzZSB0aGlzIGZpbHRlciB3aGVuIHJlc2l6aW5n IGFuIGltYWdlCiMgIC1mbGlwICAgICAgICAgICAgICAgIGZsaXAgaW1hZ2Ug aW4gdGhlIHZlcnRpY2FsIGRpcmVjdGlvbgojICAtZmxvcCAgICAgICAgICAg ICAgICBmbG9wIGltYWdlIGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbgoj ICAtZm9udCBuYW1lICAgICAgICAgICBmb250IGZvciByZW5kZXJpbmcgdGV4 dAojICAtZnJhbWUgZ2VvbWV0cnkgICAgICBzdXJyb3VuZCBpbWFnZSB3aXRo IGFuIG9ybmFtZW50YWwgYm9yZGVyCiMgIC1mdXp6IGRpc3RhbmNlICAgICAg IGNvbG9ycyB3aXRoaW4gdGhpcyBkaXN0YW5jZSBhcmUgY29uc2lkZXJlZCBl cXVhbAojICAtZ2FtbWEgdmFsdWUgICAgICAgICBsZXZlbCBvZiBnYW1tYSBj b3JyZWN0aW9uCiMgIC1nZW9tZXRyeSBnZW9tZXRyeSAgIHBlcmZlcnJlZCBz aXplIG9yIGxvY2F0aW9uIG9mIHRoZSBpbWFnZQojICAtZ2F1c3NpYW4gZ2Vv bWV0cnkgICBnYXVzc2lhbiBibHVyIGFuIGltYWdlCiMgIC1ncmF2aXR5IHR5 cGUgICAgICAgIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHRleHQgcGxhY2Vt ZW50CiMgIC1pbXBsb2RlIGFtb3VudCAgICAgIGltcGxvZGUgaW1hZ2UgcGl4 ZWxzIGFib3V0IHRoZSBjZW50ZXIKIyAgLWludGVudCB0eXBlICAgICAgICAg QWJzb2x1dGUsIFBlcmNlcHR1YWwsIFJlbGF0aXZlLCBvciBTYXR1cmF0aW9u CiMgIC1pbnRlcmxhY2UgdHlwZSAgICAgIE5vbmUsIExpbmUsIFBsYW5lLCBv ciBQYXJ0aXRpb24KIyAgLWxhYmVsIG5hbWUgICAgICAgICAgYXNzaWduIGEg bGFiZWwgdG8gYW4gaW1hZ2UKIyAgLWxldmVsIHZhbHVlICAgICAgICAgYWRq dXN0IHRoZSBsZXZlbCBvZiBpbWFnZSBjb250cmFzdAojICAtbGlzdCB0eXBl ICAgICAgICAgICBDb2xvciwgRGVsZWdhdGUsIEZvcm1hdCwgTWFnaWMsIE1v ZHVsZSwgb3IgVHlwZQojICAtbWFwIGZpbGVuYW1lICAgICAgICB0cmFuc2Zv cm0gaW1hZ2UgY29sb3JzIHRvIG1hdGNoIHRoaXMgc2V0IG9mIGNvbG9ycwoj ICAtbWF0dGUgICAgICAgICAgICAgICBzdG9yZSBtYXR0ZSBjaGFubmVsIGlm IHRoZSBpbWFnZSBoYXMgb25lCiMgIC1tZWRpYW4gcmFkaXVzICAgICAgIGFw cGx5IGEgbWVkaWFuIGZpbHRlciB0byB0aGUgaW1hZ2UKIyAgLW1vZHVsYXRl IHZhbHVlICAgICAgdmFyeSB0aGUgYnJpZ2h0bmVzcywgc2F0dXJhdGlvbiwg YW5kIGh1ZQojICAtbW9ub2Nocm9tZSAgICAgICAgICB0cmFuc2Zvcm0gaW1h Z2UgdG8gYmxhY2sgYW5kIHdoaXRlCiMgIC1tb3JwaCB2YWx1ZSAgICAgICAg IG1vcnBoIGFuIGltYWdlIHNlcXVlbmNlCiMgIC1uZWdhdGUgICAgICAgICAg ICAgIHJlcGxhY2UgZXZlcnkgcGl4ZWwgd2l0aCBpdHMgY29tcGxlbWVudGFy eSBjb2xvciAKIyAgLW5vaXNlIHJhZGl1cyAgICAgICAgYWRkIG9yIHJlZHVj ZSBub2lzZSBpbiBhbiBpbWFnZQojICAtbm9ybWFsaXplICAgICAgICAgICB0 cmFuc2Zvcm0gaW1hZ2UgdG8gc3BhbiB0aGUgZnVsbCByYW5nZSBvZiBjb2xv cnMKIyAgLW9wYXF1ZSBjb2xvciAgICAgICAgY2hhbmdlIHRoaXMgY29sb3Ig dG8gdGhlIGZpbGwgY29sb3IKIyAgLXBhZ2UgZ2VvbWV0cnkgICAgICAgc2l6 ZSBhbmQgbG9jYXRpb24gb2YgYW4gaW1hZ2UgY2FudmFzCiMgIC1wYWludCBy YWRpdXMgICAgICAgIHNpbXVsYXRlIGFuIG9pbCBwYWludGluZwojICAtcHJv ZmlsZSBmaWxlbmFtZSAgICBhZGQgSUNNIG9yIElQVEMgaW5mb3JtYXRpb24g cHJvZmlsZSB0byBpbWFnZQojICAtcXVhbGl0eSB2YWx1ZSAgICAgICBKUEVH L01JRkYvUE5HIGNvbXByZXNzaW9uIGxldmVsCiMgIC1yYWlzZSB2YWx1ZSAg ICAgICAgIGxpZ2h0ZW4vZGFya2VuIGltYWdlIGVkZ2VzIHRvIGNyZWF0ZSBh IDMtRCBlZmZlY3QKIyAgLXJlZ2lvbiBnZW9tZXRyeSAgICAgYXBwbHkgb3B0 aW9ucyB0byBhIHBvcnRpb24gb2YgdGhlIGltYWdlCiMgIC1yb2xsIGdlb21l dHJ5ICAgICAgIHJvbGwgYW4gaW1hZ2UgdmVydGljYWxseSBvciBob3Jpem9u dGFsbHkKIyAgLXJvdGF0ZSBkZWdyZWVzICAgICAgYXBwbHkgUGFldGggcm90 YXRpb24gdG8gdGhlIGltYWdlCiMgIC1zYW1wbGUgZ2VvbWV0cnkgICAgIHNj YWxlIGltYWdlIHdpdGggcGl4ZWwgc2FtcGxpbmcKIyAgLXNjYWxlIGdlb21l dHJ5ICAgICAgcmVzaXplIGltYWdlCiMgIC1zZWdtZW50IHZhbHVlcyAgICAg IHNlZ21lbnQgYW4gaW1hZ2UKIyAgLXNlZWQgdmFsdWUgICAgICAgICAgcHNl dWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHNlZWQgdmFsdWUKIyAgLXNo YWRlIGRlZ3JlZXMgICAgICAgc2hhZGUgdGhlIGltYWdlIHVzaW5nIGEgZGlz dGFudCBsaWdodCBzb3VyY2UKIyAgLXNoYXJwZW4gZ2VvbWV0cnkgICAgc2hh cnBlbiB0aGUgaW1hZ2UKIyAgLXNoYXZlIGdlb21ldHJ5ICAgICAgc2hhdmUg cGl4ZWxzIGZyb20gdGhlIGltYWdlIGVkZ2VzCiMgIC1zaGVhciBnZW9tZXRy eSAgICAgIHNsaWRlIG9uZSBlZGdlIG9mIHRoZSBpbWFnZSBhbG9uZyB0aGUg WCBvciBZIGF4aXMKIyAgLXNpemUgZ2VvbWV0cnkgICAgICAgd2lkdGggYW5k IGhlaWdodCBvZiBpbWFnZQojICAtc29sYXJpemUgdGhyZXNob2xkICBuZWdh dGUgYWxsIHBpeGVscyBhYm92ZSB0aGUgdGhyZXNob2xkIGxldmVsCiMgIC1z cHJlYWQgYW1vdW50ICAgICAgIGRpc3BsYWNlIGltYWdlIHBpeGVscyBieSBh IHJhbmRvbSBhbW91bnQKIyAgLXN0cm9rZSBjb2xvciAgICAgICAgY29sb3Ig dG8gdXNlIHdoZW4gc3Rva2luZyBhIGdyYXBoaWMgcHJpbWl0aXZlCiMgIC1z dHJva2V3aWR0aCB2YWx1ZSAgIHdpZHRoIG9mIHN0cm9rZQojICAtc3dpcmwg ZGVncmVlcyAgICAgICBzd2lybCBpbWFnZSBwaXhlbHMgYWJvdXQgdGhlIGNl bnRlcgojICAtdGV4dHVyZSBmaWxlbmFtZSAgICBuYW1lIG9mIHRleHR1cmUg dG8gdGlsZSBvbnRvIHRoZSBpbWFnZSBiYWNrZ3JvdW5kCiMgIC10aHJlc2hv bGQgdmFsdWUgICAgIHRocmVzaG9sZCB0aGUgaW1hZ2UKIyAgLXRpbGUgZmls ZW5hbWUgICAgICAgdGlsZSBpbWFnZSB3aGVuIGZpbGxpbmcgYSBncmFwaGlj IHByaW1pdGl2ZQojICAtdHJhbnNwYXJlbnQgY29sb3IgICBtYWtlIHRoaXMg Y29sb3IgdHJhbnNwYXJlbnQgd2l0aGluIHRoZSBpbWFnZQojICAtdHJlZWRl cHRoIHZhbHVlICAgICBkZXB0aCBvZiB0aGUgY29sb3IgdHJlZQojICAtdHlw ZSB0eXBlICAgICAgICAgICBpbWFnZSB0eXBlCiMgIC11bml0cyB0eXBlICAg ICAgICAgIFBpeGVsc1BlckluY2gsIFBpeGVsc1BlckNlbnRpbWV0ZXIsIG9y IFVuZGVmaW5lZAojICAtdW5zaGFycCBnZW9tZXRyeSAgICBzaGFycGVuIHRo ZSBpbWFnZQoKIyBBdXRob3I6IEFuZHkgQWRsZXIKCmZ1bmN0aW9uIGltd3Jp dGUoZm5hbWUsIHAyLCBwMyAscDQgLHA1ICk7Cgp0cnkgc2F2ZV9lbXB0eV9s aXN0X2VsZW1lbnRzX29rPSBlbXB0eV9saXN0X2VsZW1lbnRzX29rOwpjYXRj aCBzYXZlX2VtcHR5X2xpc3RfZWxlbWVudHNfb2s9IDA7CmVuZAp0cnkgc2F2 ZV93YXJuX2VtcHR5X2xpc3RfZWxlbWVudHM9IHdhcm5fZW1wdHlfbGlzdF9l bGVtZW50czsKY2F0Y2ggc2F2ZV93YXJuX2VtcHR5X2xpc3RfZWxlbWVudHM9 IDA7CmVuZAp1bndpbmRfcHJvdGVjdAplbXB0eV9saXN0X2VsZW1lbnRzX29r PSAxOwp3YXJuX2VtcHR5X2xpc3RfZWxlbWVudHM9IDA7CgppZiAgKCBuYXJn aW4gPD0gMSApICAgICB8fCAuLi4KICAgICggISBpc3N0ciAoZm5hbWUpKSAg fHwgLi4uCiAgICAoIG5hcmdpbiA9PSAyICYmIGlzc3RyKHAyKSApCiAgICB1 c2FnZShbIC4uLgogICAgImltd3JpdGUoIGZuYW1lLCBpbWcgKVxuIiwgLi4u CiAgICAiaW13cml0ZSggZm5hbWUsIGltZywgbWFwIClcbiIsIC4uLgogICAg Imltd3JpdGUoIGZuYW1lLCByLGcsYiApO1xuIiwgLi4uCiAgICAiaW13cml0 ZSggZm5hbWUsIGltZywgb3B0aW9ucyApXG4iLCAuLi4KICAgICJpbXdyaXRl KCBmbmFtZSwgaW1nLCBtYXAsIG9wdGlvbnMgKVxuIiwgLi4uCiAgICAiaW13 cml0ZSggZm5hbWUsIHIsZyxiLCBvcHRpb25zICk7XG4iXSk7CmVuZGlmCgoj IFB1dCB0b2dldGhlciB0aGUgb3B0aW9ucyBzdHJpbmcKIyBUT0RPOiBhZGQg c29tZSBlcnJvciBjaGVja2luZyB0byBvcHRpb25zCm9wdGlvbl9zdHI9IiI7 Cm5fbWF0PSBuYXJnaW4tMTsKCm9wdGlvbnM9IGV2YWwoc3ByaW50ZigicCVk IixuYXJnaW4pKTsKIyBwcm9jZXNzIG9wdGlvbnMgc3RyaW5ncyBpZiBnaXZl bgppZiAgICBpc3N0cihvcHRpb25zKQogICBuX21hdC0tOwogICBmb3IgaT0g MTpzaXplKG9wdGlvbnMsMSkKICAgICAgb3B0aW9uX3N0cj1bb3B0aW9uX3N0 ciwiICIsIG9wdGlvbnMoaSw6KSBdOwogICBlbmQKZWxzZWlmIGlzX2xpc3Qo IG9wdGlvbnMgKQogICBuX21hdC0tOwogICBmb3IgaT0gMTpsZW5ndGgob3B0 aW9ucykKICAgICAgb3B0aW9uX3N0cj1bb3B0aW9uX3N0ciwiICIsIG50aChv cHRpb25zLGkpIF07CiAgIGVuZAplbmQKCltoaWcsd2lkXSA9IHNpemUocDIp OwppZiBuX21hdD09MQogICBkYXRhPSBwMic7CiAgIG91dHB1dHR5cGU9InBn bSI7CiAgIHBubV9zaWc9IlA1IjsKZWxzZWlmIG5fbWF0PT0yCiAgIGltZz0g cDInOwogICBkYXRhPSBbIDI1NSpyZXNoYXBlKHAzKGltZywxKSwxLCBoaWcq d2lkKTsKICAgICAgICAgICAyNTUqcmVzaGFwZShwMyhpbWcsMiksMSwgaGln KndpZCk7CiAgICAgICAgICAgMjU1KnJlc2hhcGUocDMoaW1nLDMpLDEsIGhp Zyp3aWQpIF07CiAgIG91dHB1dHR5cGU9InBwbSI7CiAgIHBubV9zaWc9IlA2 IjsKZWxzZWlmIG5fbWF0PT0zCiAgIGRhdGE9IFsgcmVzaGFwZShwMicsMSwg aGlnKndpZCk7CiAgICAgICAgICAgcmVzaGFwZShwMycsMSwgaGlnKndpZCk7 CiAgICAgICAgICAgcmVzaGFwZShwNCcsMSwgaGlnKndpZCkgXTsKICAgb3V0 cHV0dHlwZT0icHBtIjsKICAgcG5tX3NpZz0iUDYiOwplbHNlCiAgIGVycm9y KCJpbXdyaXRlOiB0b28gbWFueSBkYXRhIG1hdHJpY2VzIHNwZWNpZmllZCIp OwplbmQKCiMgIHBuYW1lPSBzcHJpbnRmKCJjb252ZXJ0ICVzICVzOi0gJyVz JyAyPi9kZXYvbnVsbCIsCiMgICAgICAgICAgICAgICAgIG9wdGlvbl9zdHIs IG91dHB1dHR5cGUsIGZuYW1lKTsKIyAgZmlkPSBwb3BlbihwbmFtZSAsJ3cn KTsKCiAgIHRuYW09IHRtcG5hbSgpOwogICAKICAgICAgICAgICAgICAgICAK ICAgICAgIyBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUgbmFtZQogICAgICB0bmFt PSB0bXBuYW0oKTsKICAgICAgCiAgICAgIGlmIChpc3VuaXgpOwogICAgICAg ICAgIHByaW50ZigiWW91IGFyZSBydW5uaW5nIHRoZSBVTipYIHZlcnNpb24g b2YgSW1Xcml0ZVxuIik7CiAgICAgIAljbWQ9IHNwcmludGYoImNvbnZlcnQg JXMgJyVzOiVzJyAnJXMnIDI+L2Rldi9udWxsIiwKICAgICAgICAgICAgICAg ICBvcHRpb25fc3RyLCBvdXRwdXR0eXBlLCB0bmFtLCBmbmFtZSk7CiAgICAg IAogICAgICBlbHNlCiAgICAgIAlwcmludGYoIllvdSBhcmUgcnVubmluZyB0 aGUgV2lOZE9XeiB2ZXJzaW9uIG9mIEltV3JpdGVcbiIpOwogICAgICAJCiAg ICAgIAkjIGNvbnZlcnQgaW5wdXQgZmlsZSBwYXRoIGludG8gd2luZG93eiBm b3JtYXQKICAgCWZuYW1lPXNwcmludGYoImN5Z3BhdGggLXcgJXMiLCBmbmFt ZSk7IAogICAJZm5hbWU9c3lzdGVtKGZuYW1lKTsKICAgCQogICAJIyBjaGFu Z2UgdGhlICdcJyBzdHJva2VzIHRvICcvJyBpbiB0aGUgcGF0aCBuYW1lIHRv IHByZXZlbnQgc3RyaW5nIGNvbmZsaWN0cwogICAJZm9yIGk9MTpsZW5ndGgo Zm5hbWUpCiAgIAkJCWlmIGZuYW1lKGkpPT0nXFwnOwogICAJCQkJZm5hbWUo aSk9Jy8nOwogICAJCQllbmQKICAgCWVuZAogICAJCiAgIAkjIHRoaXMgcm91 dGluZSBiZWNhdXNlIGEgbmV3bGluZSBjaGFyYWN0ZXIgaXMgYWRkZWQgaW50 byBmbmFtZSAobWF5YmUgYnVnIGluIHRoZSAiZmlsZV9pbl9wYXRoIiBmdW5j dGlvbiA8c2VlIGxpbmUgMTIzPi4gIFRoaXMgaGFzIHRvIGJlIHJlbW92ZWQu IAogICAJaWYgZG91YmxlKGZuYW1lKGxlbmd0aChmbmFtZSkpKSA+MTIyIHx8 IGRvdWJsZShmbmFtZShsZW5ndGgoZm5hbWUpKSkgPDY1OyAKICAgCQlmbmFt ZT1mbmFtZSgxOmxlbmd0aChmbmFtZSktMSk7CiAgIAllbmQKICAgCiAgIAkj IGNyZWF0ZSB0aGUgY29tbWFuZCBzdHJpbmcKICAgICAgICAgICBjbWQ9IHNw cmludGYoImNvbnZlcnQgJXMgIiIlczolcyIiICIiJXMiIiIsb3B0aW9uX3N0 cixvdXRwdXR0eXBlLHRuYW0sIGZuYW1lKTsKICAgCiAgICAgICAgICAgIyBj b21tYW5kIHN0cmluZyBjb252ZXJ0IHRoZSBpbnB1dCBmaWxlIG5hbWUgcGF0 aCBiYWNrIHRvIFVOKlggZm9ybQogICAgICAgICAgIGZuYW1lPXNwcmludGYo ImN5Z3BhdGggLXUgIiIlcyIiIiwgZm5hbWUpOyAKICAgCQogICAJIyBBZ2Fp biBjb252ZXJ0IHRoZSAnXCcgc3Ryb2tlcyB0byAnLycgdG8gcHJldmVudCBj b25mbGljdHMKICAgCWZvciBpPTE6bGVuZ3RoKHRuYW0pCiAgIAkJaWYgdG5h bShpKT09J1xcJzsKICAgCQkJdG5hbShpKT0nLyc7CiAgIAkJZW5kCiAgIAll bmQKICAgCQogICAJIyBkbyBzYW1lIGZvciB0aGUgdGVtcCBmaWxlIG5hbWUg Y3JlYXRlZAogICAJZm9yIGk9MTpsZW5ndGgodG5hbSkKICAgCQkJaWYgdG5h bShpKT09J1xcJzsKICAgCQkJCXRuYW0oaSk9Jy8nOwogICAJCQllbmQKICAg CWVuZAogICAJCiAgIAkjIGV4ZWN1dGUgY29tbWFuZCBzdHJpbmcgdG8gY2hh bmdlIGZpbGVuYW1lIHRvIFVOKlggZm9ybWF0CiAgIAlmbmFtZT1zeXN0ZW0o Zm5hbWUpOwogICAJCiAgIAkjIGNyZWF0ZSBjb21tYW5kIHN0cmluZyB0byBj b252ZXJ0IHRlbXBvcmFyeSBmaWxlIG5hbWUgcGF0aCB0byB1bml4IGZvcm1h dAogICAJaWYgdG5hbSgyKT09JzonOwogICAJCXRuYW0oMik9dG5hbSgxKTsK ICAgCQl0bmFtKDEpPScvJzsKICAgCQl0bmFtPXNwcmludGYoIi9jeWdkcml2 ZSVzIix0bmFtKTsKICAgCWVuZAkKICAgCQogICBlbmQJICAgICAgICAKICAg CiAgIGZpZD0gZm9wZW4odG5hbSwgIndiIik7CiAgIAojICBkaXNwKHBuYW1l KTsgZGlzcChmaWQpOwogICBpZiBmaWQ8MDsKICAgICAgZXJyb3IoWydjb3Vs ZCBub3QgY3JlYXRlIGZpbGU6ICcsdG5hbV0pOwogICBlbmQKCiAgIGZwcmlu dGYoZmlkLCIlc1xuJWQgJWRcbjI1NVxuIixwbm1fc2lnLHdpZCxoaWcpOwog ICB3cml0ZV9jb3VudD0gZndyaXRlKGZpZCxkYXRhKDopKTsKICAgaWYgd3Jp dGVfY291bnQgIT0gcHJvZChzaXplKGRhdGEpKQogICAgICBmY2xvc2UoZmlk KTsgdW5saW5rKHRuYW0pOwogICAgICBlcnJvcihbJ1VuYWJsZSB0byB3cml0 ZSBpbWFnZTogJywgZm5hbWUgXSk7CiAgIGVuZAoKICAgZmNsb3NlKGZpZCk7 CiAgIFtqbmsscmV0Y29kZV0gPSBzeXN0ZW0oY21kKTsKICAgaWYgcmV0Y29k ZSAhPTAgCiAgICAgIGVycm9yKCdjb3VsZCBub3QgY2FsbCBpbWFnZW1hZ2lj ayBjb252ZXJ0Jyk7CiAgIGVuZAogICB1bmxpbmsoIHRuYW0gKTsKCnVud2lu ZF9wcm90ZWN0X2NsZWFudXAKZW1wdHlfbGlzdF9lbGVtZW50c19vaz0gc2F2 ZV9lbXB0eV9saXN0X2VsZW1lbnRzX29rOwp3YXJuX2VtcHR5X2xpc3RfZWxl bWVudHM9IHNhdmVfd2Fybl9lbXB0eV9saXN0X2VsZW1lbnRzOwplbmRfdW53 aW5kX3Byb3RlY3QKCiMKIyAkTG9nOiBpbXdyaXRlLm0sdiAkCiMgUmV2aXNp b24gMS42ICAyMDAzLzA5LzEyIDE0OjIyOjQyICBhZGIwMTQKIyBDaGFuZ2Vz IHRvIGFsbG93IHVzZSB3aXRoIGxhdGVzdCBDVlMgb2Ygb2N0YXZlIChkb19m b3J0cmFuX2luZGV4aW5nLCBldGMpCiMKIyBSZXZpc2lvbiAxLjUgIDIwMDMv MDcvMjUgMTk6MTE6NDEgIHBraWVuemxlCiMgTWFrZSBzdXJlIGFsbCBmaWxl cyBuYW1lcyByZWZlcmVuY2VkIGluIHN5c3RlbSBjYWxscyBhcmUgd3JhcHBl ZCBpbiBxdW90ZXMKIyB0byBwcm90ZWN0IGFnYWluc3Qgc3BhY2VzIGluIHRo ZSBwYXRoLgojCiMgUmV2aXNpb24gMS40ICAyMDAyLzExLzI3IDA4OjQwOjEx ICBwa2llbnpsZQojIGF1dGhvci9saWNlbnNlIHVwZGF0ZXMKIwojIFJldmlz aW9uIDEuMyAgMjAwMi8wMy8xOSAxODoxNDoxMyAgYWFkbGVyCiMgdW5mb3J0 dW5hdGVseSB1c2luZyBwb3BlbiBzZWVtcyB0byBjcmVhdGUgcHJvYmxlbXMs IG1vc3RseQojIG9uIHdpbjMyLCBidXQgYWxzbyBvbiBsaW51eCwgc28gd2Ug bmVlZCB0byBtb3ZlIHRvIGEgdG1wZmlsZSBhcHByb2FjaAojCiMgUmV2aXNp b24gMS4yICAyMDAyLzAzLzE3IDA1OjI2OjE0ICBhYWRsZXIKIyBub3cgYWNj ZXB0IGZpbGVuYW1lcyB3aXRoIHNwYWNlcwojCiMgUmV2aXNpb24gMS4xICAy MDAyLzAzLzExIDAxOjU2OjQ3ICBhYWRsZXIKIyBnZW5lcmFsIGltYWdlIHJl YWQvd3JpdGUgZnVuY3Rpb25hbGl0eSB1c2luZyBpbWFnZW1hZ2ljayB1dGls aXRpZXMKIwojCg== ------=_NextPart_000_3fc9_16ed_5b7d--