<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>105305</bug_id>
          
          <creation_ts>2012-12-18 08:18:51 -0800</creation_ts>
          <short_desc>[EFL] Move ImageDiff to the Tools directory root</short_desc>
          <delta_ts>2012-12-19 07:06:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>105303</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Thiago Marcos P. Santos">tmpsantos</reporter>
          <assigned_to name="Thiago Marcos P. Santos">tmpsantos</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>793665</commentid>
    <comment_count>0</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-12-18 08:18:51 -0800</bug_when>
    <thetext>More details on the Meta bug blocked by this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794606</commentid>
    <comment_count>1</comment_count>
      <attachid>180151</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-12-19 06:13:48 -0800</bug_when>
    <thetext>Created attachment 180151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794635</commentid>
    <comment_count>2</comment_count>
      <attachid>180151</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2012-12-19 07:01:19 -0800</bug_when>
    <thetext>Comment on attachment 180151
Patch

lgtm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794641</commentid>
    <comment_count>3</comment_count>
      <attachid>180151</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-19 07:06:52 -0800</bug_when>
    <thetext>Comment on attachment 180151
Patch

Clearing flags on attachment: 180151

Committed r138158: &lt;http://trac.webkit.org/changeset/138158&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794642</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-19 07:06:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180151</attachid>
            <date>2012-12-19 06:13:48 -0800</date>
            <delta_ts>2012-12-19 07:06:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105305-20121219161540.patch</filename>
            <type>text/plain</type>
            <size>30753</size>
            <attacher name="Thiago Marcos P. Santos">tmpsantos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MTQyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmIzNTMzYmZiNzJiOGFkZDFkM2FlZDdkZWRjNTIwODE3
