<?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>99745</bug_id>
          
          <creation_ts>2012-10-18 12:03:52 -0700</creation_ts>
          <short_desc>LLInt backends of non-ARM RISC platforms should be able to share code with the existing ARMv7 backend</short_desc>
          <delta_ts>2012-11-14 04:25:47 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>kbalazs</cc>
    
    <cc>loki</cc>
    
    <cc>mark.lam</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>745453</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-18 12:03:52 -0700</bug_when>
    <thetext>Currently armv7.rb contains loads of useful lowering phases for transforming programs in the offlineasm language into a form more amenable to code generation on ARM.  But in fact, most of these phases are generally useful for any RISC target, like MIPS, for example.  We should take those things in armv7.rb that are more broadly useful and factor them out into a separate file so that future LLInt ports don&apos;t have to copy-paste code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746984</commentid>
    <comment_count>1</comment_count>
      <attachid>169770</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-20 12:17:37 -0700</bug_when>
    <thetext>Created attachment 169770
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746985</commentid>
    <comment_count>2</comment_count>
      <attachid>169770</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-20 12:31:06 -0700</bug_when>
    <thetext>Comment on attachment 169770
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746987</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-20 13:08:20 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/131989</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169770</attachid>
            <date>2012-10-20 12:17:37 -0700</date>
            <delta_ts>2012-10-20 12:31:06 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>riscrb_1.patch</filename>
            <type>text/plain</type>
            <size>40157</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMxOTg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDEyLTEwLTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TExJbnQgYmFja2VuZHMgb2Ygbm9uLUFSTSBSSVNDIHBsYXRmb3JtcyBzaG91bGQgYmUgYWJsZSB0