MTI0NjAxZC4uNTMwYTg4OGJmNTkwMDg5ODc2OGI2ZGViMGQxMTE4NjE4MzM1ZTk3NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDEyLTEyLTE5ICBUaGlhZ28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NA
aW50ZWwuY29tPgorCisgICAgICAgIFtFRkxdIE1vdmUgSW1hZ2VEaWZmIHRvIHRoZSBUb29scyBk
aXJlY3Rvcnkgcm9vdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA1MzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2UgcHJldmlvdXNseSBtb3ZlZCB0aGlzIGRpcmVjdG9yeSBmcm9tIHRoZSBEUlQgZGly
ZWN0b3J5IHRvCisgICAgICAgIGVmbC9JbWFnZURpZmYuIFRoZSBtYWpvciByZWFzb24gZm9yIGRv
aW5nIHNvIHdhcyBiZWNhdXNlIEltYWdlRGlmZiBkb2VzCisgICAgICAgIG5vdCBkZXBlbmQgb24g
RHVtcFJlbmRlclRyZWUgYnV0IGZvciBsZWdhY3kgcmVhc29ucyB3YXMgbGl2aW5nIGluc2lkZSB0
aGUKKyAgICAgICAgRFJUIGZvbGRlciwgZXZlbiB0aG91Z2ggaXQgaXMgbmVlZGVkIHdoZW4gcnVu
bmluZyBwaXhlbCB0ZXN0cyBmb3IgV0syLgorCisgICAgICAgIE5vdyB3ZSBhcmUgbW92aW5nIHRv
IFRvb2wgZGlyZWN0b3J5IHJvb3QgYXMgb3RoZXIgcG9ydHMgYWdyZWVkIHRvIGRvIHRoZSBzYW1l
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSW1hZ2VEaWZmL0NNYWtl
TGlzdHMudHh0OiBBZGRlZC4KKyAgICAgICAgKiBJbWFnZURpZmYvUGxhdGZvcm1FZmwuY21ha2U6
IEFkZGVkLgorICAgICAgICAqIEltYWdlRGlmZi9lZmwvSW1hZ2VEaWZmLmNwcDogUmVuYW1lZCBm
cm9tIFRvb2xzL2VmbC9JbWFnZURpZmYvSW1hZ2VEaWZmLmNwcC4KKyAgICAgICAgKiBlZmwvSW1h
Z2VEaWZmL0NNYWtlTGlzdHMudHh0OiBSZW1vdmVkLgorCiAyMDEyLTEyLTE5ICBaZW5vIEFsYmlz
c2VyICA8emVub0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1bTWFjXSBydW4tbGF1bmNoZXIg
Y2Fubm90IGZpbmQgUXQ1V2ViS2l0V2lkZ2V0cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NNYWtlTGlz
dHMudHh0IGIvVG9vbHMvQ01ha2VMaXN0cy50eHQKaW5kZXggZGJmMTllZTZkMTNjZmM0Y2FiM2M3
NDA4ZjRhYzM4YWQ5NTMzN2E4Yy4uZDA1MjdkNDA4Yjk4YTI1MmM0NzdjNWQ5OWYxNzA1NjdlOGE2
NDI5YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvQ01ha2VM
aXN0cy50eHQKQEAgLTMsNyArMyw3IEBAIGlmIChFTkFCTEVfV0VCS0lUMikKIGVuZGlmICgpCiAK
IGlmICgiJHtQT1JUfSIgU1RSRVFVQUwgIkVmbCIpCi0gICAgYWRkX3N1YmRpcmVjdG9yeShlZmwv
SW1hZ2VEaWZmKQorICAgIGFkZF9zdWJkaXJlY3RvcnkoSW1hZ2VEaWZmKQogICAgIGFkZF9zdWJk
aXJlY3RvcnkoRVdlYkxhdW5jaGVyL0NvbnRyb2xUaGVtZSkKIAogICAgIGlmIChFTkFCTEVfV0VC
S0lUKQpkaWZmIC0tZ2l0IGEvVG9vbHMvSW1hZ2VEaWZmL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMv
SW1hZ2VEaWZmL0NNYWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyM2MzYzczMzI5MTI5ZTQ1ODM0
OGRiMWQ4NjNmMTQ4Zjc0ZmIzMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9JbWFnZURpZmYv
Q01ha2VMaXN0cy50eHQKQEAgLTAsMCArMSwxNyBAQAorc2V0KElNQUdFX0RJRkZfRElSICIke1RP
T0xTX0RJUn0vSW1hZ2VEaWZmIikKKworc2V0KElNQUdFX0RJRkZfSU5DTFVERV9ESVJFQ1RPUklF
UworICAgICR7Q01BS0VfQklOQVJZX0RJUn0KKyAgICAke1dURl9ESVJ9CispCisKK3NldChJTUFH
RV9ESUZGX0xJQlJBUklFUworICAgICR7V1RGX0xJQlJBUllfTkFNRX0KKykKKworSU5DTFVERV9J
Rl9FWElTVFMoJHtJTUFHRV9ESUZGX0RJUn0vUGxhdGZvcm0ke1BPUlR9LmNtYWtlKQorCitpbmNs
dWRlX2RpcmVjdG9yaWVzKCR7SU1BR0VfRElGRl9JTkNMVURFX0RJUkVDVE9SSUVTfSkKK2FkZF9l
eGVjdXRhYmxlKEltYWdlRGlmZiAke0lNQUdFX0RJRkZfU09VUkNFU30pCit0YXJnZXRfbGlua19s
aWJyYXJpZXMoSW1hZ2VEaWZmICR7SU1BR0VfRElGRl9MSUJSQVJJRVN9KQorc2V0X3RhcmdldF9w
cm9wZXJ0aWVzKEltYWdlRGlmZiBQUk9QRVJUSUVTIEZPTERFUiAiVG9vbHMiKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvSW1hZ2VEaWZmL1BsYXRmb3JtRWZsLmNtYWtlIGIvVG9vbHMvSW1hZ2VEaWZmL1Bs
YXRmb3JtRWZsLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhZjQ2ZjRhZTU2YTk5N2Y4NzczMzBmMGYzMjlm
YjBjMzUxMDQ2NTEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9JbWFnZURpZmYvUGxhdGZvcm1F
ZmwuY21ha2UKQEAgLTAsMCArMSwxNyBAQAorc2V0KElNQUdFX0RJRkZfU09VUkNFUworICAgICR7
SU1BR0VfRElGRl9ESVJ9L2VmbC9JbWFnZURpZmYuY3BwCispCisKK2xpc3QoQVBQRU5EIElNQUdF
X0RJRkZfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICR7RUNPUkVfRVZBU19JTkNMVURFX0RJUlN9
CisgICAgJHtFQ09SRV9JTkNMVURFX0RJUlN9CisgICAgJHtFSU5BX0lOQ0xVREVfRElSU30KKyAg
ICAke0VWQVNfSU5DTFVERV9ESVJTfQorKQorCitsaXN0KEFQUEVORCBJTUFHRV9ESUZGX0xJQlJB
UklFUworICAgICR7RUNPUkVfRVZBU19MSUJSQVJJRVN9CisgICAgJHtFQ09SRV9MSUJSQVJJRVN9
CisgICAgJHtFSU5BX0xJQlJBUklFU30KKyAgICAke0VWQVNfTElCUkFSSUVTfQorKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvSW1hZ2VEaWZmL2VmbC9JbWFnZURpZmYuY3BwIGIvVG9vbHMvSW1hZ2VEaWZm
L2VmbC9JbWFnZURpZmYuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyOWI2Y2E1N2M4NTQyMzY3MjgwYWFmNDhl
ZGUyOTM4OTk3YWU1ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9JbWFnZURpZmYvZWZsL0lt
YWdlRGlmZi5jcHAKQEAgLTAsMCArMSwzNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
WmFuIERvYmVyc2VrIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBQcm9GVVNJT04gRW1iZWRkZWQg
U3lzdGVtcworICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxFY29yZS5oPgorI2luY2x1ZGUgPEVjb3JlX0V2YXMu
aD4KKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGNt
YXRoPgorI2luY2x1ZGUgPGNzdGRpbz4KKyNpbmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPGdl
dG9wdC5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cisj
aW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CisjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZWZsL1JlZlB0ckVmbC5oPgorCitlbnVt
IFBpeGVsQ29tcG9uZW50IHsKKyAgICBSZWQsCisgICAgR3JlZW4sCisgICAgQmx1ZSwKKyAgICBB
bHBoYQorfTsKKworc3RhdGljIE93blB0cjxFY29yZV9FdmFzPiBnRWNvcmVFdmFzOworc3RhdGlj
IGRvdWJsZSBnVG9sZXJhbmNlID0gMDsKKworc3RhdGljIHZvaWQgYWJvcnRXaXRoRXJyb3JNZXNz
YWdlKGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSk7CisKK3N0YXRpYyB1bnNpZ25lZCBjaGFyKiBw
aXhlbEZyb21JbWFnZURhdGEodW5zaWduZWQgY2hhciogaW1hZ2VEYXRhLCBpbnQgcm93U3RyaWRl
LCBpbnQgeCwgaW50IHkpCit7CisgICAgcmV0dXJuIGltYWdlRGF0YSArICh5ICogcm93U3RyaWRl
KSArICh4IDw8IDIpOworfQorCitzdGF0aWMgRXZhc19PYmplY3QqIGRpZmZlcmVuY2VJbWFnZUZy
b21EaWZmZXJlbmNlQnVmZmVyKEV2YXMqIGV2YXMsIHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIEV2YXNfT2JqZWN0KiBpbWFnZSA9IGV2YXNfb2Jq
ZWN0X2ltYWdlX2ZpbGxlZF9hZGQoZXZhcyk7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgYWJv
cnRXaXRoRXJyb3JNZXNzYWdlKCJjb3VsZCBub3QgY3JlYXRlIGRpZmZlcmVuY2UgaW1hZ2UiKTsK
KworICAgIGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfc2V0KGltYWdlLCB3aWR0aCwgaGVpZ2h0KTsK
KyAgICBldmFzX29iamVjdF9pbWFnZV9jb2xvcnNwYWNlX3NldChpbWFnZSwgRVZBU19DT0xPUlNQ
QUNFX0FSR0I4ODg4KTsKKworICAgIHVuc2lnbmVkIGNoYXIqIGRpZmZQaXhlbHMgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyKj4oZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9nZXQoaW1hZ2UsIEVJ
TkFfVFJVRSkpOworICAgIGNvbnN0IGludCByb3dTdHJpZGUgPSBldmFzX29iamVjdF9pbWFnZV9z
dHJpZGVfZ2V0KGltYWdlKTsKKyAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsK
KyAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgeworICAgICAgICAgICAg
dW5zaWduZWQgY2hhciogZGlmZlBpeGVsID0gcGl4ZWxGcm9tSW1hZ2VEYXRhKGRpZmZQaXhlbHMs
IHJvd1N0cmlkZSwgeCwgeSk7CisgICAgICAgICAgICBkaWZmUGl4ZWxbUmVkXSA9IGRpZmZQaXhl
bFtHcmVlbl0gPSBkaWZmUGl4ZWxbQmx1ZV0gPSAqYnVmZmVyKys7CisgICAgICAgICAgICBkaWZm
UGl4ZWxbQWxwaGFdID0gMHhmZjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGV2YXNfb2JqZWN0
X2ltYWdlX2RhdGFfc2V0KGltYWdlLCBkaWZmUGl4ZWxzKTsKKworICAgIHJldHVybiBpbWFnZTsK
K30KKworc3RhdGljIGZsb2F0IGNvbXB1dGVEaXN0YW5jZUJldHdlZW5QaXhlbENvbXBvbmVudHMo
dW5zaWduZWQgY2hhciBhY3R1YWxDb21wb25lbnQsIHVuc2lnbmVkIGNoYXIgYmFzZUNvbXBvbmVu
dCkKK3sKKyAgICByZXR1cm4gKGFjdHVhbENvbXBvbmVudCAtIGJhc2VDb21wb25lbnQpIC8gc3Rk
OjptYXg8ZmxvYXQ+KDI1NSAtIGJhc2VDb21wb25lbnQsIGJhc2VDb21wb25lbnQpOworfQorCitz
dGF0aWMgZmxvYXQgY29tcHV0ZURpc3RhbmNlQmV0d2VlblBpeGVsQ29tcG9uZW50cyh1bnNpZ25l
ZCBjaGFyKiBhY3R1YWxQaXhlbCwgdW5zaWduZWQgY2hhciogYmFzZVBpeGVsLCBQaXhlbENvbXBv
bmVudCBjb21wb25lbnQpCit7CisgICAgcmV0dXJuIGNvbXB1dGVEaXN0YW5jZUJldHdlZW5QaXhl
bENvbXBvbmVudHMoYWN0dWFsUGl4ZWxbY29tcG9uZW50XSwgYmFzZVBpeGVsW2NvbXBvbmVudF0p
OworfQorCitzdGF0aWMgZmxvYXQgY2FsY3VsYXRlUGl4ZWxEaWZmZXJlbmNlKHVuc2lnbmVkIGNo
YXIqIGJhc2VQaXhlbCwgdW5zaWduZWQgY2hhciogYWN0dWFsUGl4ZWwpCit7CisgICAgY29uc3Qg
ZmxvYXQgcmVkID0gY29tcHV0ZURpc3RhbmNlQmV0d2VlblBpeGVsQ29tcG9uZW50cyhhY3R1YWxQ
aXhlbCwgYmFzZVBpeGVsLCBSZWQpOworICAgIGNvbnN0IGZsb2F0IGdyZWVuID0gY29tcHV0ZURp
c3RhbmNlQmV0d2VlblBpeGVsQ29tcG9uZW50cyhhY3R1YWxQaXhlbCwgYmFzZVBpeGVsLCBHcmVl
bik7CisgICAgY29uc3QgZmxvYXQgYmx1ZSA9IGNvbXB1dGVEaXN0YW5jZUJldHdlZW5QaXhlbENv
bXBvbmVudHMoYWN0dWFsUGl4ZWwsIGJhc2VQaXhlbCwgQmx1ZSk7CisgICAgY29uc3QgZmxvYXQg
YWxwaGEgPSBjb21wdXRlRGlzdGFuY2VCZXR3ZWVuUGl4ZWxDb21wb25lbnRzKGFjdHVhbFBpeGVs
LCBiYXNlUGl4ZWwsIEFscGhhKTsKKyAgICByZXR1cm4gc3FydGYocmVkICogcmVkICsgZ3JlZW4g
KiBncmVlbiArIGJsdWUgKiBibHVlICsgYWxwaGEgKiBhbHBoYSkgLyAyLjBmOworfQorCitzdGF0
aWMgZmxvYXQgY2FsY3VsYXRlRGlmZmVyZW5jZShFdmFzX09iamVjdCogYmFzZWxpbmVJbWFnZSwg
RXZhc19PYmplY3QqIGFjdHVhbEltYWdlLCBSZWZQdHI8RXZhc19PYmplY3Q+JiBkaWZmZXJlbmNl
SW1hZ2UpCit7CisgICAgaW50IHdpZHRoLCBoZWlnaHQsIGJhc2VsaW5lV2lkdGgsIGJhc2VsaW5l
SGVpZ2h0OworICAgIGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfZ2V0KGFjdHVhbEltYWdlLCAmd2lk
dGgsICZoZWlnaHQpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfZ2V0KGJhc2VsaW5lSW1h
Z2UsICZiYXNlbGluZVdpZHRoLCAmYmFzZWxpbmVIZWlnaHQpOworCisgICAgaWYgKHdpZHRoICE9
IGJhc2VsaW5lV2lkdGggfHwgaGVpZ2h0ICE9IGJhc2VsaW5lSGVpZ2h0KSB7CisgICAgICAgIHBy
aW50ZigiRXJyb3IsIHRlc3QgYW5kIHJlZmVyZW5jZSBpbWFnZSBoYXZlIGRpZmZlcmVudCBzaXpl
cy5cbiIpOworICAgICAgICByZXR1cm4gMTAwOyAvLyBDb21wbGV0ZWx5IGRpZmZlcmVudC4KKyAg
ICB9CisKKyAgICBPd25BcnJheVB0cjx1bnNpZ25lZCBjaGFyPiBkaWZmQnVmZmVyID0gYWRvcHRB
cnJheVB0cihuZXcgdW5zaWduZWQgY2hhclt3aWR0aCAqIGhlaWdodF0pOworICAgIGlmICghZGlm
ZkJ1ZmZlcikKKyAgICAgICAgYWJvcnRXaXRoRXJyb3JNZXNzYWdlKCJjb3VsZCBub3QgY3JlYXRl
IGRpZmZlcmVuY2UgYnVmZmVyIik7CisKKyAgICBjb25zdCBpbnQgYWN0dWFsUm93U3RyaWRlID0g
ZXZhc19vYmplY3RfaW1hZ2Vfc3RyaWRlX2dldChhY3R1YWxJbWFnZSk7CisgICAgY29uc3QgaW50
IGJhc2VSb3dTdHJpZGUgPSBldmFzX29iamVjdF9pbWFnZV9zdHJpZGVfZ2V0KGJhc2VsaW5lSW1h
Z2UpOworICAgIHVuc2lnbmVkIG51bWJlck9mRGlmZmVyZW50UGl4ZWxzID0gMDsKKyAgICBmbG9h
dCB0b3RhbERpc3RhbmNlID0gMDsKKyAgICBmbG9hdCBtYXhEaXN0YW5jZSA9IDA7CisgICAgdW5z
aWduZWQgY2hhciogYWN0dWFsUGl4ZWxzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGV2
YXNfb2JqZWN0X2ltYWdlX2RhdGFfZ2V0KGFjdHVhbEltYWdlLCBFSU5BX0ZBTFNFKSk7CisgICAg
dW5zaWduZWQgY2hhciogYmFzZVBpeGVscyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihl
dmFzX29iamVjdF9pbWFnZV9kYXRhX2dldChiYXNlbGluZUltYWdlLCBFSU5BX0ZBTFNFKSk7Cisg
ICAgdW5zaWduZWQgY2hhciogY3VycmVudERpZmZQaXhlbCA9IGRpZmZCdWZmZXIuZ2V0KCk7CisK
KyAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKKyAgICAgICAgZm9yIChpbnQg
eSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgeworICAgICAgICAgICAgdW5zaWduZWQgY2hhciogYWN0
dWFsUGl4ZWwgPSBwaXhlbEZyb21JbWFnZURhdGEoYWN0dWFsUGl4ZWxzLCBhY3R1YWxSb3dTdHJp
ZGUsIHgsIHkpOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciogYmFzZVBpeGVsID0gcGl4ZWxG
cm9tSW1hZ2VEYXRhKGJhc2VQaXhlbHMsIGJhc2VSb3dTdHJpZGUsIHgsIHkpOworCisgICAgICAg
ICAgICBjb25zdCBmbG9hdCBkaXN0YW5jZSA9IGNhbGN1bGF0ZVBpeGVsRGlmZmVyZW5jZShiYXNl
UGl4ZWwsIGFjdHVhbFBpeGVsKTsKKyAgICAgICAgICAgICpjdXJyZW50RGlmZlBpeGVsKysgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihkaXN0YW5jZSAqIDI1NS4wZik7CisKKyAgICAgICAg
ICAgIGlmIChkaXN0YW5jZSA+PSAxLjBmIC8gMjU1LjBmKSB7CisgICAgICAgICAgICAgICAgKytu
dW1iZXJPZkRpZmZlcmVudFBpeGVsczsKKyAgICAgICAgICAgICAgICB0b3RhbERpc3RhbmNlICs9
IGRpc3RhbmNlOworICAgICAgICAgICAgICAgIG1heERpc3RhbmNlID0gc3RkOjptYXg8ZmxvYXQ+
KG1heERpc3RhbmNlLCBkaXN0YW5jZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICAvLyBXaGVuIHVzaW5nIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfZ2V0KCksIGEgY29t
cGxlbWVudGFyeSBldmFzX29iamVjdF9kYXRhX3NldCgpIG11c3QgYmUKKyAgICAvLyBpc3N1ZWQg
dG8gYmFsYW5jZSB0aGUgcmVmZXJlbmNlIGNvdW50LCBldmVuIGlmIHRoZSBpbWFnZSBoYXNuJ3Qg
YmVlbiBjaGFuZ2VkLgorICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfc2V0KGJhc2VsaW5lSW1h
Z2UsIGJhc2VQaXhlbHMpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfc2V0KGFjdHVhbElt
YWdlLCBhY3R1YWxQaXhlbHMpOworCisgICAgLy8gQ29tcHV0ZSB0aGUgZGlmZmVyZW5jZSBhcyBh
IHBlcmNlbnRhZ2UgY29tYmluaW5nIGJvdGggdGhlIG51bWJlciBvZgorICAgIC8vIGRpZmZlcmVu
dCBwaXhlbHMgYW5kIHRoZWlyIGRpZmZlcmVuY2UgYW1vdW50IGkuZS4gdGhlIGF2ZXJhZ2UgZGlz
dGFuY2UKKyAgICAvLyBvdmVyIHRoZSBlbnRpcmUgaW1hZ2UKKyAgICBmbG9hdCBkaWZmZXJlbmNl
ID0gMDsKKyAgICBpZiAobnVtYmVyT2ZEaWZmZXJlbnRQaXhlbHMpCisgICAgICAgIGRpZmZlcmVu
Y2UgPSAxMDAuMGYgKiB0b3RhbERpc3RhbmNlIC8gKGhlaWdodCAqIHdpZHRoKTsKKyAgICBpZiAo
ZGlmZmVyZW5jZSA8PSBnVG9sZXJhbmNlKQorICAgICAgICBkaWZmZXJlbmNlID0gMDsKKyAgICBl
bHNlIHsKKyAgICAgICAgZGlmZmVyZW5jZSA9IHJvdW5kZihkaWZmZXJlbmNlICogMTAwLjBmKSAv
IDEwMC4wZjsKKyAgICAgICAgZGlmZmVyZW5jZSA9IHN0ZDo6bWF4KGRpZmZlcmVuY2UsIDAuMDFm
KTsgLy8gcm91bmQgdG8gMiBkZWNpbWFsIHBsYWNlcworCisgICAgICAgIGRpZmZlcmVuY2VJbWFn
ZSA9IGFkb3B0UmVmKGRpZmZlcmVuY2VJbWFnZUZyb21EaWZmZXJlbmNlQnVmZmVyKGV2YXNfb2Jq
ZWN0X2V2YXNfZ2V0KGJhc2VsaW5lSW1hZ2UpLCBkaWZmQnVmZmVyLmdldCgpLCB3aWR0aCwgaGVp
Z2h0KSk7CisgICAgfQorCisgICAgcmV0dXJuIGRpZmZlcmVuY2U7Cit9CisKK3N0YXRpYyBpbnQg
Z2V0VGVtcG9yYXJ5RmlsZShjaGFyICpmaWxlTmFtZSwgc2l6ZV90IGZpbGVOYW1lTGVuZ3RoKQor
eworICAgIGNoYXIqIHRlbXBEaXJlY3RvcnkgPSBnZXRlbnYoIlRNUERJUiIpOworICAgIGlmICgh
dGVtcERpcmVjdG9yeSkKKyAgICAgICAgdGVtcERpcmVjdG9yeSA9IGdldGVudigiVEVNUCIpOwor
CisgICAgaWYgKHRlbXBEaXJlY3RvcnkpCisgICAgICAgIHNucHJpbnRmKGZpbGVOYW1lLCBmaWxl
TmFtZUxlbmd0aCwgIiVzL0ltYWdlRGlmZlhYWFhYWC5wbmciLCB0ZW1wRGlyZWN0b3J5KTsKKyAg
ICBlbHNlIHsKKyNpZiBfX2xpbnV4X18KKyAgICAgICAgc3RyY3B5KGZpbGVOYW1lLCAiL2Rldi9z
aG0vSW1hZ2VEaWZmWFhYWFhYLnBuZyIpOworICAgICAgICBjb25zdCBpbnQgZmlsZURlc2NyaXB0
b3IgPSBta3N0ZW1wcyhmaWxlTmFtZSwgc2l6ZW9mKCIucG5nIikgLSAxKTsKKyAgICAgICAgaWYg
KGZpbGVEZXNjcmlwdG9yID49IDApCisgICAgICAgICAgICByZXR1cm4gZmlsZURlc2NyaXB0b3I7
CisjZW5kaWYgLy8gX19saW51eF9fCisKKyAgICAgICAgc3RyY3B5KGZpbGVOYW1lLCAiSW1hZ2VE
aWZmWFhYWFhYLnBuZyIpOworICAgIH0KKworICAgIHJldHVybiBta3N0ZW1wcyhmaWxlTmFtZSwg
c2l6ZW9mKCIucG5nIikgLSAxKTsKK30KKworc3RhdGljIHZvaWQgcHJpbnRJbWFnZShFdmFzX09i
amVjdCogaW1hZ2UpCit7CisgICAgY2hhciBmaWxlTmFtZVtQQVRIX01BWF07CisKKyAgICBjb25z
dCBpbnQgdGVtcEltYWdlRmQgPSBnZXRUZW1wb3JhcnlGaWxlKGZpbGVOYW1lLCBQQVRIX01BWCk7
CisgICAgaWYgKHRlbXBJbWFnZUZkID09IC0xKQorICAgICAgICBhYm9ydFdpdGhFcnJvck1lc3Nh
Z2UoImNvdWxkIG5vdCBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUiKTsKKworICAgIGV2YXNfcmVuZGVy
KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGltYWdlKSk7CisKKyAgICBpZiAoZXZhc19vYmplY3RfaW1h
Z2Vfc2F2ZShpbWFnZSwgZmlsZU5hbWUsIDAsIDApKSB7CisgICAgICAgIHN0cnVjdCBzdGF0IGZp
bGVJbmZvOworICAgICAgICBpZiAoIXN0YXQoZmlsZU5hbWUsICZmaWxlSW5mbykpIHsKKyAgICAg
ICAgICAgIHByaW50ZigiQ29udGVudC1MZW5ndGg6ICVsZFxuIiwgZmlsZUluZm8uc3Rfc2l6ZSk7
CisgICAgICAgICAgICBmZmx1c2goc3Rkb3V0KTsKKworICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciBidWZmZXJbMjA0OF07CisgICAgICAgICAgICBzc2l6ZV90IGJ5dGVzUmVhZDsKKyAgICAgICAg
ICAgIHdoaWxlICgoYnl0ZXNSZWFkID0gcmVhZCh0ZW1wSW1hZ2VGZCwgYnVmZmVyLCBzaXplb2Yo
YnVmZmVyKSkpID4gMCkgeworICAgICAgICAgICAgICAgIHNzaXplX3QgYnl0ZXNXcml0dGVuID0g
MDsKKyAgICAgICAgICAgICAgICBzc2l6ZV90IGNvdW50OworICAgICAgICAgICAgICAgIGRvIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKChjb3VudCA9IHdyaXRlKDEsIGJ1ZmZlciArIGJ5dGVz
V3JpdHRlbiwgYnl0ZXNSZWFkIC0gYnl0ZXNXcml0dGVuKSkgPD0gMCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBieXRlc1dyaXR0ZW4gKz0gY291
bnQ7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoYnl0ZXNXcml0dGVuIDwgYnl0ZXNSZWFkKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjbG9zZSh0ZW1wSW1hZ2VGZCk7
CisgICAgdW5saW5rKGZpbGVOYW1lKTsKK30KKworc3RhdGljIHZvaWQgcHJpbnRJbWFnZURpZmZl
cmVuY2VzKEV2YXNfT2JqZWN0KiBiYXNlbGluZUltYWdlLCBFdmFzX09iamVjdCogYWN0dWFsSW1h
Z2UpCit7CisgICAgUmVmUHRyPEV2YXNfT2JqZWN0PiBkaWZmZXJlbmNlSW1hZ2U7CisgICAgY29u
c3QgZmxvYXQgZGlmZmVyZW5jZSA9IGNhbGN1bGF0ZURpZmZlcmVuY2UoYmFzZWxpbmVJbWFnZSwg
YWN0dWFsSW1hZ2UsIGRpZmZlcmVuY2VJbWFnZSk7CisKKyAgICBpZiAoZGlmZmVyZW5jZSA+IDAu
MGYpIHsKKyAgICAgICAgaWYgKGRpZmZlcmVuY2VJbWFnZSkKKyAgICAgICAgICAgIHByaW50SW1h
Z2UoZGlmZmVyZW5jZUltYWdlLmdldCgpKTsKKworICAgICAgICBwcmludGYoImRpZmY6ICUwMS4y
ZiUlIGZhaWxlZFxuIiwgZGlmZmVyZW5jZSk7CisgICAgfSBlbHNlCisgICAgICAgIHByaW50Zigi
ZGlmZjogJTAxLjJmJSUgcGFzc2VkXG4iLCBkaWZmZXJlbmNlKTsKK30KKworc3RhdGljIHZvaWQg
cmVzaXplRWNvcmVFdmFzSWZOZWVkZWQoRXZhc19PYmplY3QqIGltYWdlKQoreworICAgIGludCBu
ZXdXaWR0aCwgbmV3SGVpZ2h0OworICAgIGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfZ2V0KGltYWdl
LCAmbmV3V2lkdGgsICZuZXdIZWlnaHQpOworCisgICAgaW50IGN1cnJlbnRXaWR0aCwgY3VycmVu
dEhlaWdodDsKKyAgICBlY29yZV9ldmFzX3NjcmVlbl9nZW9tZXRyeV9nZXQoZ0Vjb3JlRXZhcy5n
ZXQoKSwgMCwgMCwgJmN1cnJlbnRXaWR0aCwgJmN1cnJlbnRIZWlnaHQpOworCisgICAgaWYgKG5l
d1dpZHRoID4gY3VycmVudFdpZHRoKQorICAgICAgICBjdXJyZW50V2lkdGggPSBuZXdXaWR0aDsK
KyAgICBpZiAobmV3SGVpZ2h0ID4gY3VycmVudEhlaWdodCkKKyAgICAgICAgY3VycmVudEhlaWdo
dCA9IG5ld0hlaWdodDsKKworICAgIGVjb3JlX2V2YXNfcmVzaXplKGdFY29yZUV2YXMuZ2V0KCks
IGN1cnJlbnRXaWR0aCwgY3VycmVudEhlaWdodCk7Cit9CisKK3N0YXRpYyBQYXNzUmVmUHRyPEV2
YXNfT2JqZWN0PiByZWFkSW1hZ2VGcm9tU3RkaW4oRXZhcyogZXZhcywgbG9uZyBpbWFnZVNpemUp
Cit7CisgICAgT3duQXJyYXlQdHI8dW5zaWduZWQgY2hhcj4gaW1hZ2VCdWZmZXIgPSBhZG9wdEFy
cmF5UHRyKG5ldyB1bnNpZ25lZCBjaGFyW2ltYWdlU2l6ZV0pOworICAgIGlmICghaW1hZ2VCdWZm
ZXIpCisgICAgICAgIGFib3J0V2l0aEVycm9yTWVzc2FnZSgiY2Fubm90IGFsbG9jYXRlIGltYWdl
Iik7CisKKyAgICBjb25zdCBzaXplX3QgYnl0ZXNSZWFkID0gZnJlYWQoaW1hZ2VCdWZmZXIuZ2V0
KCksIDEsIGltYWdlU2l6ZSwgc3RkaW4pOworICAgIGlmICghYnl0ZXNSZWFkKQorICAgICAgICBy
ZXR1cm4gUGFzc1JlZlB0cjxFdmFzX09iamVjdD4oKTsKKworICAgIEV2YXNfT2JqZWN0KiBpbWFn
ZSA9IGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxlZF9hZGQoZXZhcyk7CisgICAgZXZhc19vYmplY3Rf
aW1hZ2VfY29sb3JzcGFjZV9zZXQoaW1hZ2UsIEVWQVNfQ09MT1JTUEFDRV9BUkdCODg4OCk7Cisg
ICAgZXZhc19vYmplY3RfaW1hZ2VfbWVtZmlsZV9zZXQoaW1hZ2UsIGltYWdlQnVmZmVyLmdldCgp
LCBieXRlc1JlYWQsIDAsIDApOworCisgICAgcmVzaXplRWNvcmVFdmFzSWZOZWVkZWQoaW1hZ2Up
OworCisgICAgcmV0dXJuIGFkb3B0UmVmKGltYWdlKTsKK30KKworc3RhdGljIGJvb2wgcGFyc2VD
b21tYW5kTGluZU9wdGlvbnMoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIHN0YXRpYyBj
b25zdCBvcHRpb24gb3B0aW9uc1tdID0geworICAgICAgICB7ICJ0b2xlcmFuY2UiLCByZXF1aXJl
ZF9hcmd1bWVudCwgMCwgJ3QnIH0sCisgICAgICAgIHsgMCwgMCwgMCwgMCB9CisgICAgfTsKKyAg
ICBpbnQgb3B0aW9uOworCisgICAgd2hpbGUgKChvcHRpb24gPSBnZXRvcHRfbG9uZyhhcmdjLCAo
Y2hhciogY29uc3QqKWFyZ3YsICJ0OiIsIG9wdGlvbnMsIDApKSAhPSAtMSkgeworICAgICAgICBz
d2l0Y2ggKG9wdGlvbikgeworICAgICAgICBjYXNlICd0JzoKKyAgICAgICAgICAgIGdUb2xlcmFu
Y2UgPSBhdG9mKG9wdGFyZyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnPyc6
CisgICAgICAgIGNhc2UgJzonOgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHNodXRkb3duRWZs
KCkKK3sKKyAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7CisgICAgZWNvcmVfc2h1dGRvd24oKTsK
KyAgICBldmFzX3NodXRkb3duKCk7Cit9CisKK3N0YXRpYyB2b2lkIGFib3J0V2l0aEVycm9yTWVz
c2FnZShjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpCit7CisgICAgc2h1dGRvd25FZmwoKTsKKwor
ICAgIHByaW50ZigiRXJyb3IsICVzLlxuIiwgZXJyb3JNZXNzYWdlKTsKKyAgICBleGl0KEVYSVRf
RkFJTFVSRSk7Cit9CisKK3N0YXRpYyBFdmFzKiBpbml0RWZsKCkKK3sKKyAgICBldmFzX2luaXQo
KTsKKyAgICBlY29yZV9pbml0KCk7CisgICAgZWNvcmVfZXZhc19pbml0KCk7CisKKyAgICBnRWNv
cmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19idWZmZXJfbmV3KDEsIDEpKTsKKyAgICBFdmFz
KiBldmFzID0gZWNvcmVfZXZhc19nZXQoZ0Vjb3JlRXZhcy5nZXQoKSk7CisgICAgaWYgKCFldmFz
KQorICAgICAgICBhYm9ydFdpdGhFcnJvck1lc3NhZ2UoImNvdWxkIG5vdCBjcmVhdGUgRWNvcmVf
RXZhcyBidWZmZXIiKTsKKworICAgIHJldHVybiBldmFzOworfQorCitpbnQgbWFpbihpbnQgYXJn
YywgY2hhciogYXJndltdKQoreworICAgIGlmICghcGFyc2VDb21tYW5kTGluZU9wdGlvbnMoYXJn
YywgYXJndikpCisgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisKKyAgICBFdmFzKiBldmFz
ID0gaW5pdEVmbCgpOworCisgICAgUmVmUHRyPEV2YXNfT2JqZWN0PiBhY3R1YWxJbWFnZTsKKyAg
ICBSZWZQdHI8RXZhc19PYmplY3Q+IGJhc2VsaW5lSW1hZ2U7CisKKyAgICBjaGFyIGJ1ZmZlclsy
MDQ4XTsKKyAgICB3aGlsZSAoZmdldHMoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgc3RkaW4pKSB7
CisgICAgICAgIGNoYXIqIGNvbnRlbnRMZW5ndGhTdGFydCA9IHN0cnN0cihidWZmZXIsICJDb250
ZW50LUxlbmd0aDogIik7CisgICAgICAgIGlmICghY29udGVudExlbmd0aFN0YXJ0KQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGxvbmcgaW1hZ2VTaXplOworICAgICAgICBpZiAoc3Nj
YW5mKGNvbnRlbnRMZW5ndGhTdGFydCwgIkNvbnRlbnQtTGVuZ3RoOiAlbGQiLCAmaW1hZ2VTaXpl
KSA9PSAxKSB7CisgICAgICAgICAgICBpZiAoaW1hZ2VTaXplIDw9IDApCisgICAgICAgICAgICAg
ICAgYWJvcnRXaXRoRXJyb3JNZXNzYWdlKCJpbWFnZSBzaXplIG11c3QgYmUgc3BlY2lmaWVkIik7
CisKKyAgICAgICAgICAgIGlmICghYWN0dWFsSW1hZ2UpCisgICAgICAgICAgICAgICAgYWN0dWFs
SW1hZ2UgPSByZWFkSW1hZ2VGcm9tU3RkaW4oZXZhcywgaW1hZ2VTaXplKTsKKyAgICAgICAgICAg
IGVsc2UgaWYgKCFiYXNlbGluZUltYWdlKSB7CisgICAgICAgICAgICAgICAgYmFzZWxpbmVJbWFn
ZSA9IHJlYWRJbWFnZUZyb21TdGRpbihldmFzLCBpbWFnZVNpemUpOworCisgICAgICAgICAgICAg
ICAgcHJpbnRJbWFnZURpZmZlcmVuY2VzKGJhc2VsaW5lSW1hZ2UuZ2V0KCksIGFjdHVhbEltYWdl
LmdldCgpKTsKKworICAgICAgICAgICAgICAgIGFjdHVhbEltYWdlLmNsZWFyKCk7CisgICAgICAg
ICAgICAgICAgYmFzZWxpbmVJbWFnZS5jbGVhcigpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgZmZsdXNoKHN0ZG91dCk7CisgICAgfQorCisgICAgZ0Vjb3JlRXZhcy5jbGVh
cigpOyAvLyBNYWtlIHN1cmUgZWNvcmVfZXZhc19mcmVlIGlzIGNhbGxlZCBiZWZvcmUgdGhlIEVG
TCBhcmUgc2h1dCBkb3duCisKKyAgICBzaHV0ZG93bkVmbCgpOworICAgIHJldHVybiBFWElUX1NV
Q0NFU1M7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9lZmwvSW1hZ2VEaWZmL0NNYWtlTGlzdHMudHh0
IGIvVG9vbHMvZWZsL0ltYWdlRGlmZi9DTWFrZUxpc3RzLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYmNiYzE3ZjFjNmIzNGI5ZDMxZDA4YmM0NzlkYzFkZDZiYWY4MjU0MS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9lZmwvSW1h
Z2VEaWZmL0NNYWtlTGlzdHMudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotc2V0
KEltYWdlRGlmZl9TT1VSQ0VTCi0gICAgJHtUT09MU19ESVJ9L2VmbC9JbWFnZURpZmYvSW1hZ2VE
aWZmLmNwcAotKQotCi1zZXQoSW1hZ2VEaWZmX0xJQlJBUklFUwotICAgICR7RUNPUkVfRVZBU19M
SUJSQVJJRVN9Ci0gICAgJHtFQ09SRV9MSUJSQVJJRVN9Ci0gICAgJHtFSU5BX0xJQlJBUklFU30K
LSAgICAke0VWQVNfTElCUkFSSUVTfQotICAgICR7V1RGX0xJQlJBUllfTkFNRX0KLSkKLQotc2V0
KEltYWdlRGlmZl9JTkNMVURFX0RJUkVDVE9SSUVTCi0gICAgJHtDTUFLRV9CSU5BUllfRElSfQot
ICAgICR7RUNPUkVfRVZBU19JTkNMVURFX0RJUlN9Ci0gICAgJHtFQ09SRV9JTkNMVURFX0RJUlN9
Ci0gICAgJHtFSU5BX0lOQ0xVREVfRElSU30KLSAgICAke0VWQVNfSU5DTFVERV9ESVJTfQotICAg
ICR7V1RGX0RJUn0KLSkKLQotaW5jbHVkZV9kaXJlY3Rvcmllcygke0ltYWdlRGlmZl9JTkNMVURF
X0RJUkVDVE9SSUVTfSkKLWFkZF9leGVjdXRhYmxlKEltYWdlRGlmZiAke0ltYWdlRGlmZl9TT1VS
Q0VTfSkKLXRhcmdldF9saW5rX2xpYnJhcmllcyhJbWFnZURpZmYgJHtJbWFnZURpZmZfTElCUkFS
SUVTfSkKLXNldF90YXJnZXRfcHJvcGVydGllcyhJbWFnZURpZmYgUFJPUEVSVElFUyBGT0xERVIg
IlRvb2xzIikKZGlmZiAtLWdpdCBhL1Rvb2xzL2VmbC9JbWFnZURpZmYvSW1hZ2VEaWZmLmNwcCBi
L1Rvb2xzL2VmbC9JbWFnZURpZmYvSW1hZ2VEaWZmLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMTI5YjZjYTU3Yzg1NDIzNjcyODBhYWY0OGVkZTI5Mzg5OTdhZTVlYS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9lZmwvSW1hZ2VE
aWZmL0ltYWdlRGlmZi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNjggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBaYW4gRG9iZXJzZWsgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4K
LSAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgotICogQ29weXJpZ2h0IChDKSAyMDEx
IFByb0ZVU0lPTiBFbWJlZGRlZCBTeXN0ZW1zCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3Vu
ZyBFbGVjdHJvbmljcwotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgPEVjb3JlLmg+Ci0j
aW5jbHVkZSA8RWNvcmVfRXZhcy5oPgotI2luY2x1ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDxhbGdv
cml0aG0+Ci0jaW5jbHVkZSA8Y21hdGg+Ci0jaW5jbHVkZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPGNz
dGRsaWI+Ci0jaW5jbHVkZSA8Z2V0b3B0Lmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNs
dWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDx3dGYvT3du
QXJyYXlQdHIuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9lZmwv
UmVmUHRyRWZsLmg+Ci0KLWVudW0gUGl4ZWxDb21wb25lbnQgewotICAgIFJlZCwKLSAgICBHcmVl
biwKLSAgICBCbHVlLAotICAgIEFscGhhCi19OwotCi1zdGF0aWMgT3duUHRyPEVjb3JlX0V2YXM+
IGdFY29yZUV2YXM7Ci1zdGF0aWMgZG91YmxlIGdUb2xlcmFuY2UgPSAwOwotCi1zdGF0aWMgdm9p
ZCBhYm9ydFdpdGhFcnJvck1lc3NhZ2UoY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKTsKLQotc3Rh
dGljIHVuc2lnbmVkIGNoYXIqIHBpeGVsRnJvbUltYWdlRGF0YSh1bnNpZ25lZCBjaGFyKiBpbWFn
ZURhdGEsIGludCByb3dTdHJpZGUsIGludCB4LCBpbnQgeSkKLXsKLSAgICByZXR1cm4gaW1hZ2VE
YXRhICsgKHkgKiByb3dTdHJpZGUpICsgKHggPDwgMik7Ci19Ci0KLXN0YXRpYyBFdmFzX09iamVj
dCogZGlmZmVyZW5jZUltYWdlRnJvbURpZmZlcmVuY2VCdWZmZXIoRXZhcyogZXZhcywgdW5zaWdu
ZWQgY2hhciogYnVmZmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgRXZhc19PYmpl
Y3QqIGltYWdlID0gZXZhc19vYmplY3RfaW1hZ2VfZmlsbGVkX2FkZChldmFzKTsKLSAgICBpZiAo
IWltYWdlKQotICAgICAgICBhYm9ydFdpdGhFcnJvck1lc3NhZ2UoImNvdWxkIG5vdCBjcmVhdGUg
ZGlmZmVyZW5jZSBpbWFnZSIpOwotCi0gICAgZXZhc19vYmplY3RfaW1hZ2Vfc2l6ZV9zZXQoaW1h
Z2UsIHdpZHRoLCBoZWlnaHQpOwotICAgIGV2YXNfb2JqZWN0X2ltYWdlX2NvbG9yc3BhY2Vfc2V0
KGltYWdlLCBFVkFTX0NPTE9SU1BBQ0VfQVJHQjg4ODgpOwotCi0gICAgdW5zaWduZWQgY2hhciog
ZGlmZlBpeGVscyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihldmFzX29iamVjdF9pbWFn
ZV9kYXRhX2dldChpbWFnZSwgRUlOQV9UUlVFKSk7Ci0gICAgY29uc3QgaW50IHJvd1N0cmlkZSA9
IGV2YXNfb2JqZWN0X2ltYWdlX3N0cmlkZV9nZXQoaW1hZ2UpOwotICAgIGZvciAoaW50IHggPSAw
OyB4IDwgd2lkdGg7IHgrKykgewotICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsg
eSsrKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBkaWZmUGl4ZWwgPSBwaXhlbEZyb21J
bWFnZURhdGEoZGlmZlBpeGVscywgcm93U3RyaWRlLCB4LCB5KTsKLSAgICAgICAgICAgIGRpZmZQ
aXhlbFtSZWRdID0gZGlmZlBpeGVsW0dyZWVuXSA9IGRpZmZQaXhlbFtCbHVlXSA9ICpidWZmZXIr
KzsKLSAgICAgICAgICAgIGRpZmZQaXhlbFtBbHBoYV0gPSAweGZmOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9zZXQoaW1hZ2UsIGRpZmZQaXhlbHMpOwot
Ci0gICAgcmV0dXJuIGltYWdlOwotfQotCi1zdGF0aWMgZmxvYXQgY29tcHV0ZURpc3RhbmNlQmV0
d2VlblBpeGVsQ29tcG9uZW50cyh1bnNpZ25lZCBjaGFyIGFjdHVhbENvbXBvbmVudCwgdW5zaWdu
ZWQgY2hhciBiYXNlQ29tcG9uZW50KQotewotICAgIHJldHVybiAoYWN0dWFsQ29tcG9uZW50IC0g
YmFzZUNvbXBvbmVudCkgLyBzdGQ6Om1heDxmbG9hdD4oMjU1IC0gYmFzZUNvbXBvbmVudCwgYmFz
ZUNvbXBvbmVudCk7Ci19Ci0KLXN0YXRpYyBmbG9hdCBjb21wdXRlRGlzdGFuY2VCZXR3ZWVuUGl4
ZWxDb21wb25lbnRzKHVuc2lnbmVkIGNoYXIqIGFjdHVhbFBpeGVsLCB1bnNpZ25lZCBjaGFyKiBi
YXNlUGl4ZWwsIFBpeGVsQ29tcG9uZW50IGNvbXBvbmVudCkKLXsKLSAgICByZXR1cm4gY29tcHV0
ZURpc3RhbmNlQmV0d2VlblBpeGVsQ29tcG9uZW50cyhhY3R1YWxQaXhlbFtjb21wb25lbnRdLCBi
YXNlUGl4ZWxbY29tcG9uZW50XSk7Ci19Ci0KLXN0YXRpYyBmbG9hdCBjYWxjdWxhdGVQaXhlbERp
ZmZlcmVuY2UodW5zaWduZWQgY2hhciogYmFzZVBpeGVsLCB1bnNpZ25lZCBjaGFyKiBhY3R1YWxQ
aXhlbCkKLXsKLSAgICBjb25zdCBmbG9hdCByZWQgPSBjb21wdXRlRGlzdGFuY2VCZXR3ZWVuUGl4
ZWxDb21wb25lbnRzKGFjdHVhbFBpeGVsLCBiYXNlUGl4ZWwsIFJlZCk7Ci0gICAgY29uc3QgZmxv
YXQgZ3JlZW4gPSBjb21wdXRlRGlzdGFuY2VCZXR3ZWVuUGl4ZWxDb21wb25lbnRzKGFjdHVhbFBp
eGVsLCBiYXNlUGl4ZWwsIEdyZWVuKTsKLSAgICBjb25zdCBmbG9hdCBibHVlID0gY29tcHV0ZURp
c3RhbmNlQmV0d2VlblBpeGVsQ29tcG9uZW50cyhhY3R1YWxQaXhlbCwgYmFzZVBpeGVsLCBCbHVl
KTsKLSAgICBjb25zdCBmbG9hdCBhbHBoYSA9IGNvbXB1dGVEaXN0YW5jZUJldHdlZW5QaXhlbENv
bXBvbmVudHMoYWN0dWFsUGl4ZWwsIGJhc2VQaXhlbCwgQWxwaGEpOwotICAgIHJldHVybiBzcXJ0
ZihyZWQgKiByZWQgKyBncmVlbiAqIGdyZWVuICsgYmx1ZSAqIGJsdWUgKyBhbHBoYSAqIGFscGhh
KSAvIDIuMGY7Ci19Ci0KLXN0YXRpYyBmbG9hdCBjYWxjdWxhdGVEaWZmZXJlbmNlKEV2YXNfT2Jq
ZWN0KiBiYXNlbGluZUltYWdlLCBFdmFzX09iamVjdCogYWN0dWFsSW1hZ2UsIFJlZlB0cjxFdmFz
X09iamVjdD4mIGRpZmZlcmVuY2VJbWFnZSkKLXsKLSAgICBpbnQgd2lkdGgsIGhlaWdodCwgYmFz
ZWxpbmVXaWR0aCwgYmFzZWxpbmVIZWlnaHQ7Ci0gICAgZXZhc19vYmplY3RfaW1hZ2Vfc2l6ZV9n
ZXQoYWN0dWFsSW1hZ2UsICZ3aWR0aCwgJmhlaWdodCk7Ci0gICAgZXZhc19vYmplY3RfaW1hZ2Vf
c2l6ZV9nZXQoYmFzZWxpbmVJbWFnZSwgJmJhc2VsaW5lV2lkdGgsICZiYXNlbGluZUhlaWdodCk7
Ci0KLSAgICBpZiAod2lkdGggIT0gYmFzZWxpbmVXaWR0aCB8fCBoZWlnaHQgIT0gYmFzZWxpbmVI
ZWlnaHQpIHsKLSAgICAgICAgcHJpbnRmKCJFcnJvciwgdGVzdCBhbmQgcmVmZXJlbmNlIGltYWdl
IGhhdmUgZGlmZmVyZW50IHNpemVzLlxuIik7Ci0gICAgICAgIHJldHVybiAxMDA7IC8vIENvbXBs
ZXRlbHkgZGlmZmVyZW50LgotICAgIH0KLQotICAgIE93bkFycmF5UHRyPHVuc2lnbmVkIGNoYXI+
IGRpZmZCdWZmZXIgPSBhZG9wdEFycmF5UHRyKG5ldyB1bnNpZ25lZCBjaGFyW3dpZHRoICogaGVp
Z2h0XSk7Ci0gICAgaWYgKCFkaWZmQnVmZmVyKQotICAgICAgICBhYm9ydFdpdGhFcnJvck1lc3Nh
Z2UoImNvdWxkIG5vdCBjcmVhdGUgZGlmZmVyZW5jZSBidWZmZXIiKTsKLQotICAgIGNvbnN0IGlu
dCBhY3R1YWxSb3dTdHJpZGUgPSBldmFzX29iamVjdF9pbWFnZV9zdHJpZGVfZ2V0KGFjdHVhbElt
YWdlKTsKLSAgICBjb25zdCBpbnQgYmFzZVJvd1N0cmlkZSA9IGV2YXNfb2JqZWN0X2ltYWdlX3N0
cmlkZV9nZXQoYmFzZWxpbmVJbWFnZSk7Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZEaWZmZXJlbnRQ
aXhlbHMgPSAwOwotICAgIGZsb2F0IHRvdGFsRGlzdGFuY2UgPSAwOwotICAgIGZsb2F0IG1heERp
c3RhbmNlID0gMDsKLSAgICB1bnNpZ25lZCBjaGFyKiBhY3R1YWxQaXhlbHMgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyKj4oZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9nZXQoYWN0dWFsSW1hZ2Us
IEVJTkFfRkFMU0UpKTsKLSAgICB1bnNpZ25lZCBjaGFyKiBiYXNlUGl4ZWxzID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcio+KGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfZ2V0KGJhc2VsaW5lSW1h
Z2UsIEVJTkFfRkFMU0UpKTsKLSAgICB1bnNpZ25lZCBjaGFyKiBjdXJyZW50RGlmZlBpeGVsID0g
ZGlmZkJ1ZmZlci5nZXQoKTsKLQotICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykg
ewotICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7Ci0gICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyKiBhY3R1YWxQaXhlbCA9IHBpeGVsRnJvbUltYWdlRGF0YShhY3R1YWxQ
aXhlbHMsIGFjdHVhbFJvd1N0cmlkZSwgeCwgeSk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFy
KiBiYXNlUGl4ZWwgPSBwaXhlbEZyb21JbWFnZURhdGEoYmFzZVBpeGVscywgYmFzZVJvd1N0cmlk
ZSwgeCwgeSk7Ci0KLSAgICAgICAgICAgIGNvbnN0IGZsb2F0IGRpc3RhbmNlID0gY2FsY3VsYXRl
UGl4ZWxEaWZmZXJlbmNlKGJhc2VQaXhlbCwgYWN0dWFsUGl4ZWwpOwotICAgICAgICAgICAgKmN1
cnJlbnREaWZmUGl4ZWwrKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGRpc3RhbmNlICog
MjU1LjBmKTsKLQotICAgICAgICAgICAgaWYgKGRpc3RhbmNlID49IDEuMGYgLyAyNTUuMGYpIHsK
LSAgICAgICAgICAgICAgICArK251bWJlck9mRGlmZmVyZW50UGl4ZWxzOwotICAgICAgICAgICAg
ICAgIHRvdGFsRGlzdGFuY2UgKz0gZGlzdGFuY2U7Ci0gICAgICAgICAgICAgICAgbWF4RGlzdGFu
Y2UgPSBzdGQ6Om1heDxmbG9hdD4obWF4RGlzdGFuY2UsIGRpc3RhbmNlKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFdoZW4gdXNpbmcgZXZhc19vYmplY3RfaW1h
Z2VfZGF0YV9nZXQoKSwgYSBjb21wbGVtZW50YXJ5IGV2YXNfb2JqZWN0X2RhdGFfc2V0KCkgbXVz
dCBiZQotICAgIC8vIGlzc3VlZCB0byBiYWxhbmNlIHRoZSByZWZlcmVuY2UgY291bnQsIGV2ZW4g
aWYgdGhlIGltYWdlIGhhc24ndCBiZWVuIGNoYW5nZWQuCi0gICAgZXZhc19vYmplY3RfaW1hZ2Vf
ZGF0YV9zZXQoYmFzZWxpbmVJbWFnZSwgYmFzZVBpeGVscyk7Ci0gICAgZXZhc19vYmplY3RfaW1h
Z2VfZGF0YV9zZXQoYWN0dWFsSW1hZ2UsIGFjdHVhbFBpeGVscyk7Ci0KLSAgICAvLyBDb21wdXRl
IHRoZSBkaWZmZXJlbmNlIGFzIGEgcGVyY2VudGFnZSBjb21iaW5pbmcgYm90aCB0aGUgbnVtYmVy
IG9mCi0gICAgLy8gZGlmZmVyZW50IHBpeGVscyBhbmQgdGhlaXIgZGlmZmVyZW5jZSBhbW91bnQg
aS5lLiB0aGUgYXZlcmFnZSBkaXN0YW5jZQotICAgIC8vIG92ZXIgdGhlIGVudGlyZSBpbWFnZQot
ICAgIGZsb2F0IGRpZmZlcmVuY2UgPSAwOwotICAgIGlmIChudW1iZXJPZkRpZmZlcmVudFBpeGVs
cykKLSAgICAgICAgZGlmZmVyZW5jZSA9IDEwMC4wZiAqIHRvdGFsRGlzdGFuY2UgLyAoaGVpZ2h0
ICogd2lkdGgpOwotICAgIGlmIChkaWZmZXJlbmNlIDw9IGdUb2xlcmFuY2UpCi0gICAgICAgIGRp
ZmZlcmVuY2UgPSAwOwotICAgIGVsc2UgewotICAgICAgICBkaWZmZXJlbmNlID0gcm91bmRmKGRp
ZmZlcmVuY2UgKiAxMDAuMGYpIC8gMTAwLjBmOwotICAgICAgICBkaWZmZXJlbmNlID0gc3RkOjpt
YXgoZGlmZmVyZW5jZSwgMC4wMWYpOyAvLyByb3VuZCB0byAyIGRlY2ltYWwgcGxhY2VzCi0KLSAg
ICAgICAgZGlmZmVyZW5jZUltYWdlID0gYWRvcHRSZWYoZGlmZmVyZW5jZUltYWdlRnJvbURpZmZl
cmVuY2VCdWZmZXIoZXZhc19vYmplY3RfZXZhc19nZXQoYmFzZWxpbmVJbWFnZSksIGRpZmZCdWZm
ZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZGlmZmVyZW5j
ZTsKLX0KLQotc3RhdGljIGludCBnZXRUZW1wb3JhcnlGaWxlKGNoYXIgKmZpbGVOYW1lLCBzaXpl
X3QgZmlsZU5hbWVMZW5ndGgpCi17Ci0gICAgY2hhciogdGVtcERpcmVjdG9yeSA9IGdldGVudigi
VE1QRElSIik7Ci0gICAgaWYgKCF0ZW1wRGlyZWN0b3J5KQotICAgICAgICB0ZW1wRGlyZWN0b3J5
ID0gZ2V0ZW52KCJURU1QIik7Ci0KLSAgICBpZiAodGVtcERpcmVjdG9yeSkKLSAgICAgICAgc25w
cmludGYoZmlsZU5hbWUsIGZpbGVOYW1lTGVuZ3RoLCAiJXMvSW1hZ2VEaWZmWFhYWFhYLnBuZyIs
IHRlbXBEaXJlY3RvcnkpOwotICAgIGVsc2UgewotI2lmIF9fbGludXhfXwotICAgICAgICBzdHJj
cHkoZmlsZU5hbWUsICIvZGV2L3NobS9JbWFnZURpZmZYWFhYWFgucG5nIik7Ci0gICAgICAgIGNv
bnN0IGludCBmaWxlRGVzY3JpcHRvciA9IG1rc3RlbXBzKGZpbGVOYW1lLCBzaXplb2YoIi5wbmci
KSAtIDEpOwotICAgICAgICBpZiAoZmlsZURlc2NyaXB0b3IgPj0gMCkKLSAgICAgICAgICAgIHJl
dHVybiBmaWxlRGVzY3JpcHRvcjsKLSNlbmRpZiAvLyBfX2xpbnV4X18KLQotICAgICAgICBzdHJj
cHkoZmlsZU5hbWUsICJJbWFnZURpZmZYWFhYWFgucG5nIik7Ci0gICAgfQotCi0gICAgcmV0dXJu
IG1rc3RlbXBzKGZpbGVOYW1lLCBzaXplb2YoIi5wbmciKSAtIDEpOwotfQotCi1zdGF0aWMgdm9p
ZCBwcmludEltYWdlKEV2YXNfT2JqZWN0KiBpbWFnZSkKLXsKLSAgICBjaGFyIGZpbGVOYW1lW1BB
VEhfTUFYXTsKLQotICAgIGNvbnN0IGludCB0ZW1wSW1hZ2VGZCA9IGdldFRlbXBvcmFyeUZpbGUo
ZmlsZU5hbWUsIFBBVEhfTUFYKTsKLSAgICBpZiAodGVtcEltYWdlRmQgPT0gLTEpCi0gICAgICAg
IGFib3J0V2l0aEVycm9yTWVzc2FnZSgiY291bGQgbm90IGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZSIp
OwotCi0gICAgZXZhc19yZW5kZXIoZXZhc19vYmplY3RfZXZhc19nZXQoaW1hZ2UpKTsKLQotICAg
IGlmIChldmFzX29iamVjdF9pbWFnZV9zYXZlKGltYWdlLCBmaWxlTmFtZSwgMCwgMCkpIHsKLSAg
ICAgICAgc3RydWN0IHN0YXQgZmlsZUluZm87Ci0gICAgICAgIGlmICghc3RhdChmaWxlTmFtZSwg
JmZpbGVJbmZvKSkgewotICAgICAgICAgICAgcHJpbnRmKCJDb250ZW50LUxlbmd0aDogJWxkXG4i
LCBmaWxlSW5mby5zdF9zaXplKTsKLSAgICAgICAgICAgIGZmbHVzaChzdGRvdXQpOwotCi0gICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlclsyMDQ4XTsKLSAgICAgICAgICAgIHNzaXplX3Qg
Ynl0ZXNSZWFkOwotICAgICAgICAgICAgd2hpbGUgKChieXRlc1JlYWQgPSByZWFkKHRlbXBJbWFn
ZUZkLCBidWZmZXIsIHNpemVvZihidWZmZXIpKSkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgc3Np
emVfdCBieXRlc1dyaXR0ZW4gPSAwOwotICAgICAgICAgICAgICAgIHNzaXplX3QgY291bnQ7Ci0g
ICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICBpZiAoKGNvdW50ID0gd3Jp
dGUoMSwgYnVmZmVyICsgYnl0ZXNXcml0dGVuLCBieXRlc1JlYWQgLSBieXRlc1dyaXR0ZW4pKSA8
PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
IGJ5dGVzV3JpdHRlbiArPSBjb3VudDsKLSAgICAgICAgICAgICAgICB9IHdoaWxlIChieXRlc1dy
aXR0ZW4gPCBieXRlc1JlYWQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAg
IGNsb3NlKHRlbXBJbWFnZUZkKTsKLSAgICB1bmxpbmsoZmlsZU5hbWUpOwotfQotCi1zdGF0aWMg
dm9pZCBwcmludEltYWdlRGlmZmVyZW5jZXMoRXZhc19PYmplY3QqIGJhc2VsaW5lSW1hZ2UsIEV2
YXNfT2JqZWN0KiBhY3R1YWxJbWFnZSkKLXsKLSAgICBSZWZQdHI8RXZhc19PYmplY3Q+IGRpZmZl
cmVuY2VJbWFnZTsKLSAgICBjb25zdCBmbG9hdCBkaWZmZXJlbmNlID0gY2FsY3VsYXRlRGlmZmVy
ZW5jZShiYXNlbGluZUltYWdlLCBhY3R1YWxJbWFnZSwgZGlmZmVyZW5jZUltYWdlKTsKLQotICAg
IGlmIChkaWZmZXJlbmNlID4gMC4wZikgewotICAgICAgICBpZiAoZGlmZmVyZW5jZUltYWdlKQot
ICAgICAgICAgICAgcHJpbnRJbWFnZShkaWZmZXJlbmNlSW1hZ2UuZ2V0KCkpOwotCi0gICAgICAg
IHByaW50ZigiZGlmZjogJTAxLjJmJSUgZmFpbGVkXG4iLCBkaWZmZXJlbmNlKTsKLSAgICB9IGVs
c2UKLSAgICAgICAgcHJpbnRmKCJkaWZmOiAlMDEuMmYlJSBwYXNzZWRcbiIsIGRpZmZlcmVuY2Up
OwotfQotCi1zdGF0aWMgdm9pZCByZXNpemVFY29yZUV2YXNJZk5lZWRlZChFdmFzX09iamVjdCog
aW1hZ2UpCi17Ci0gICAgaW50IG5ld1dpZHRoLCBuZXdIZWlnaHQ7Ci0gICAgZXZhc19vYmplY3Rf
aW1hZ2Vfc2l6ZV9nZXQoaW1hZ2UsICZuZXdXaWR0aCwgJm5ld0hlaWdodCk7Ci0KLSAgICBpbnQg
Y3VycmVudFdpZHRoLCBjdXJyZW50SGVpZ2h0OwotICAgIGVjb3JlX2V2YXNfc2NyZWVuX2dlb21l
dHJ5X2dldChnRWNvcmVFdmFzLmdldCgpLCAwLCAwLCAmY3VycmVudFdpZHRoLCAmY3VycmVudEhl
aWdodCk7Ci0KLSAgICBpZiAobmV3V2lkdGggPiBjdXJyZW50V2lkdGgpCi0gICAgICAgIGN1cnJl
bnRXaWR0aCA9IG5ld1dpZHRoOwotICAgIGlmIChuZXdIZWlnaHQgPiBjdXJyZW50SGVpZ2h0KQot
ICAgICAgICBjdXJyZW50SGVpZ2h0ID0gbmV3SGVpZ2h0OwotCi0gICAgZWNvcmVfZXZhc19yZXNp
emUoZ0Vjb3JlRXZhcy5nZXQoKSwgY3VycmVudFdpZHRoLCBjdXJyZW50SGVpZ2h0KTsKLX0KLQot
c3RhdGljIFBhc3NSZWZQdHI8RXZhc19PYmplY3Q+IHJlYWRJbWFnZUZyb21TdGRpbihFdmFzKiBl
dmFzLCBsb25nIGltYWdlU2l6ZSkKLXsKLSAgICBPd25BcnJheVB0cjx1bnNpZ25lZCBjaGFyPiBp
bWFnZUJ1ZmZlciA9IGFkb3B0QXJyYXlQdHIobmV3IHVuc2lnbmVkIGNoYXJbaW1hZ2VTaXplXSk7
Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgYWJvcnRXaXRoRXJyb3JNZXNzYWdlKCJj
YW5ub3QgYWxsb2NhdGUgaW1hZ2UiKTsKLQotICAgIGNvbnN0IHNpemVfdCBieXRlc1JlYWQgPSBm
cmVhZChpbWFnZUJ1ZmZlci5nZXQoKSwgMSwgaW1hZ2VTaXplLCBzdGRpbik7Ci0gICAgaWYgKCFi
eXRlc1JlYWQpCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPEV2YXNfT2JqZWN0PigpOwotCi0g
ICAgRXZhc19PYmplY3QqIGltYWdlID0gZXZhc19vYmplY3RfaW1hZ2VfZmlsbGVkX2FkZChldmFz
KTsKLSAgICBldmFzX29iamVjdF9pbWFnZV9jb2xvcnNwYWNlX3NldChpbWFnZSwgRVZBU19DT0xP
UlNQQUNFX0FSR0I4ODg4KTsKLSAgICBldmFzX29iamVjdF9pbWFnZV9tZW1maWxlX3NldChpbWFn
ZSwgaW1hZ2VCdWZmZXIuZ2V0KCksIGJ5dGVzUmVhZCwgMCwgMCk7Ci0KLSAgICByZXNpemVFY29y
ZUV2YXNJZk5lZWRlZChpbWFnZSk7Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYoaW1hZ2UpOwotfQot
Ci1zdGF0aWMgYm9vbCBwYXJzZUNvbW1hbmRMaW5lT3B0aW9ucyhpbnQgYXJnYywgY2hhcioqIGFy
Z3YpCi17Ci0gICAgc3RhdGljIGNvbnN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0gICAgICAgIHsg
InRvbGVyYW5jZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCAndCcgfSwKLSAgICAgICAgeyAwLCAw
LCAwLCAwIH0KLSAgICB9OwotICAgIGludCBvcHRpb247Ci0KLSAgICB3aGlsZSAoKG9wdGlvbiA9
IGdldG9wdF9sb25nKGFyZ2MsIChjaGFyKiBjb25zdCopYXJndiwgInQ6Iiwgb3B0aW9ucywgMCkp
ICE9IC0xKSB7Ci0gICAgICAgIHN3aXRjaCAob3B0aW9uKSB7Ci0gICAgICAgIGNhc2UgJ3QnOgot
ICAgICAgICAgICAgZ1RvbGVyYW5jZSA9IGF0b2Yob3B0YXJnKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlICc/JzoKLSAgICAgICAgY2FzZSAnOic6Ci0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3Rh
dGljIHZvaWQgc2h1dGRvd25FZmwoKQotewotICAgIGVjb3JlX2V2YXNfc2h1dGRvd24oKTsKLSAg
ICBlY29yZV9zaHV0ZG93bigpOwotICAgIGV2YXNfc2h1dGRvd24oKTsKLX0KLQotc3RhdGljIHZv
aWQgYWJvcnRXaXRoRXJyb3JNZXNzYWdlKGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKLXsKLSAg
ICBzaHV0ZG93bkVmbCgpOwotCi0gICAgcHJpbnRmKCJFcnJvciwgJXMuXG4iLCBlcnJvck1lc3Nh
Z2UpOwotICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKLX0KLQotc3RhdGljIEV2YXMqIGluaXRFZmwo
KQotewotICAgIGV2YXNfaW5pdCgpOwotICAgIGVjb3JlX2luaXQoKTsKLSAgICBlY29yZV9ldmFz
X2luaXQoKTsKLQotICAgIGdFY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX2J1ZmZlcl9u
ZXcoMSwgMSkpOwotICAgIEV2YXMqIGV2YXMgPSBlY29yZV9ldmFzX2dldChnRWNvcmVFdmFzLmdl
dCgpKTsKLSAgICBpZiAoIWV2YXMpCi0gICAgICAgIGFib3J0V2l0aEVycm9yTWVzc2FnZSgiY291
bGQgbm90IGNyZWF0ZSBFY29yZV9FdmFzIGJ1ZmZlciIpOwotCi0gICAgcmV0dXJuIGV2YXM7Ci19
Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCi17Ci0gICAgaWYgKCFwYXJzZUNv
bW1hbmRMaW5lT3B0aW9ucyhhcmdjLCBhcmd2KSkKLSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVS
RTsKLQotICAgIEV2YXMqIGV2YXMgPSBpbml0RWZsKCk7Ci0KLSAgICBSZWZQdHI8RXZhc19PYmpl
Y3Q+IGFjdHVhbEltYWdlOwotICAgIFJlZlB0cjxFdmFzX09iamVjdD4gYmFzZWxpbmVJbWFnZTsK
LQotICAgIGNoYXIgYnVmZmVyWzIwNDhdOwotICAgIHdoaWxlIChmZ2V0cyhidWZmZXIsIHNpemVv
ZihidWZmZXIpLCBzdGRpbikpIHsKLSAgICAgICAgY2hhciogY29udGVudExlbmd0aFN0YXJ0ID0g
c3Ryc3RyKGJ1ZmZlciwgIkNvbnRlbnQtTGVuZ3RoOiAiKTsKLSAgICAgICAgaWYgKCFjb250ZW50
TGVuZ3RoU3RhcnQpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbG9uZyBpbWFnZVNp
emU7Ci0gICAgICAgIGlmIChzc2NhbmYoY29udGVudExlbmd0aFN0YXJ0LCAiQ29udGVudC1MZW5n
dGg6ICVsZCIsICZpbWFnZVNpemUpID09IDEpIHsKLSAgICAgICAgICAgIGlmIChpbWFnZVNpemUg
PD0gMCkKLSAgICAgICAgICAgICAgICBhYm9ydFdpdGhFcnJvck1lc3NhZ2UoImltYWdlIHNpemUg
bXVzdCBiZSBzcGVjaWZpZWQiKTsKLQotICAgICAgICAgICAgaWYgKCFhY3R1YWxJbWFnZSkKLSAg
ICAgICAgICAgICAgICBhY3R1YWxJbWFnZSA9IHJlYWRJbWFnZUZyb21TdGRpbihldmFzLCBpbWFn
ZVNpemUpOwotICAgICAgICAgICAgZWxzZSBpZiAoIWJhc2VsaW5lSW1hZ2UpIHsKLSAgICAgICAg
ICAgICAgICBiYXNlbGluZUltYWdlID0gcmVhZEltYWdlRnJvbVN0ZGluKGV2YXMsIGltYWdlU2l6
ZSk7Ci0KLSAgICAgICAgICAgICAgICBwcmludEltYWdlRGlmZmVyZW5jZXMoYmFzZWxpbmVJbWFn
ZS5nZXQoKSwgYWN0dWFsSW1hZ2UuZ2V0KCkpOwotCi0gICAgICAgICAgICAgICAgYWN0dWFsSW1h
Z2UuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBiYXNlbGluZUltYWdlLmNsZWFyKCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICB9Ci0K
LSAgICBnRWNvcmVFdmFzLmNsZWFyKCk7IC8vIE1ha2Ugc3VyZSBlY29yZV9ldmFzX2ZyZWUgaXMg
Y2FsbGVkIGJlZm9yZSB0aGUgRUZMIGFyZSBzaHV0IGRvd24KLQotICAgIHNodXRkb3duRWZsKCk7
Ci0gICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKLX0K
</data>

          </attachment>
      

    </bug>

</bugzilla>