byBzaGFyZSBjb2RlIHdpdGggdGhlIGV4aXN0aW5nIEFSTXY3IGJhY2tlbmQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NzQ1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBtb3ZlcyBhbGwgb2YgdGhl
IHRoaW5ncyBpbiBhcm12Ny5yYiB0aGF0IEkgdGhvdWdodCBhcmUgZ2VuZXJhbGx5IHVzZWZ1bCBv
dXQKKyAgICAgICAgaW50byByaXNjLnJiLiBJdCBhbHNvIHNlcGFyYXRlcyBzb21lIHBoYXNlcyAo
YnJhbmNoIG9wcyBpcyBzZXBhcmF0ZWQgaW50byBvbmUKKyAgICAgICAgcGhhc2UgdGhhdCBkb2Vz
IHNlbnNpYmxlIHRoaW5ncywgYW5kIGFub3RoZXIgdGhhdCBkb2VzIHRoaW5ncyB0aGF0IGFyZSBw
YWluZnVsbHkKKyAgICAgICAgQVJNLXNwZWNpZmljKSwgYW5kIHJlbW92ZXMgQVJNIGFzc3VtcHRp
b25zIGZyb20gb3RoZXJzIGJ5IHVzaW5nIGEgY2FsbGJhY2sgdG8KKyAgICAgICAgZHJpdmUgZXhh
Y3RseSB3aGF0IGxvd2VyaW5nIG11c3QgaGFwcGVuLiBUaGUgZ29hbCBoZXJlIGlzIHRvIG1pbmlt
aXplIHRoZSBmdXR1cmUKKyAgICAgICAgbWFpbnRlbmFuY2UgYnVyZGVuIG9mIExMSW50IGJ5IGVu
c3VyaW5nIHRoYXQgdGhlIHZhcmlvdXMgcGxhdGZvcm1zIHNoYXJlIGFzIG11Y2gKKyAgICAgICAg
bG93ZXJpbmcgY29kZSBhcyBwb3NzaWJsZS4KKworICAgICAgICAqIG9mZmxpbmVhc20vYXJtdjcu
cmI6CisgICAgICAgICogb2ZmbGluZWFzbS9yaXNjLnJiOiBBZGRlZC4KKwogMjAxMi0xMC0xOSAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBzaG91bGQgaGF2
ZSBzb21lIGZhY2lsaXR5IGZvciByZWNvZ25pemluZyByZWR1bmRhbnQgQ2hlY2tBcnJheXMgYW5k
IEFycmF5aWZpZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3
LnJiCShyZXZpc2lvbiAxMzE2NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hcm12Ny5yYgkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAy
MDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjQsNiArMjQsNyBAQAogcmVxdWlyZSAiY29uZmlnIgogcmVxdWly
ZSAiYXN0IgogcmVxdWlyZSAib3B0IgorcmVxdWlyZSAicmlzYyIKIAogY2xhc3MgTm9kZQogICAg
IGRlZiBhcm1WN1NpbmdsZQpAQCAtMzMsNyArMzQsNyBAQCBjbGFzcyBOb2RlCiAgICAgZW5kCiBl
bmQKIAotY2xhc3MgU3BlY2lhbFJlZ2lzdGVyIDwgTm9DaGlsZHJlbgorY2xhc3MgU3BlY2lhbFJl
Z2lzdGVyCiAgICAgZGVmIGFybVY3T3BlcmFuZAogICAgICAgICBAbmFtZQogICAgIGVuZApAQCAt
MTMzLDQ4NyArMTM0LDYgQEAgY2xhc3MgQWJzb2x1dGVBZGRyZXNzCiBlbmQKIAogIwotIyBMb3dl
cmluZyBvZiBicmFuY2ggb3BzLiBGb3IgZXhhbXBsZToKLSMKLSMgYmFkZGl6IGZvbywgYmFyLCBi
YXoKLSMKLSMgd2lsbCBiZWNvbWU6Ci0jCi0jIGFkZGkgZm9vLCBiYXIKLSMgYnogYmF6Ci0jCi0K
LWRlZiBhcm1WN0xvd2VyQnJhbmNoT3BzKGxpc3QpCi0gICAgbmV3TGlzdCA9IFtdCi0gICAgbGlz
dC5lYWNoIHsKLSAgICAgICAgfCBub2RlIHwKLSAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVj
dGlvbgotICAgICAgICAgICAgYW5ub3RhdGlvbiA9IG5vZGUuYW5ub3RhdGlvbgotICAgICAgICAg
ICAgY2FzZSBub2RlLm9wY29kZQotICAgICAgICAgICAgd2hlbiAvXmIoYWRkaXxzdWJpfG9yaXxh
ZGRwKS8KLSAgICAgICAgICAgICAgICBvcCA9ICQxCi0gICAgICAgICAgICAgICAgYnJhbmNoID0g
ImIiICsgJH4ucG9zdF9tYXRjaAotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNh
c2Ugb3AKLSAgICAgICAgICAgICAgICB3aGVuICJhZGRpIiwgImFkZHAiCi0gICAgICAgICAgICAg
ICAgICAgIG9wID0gImFkZGlzIgotICAgICAgICAgICAgICAgIHdoZW4gInN1YmkiCi0gICAgICAg
ICAgICAgICAgICAgIG9wID0gInN1YmlzIgotICAgICAgICAgICAgICAgIHdoZW4gIm9yaSIKLSAg
ICAgICAgICAgICAgICAgICAgb3AgPSAib3JpcyIKLSAgICAgICAgICAgICAgICBlbmQKLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhu
b2RlLmNvZGVPcmlnaW4sIG9wLCBub2RlLm9wZXJhbmRzWzAuLi0yXSwgYW5ub3RhdGlvbikKLSAg
ICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4s
IGJyYW5jaCwgW25vZGUub3BlcmFuZHNbLTFdXSkKLSAgICAgICAgICAgIHdoZW4gImJtdWxpbyIK
LSAgICAgICAgICAgICAgICB0bXAxID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCi0g
ICAgICAgICAgICAgICAgdG1wMiA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQotICAg
ICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwg
InNtdWxsaSIsIFtub2RlLm9wZXJhbmRzWzBdLCBub2RlLm9wZXJhbmRzWzFdLCBub2RlLm9wZXJh
bmRzWzFdLCB0bXAxXSwgYW5ub3RhdGlvbikKLSAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJyc2hpZnRpIiwgW25vZGUub3BlcmFuZHNb
LTJdLCBJbW1lZGlhdGUubmV3KG5vZGUuY29kZU9yaWdpbiwgMzEpLCB0bXAyXSkKLSAgICAgICAg
ICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJiaW5l
cSIsIFt0bXAxLCB0bXAyLCBub2RlLm9wZXJhbmRzWy0xXV0pCi0gICAgICAgICAgICB3aGVuIC9e
Ym11bGkvCi0gICAgICAgICAgICAgICAgY29uZGl0aW9uID0gJH4ucG9zdF9tYXRjaAotICAgICAg
ICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm11
bGkiLCBub2RlLm9wZXJhbmRzWzAuLi0yXSwgYW5ub3RhdGlvbikKLSAgICAgICAgICAgICAgICBu
ZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJidGkiICsgY29uZGl0
aW9uLCBbbm9kZS5vcGVyYW5kc1stMl0sIG5vZGUub3BlcmFuZHNbLTFdXSkKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKLSAgICAgICAgICAgIGVuZAot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKLSAgICAgICAgZW5kCi0g
ICAgfQotICAgIG5ld0xpc3QKLWVuZAotCi0jCi0jIExvd2VyaW5nIG9mIHNoaWZ0IG9wcy4gRm9y
IGV4YW1wbGU6Ci0jCi0jIGxzaGlmdGkgZm9vLCBiYXIKLSMKLSMgd2lsbCBiZWNvbWU6Ci0jCi0j
IGFuZGkgZm9vLCAzMSwgdG1wCi0jIGxzaGlmdGkgdG1wLCBiYXIKLSMKLQotZGVmIGFybVY3U2Fu
aXRpemVTaGlmdChvcGVyYW5kLCBsaXN0KQotICAgIHJldHVybiBvcGVyYW5kIGlmIG9wZXJhbmQu
aW1tZWRpYXRlPwotICAgIAotICAgIHRtcCA9IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCA6
Z3ByKQotICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgImFu
ZGkiLCBbb3BlcmFuZCwgSW1tZWRpYXRlLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sIDMxKSwgdG1w
XSkKLSAgICB0bXAKLWVuZAotCi1kZWYgYXJtVjdMb3dlclNoaWZ0T3BzKGxpc3QpCi0gICAgbmV3
TGlzdCA9IFtdCi0gICAgbGlzdC5lYWNoIHsKLSAgICAgICAgfCBub2RlIHwKLSAgICAgICAgaWYg
bm9kZS5pc19hPyBJbnN0cnVjdGlvbgotICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQotICAg
ICAgICAgICAgd2hlbiAibHNoaWZ0aSIsICJyc2hpZnRpIiwgInVyc2hpZnRpIiwgImxzaGlmdHAi
LCAicnNoaWZ0cCIsICJ1cnNoaWZ0cCIKLSAgICAgICAgICAgICAgICBpZiBub2RlLm9wZXJhbmRz
LnNpemUgPT0gMgotICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBbYXJtVjdTYW5pdGl6ZVNoaWZ0KG5vZGUu
b3BlcmFuZHNbMF0sIG5ld0xpc3QpLCBub2RlLm9wZXJhbmRzWzFdXSwgbm9kZS5hbm5vdGF0aW9u
KQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJ
bnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgW25vZGUub3BlcmFu
ZHNbMF0sIGFybVY3U2FuaXRpemVTaGlmdChub2RlLm9wZXJhbmRzWzFdLCBuZXdMaXN0KSwgbm9k
ZS5vcGVyYW5kc1syXV0sIG5vZGUuYW5ub3RhdGlvbikKLSAgICAgICAgICAgICAgICAgICAgcmFp
c2UgIldyb25nIG51bWJlciBvZiBvcGVyYW5kcyBmb3Igc2hpZnQgYXQgI3tub2RlLmNvZGVPcmln
aW5TdHJpbmd9IiB1bmxlc3Mgbm9kZS5vcGVyYW5kcy5zaXplID09IDMKLSAgICAgICAgICAgICAg
ICBlbmQKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUK
LSAgICAgICAgICAgIGVuZAotICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZXdMaXN0IDw8IG5v
ZGUKLSAgICAgICAgZW5kCi0gICAgfQotICAgIG5ld0xpc3QKLWVuZAotCi0jCi0jIExvd2VyaW5n
IG9mIG1hbGZvcm1lZCBhZGRyZXNzZXMuIEZvciBleGFtcGxlOgotIwotIyBsb2FkcCAxMDAwMFtm
b29dLCBiYXIKLSMKLSMgd2lsbCBiZWNvbWU6Ci0jCi0jIG1vdmUgMTAwMDAsIHRtcAotIyBhZGRw
IGZvbywgdG1wCi0jIGxvYWRwIDBbdG1wXSwgYmFyCi0jCi0KLWNsYXNzIE5vZGUKLSAgICBkZWYg
YXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKLSAgICAgICAgbWFwQ2hp
bGRyZW4gewotICAgICAgICAgICAgfCBub2RlIHwKLSAgICAgICAgICAgIG5vZGUuYXJtVjdMb3dl
ck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKLSAgICAgICAgfQotICAgIGVuZAotZW5k
Ci0KLWNsYXNzIEFkZHJlc3MKLSAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1Jl
Y3Vyc2UobGlzdCkKLSAgICAgICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgb3Igb2Zmc2V0LnZh
bHVlID4gMHhmZmYKLSAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcoY29kZU9yaWdpbiwgOmdwcikK
LSAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwg
W29mZnNldCwgdG1wXSkKLSAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVP
cmlnaW4sICJhZGRwIiwgW2Jhc2UsIHRtcF0pCi0gICAgICAgICAgICBBZGRyZXNzLm5ldyhjb2Rl
T3JpZ2luLCB0bXAsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCi0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHNlbGYKLSAgICAgICAgZW5kCi0gICAgZW5kCi1lbmQKLQotY2xhc3MgQmFz
ZUluZGV4Ci0gICAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNSZWN1cnNlKGxpc3Qp
Ci0gICAgICAgIGlmIG9mZnNldC52YWx1ZSAhPSAwCi0gICAgICAgICAgICB0bXAgPSBUbXAubmV3
KGNvZGVPcmlnaW4sIDpncHIpCi0gICAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhj
b2RlT3JpZ2luLCAibW92ZSIsIFtvZmZzZXQsIHRtcF0pCi0gICAgICAgICAgICBsaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAiYWRkcCIsIFtiYXNlLCB0bXBdKQotICAgICAgICAg
ICAgQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCB0bXAsIGluZGV4LCBzY2FsZSwgSW1tZWRpYXRl
Lm5ldyhjb2RlT3JpZ2luLCAwKSkKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc2VsZgotICAg
ICAgICBlbmQKLSAgICBlbmQKLWVuZAotCi1jbGFzcyBBYnNvbHV0ZUFkZHJlc3MKLSAgICBkZWYg
YXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKLSAgICAgICAgdG1wID0g
VG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQotICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhjb2RlT3JpZ2luLCAibW92ZSIsIFthZGRyZXNzLCB0bXBdKQotICAgICAgICBBZGRyZXNzLm5l
dyhjb2RlT3JpZ2luLCB0bXAsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCi0gICAgZW5k
Ci1lbmQKLQotZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXMobGlzdCkKLSAgICBuZXdM
aXN0ID0gW10KLSAgICBsaXN0LmVhY2ggewotICAgICAgICB8IG5vZGUgfAotICAgICAgICBuZXdM
aXN0IDw8IG5vZGUuYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobmV3TGlzdCkK
LSAgICB9Ci0gICAgbmV3TGlzdAotZW5kCi0KLSMKLSMgTG93ZXJpbmcgb2YgbWFsZm9ybWVkIGFk
ZHJlc3NlcyBpbiBkb3VibGUgbG9hZHMgYW5kIHN0b3Jlcy4gRm9yIGV4YW1wbGU6Ci0jCi0jIGxv
YWRkIFtmb28sIGJhciwgOF0sIGJhegotIwotIyBiZWNvbWVzOgotIwotIyBsZWFwIFtmb28sIGJh
ciwgOF0sIHRtcAotIyBsb2FkZCBbdG1wXSwgYmF6Ci0jCi0KLWNsYXNzIE5vZGUKLSAgICBkZWYg
YXJtVjdEb3VibGVBZGRyZXNzKGxpc3QpCi0gICAgICAgIHNlbGYKLSAgICBlbmQKLWVuZAotCi1j
bGFzcyBCYXNlSW5kZXgKLSAgICBkZWYgYXJtVjdEb3VibGVBZGRyZXNzKGxpc3QpCi0gICAgICAg
IHRtcCA9IFRtcC5uZXcoY29kZU9yaWdpbiwgOmdwcikKLSAgICAgICAgbGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcoY29kZU9yaWdpbiwgImxlYXAiLCBbc2VsZiwgdG1wXSkKLSAgICAgICAgQWRkcmVz
cy5uZXcoY29kZU9yaWdpbiwgdG1wLCBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIDApKQotICAg
IGVuZAotZW5kCi0KLWRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzRG91YmxlKGxpc3Qp
Ci0gICAgbmV3TGlzdCA9IFtdCi0gICAgbGlzdC5lYWNoIHsKLSAgICAgICAgfCBub2RlIHwKLSAg
ICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgotICAgICAgICAgICAgY2FzZSBub2RlLm9w
Y29kZQotICAgICAgICAgICAgd2hlbiAibG9hZGQiCi0gICAgICAgICAgICAgICAgbmV3TGlzdCA8
PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibG9hZGQiLCBbbm9kZS5vcGVyYW5k
c1swXS5hcm1WN0RvdWJsZUFkZHJlc3MobmV3TGlzdCksIG5vZGUub3BlcmFuZHNbMV1dLCBub2Rl
LmFubm90YXRpb24pCi0gICAgICAgICAgICB3aGVuICJzdG9yZWQiCi0gICAgICAgICAgICAgICAg
bmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAic3RvcmVkIiwgW25v
ZGUub3BlcmFuZHNbMF0sIG5vZGUub3BlcmFuZHNbMV0uYXJtVjdEb3VibGVBZGRyZXNzKG5ld0xp
c3QpXSwgbm9kZS5hbm5vdGF0aW9uKQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IG5ld0xpc3QgPDwgbm9kZQotICAgICAgICAgICAgZW5kCi0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG5ld0xpc3QgPDwgbm9kZQotICAgICAgICBlbmQKLSAgICB9Ci0gICAgbmV3TGlzdAotZW5k
Ci0KLSMKLSMgTG93ZXJpbmcgb2YgbWlzcGxhY2VkIGltbWVkaWF0ZXMuIEZvciBleGFtcGxlOgot
IwotIyBzdG9yZWkgMCwgW2Zvb10KLSMKLSMgd2lsbCBiZWNvbWU6Ci0jCi0jIG1vdmUgMCwgdG1w
Ci0jIHN0b3JlaSB0bXAsIFtmb29dCi0jCi0KLWRlZiBhcm1WN0xvd2VyTWlzcGxhY2VkSW1tZWRp
YXRlcyhsaXN0KQotICAgIG5ld0xpc3QgPSBbXQotICAgIGxpc3QuZWFjaCB7Ci0gICAgICAgIHwg
bm9kZSB8Ci0gICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KLSAgICAgICAgICAgIGNh
c2Ugbm9kZS5vcGNvZGUKLSAgICAgICAgICAgIHdoZW4gInN0b3JlYiIsICJzdG9yZWkiLCAic3Rv
cmVwIgotICAgICAgICAgICAgICAgIG9wZXJhbmRzID0gbm9kZS5vcGVyYW5kcwotICAgICAgICAg
ICAgICAgIG5ld09wZXJhbmRzID0gW10KLSAgICAgICAgICAgICAgICBvcGVyYW5kcy5lYWNoIHsK
LSAgICAgICAgICAgICAgICAgICAgfCBvcGVyYW5kIHwKLSAgICAgICAgICAgICAgICAgICAgaWYg
b3BlcmFuZC5pc19hPyBJbW1lZGlhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFRt
cC5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCA6Z3ByKQotICAgICAgICAgICAgICAgICAgICAgICAg
bmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAibW92ZSIsIFtv
cGVyYW5kLCB0bXBdKQotICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3BlcmFuZHMgPDwgdG1w
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld09w
ZXJhbmRzIDw8IG9wZXJhbmQKLSAgICAgICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29k
ZU9yaWdpbiwgbm9kZS5vcGNvZGUsIG5ld09wZXJhbmRzLCBub2RlLmFubm90YXRpb24pCi0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCi0gICAgICAgICAg
ICBlbmQKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCi0gICAgICAg
IGVuZAotICAgIH0KLSAgICBuZXdMaXN0Ci1lbmQKLQotIwotIyBMb3dlcmluZyBvZiBtYWxmb3Jt
ZWQgaW1tZWRpYXRlcyBleGNlcHQgd2hlbiB1c2VkIGluIGEgIm1vdmUiIGluc3RydWN0aW9uLgot
IyBGb3IgZXhhbXBsZToKLSMKLSMgYWRkcCA2NDI2NDEsIGZvbwotIwotIyB3aWxsIGJlY29tZToK
LSMKLSMgbW92ZSA2NDI2NDEsIHRtcAotIyBhZGRwIHRtcCwgZm9vCi0jCi0KLWNsYXNzIE5vZGUK
LSAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCi0gICAg
ICAgIG1hcENoaWxkcmVuIHsKLSAgICAgICAgICAgIHwgbm9kZSB8Ci0gICAgICAgICAgICBub2Rl
LmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShsaXN0KQotICAgICAgICB9Ci0g
ICAgZW5kCi1lbmQKLQotY2xhc3MgQWRkcmVzcwotICAgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVk
SW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkKLSAgICAgICAgc2VsZgotICAgIGVuZAotZW5kCi0KLWNs
YXNzIEJhc2VJbmRleAotICAgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vy
c2UobGlzdCkKLSAgICAgICAgc2VsZgotICAgIGVuZAotZW5kCi0KLWNsYXNzIEFic29sdXRlQWRk
cmVzcwotICAgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkK
LSAgICAgICAgc2VsZgotICAgIGVuZAotZW5kCi0KLWNsYXNzIEltbWVkaWF0ZQotICAgIGRlZiBh
cm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkKLSAgICAgICAgaWYgdmFs
dWUgPCAwIG9yIHZhbHVlID4gMjU1Ci0gICAgICAgICAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmln
aW4sIDpncHIpCi0gICAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2lu
LCAibW92ZSIsIFtzZWxmLCB0bXBdKQotICAgICAgICAgICAgdG1wCi0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHNlbGYKLSAgICAgICAgZW5kCi0gICAgZW5kCi1lbmQKLQotZGVmIGFybVY3TG93
ZXJNYWxmb3JtZWRJbW1lZGlhdGVzKGxpc3QpCi0gICAgbmV3TGlzdCA9IFtdCi0gICAgbGlzdC5l
YWNoIHsKLSAgICAgICAgfCBub2RlIHwKLSAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlv
bgotICAgICAgICAgICAgYW5ub3RhdGlvbiA9IG5vZGUuYW5ub3RhdGlvbgotICAgICAgICAgICAg
Y2FzZSBub2RlLm9wY29kZQotICAgICAgICAgICAgd2hlbiAibW92ZSIKLSAgICAgICAgICAgICAg
ICBuZXdMaXN0IDw8IG5vZGUKLSAgICAgICAgICAgIHdoZW4gImFkZGkiLCAiYWRkcCIsICJhZGRp
cyIsICJzdWJpIiwgInN1YnAiLCAic3ViaXMiCi0gICAgICAgICAgICAgICAgaWYgbm9kZS5vcGVy
YW5kc1swXS5pc19hPyBJbW1lZGlhdGUgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBub2Rl
Lm9wZXJhbmRzWzBdLnZhbHVlIDwgMCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUu
b3BlcmFuZHNbMF0udmFsdWUgPj0gMjU1IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS5vcGVyYW5kcy5zaXplID09IDIKLSAgICAgICAgICAgICAgICAgICAgaWYgbm9kZS5vcGNvZGUg
PX4gL2FkZC8KLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld09wY29kZSA9ICJzdWIiICsgbm9k
ZS5vcGNvZGVbLTEuLi0xXQotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgICAgICBuZXdPcGNvZGUgPSAiYWRkIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0KLSAgICAg
ICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbmV3T3Bjb2RlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSW1tZWRpYXRlLm5ldygtbm9kZS5vcGVyYW5k
c1swXS52YWx1ZSldICsgbm9kZS5vcGVyYW5kc1sxLi4tMV0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb24pCi0gICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUuYXJtVjdMb3dlck1hbGZv
cm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QpCi0gICAgICAgICAgICAgICAgZW5kCi0gICAg
ICAgICAgICB3aGVuICJtdWxpIiwgIm11bHAiCi0gICAgICAgICAgICAgICAgaWYgbm9kZS5vcGVy
YW5kc1swXS5pc19hPyBJbW1lZGlhdGUKLSAgICAgICAgICAgICAgICAgICAgdG1wID0gVG1wLm5l
dyhjb2RlT3JpZ2luLCA6Z3ByKQotICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUub3BlcmFuZHNbMF0sIHRt
cF0sIGFubm90YXRpb24pCi0gICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm11bGkiLCBbdG1wXSArIG5vZGUub3BlcmFuZHNbMS4u
LTFdKQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8
PCBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0KQotICAg
ICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG5ld0xp
c3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobmV3TGlzdCkK
LSAgICAgICAgICAgIGVuZAotICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZXdMaXN0IDw8IG5v
ZGUKLSAgICAgICAgZW5kCi0gICAgfQotICAgIG5ld0xpc3QKLWVuZAotCi0jCi0jIExvd2VyaW5n
IG9mIG1pc3BsYWNlZCBhZGRyZXNzZXMuIEZvciBleGFtcGxlOgotIwotIyBhZGRpIGZvbywgW2Jh
cl0KLSMKLSMgd2lsbCBiZWNvbWU6Ci0jCi0jIGxvYWRpIFtiYXJdLCB0bXAKLSMgYWRkaSBmb28s
IHRtcAotIyBzdG9yZWkgdG1wLCBbYmFyXQotIwotIyBBbm90aGVyIGV4YW1wbGU6Ci0jCi0jIGFk
ZGkgW2Zvb10sIGJhcgotIwotIyB3aWxsIGJlY29tZToKLSMKLSMgbG9hZGkgW2Zvb10sIHRtcAot
IyBhZGRpIHRtcCwgYmFyCi0jCi0KLWRlZiBhcm1WN0FzUmVnaXN0ZXIocHJlTGlzdCwgcG9zdExp
c3QsIG9wZXJhbmQsIHN1ZmZpeCwgbmVlZFN0b3JlKQotICAgIHJldHVybiBvcGVyYW5kIHVubGVz
cyBvcGVyYW5kLmFkZHJlc3M/Ci0gICAgCi0gICAgdG1wID0gVG1wLm5ldyhvcGVyYW5kLmNvZGVP
cmlnaW4sIGlmIHN1ZmZpeCA9PSAiZCIgdGhlbiA6ZnByIGVsc2UgOmdwciBlbmQpCi0gICAgcHJl
TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAibG9hZCIgKyBzdWZm
aXgsIFtvcGVyYW5kLCB0bXBdKQotICAgIGlmIG5lZWRTdG9yZQotICAgICAgICBwb3N0TGlzdCA8
PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAic3RvcmUiICsgc3VmZml4LCBb
dG1wLCBvcGVyYW5kXSkKLSAgICBlbmQKLSAgICB0bXAKLWVuZAotCi1kZWYgYXJtVjdBc1JlZ2lz
dGVycyhwcmVMaXN0LCBwb3N0TGlzdCwgb3BlcmFuZHMsIHN1ZmZpeCkKLSAgICBuZXdPcGVyYW5k
cyA9IFtdCi0gICAgb3BlcmFuZHMuZWFjaF93aXRoX2luZGV4IHsKLSAgICAgICAgfCBvcGVyYW5k
LCBpbmRleCB8Ci0gICAgICAgIG5ld09wZXJhbmRzIDw8IGFybVY3QXNSZWdpc3RlcihwcmVMaXN0
LCBwb3N0TGlzdCwgb3BlcmFuZCwgc3VmZml4LCBpbmRleCA9PSBvcGVyYW5kcy5zaXplIC0gMSkK
LSAgICB9Ci0gICAgbmV3T3BlcmFuZHMKLWVuZAotCi1kZWYgYXJtVjdMb3dlck1pc3BsYWNlZEFk
ZHJlc3NlcyhsaXN0KQotICAgIG5ld0xpc3QgPSBbXQotICAgIGxpc3QuZWFjaCB7Ci0gICAgICAg
IHwgbm9kZSB8Ci0gICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KLSAgICAgICAgICAg
IHBvc3RJbnN0cnVjdGlvbnMgPSBbXQotICAgICAgICAgICAgYW5ub3RhdGlvbiA9IG5vZGUuYW5u
b3RhdGlvbgotICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQotICAgICAgICAgICAgd2hlbiAi
YWRkaSIsICJhZGRwIiwgImFkZGlzIiwgImFuZGkiLCAiYW5kcCIsICJsc2hpZnRpIiwgImxzaGlm
dHAiLCAibXVsaSIsICJtdWxwIiwgIm5lZ2kiLAotICAgICAgICAgICAgICAgICJuZWdwIiwgIm5v
dGkiLCAib3JpIiwgIm9yaXMiLCAib3JwIiwgInJzaGlmdGkiLCAidXJzaGlmdGkiLCAicnNoaWZ0
cCIsICJ1cnNoaWZ0cCIsICJzdWJpIiwKLSAgICAgICAgICAgICAgICAic3VicCIsICJzdWJpcyIs
ICJ4b3JpIiwgInhvcnAiLCAvXmJpLywgL15icC8sIC9eYnRpLywgL15idHAvLCAvXmNpLywgL15j
cC8sIC9edGkvCi0gICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9k
ZS5jb2RlT3JpZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUub3Bjb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFybVY3QXNSZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5k
cywgImkiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5v
dGF0aW9uKQotICAgICAgICAgICAgd2hlbiAiYmJlcSIsICJiYm5lcSIsICJiYmEiLCAiYmJhZXEi
LCAiYmJiIiwgImJiYmVxIiwgImJ0YnoiLCAiYnRibnoiLCAidGJ6IiwgInRibnoiLAotICAgICAg
ICAgICAgICAgICJjYmVxIiwgImNibmVxIiwgImNiYSIsICJjYmFlcSIsICJjYmIiLCAiY2JiZXEi
Ci0gICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3Jp
Z2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bj
b2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNS
ZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImIiKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uKQot
ICAgICAgICAgICAgd2hlbiAiYmJndCIsICJiYmd0ZXEiLCAiYmJsdCIsICJiYmx0ZXEiLCAiYnRi
cyIsICJ0YnMiLCAiY2JndCIsICJjYmd0ZXEiLCAiY2JsdCIsICJjYmx0ZXEiCi0gICAgICAgICAg
ICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3
TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImJzIiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbikKLSAgICAgICAgICAg
IHdoZW4gImFkZGQiLCAiZGl2ZCIsICJzdWJkIiwgIm11bGQiLCAic3FydGQiLCAvXmJkLwotICAg
ICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcm1WN0FzUmVnaXN0
ZXJzKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJkIiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbikKLSAgICAg
ICAgICAgIHdoZW4gImptcCIsICJjYWxsIgotICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbYXJtVjdBc1JlZ2lzdGVyKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlv
bnMsIG5vZGUub3BlcmFuZHNbMF0sICJwIiwgZmFsc2UpXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uKQotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQotICAgICAgICAgICAgZW5kCi0gICAgICAgICAg
ICBuZXdMaXN0ICs9IHBvc3RJbnN0cnVjdGlvbnMKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
bmV3TGlzdCA8PCBub2RlCi0gICAgICAgIGVuZAotICAgIH0KLSAgICBuZXdMaXN0Ci1lbmQKLQot
IwotIyBMb3dlcmluZyBvZiByZWdpc3RlciByZXVzZSBpbiBjb21wYXJlIGluc3RydWN0aW9ucy4g
Rm9yIGV4YW1wbGU6Ci0jCi0jIGNpZXEgdDAsIHQxLCB0MAotIwotIyB3aWxsIGJlY29tZToKLSMK
LSMgbW92IHRtcCwgdDAKLSMgY2llcSB0bXAsIHQxLCB0MAotIwotCi1kZWYgYXJtVjdMb3dlclJl
Z2lzdGVyUmV1c2UobGlzdCkKLSAgICBuZXdMaXN0ID0gW10KLSAgICBsaXN0LmVhY2ggewotICAg
ICAgICB8IG5vZGUgfAotICAgICAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCi0gICAgICAg
ICAgICBhbm5vdGF0aW9uID0gbm9kZS5hbm5vdGF0aW9uCi0gICAgICAgICAgICBjYXNlIG5vZGUu
b3Bjb2RlCi0gICAgICAgICAgICB3aGVuICJjaWVxIiwgImNpbmVxIiwgImNpYSIsICJjaWFlcSIs
ICJjaWIiLCAiY2liZXEiLCAiY2lndCIsICJjaWd0ZXEiLCAiY2lsdCIsICJjaWx0ZXEiLAotICAg
ICAgICAgICAgICAgICJjcGVxIiwgImNwbmVxIiwgImNwYSIsICJjcGFlcSIsICJjcGIiLCAiY3Bi
ZXEiLCAiY3BndCIsICJjcGd0ZXEiLCAiY3BsdCIsICJjcGx0ZXEiLAotICAgICAgICAgICAgICAg
ICJ0aXMiLCAidGl6IiwgInRpbnoiLCAidGJzIiwgInRieiIsICJ0Ym56IiwgInRwcyIsICJ0cHoi
LCAidHBueiIsICJjYmVxIiwgImNibmVxIiwKLSAgICAgICAgICAgICAgICAiY2JhIiwgImNiYWVx
IiwgImNiYiIsICJjYmJlcSIsICJjYmd0IiwgImNiZ3RlcSIsICJjYmx0IiwgImNibHRlcSIKLSAg
ICAgICAgICAgICAgICBpZiBub2RlLm9wZXJhbmRzLnNpemUgPT0gMgotICAgICAgICAgICAgICAg
ICAgICBpZiBub2RlLm9wZXJhbmRzWzBdID09IG5vZGUub3BlcmFuZHNbMV0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQotICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3Jp
Z2luLCAibW92ZSIsIFtub2RlLm9wZXJhbmRzWzBdLCB0bXBdLCBhbm5vdGF0aW9uKQotICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3Jp
Z2luLCBub2RlLm9wY29kZSwgW3RtcCwgbm9kZS5vcGVyYW5kc1sxXV0pCi0gICAgICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQotICAg
ICAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIHJhaXNlICJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGF0ICN7bm9kZS5jb2RlT3Jp
Z2luU3RyaW5nfSIgdW5sZXNzIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAzCi0gICAgICAgICAgICAg
ICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0gPT0gbm9kZS5vcGVyYW5kc1syXQotICAgICAgICAg
ICAgICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVP
cmlnaW4sICJtb3ZlIiwgW25vZGUub3BlcmFuZHNbMF0sIHRtcF0sIGFubm90YXRpb24pCi0gICAg
ICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVP
cmlnaW4sIG5vZGUub3Bjb2RlLCBbdG1wLCBub2RlLm9wZXJhbmRzWzFdLCBub2RlLm9wZXJhbmRz
WzJdXSkKLSAgICAgICAgICAgICAgICAgICAgZWxzaWYgbm9kZS5vcGVyYW5kc1sxXSA9PSBub2Rl
Lm9wZXJhbmRzWzJdCi0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBUbXAubmV3KG5vZGUu
Y29kZU9yaWdpbiwgOmdwcikKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5kc1sxXSwg
dG1wXSwgYW5ub3RhdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFtub2RlLm9wZXJhbmRz
WzBdLCB0bXAsIG5vZGUub3BlcmFuZHNbMl1dKQotICAgICAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKLSAgICAgICAgICAgICAgICAg
ICAgZW5kCi0gICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgbmV3TGlzdCA8PCBub2RlCi0gICAgICAgICAgICBlbmQKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbmV3TGlzdCA8PCBub2RlCi0gICAgICAgIGVuZAotICAgIH0KLSAgICBuZXdMaXN0
Ci1lbmQKLQotIwogIyBMZWEgc3VwcG9ydC4KICMKIApAQCAtNjQyLDMxICsxNjIsMjggQEAgZW5k
CiAKIGNsYXNzIFNlcXVlbmNlCiAgICAgZGVmIGdldE1vZGlmaWVkTGlzdEFSTXY3Ci0gICAgICAg
IG15TGlzdCA9IEBsaXN0Ci0gICAgICAgIAotICAgICAgICAjIFZlcmlmeSB0aGF0IHdlIHdpbGwg
b25seSBzZWUgaW5zdHJ1Y3Rpb25zIGFuZCBsYWJlbHMuCi0gICAgICAgIG15TGlzdC5lYWNoIHsK
LSAgICAgICAgICAgIHwgbm9kZSB8Ci0gICAgICAgICAgICB1bmxlc3Mgbm9kZS5pc19hPyBJbnN0
cnVjdGlvbiBvcgotICAgICAgICAgICAgICAgICAgICBub2RlLmlzX2E/IExhYmVsIG9yCi0gICAg
ICAgICAgICAgICAgICAgIG5vZGUuaXNfYT8gTG9jYWxMYWJlbCBvcgotICAgICAgICAgICAgICAg
ICAgICBub2RlLmlzX2E/IFNraXAKLSAgICAgICAgICAgICAgICByYWlzZSAiVW5leHBlY3RlZCAj
e25vZGUuaW5zcGVjdH0gYXQgI3tub2RlLmNvZGVPcmlnaW59IiAKKyAgICAgICAgcmVzdWx0ID0g
QGxpc3QKKyAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyU2ltcGxlQnJhbmNoT3BzKHJlc3VsdCkK
KyAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VySGFyZEJyYW5jaE9wcyhyZXN1bHQpCisgICAgICAg
IHJlc3VsdCA9IHJpc2NMb3dlclNoaWZ0T3BzKHJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gcmlz
Y0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzKHJlc3VsdCkgeworICAgICAgICAgICAgfCBub2RlLCBh
ZGRyZXNzIHwKKyAgICAgICAgICAgIGlmIGFkZHJlc3MuaXNfYT8gQmFzZUluZGV4CisgICAgICAg
ICAgICAgICAgYWRkcmVzcy5vZmZzZXQudmFsdWUgPT0gMAorICAgICAgICAgICAgZWxzaWYgYWRk
cmVzcy5pc19hPyBBZGRyZXNzCisgICAgICAgICAgICAgICAgKC0weGZmLi4weGZmZikuaW5jbHVk
ZT8gYWRkcmVzcy5vZmZzZXQudmFsdWUKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBmYWxzZQogICAgICAgICAgICAgZW5kCiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG15
TGlzdCA9IGFybVY3TG93ZXJCcmFuY2hPcHMobXlMaXN0KQotICAgICAgICBteUxpc3QgPSBhcm1W
N0xvd2VyU2hpZnRPcHMobXlMaXN0KQotICAgICAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWFsZm9y
bWVkQWRkcmVzc2VzKG15TGlzdCkKLSAgICAgICAgbXlMaXN0ID0gYXJtVjdMb3dlck1hbGZvcm1l
ZEFkZHJlc3Nlc0RvdWJsZShteUxpc3QpCi0gICAgICAgIG15TGlzdCA9IGFybVY3TG93ZXJNaXNw
bGFjZWRJbW1lZGlhdGVzKG15TGlzdCkKLSAgICAgICAgbXlMaXN0ID0gYXJtVjdMb3dlck1hbGZv
cm1lZEltbWVkaWF0ZXMobXlMaXN0KQotICAgICAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWlzcGxh
Y2VkQWRkcmVzc2VzKG15TGlzdCkKLSAgICAgICAgbXlMaXN0ID0gYXJtVjdMb3dlclJlZ2lzdGVy
UmV1c2UobXlMaXN0KQotICAgICAgICBteUxpc3QgPSBhc3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFy
aWVzKG15TGlzdCwgOmdwciwgQVJNdjdfRVhUUkFfR1BSUykKLSAgICAgICAgbXlMaXN0ID0gYXNz
aWduUmVnaXN0ZXJzVG9UZW1wb3JhcmllcyhteUxpc3QsIDpmcHIsIEFSTXY3X0VYVFJBX0ZQUlMp
Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gbXlMaXN0CisgICAgICAgIHJlc3VsdCA9IHJpc2NM
b3dlck1hbGZvcm1lZEFkZHJlc3Nlc0RvdWJsZShyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IHJp
c2NMb3dlck1pc3BsYWNlZEltbWVkaWF0ZXMocmVzdWx0KQorICAgICAgICByZXN1bHQgPSByaXNj
TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzKHJlc3VsdCwgMC4uMHhmZikKKyAgICAgICAgcmVzdWx0
ID0gcmlzY0xvd2VyTWlzcGxhY2VkQWRkcmVzc2VzKHJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0g
cmlzY0xvd2VyUmVnaXN0ZXJSZXVzZShyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IGFzc2lnblJl
Z2lzdGVyc1RvVGVtcG9yYXJpZXMocmVzdWx0LCA6Z3ByLCBBUk12N19FWFRSQV9HUFJTKQorICAg
ICAgICByZXN1bHQgPSBhc3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFyaWVzKHJlc3VsdCwgOmZwciwg
QVJNdjdfRVhUUkFfRlBSUykKKyAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgIGVuZAogZW5kCiAK
QEAgLTc0Nyw4ICsyNjQsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAkYXNtLmFubm90
YXRpb24gYW5ub3RhdGlvbiBpZiAkZW5hYmxlSW5zdHJBbm5vdGF0aW9ucwogCiAgICAgICAgIGNh
c2Ugb3Bjb2RlCi0gICAgICAgIHdoZW4gImFkZGkiLCAiYWRkcCIsICJhZGRpcyIKLSAgICAgICAg
ICAgIGlmIG9wY29kZSA9PSAiYWRkaXMiCisgICAgICAgIHdoZW4gImFkZGkiLCAiYWRkcCIsICJh
ZGRpcyIsICJhZGRwcyIKKyAgICAgICAgICAgIGlmIG9wY29kZSA9PSAiYWRkaXMiIG9yIG9wY29k
ZSA9PSAiYWRkcHMiCiAgICAgICAgICAgICAgICAgc3VmZml4ID0gInMiCiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgc3VmZml4ID0gIiIKQEAgLTgzNyw3ICszNTQsNyBAQCBjbGFz
cyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgJGFzbS5wdXRzICJ2Y21wZS5mNjQgI3thcm1WN09w
ZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCiAgICAgICAgICAgICAkYXNtLnB1dHMgInZtcnMgYXBz
cl9uemN2LCBmcHNjciIKICAgICAgICAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlx
dWUoImJkbmVxIikKLSAgICAgICAgICAgICRhc20ucHV0cyAiYnZzICN7TGFiZWxSZWZlcmVuY2Uu
bmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS5hc21MYWJlbH0iCisgICAgICAgICAgICAkYXNt
LnB1dHMgImJ2cyAje0xvY2FsTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRl
cmVkKS5hc21MYWJlbH0iCiAgICAgICAgICAgICAkYXNtLnB1dHMgImJuZSAje29wZXJhbmRzWzJd
LmFzbUxhYmVsfSIKICAgICAgICAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJBUk12NyIpCiAgICAg
ICAgIHdoZW4gImJkZ3QiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9y
aXNjLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jp
c2MucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9y
aXNjLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAnY29uZmlnJworcmVxdWlyZSAnYXN0
JworcmVxdWlyZSAnb3B0JworCisjIFRoaXMgZmlsZSBjb250YWlucyB1dGlsaXRpZXMgdGhhdCBh
cmUgdXNlZnVsIGZvciBpbXBsZW1lbnRpbmcgYSBiYWNrZW5kCisjIGZvciBSSVNDLWxpa2UgcHJv
Y2Vzc29ycyAoQVJNLCBNSVBTLCBldGMpLgorCisjCisjIExvd2VyaW5nIG9mIHNpbXBsZSBicmFu
Y2ggb3BzLiBGb3IgZXhhbXBsZToKKyMKKyMgYmFkZGl6IGZvbywgYmFyLCBiYXoKKyMKKyMgd2ls
bCBiZWNvbWU6CisjCisjIGFkZGkgZm9vLCBiYXIKKyMgYnogYmF6CisjCisKK2RlZiByaXNjTG93
ZXJTaW1wbGVCcmFuY2hPcHMobGlzdCkKKyAgICBuZXdMaXN0ID0gW10KKyAgICBsaXN0LmVhY2gg
eworICAgICAgICB8IG5vZGUgfAorICAgICAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisg
ICAgICAgICAgICBhbm5vdGF0aW9uID0gbm9kZS5hbm5vdGF0aW9uCisgICAgICAgICAgICBjYXNl
IG5vZGUub3Bjb2RlCisgICAgICAgICAgICB3aGVuIC9eYihhZGRpfHN1Yml8b3JpfGFkZHApLwor
ICAgICAgICAgICAgICAgIG9wID0gJDEKKyAgICAgICAgICAgICAgICBicmFuY2ggPSAiYiIgKyAk
fi5wb3N0X21hdGNoCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBvcAor
ICAgICAgICAgICAgICAgIHdoZW4gImFkZGkiCisgICAgICAgICAgICAgICAgICAgIG9wID0gImFk
ZGlzIgorICAgICAgICAgICAgICAgIHdoZW4gImFkZHAiCisgICAgICAgICAgICAgICAgICAgIG9w
ID0gImFkZHBzIgorICAgICAgICAgICAgICAgIHdoZW4gInN1YmkiCisgICAgICAgICAgICAgICAg
ICAgIG9wID0gInN1YmlzIgorICAgICAgICAgICAgICAgIHdoZW4gIm9yaSIKKyAgICAgICAgICAg
ICAgICAgICAgb3AgPSAib3JpcyIKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVP
cmlnaW4sIG9wLCBub2RlLm9wZXJhbmRzWzAuLi0yXSwgYW5ub3RhdGlvbikKKyAgICAgICAgICAg
ICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIGJyYW5jaCwg
W25vZGUub3BlcmFuZHNbLTFdXSkKKyAgICAgICAgICAgIHdoZW4gJ2JtdWxpcycsICdibXVseics
ICdibXVsbnonCisgICAgICAgICAgICAgICAgY29uZGl0aW9uID0gJH4ucG9zdF9tYXRjaAorICAg
ICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwg
Im11bGkiLCBub2RlLm9wZXJhbmRzWzAuLi0yXSwgYW5ub3RhdGlvbikKKyAgICAgICAgICAgICAg
ICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJidGkiICsgY29u
ZGl0aW9uLCBbbm9kZS5vcGVyYW5kc1stMl0sIG5vZGUub3BlcmFuZHNbLTFdXSkKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICAgIGVu
ZAorICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgZW5k
CisgICAgfQorICAgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2luZyBvZiBjb21wbGV4IGJyYW5j
aCBvcHMuIEZvciBleGFtcGxlOgorIworIyBibXVsaW8gZm9vLCBiYXIsIGJhegorIworIyBiZWNv
bWVzOgorIworIyBzbXVsbGkgZm9vLCBiYXIsIGJhciwgdG1wMQorIyByc2hpZnRpIGJhciwgMzEs
IHRtcDIKKyMgYmluZXEgdG1wMSwgdG1wMiwgYmF6CisjCisKK2RlZiByaXNjTG93ZXJIYXJkQnJh
bmNoT3BzKGxpc3QpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlzdC5lYWNoIHsKKyAgICAgICAg
fCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbiBhbmQgbm9kZS5vcGNv
ZGUgPT0gImJtdWxpbyIKKyAgICAgICAgICAgIHRtcDEgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdp
biwgOmdwcikKKyAgICAgICAgICAgIHRtcDIgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdw
cikKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdp
biwgInNtdWxsaSIsIFtub2RlLm9wZXJhbmRzWzBdLCBub2RlLm9wZXJhbmRzWzFdLCBub2RlLm9w
ZXJhbmRzWzFdLCB0bXAxXSwgbm9kZS5hbm5vdGF0aW9uKQorICAgICAgICAgICAgbmV3TGlzdCA8
PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAicnNoaWZ0aSIsIFtub2RlLm9wZXJh
bmRzWy0yXSwgSW1tZWRpYXRlLm5ldyhub2RlLmNvZGVPcmlnaW4sIDMxKSwgdG1wMl0pCisgICAg
ICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJiaW5l
cSIsIFt0bXAxLCB0bXAyLCBub2RlLm9wZXJhbmRzWy0xXV0pCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdAor
ZW5kCisKKyMKKyMgTG93ZXJpbmcgb2Ygc2hpZnQgb3BzLiBGb3IgZXhhbXBsZToKKyMKKyMgbHNo
aWZ0aSBmb28sIGJhcgorIworIyB3aWxsIGJlY29tZToKKyMKKyMgYW5kaSBmb28sIDMxLCB0bXAK
KyMgbHNoaWZ0aSB0bXAsIGJhcgorIworCitkZWYgcmlzY1Nhbml0aXplU2hpZnQob3BlcmFuZCwg
bGlzdCkKKyAgICByZXR1cm4gb3BlcmFuZCBpZiBvcGVyYW5kLmltbWVkaWF0ZT8KKyAgICAKKyAg
ICB0bXAgPSBUbXAubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgOmdwcikKKyAgICBsaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJhbmRpIiwgW29wZXJhbmQsIEltbWVk
aWF0ZS5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAzMSksIHRtcF0pCisgICAgdG1wCitlbmQKKwor
ZGVmIHJpc2NMb3dlclNoaWZ0T3BzKGxpc3QpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlzdC5l
YWNoIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlv
bgorICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgICAgICAgd2hlbiAibHNoaWZ0
aSIsICJyc2hpZnRpIiwgInVyc2hpZnRpIiwgImxzaGlmdHAiLCAicnNoaWZ0cCIsICJ1cnNoaWZ0
cCIKKyAgICAgICAgICAgICAgICBpZiBub2RlLm9wZXJhbmRzLnNpemUgPT0gMgorICAgICAgICAg
ICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5v
ZGUub3Bjb2RlLCBbcmlzY1Nhbml0aXplU2hpZnQobm9kZS5vcGVyYW5kc1swXSwgbmV3TGlzdCks
IG5vZGUub3BlcmFuZHNbMV1dLCBub2RlLmFubm90YXRpb24pCisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNv
ZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBbbm9kZS5vcGVyYW5kc1swXSwgcmlzY1Nhbml0aXplU2hp
ZnQobm9kZS5vcGVyYW5kc1sxXSwgbmV3TGlzdCksIG5vZGUub3BlcmFuZHNbMl1dLCBub2RlLmFu
bm90YXRpb24pCisgICAgICAgICAgICAgICAgICAgIHJhaXNlICJXcm9uZyBudW1iZXIgb2Ygb3Bl
cmFuZHMgZm9yIHNoaWZ0IGF0ICN7bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG5vZGUu
b3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgICAgICBlbmQKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgIGVuZAorICAgIH0K
KyAgICBuZXdMaXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiBtYWxmb3JtZWQgYWRkcmVzc2Vz
LiBGb3IgZXhhbXBsZToKKyMKKyMgbG9hZHAgMTAwMDBbZm9vXSwgYmFyCisjCisjIHdpbGwgYmVj
b21lOgorIworIyBtb3ZlIDEwMDAwLCB0bXAKKyMgYWRkcCBmb28sIHRtcAorIyBsb2FkcCAwW3Rt
cF0sIGJhcgorIworIyBOb3RlIHRoYXQgeW91IHVzZSB0aGlzIGxvd2VyaW5nIHBoYXNlIGJ5IHBh
c3NpbmcgaXQgYSBibG9jayB0aGF0IHJldHVybnMgdHJ1ZQorIyBpZiB5b3UgZG9uJ3Qgd2FudCB0
byBsb3dlciB0aGUgYWRkcmVzcywgb3IgZmFsc2UgaWYgeW91IGRvLiBGb3IgZXhhbXBsZSB0byBn
ZXQKKyMgdGhlIGVmZmVjdCBvZiB0aGUgZXhhbXBsZSBhYm92ZSwgdGhlIGJsb2NrIHdvdWxkIGhh
dmUgdG8gc2F5IHNvbWV0aGluZyBsaWtlOgorIworIyByaXNjTG93ZXJNYWxmb3JtZWRBZGRyZXNz
ZXModGhpbmd5KSB7CisjICAgICB8IG5vZGUsIGFkZHJlc3MgfAorIyAgICAgaWYgYWRkcmVzcy5p
c19hPyBBZGRyZXNzCisjICAgICAgICAgYWRkcmVzcy5vZmZzZXQudmFsdWUgPiAxMDAwCisjICAg
ICBlbHNlCisjICAgICAgICAgdHJ1ZSAjIGRvbid0IGxvd2VyIGFueXRoaW5nIGVsc2UsIGluIHRo
aXMgZXhhbXBsZQorIyAgICAgZW5kCisjIH0KKyMKKyMgU2VlIGFybXY3LnJiIGZvciBhIGRpZmZl
cmVudCBleGFtcGxlLCBpbiB3aGljaCB3ZSBsb3dlciBhbGwgQmFzZUluZGV4IGFkZHJlc3Nlcwor
IyB0aGF0IGhhdmUgbm9uLXplcm8gb2Zmc2V0LCBhbGwgQWRkcmVzcyBhZGRyZXNzZXMgdGhhdCBo
YXZlIGxhcmdlIG9mZnNldHMsIGFuZAorIyBhbGwgb3RoZXIgYWRkcmVzc2VzIChsaWtlIEFic29s
dXRlQWRkcmVzcykuCisjCisKK2NsYXNzIE5vZGUKKyAgICBkZWYgcmlzY0xvd2VyTWFsZm9ybWVk
QWRkcmVzc2VzUmVjdXJzZShsaXN0LCB0b3BMZXZlbE5vZGUsICZibG9jaykKKyAgICAgICAgbWFw
Q2hpbGRyZW4geworICAgICAgICAgICAgfCBzdWJOb2RlIHwKKyAgICAgICAgICAgIHN1Yk5vZGUu
cmlzY0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0LCB0b3BMZXZlbE5vZGUsICZi
bG9jaykKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgICBkZWYg
cmlzY0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0LCBub2RlKQorICAgICAgICBy
ZXR1cm4gc2VsZiBpZiB5aWVsZCBub2RlLCBzZWxmCisKKyAgICAgICAgdG1wID0gVG1wLm5ldyhj
b2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3Jp
Z2luLCAibW92ZSIsIFtvZmZzZXQsIHRtcF0pCisgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KGNvZGVPcmlnaW4sICJhZGRwIiwgW2Jhc2UsIHRtcF0pCisgICAgICAgIEFkZHJlc3MubmV3
KGNvZGVPcmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAwKSkKKyAgICBlbmQK
K2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgICBkZWYgcmlzY0xvd2VyTWFsZm9ybWVkQWRkcmVz
c2VzUmVjdXJzZShsaXN0LCBub2RlLCAmYmxvY2spCisgICAgICAgIHJldHVybiBzZWxmIGlmIHlp
ZWxkIG5vZGUsIHNlbGYKKyAgICAgICAgCisgICAgICAgIHRtcCA9IFRtcC5uZXcoY29kZU9yaWdp
biwgOmdwcikKKyAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgImxl
YXAiLCBbQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBiYXNlLCBpbmRleCwgc2NhbGUsIEltbWVk
aWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpLCB0bXBdKQorICAgICAgICBBZGRyZXNzLm5ldyhjb2Rl
T3JpZ2luLCB0bXAsIG9mZnNldCkucmlzY0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShs
aXN0LCBub2RlLCAmYmxvY2spCisgICAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNz
CisgICAgZGVmIHJpc2NMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCwgbm9kZSkK
KyAgICAgICAgcmV0dXJuIHNlbGYgaWYgeWllbGQgbm9kZSwgc2VsZgorICAgICAgICAKKyAgICAg
ICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICBsaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibW92ZSIsIFthZGRyZXNzLCB0bXBdKQorICAgICAgICBB
ZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCB0bXAsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkp
CisgICAgZW5kCitlbmQKKworZGVmIHJpc2NMb3dlck1hbGZvcm1lZEFkZHJlc3NlcyhsaXN0LCAm
YmxvY2spCisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlzdC5lYWNoIHsKKyAgICAgICAgfCBub2Rl
IHwKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlLnJpc2NMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1Jl
Y3Vyc2UobmV3TGlzdCwgbm9kZSwgJmJsb2NrKQorICAgIH0KKyAgICBuZXdMaXN0CitlbmQKKwor
IworIyBMb3dlcmluZyBvZiBtYWxmb3JtZWQgYWRkcmVzc2VzIGluIGRvdWJsZSBsb2FkcyBhbmQg
c3RvcmVzLiBGb3IgZXhhbXBsZToKKyMKKyMgbG9hZGQgW2ZvbywgYmFyLCA4XSwgYmF6CisjCisj
IGJlY29tZXM6CisjCisjIGxlYXAgW2ZvbywgYmFyLCA4XSwgdG1wCisjIGxvYWRkIFt0bXBdLCBi
YXoKKyMKKworY2xhc3MgTm9kZQorICAgIGRlZiByaXNjRG91YmxlQWRkcmVzcyhsaXN0KQorICAg
ICAgICBzZWxmCisgICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgICAgZGVmIHJpc2NE
b3VibGVBZGRyZXNzKGxpc3QpCisgICAgICAgIHRtcCA9IFRtcC5uZXcoY29kZU9yaWdpbiwgOmdw
cikKKyAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgImxlYXAiLCBb
c2VsZiwgdG1wXSkKKyAgICAgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgdG1wLCBJbW1lZGlh
dGUubmV3KGNvZGVPcmlnaW4sIDApKQorICAgIGVuZAorZW5kCisKK2RlZiByaXNjTG93ZXJNYWxm
b3JtZWRBZGRyZXNzZXNEb3VibGUobGlzdCkKKyAgICBuZXdMaXN0ID0gW10KKyAgICBsaXN0LmVh
Y2ggeworICAgICAgICB8IG5vZGUgfAorICAgICAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9u
CisgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICAgICAgICB3aGVuICJsb2FkZCIK
KyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmln
aW4sICJsb2FkZCIsIFtub2RlLm9wZXJhbmRzWzBdLnJpc2NEb3VibGVBZGRyZXNzKG5ld0xpc3Qp
LCBub2RlLm9wZXJhbmRzWzFdXSwgbm9kZS5hbm5vdGF0aW9uKQorICAgICAgICAgICAgd2hlbiAi
c3RvcmVkIgorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUu
Y29kZU9yaWdpbiwgInN0b3JlZCIsIFtub2RlLm9wZXJhbmRzWzBdLCBub2RlLm9wZXJhbmRzWzFd
LnJpc2NEb3VibGVBZGRyZXNzKG5ld0xpc3QpXSwgbm9kZS5hbm5vdGF0aW9uKQorICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAgICAgZW5k
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICBlbmQK
KyAgICB9CisgICAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWlzcGxhY2VkIGlt
bWVkaWF0ZXMuIEZvciBleGFtcGxlOgorIworIyBzdG9yZWkgMCwgW2Zvb10KKyMKKyMgd2lsbCBi
ZWNvbWU6CisjCisjIG1vdmUgMCwgdG1wCisjIHN0b3JlaSB0bXAsIFtmb29dCisjCisKK2RlZiBy
aXNjTG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKGxpc3QpCisgICAgbmV3TGlzdCA9IFtdCisgICAg
bGlzdC5lYWNoIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0
cnVjdGlvbgorICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgICAgICAgd2hlbiAi
c3RvcmViIiwgInN0b3JlaSIsICJzdG9yZXAiCisgICAgICAgICAgICAgICAgb3BlcmFuZHMgPSBu
b2RlLm9wZXJhbmRzCisgICAgICAgICAgICAgICAgbmV3T3BlcmFuZHMgPSBbXQorICAgICAgICAg
ICAgICAgIG9wZXJhbmRzLmVhY2ggeworICAgICAgICAgICAgICAgICAgICB8IG9wZXJhbmQgfAor
ICAgICAgICAgICAgICAgICAgICBpZiBvcGVyYW5kLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAg
ICAgICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sIDpncHIpCisg
ICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5k
LmNvZGVPcmlnaW4sICJtb3ZlIiwgW29wZXJhbmQsIHRtcF0pCisgICAgICAgICAgICAgICAgICAg
ICAgICBuZXdPcGVyYW5kcyA8PCB0bXAKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3T3BlcmFuZHMgPDwgb3BlcmFuZAorICAgICAgICAgICAgICAg
ICAgICBlbmQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJ
bnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgbmV3T3BlcmFuZHMs
IG5vZGUuYW5ub3RhdGlvbikKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdM
aXN0IDw8IG5vZGUKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgICBu
ZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3QKK2VuZAorCisj
CisjIExvd2VyaW5nIG9mIG1hbGZvcm1lZCBpbW1lZGlhdGVzIGV4Y2VwdCB3aGVuIHVzZWQgaW4g
YSAibW92ZSIgaW5zdHJ1Y3Rpb24uCisjIEZvciBleGFtcGxlOgorIworIyBhZGRwIDY0MjY0MSwg
Zm9vCisjCisjIHdpbGwgYmVjb21lOgorIworIyBtb3ZlIDY0MjY0MSwgdG1wCisjIGFkZHAgdG1w
LCBmb28KKyMKKworY2xhc3MgTm9kZQorICAgIGRlZiByaXNjTG93ZXJNYWxmb3JtZWRJbW1lZGlh
dGVzUmVjdXJzZShsaXN0LCB2YWxpZEltbWVkaWF0ZXMpCisgICAgICAgIG1hcENoaWxkcmVuIHsK
KyAgICAgICAgICAgIHwgbm9kZSB8CisgICAgICAgICAgICBub2RlLnJpc2NMb3dlck1hbGZvcm1l
ZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QsIHZhbGlkSW1tZWRpYXRlcykKKyAgICAgICAgfQorICAg
IGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgICBkZWYgcmlzY0xvd2VyTWFsZm9ybWVkSW1t
ZWRpYXRlc1JlY3Vyc2UobGlzdCwgdmFsaWRJbW1lZGlhdGVzKQorICAgICAgICBzZWxmCisgICAg
ZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgICAgZGVmIHJpc2NMb3dlck1hbGZvcm1lZElt
bWVkaWF0ZXNSZWN1cnNlKGxpc3QsIHZhbGlkSW1tZWRpYXRlcykKKyAgICAgICAgc2VsZgorICAg
IGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICAgIGRlZiByaXNjTG93ZXJNYWxm
b3JtZWRJbW1lZGlhdGVzUmVjdXJzZShsaXN0LCB2YWxpZEltbWVkaWF0ZXMpCisgICAgICAgIHNl
bGYKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgICBkZWYgcmlzY0xvd2VyTWFs
Zm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCwgdmFsaWRJbW1lZGlhdGVzKQorICAgICAgICB1
bmxlc3MgdmFsaWRJbW1lZGlhdGVzLmluY2x1ZGU/IHZhbHVlCisgICAgICAgICAgICB0bXAgPSBU
bXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhjb2RlT3JpZ2luLCAibW92ZSIsIFtzZWxmLCB0bXBdKQorICAgICAgICAgICAgdG1wCisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlbGYKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQK
KworZGVmIHJpc2NMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXMobGlzdCwgdmFsaWRJbW1lZGlhdGVz
KQorICAgIG5ld0xpc3QgPSBbXQorICAgIGxpc3QuZWFjaCB7CisgICAgICAgIHwgbm9kZSB8Cisg
ICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgICAgICAgIGFubm90YXRpb24g
PSBub2RlLmFubm90YXRpb24KKyAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgICAg
ICAgIHdoZW4gIm1vdmUiCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAg
ICAgICB3aGVuICJhZGRpIiwgImFkZHAiLCAiYWRkaXMiLCAic3ViaSIsICJzdWJwIiwgInN1Ymlz
IgorICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFu
ZAorICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCB2YWxpZEltbWVkaWF0ZXMuaW5jbHVkZT8g
bm9kZS5vcGVyYW5kc1swXS52YWx1ZSkgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICB2YWxp
ZEltbWVkaWF0ZXMuaW5jbHVkZT8gLW5vZGUub3BlcmFuZHNbMF0udmFsdWUKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgICAgICAgICAgICAg
IGlmIG5vZGUub3Bjb2RlID1+IC9hZGQvCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdPcGNv
ZGUgPSAic3ViIiArICR+LnBvc3RfbWF0Y2gKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3T3Bjb2RlID0gImFkZCIgKyAkfi5wb3N0X21hdGNoCisg
ICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5ld09wY29kZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ltbWVkaWF0ZS5uZXcobm9kZS5jb2Rl
T3JpZ2luLCAtbm9kZS5vcGVyYW5kc1swXS52YWx1ZSldICsgbm9kZS5vcGVyYW5kc1sxLi4tMV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRp
b24pCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8
IG5vZGUucmlzY0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobmV3TGlzdCwgdmFsaWRJ
bW1lZGlhdGVzKQorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgd2hlbiAibXVsaSIs
ICJtdWxwIgorICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRp
YXRlCisgICAgICAgICAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcoY29kZU9yaWdpbiwgOmdwcikK
KyAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2Rl
T3JpZ2luLCAibW92ZSIsIFtub2RlLm9wZXJhbmRzWzBdLCB0bXBdLCBhbm5vdGF0aW9uKQorICAg
ICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmln
aW4sIG5vZGUub3Bjb2RlLCBbdG1wXSArIG5vZGUub3BlcmFuZHNbMS4uLTFdKQorICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLnJpc2NMb3dl
ck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QsIHZhbGlkSW1tZWRpYXRlcykKKyAg
ICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdM
aXN0IDw8IG5vZGUucmlzY0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobmV3TGlzdCwg
dmFsaWRJbW1lZGlhdGVzKQorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdAorZW5k
CisKKyMKKyMgTG93ZXJpbmcgb2YgbWlzcGxhY2VkIGFkZHJlc3Nlcy4gRm9yIGV4YW1wbGU6Cisj
CisjIGFkZGkgZm9vLCBbYmFyXQorIworIyB3aWxsIGJlY29tZToKKyMKKyMgbG9hZGkgW2Jhcl0s
IHRtcAorIyBhZGRpIGZvbywgdG1wCisjIHN0b3JlaSB0bXAsIFtiYXJdCisjCisjIEFub3RoZXIg
ZXhhbXBsZToKKyMKKyMgYWRkaSBbZm9vXSwgYmFyCisjCisjIHdpbGwgYmVjb21lOgorIworIyBs
b2FkaSBbZm9vXSwgdG1wCisjIGFkZGkgdG1wLCBiYXIKKyMKKworZGVmIHJpc2NBc1JlZ2lzdGVy
KHByZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kLCBzdWZmaXgsIG5lZWRTdG9yZSkKKyAgICByZXR1
cm4gb3BlcmFuZCB1bmxlc3Mgb3BlcmFuZC5hZGRyZXNzPworICAgIAorICAgIHRtcCA9IFRtcC5u
ZXcob3BlcmFuZC5jb2RlT3JpZ2luLCBpZiBzdWZmaXggPT0gImQiIHRoZW4gOmZwciBlbHNlIDpn
cHIgZW5kKQorICAgIHByZUxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG9wZXJhbmQuY29kZU9yaWdp
biwgImxvYWQiICsgc3VmZml4LCBbb3BlcmFuZCwgdG1wXSkKKyAgICBpZiBuZWVkU3RvcmUKKyAg
ICAgICAgcG9zdExpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgInN0
b3JlIiArIHN1ZmZpeCwgW3RtcCwgb3BlcmFuZF0pCisgICAgZW5kCisgICAgdG1wCitlbmQKKwor
ZGVmIHJpc2NBc1JlZ2lzdGVycyhwcmVMaXN0LCBwb3N0TGlzdCwgb3BlcmFuZHMsIHN1ZmZpeCkK
KyAgICBuZXdPcGVyYW5kcyA9IFtdCisgICAgb3BlcmFuZHMuZWFjaF93aXRoX2luZGV4IHsKKyAg
ICAgICAgfCBvcGVyYW5kLCBpbmRleCB8CisgICAgICAgIG5ld09wZXJhbmRzIDw8IHJpc2NBc1Jl
Z2lzdGVyKHByZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kLCBzdWZmaXgsIGluZGV4ID09IG9wZXJh
bmRzLnNpemUgLSAxKQorICAgIH0KKyAgICBuZXdPcGVyYW5kcworZW5kCisKK2RlZiByaXNjTG93
ZXJNaXNwbGFjZWRBZGRyZXNzZXMobGlzdCkKKyAgICBuZXdMaXN0ID0gW10KKyAgICBsaXN0LmVh
Y2ggeworICAgICAgICB8IG5vZGUgfAorICAgICAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9u
CisgICAgICAgICAgICBwb3N0SW5zdHJ1Y3Rpb25zID0gW10KKyAgICAgICAgICAgIGFubm90YXRp
b24gPSBub2RlLmFubm90YXRpb24KKyAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAg
ICAgICAgIHdoZW4gImFkZGkiLCAiYWRkaXMiLCAiYW5kaSIsICJsc2hpZnRpIiwgIm11bGkiLCAi
bmVnaSIsICJub3RpIiwgIm9yaSIsICJvcmlzIiwKKyAgICAgICAgICAgICAgICAicnNoaWZ0aSIs
ICJ1cnNoaWZ0aSIsICJzdWJpIiwgInN1YmlzIiwgInhvcmkiLCAvXmJpLywgL15idGkvLCAvXmNp
LywgL150aS8KKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2Rl
LmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZS5vcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmlzY0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMs
ICJpIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5ub3Rh
dGlvbikKKyAgICAgICAgICAgIHdoZW4gImFkZHAiLCAiYW5kcCIsICJsc2hpZnRwIiwgIm11bHAi
LCAibmVncCIsICJvcnAiLCAicnNoaWZ0cCIsICJ1cnNoaWZ0cCIsCisgICAgICAgICAgICAgICAg
InN1YnAiLCAieG9ycCIsIC9eYnAvLCAvXmJ0cC8sIC9eY3AvCisgICAgICAgICAgICAgICAgbmV3
TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpc2NBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0
SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAicCIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb24pCisgICAgICAgICAgICB3aGVuICJiYmVx
IiwgImJibmVxIiwgImJiYSIsICJiYmFlcSIsICJiYmIiLCAiYmJiZXEiLCAiYnRieiIsICJidGJu
eiIsICJ0YnoiLCAidGJueiIsCisgICAgICAgICAgICAgICAgImNiZXEiLCAiY2JuZXEiLCAiY2Jh
IiwgImNiYWVxIiwgImNiYiIsICJjYmJlcSIKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmlzY0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlv
bnMsIG5vZGUub3BlcmFuZHMsICJiIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5ub3RhdGlvbikKKyAgICAgICAgICAgIHdoZW4gImJiZ3QiLCAiYmJndGVx
IiwgImJibHQiLCAiYmJsdGVxIiwgImJ0YnMiLCAidGJzIiwgImNiZ3QiLCAiY2JndGVxIiwgImNi
bHQiLCAiY2JsdGVxIgorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByaXNjQXNSZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVy
YW5kcywgImJzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5ub3RhdGlvbikKKyAgICAgICAgICAgIHdoZW4gImFkZGQiLCAiZGl2ZCIsICJzdWJkIiwgIm11
bGQiLCAic3FydGQiLCAvXmJkLworICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByaXNjQXNSZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9k
ZS5vcGVyYW5kcywgImQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbm5vdGF0aW9uKQorICAgICAgICAgICAgd2hlbiAiam1wIiwgImNhbGwiCisgICAgICAg
ICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyaXNjQXNSZWdpc3Rlcihu
ZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzWzBdLCAicCIsIGZhbHNlKV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbikK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAg
ICAgICAgIGVuZAorICAgICAgICAgICAgbmV3TGlzdCArPSBwb3N0SW5zdHJ1Y3Rpb25zCisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICBlbmQKKyAgICB9
CisgICAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgcmVnaXN0ZXIgcmV1c2UgaW4g
Y29tcGFyZSBpbnN0cnVjdGlvbnMuIEZvciBleGFtcGxlOgorIworIyBjaWVxIHQwLCB0MSwgdDAK
KyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdiB0bXAsIHQwCisjIGNpZXEgdG1wLCB0MSwgdDAK
KyMKKworZGVmIHJpc2NMb3dlclJlZ2lzdGVyUmV1c2UobGlzdCkKKyAgICBuZXdMaXN0ID0gW10K
KyAgICBsaXN0LmVhY2ggeworICAgICAgICB8IG5vZGUgfAorICAgICAgICBpZiBub2RlLmlzX2E/
IEluc3RydWN0aW9uCisgICAgICAgICAgICBhbm5vdGF0aW9uID0gbm9kZS5hbm5vdGF0aW9uCisg
ICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICAgICAgICB3aGVuICJjaWVxIiwgImNp
bmVxIiwgImNpYSIsICJjaWFlcSIsICJjaWIiLCAiY2liZXEiLCAiY2lndCIsICJjaWd0ZXEiLCAi
Y2lsdCIsICJjaWx0ZXEiLAorICAgICAgICAgICAgICAgICJjcGVxIiwgImNwbmVxIiwgImNwYSIs
ICJjcGFlcSIsICJjcGIiLCAiY3BiZXEiLCAiY3BndCIsICJjcGd0ZXEiLCAiY3BsdCIsICJjcGx0
ZXEiLAorICAgICAgICAgICAgICAgICJ0aXMiLCAidGl6IiwgInRpbnoiLCAidGJzIiwgInRieiIs
ICJ0Ym56IiwgInRwcyIsICJ0cHoiLCAidHBueiIsICJjYmVxIiwgImNibmVxIiwKKyAgICAgICAg
ICAgICAgICAiY2JhIiwgImNiYWVxIiwgImNiYiIsICJjYmJlcSIsICJjYmd0IiwgImNiZ3RlcSIs
ICJjYmx0IiwgImNibHRlcSIKKyAgICAgICAgICAgICAgICBpZiBub2RlLm9wZXJhbmRzLnNpemUg
PT0gMgorICAgICAgICAgICAgICAgICAgICBpZiBub2RlLm9wZXJhbmRzWzBdID09IG5vZGUub3Bl
cmFuZHNbMV0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcobm9kZS5jb2Rl
T3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtub2RlLm9wZXJhbmRzWzBdLCB0bXBd
LCBhbm5vdGF0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgW3RtcCwgbm9kZS5vcGVyYW5k
c1sxXV0pCisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
IG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJhaXNlICJXcm9uZyBudW1iZXIgb2YgYXJndW1l
bnRzIGF0ICN7bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG5vZGUub3BlcmFuZHMuc2l6
ZSA9PSAzCisgICAgICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0gPT0gbm9kZS5v
cGVyYW5kc1syXQorICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhub2RlLmNv
ZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUub3BlcmFuZHNbMF0sIHRt
cF0sIGFubm90YXRpb24pCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBbdG1wLCBub2RlLm9wZXJh
bmRzWzFdLCBub2RlLm9wZXJhbmRzWzJdXSkKKyAgICAgICAgICAgICAgICAgICAgZWxzaWYgbm9k
ZS5vcGVyYW5kc1sxXSA9PSBub2RlLm9wZXJhbmRzWzJdCisgICAgICAgICAgICAgICAgICAgICAg
ICB0bXAgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUi
LCBbbm9kZS5vcGVyYW5kc1sxXSwgdG1wXSwgYW5ub3RhdGlvbikKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5v
cGNvZGUsIFtub2RlLm9wZXJhbmRzWzBdLCB0bXAsIG5vZGUub3BlcmFuZHNbMl1dKQorICAgICAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5v
ZGUKKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgICAgICBl
bmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgIGVu
ZAorICAgIH0KKyAgICBuZXdMaXN0CitlbmQKKwo=
</data>
<flag name="review"
          id="183179"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>