<?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>42609</bug_id>
          
          <creation_ts>2010-07-19 18:16:00 -0700</creation_ts>
          <short_desc>clean up style in ClipboardWin and PasteboardWin</short_desc>
          <delta_ts>2010-07-20 01:44:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Tony Chang">tony</reporter>
          <assigned_to name="Tony Chang">tony</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>253501</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-07-19 18:16:00 -0700</bug_when>
    <thetext>clean up style in ClipboardWin and PasteboardWin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253503</commentid>
    <comment_count>1</comment_count>
      <attachid>62020</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-07-19 18:20:27 -0700</bug_when>
    <thetext>Created attachment 62020
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253505</commentid>
    <comment_count>2</comment_count>
      <attachid>62021</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-07-19 18:24:17 -0700</bug_when>
    <thetext>Created attachment 62021
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253506</commentid>
    <comment_count>3</comment_count>
      <attachid>62021</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-07-19 18:24:41 -0700</bug_when>
    <thetext>Comment on attachment 62021
Patch

This is a precursor to fixing bug 37981</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253508</commentid>
    <comment_count>4</comment_count>
      <attachid>62021</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-07-19 18:31:18 -0700</bug_when>
    <thetext>Comment on attachment 62021
Patch

&gt;      if (getWebLocData(dataObject, url, title)) {
&gt;          success = true;
&gt; -        return url;
&gt;      } else if (SUCCEEDED(dataObject-&gt;GetData(urlWFormat(), &amp;store))) {

nit: We can remove {}.

&gt; -        //URL using unicode
&gt; +        // URL using unicode

nit: unicode -&gt; Unicode

&gt; -        //URL using ascii
&gt; +        // URL using ascii

nit: ascii -&gt; ASCII

&gt; -        //unicode text
&gt; +        // unicode text

ditto.

&gt; -        //ascii text
&gt; +        // ascii text

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253512</commentid>
    <comment_count>5</comment_count>
      <attachid>62023</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-07-19 18:41:10 -0700</bug_when>
    <thetext>Created attachment 62023
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253613</commentid>
    <comment_count>6</comment_count>
      <attachid>62023</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-20 01:43:57 -0700</bug_when>
    <thetext>Comment on attachment 62023
Patch for landing

Clearing flags on attachment: 62023

Committed r63734: &lt;http://trac.webkit.org/changeset/63734&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253614</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-20 01:44:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62020</attachid>
            <date>2010-07-19 18:20:27 -0700</date>
            <delta_ts>2010-07-19 18:24:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42609-20100719182025.patch</filename>
            <type>text/plain</type>
            <size>25143</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODQzNWMwZmU1MjNiZWFlMjkyMjMwMTQ4OTQ3ODQ0MWNlODM1ZGE3NS4uNmEwMWY3MTM0MmQ3ZjZi
MjI3NDkwZDY5NjEyZjlhYTkxZmEwYTliNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMC0wNy0xOSAgdG9u
eSBjaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGNsZWFuIHVwIHN0eWxlIGluIENsaXBib2FyZFdpbiBhbmQg
UGFzdGVib2FyZFdpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDI2MDkKKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgdGhpcyBpcyBqdXN0IGEg
c3R5bGUgY2xlYW51cC4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjptYXJrdXBUb0NGSFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0UGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmdldFRl
eHRIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OmZyYWdtZW50RnJvbUZpbGVuYW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpjb250YWluc0ZpbGVuYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpmcmFn
bWVudEZyb21DRkhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6ZnJhZ21lbnRGcm9tSFRNTCk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0aFJl
bW92ZUJhZEZTQ2hhcmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJv
cENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsVXJsRmlsZURlc2NyaXB0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkV2luOjpjbGVhckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpj
bGVhckFsbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpnZXREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6dHlwZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkV2luOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkV2luOjp3cml0ZVJhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkV2luLmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OmRhdGFPYmplY3QpOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmRPd25lclduZFByb2MpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVT
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21lbnQpOgorCiAyMDEwLTA3LTE5ICBFcmljIENhcmxz
b24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBX
ZWluaWcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNw
cAppbmRleCBmYmQwMDExNzk0MGQ5ZDNmOTIwNTE1YzEwMDUwZDc0YjU4YzY0NDc5Li44ZThlODEx
ZWJhODVjNTNlM2M4MTcwOGE5NDNmY2E1MDZhZDM2NDA1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKQEAgLTMyLDEwICszMiwxMCBAQAogI2lu
Y2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPENv
cmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8c2hsd2FwaS5oPgorI2lu
Y2x1ZGUgPHdpbmluZXQuaD4gLy8gZm9yIElOVEVSTkVUX01BWF9VUkxfTEVOR1RICiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNs
dWRlIDxzaGx3YXBpLmg+Ci0jaW5jbHVkZSA8d2luaW5ldC5oPiAgICAvLyBmb3IgSU5URVJORVRf
TUFYX1VSTF9MRU5HVEgKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC05Nyw3ICs5Nyw3IEBA
IHN0YXRpYyBTdHJpbmcgZXh0cmFjdFVSTChjb25zdCBTdHJpbmcgJmluVVJMLCBTdHJpbmcqIHRp
dGxlKQogICAgIHJldHVybiB1cmw7CiB9CiAKLS8vRmlyZWZveCB0ZXh0L2h0bWwKKy8vIEZpcmVm
b3ggdGV4dC9odG1sCiBzdGF0aWMgRk9STUFURVRDKiB0ZXh0aHRtbEZvcm1hdCgpIAogewogICAg
IHN0YXRpYyBVSU5UIGNmID0gUmVnaXN0ZXJDbGlwYm9hcmRGb3JtYXQoTCJ0ZXh0L2h0bWwiKTsK
QEAgLTEwOSw3ICsxMDksNyBAQCBIR0xPQkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIFN0cmluZyBtdXRhYmxlVVJMKHVybC5z
dHJpbmcoKSk7CiAgICAgU3RyaW5nIG11dGFibGVUaXRsZSh0aXRsZSk7Ci0gICAgU0laRV9UIHNp
emUgPSBtdXRhYmxlVVJMLmxlbmd0aCgpICsgbXV0YWJsZVRpdGxlLmxlbmd0aCgpICsgMjsgIC8v
ICsxIGZvciAiXG4iIGFuZCArMSBmb3IgbnVsbCB0ZXJtaW5hdG9yCisgICAgU0laRV9UIHNpemUg
PSBtdXRhYmxlVVJMLmxlbmd0aCgpICsgbXV0YWJsZVRpdGxlLmxlbmd0aCgpICsgMjsgLy8gKzEg
Zm9yICJcbiIgYW5kICsxIGZvciBudWxsIHRlcm1pbmF0b3IKICAgICBIR0xPQkFMIGNiRGF0YSA9
IDo6R2xvYmFsQWxsb2MoR1BUUiwgc2l6ZSAqIHNpemVvZihVQ2hhcikpOwogCiAgICAgaWYgKGNi
RGF0YSkgewpAQCAtMTU1LDcgKzE1NSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZChWZWN0b3I8Y2hh
cj4mIHZlY3RvciwgY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogfQogCiAvLyBEb2N1bWVudGF0aW9u
IGZvciB0aGUgQ0ZfSFRNTCBmb3JtYXQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9tc2RuLm1pY3Jv
c29mdC5jb20vd29ya3Nob3AvbmV0d29ya2luZy9jbGlwYm9hcmQvaHRtbGNsaXBib2FyZC5hc3AK
LXZvaWQgbWFya3VwVG9DRl9IVE1MKGNvbnN0IFN0cmluZyYgbWFya3VwLCBjb25zdCBTdHJpbmcm
IHNyY1VSTCwgVmVjdG9yPGNoYXI+JiByZXN1bHQpCit2b2lkIG1hcmt1cFRvQ0ZIVE1MKGNvbnN0
IFN0cmluZyYgbWFya3VwLCBjb25zdCBTdHJpbmcmIHNyY1VSTCwgVmVjdG9yPGNoYXI+JiByZXN1
bHQpCiB7CiAgICAgaWYgKG1hcmt1cC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI1
Niw3ICsyNTYsNyBAQCBGT1JNQVRFVEMqIGZpbGVuYW1lRm9ybWF0KCkKICAgICByZXR1cm4gJnVy
bEZvcm1hdDsKIH0KIAotLy9NU0lFIEhUTUwgRm9ybWF0CisvLyBNU0lFIEhUTUwgRm9ybWF0CiBG
T1JNQVRFVEMqIGh0bWxGb3JtYXQoKSAKIHsKICAgICBzdGF0aWMgVUlOVCBjZiA9IFJlZ2lzdGVy
Q2xpcGJvYXJkRm9ybWF0KEwiSFRNTCBGb3JtYXQiKTsKQEAgLTI5NiwxNiArMjk2LDE1IEBAIFN0
cmluZyBnZXRVUkwoSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIERyYWdEYXRhOjpGaWxlbmFtZUNv
bnZlcnNpb25Qb2xpY3kgZmlsZW5hCiAgICAgc3VjY2VzcyA9IGZhbHNlOwogICAgIGlmIChnZXRX
ZWJMb2NEYXRhKGRhdGFPYmplY3QsIHVybCwgdGl0bGUpKSB7CiAgICAgICAgIHN1Y2Nlc3MgPSB0
cnVlOwotICAgICAgICByZXR1cm4gdXJsOwogICAgIH0gZWxzZSBpZiAoU1VDQ0VFREVEKGRhdGFP
YmplY3QtPkdldERhdGEodXJsV0Zvcm1hdCgpLCAmc3RvcmUpKSkgewotICAgICAgICAvL1VSTCB1
c2luZyB1bmljb2RlCisgICAgICAgIC8vIFVSTCB1c2luZyB1bmljb2RlCiAgICAgICAgIFVDaGFy
KiBkYXRhID0gKFVDaGFyKilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICB1cmwg
PSBleHRyYWN0VVJMKFN0cmluZyhkYXRhKSwgdGl0bGUpOwogICAgICAgICBHbG9iYWxVbmxvY2so
c3RvcmUuaEdsb2JhbCk7ICAgICAgCiAgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsK
ICAgICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAgfSBlbHNlIGlmIChTVUNDRUVERUQoZGF0YU9i
amVjdC0+R2V0RGF0YSh1cmxGb3JtYXQoKSwgJnN0b3JlKSkpIHsKLSAgICAgICAgLy9VUkwgdXNp
bmcgYXNjaWkKKyAgICAgICAgLy8gVVJMIHVzaW5nIGFzY2lpCiAgICAgICAgIGNoYXIqIGRhdGEg
PSAoY2hhciopR2xvYmFsTG9jayhzdG9yZS5oR2xvYmFsKTsKICAgICAgICAgdXJsID0gZXh0cmFj
dFVSTChTdHJpbmcoZGF0YSksIHRpdGxlKTsKICAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhH
bG9iYWwpOyAgICAgIApAQCAtMzQ5LDE0ICszNDgsMTQgQEAgU3RyaW5nIGdldFBsYWluVGV4dChJ
RGF0YU9iamVjdCogZGF0YU9iamVjdCwgYm9vbCYgc3VjY2VzcykKICAgICBTdHJpbmcgdGV4dDsK
ICAgICBzdWNjZXNzID0gZmFsc2U7CiAgICAgaWYgKFNVQ0NFRURFRChkYXRhT2JqZWN0LT5HZXRE
YXRhKHBsYWluVGV4dFdGb3JtYXQoKSwgJnN0b3JlKSkpIHsKLSAgICAgICAgLy91bmljb2RlIHRl
eHQKKyAgICAgICAgLy8gdW5pY29kZSB0ZXh0CiAgICAgICAgIFVDaGFyKiBkYXRhID0gKFVDaGFy
KilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICB0ZXh0ID0gU3RyaW5nKGRhdGEp
OwogICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAgICAgIFJlbGVhc2VT
dGdNZWRpdW0oJnN0b3JlKTsKICAgICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAgfSBlbHNlIGlm
IChTVUNDRUVERUQoZGF0YU9iamVjdC0+R2V0RGF0YShwbGFpblRleHRGb3JtYXQoKSwgJnN0b3Jl
KSkpIHsKLSAgICAgICAgLy9hc2NpaSB0ZXh0CisgICAgICAgIC8vIGFzY2lpIHRleHQKICAgICAg
ICAgY2hhciogZGF0YSA9IChjaGFyKilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAg
ICB0ZXh0ID0gU3RyaW5nKGRhdGEpOwogICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2Jh
bCk7CkBAIC0zNzIsNDAgKzM3MSw1NSBAQCBTdHJpbmcgZ2V0UGxhaW5UZXh0KElEYXRhT2JqZWN0
KiBkYXRhT2JqZWN0LCBib29sJiBzdWNjZXNzKQogICAgIHJldHVybiB0ZXh0OwogfQogCitTdHJp
bmcgZ2V0VGV4dEhUTUwoSURhdGFPYmplY3QqIGRhdGEsIGJvb2wmIHN1Y2Nlc3MpCit7CisgICAg
U1RHTUVESVVNIHN0b3JlOworICAgIFN0cmluZyBodG1sOworICAgIHN1Y2Nlc3MgPSBmYWxzZTsK
KyAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPkdldERhdGEodGV4dGh0bWxGb3JtYXQoKSwgJnN0b3Jl
KSkpIHsKKyAgICAgICAgVUNoYXIqIGRhdGEgPSBzdGF0aWNfY2FzdDxVQ2hhcio+KEdsb2JhbExv
Y2soc3RvcmUuaEdsb2JhbCkpOworICAgICAgICBodG1sID0gU3RyaW5nKGRhdGEpOworICAgICAg
ICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CisgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0o
JnN0b3JlKTsKKyAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgfQorICAgIHJldHVybiBodG1s
OworfQorCiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUZpbGVuYW1l
cyhEb2N1bWVudCosIGNvbnN0IElEYXRhT2JqZWN0KikKIHsKLSAgICAvL0ZJWE1FOiBXZSBzaG91
bGQgYmUgYWJsZSB0byBjcmVhdGUgZnJhZ21lbnRzIGZyb20gZmlsZXMKKyAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGJlIGFibGUgdG8gY3JlYXRlIGZyYWdtZW50cyBmcm9tIGZpbGVzCiAgICAgcmV0
dXJuIDA7CiB9CiAKIGJvb2wgY29udGFpbnNGaWxlbmFtZXMoY29uc3QgSURhdGFPYmplY3QqKQog
ewotICAgIC8vRklYTUU6IFdlJ2xsIHdhbnQgdG8gdXBkYXRlIHRoaXMgb25jZSB3ZSBjYW4gcHJv
ZHVjZSBmcmFnbWVudHMgZnJvbSBmaWxlcworICAgIC8vIEZJWE1FOiBXZSdsbCB3YW50IHRvIHVw
ZGF0ZSB0aGlzIG9uY2Ugd2UgY2FuIHByb2R1Y2UgZnJhZ21lbnRzIGZyb20gZmlsZXMKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLS8vQ29udmVydCBhIFN0cmluZyBjb250YWluaW5nIENGX0hUTUwg
Zm9ybWF0dGVkIHRleHQgdG8gYSBEb2N1bWVudEZyYWdtZW50Ci1QYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUNGX0hUTUwoRG9jdW1lbnQqIGRvYywgY29uc3QgU3RyaW5n
JiBjZl9odG1sKQorLy8gQ29udmVydCBhIFN0cmluZyBjb250YWluaW5nIENGX0hUTUwgZm9ybWF0
dGVkIHRleHQgdG8gYSBEb2N1bWVudEZyYWdtZW50CitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50RnJvbUNGSFRNTChEb2N1bWVudCogZG9jLCBjb25zdCBTdHJpbmcmIGNmaHRt
bCkKIHsgICAgICAgIAogICAgIC8vIG9idGFpbiBiYXNlVVJMIGlmIHByZXNlbnQKICAgICBTdHJp
bmcgc3JjVVJMU3RyKCJzb3VyY2VVUkw6Iik7CiAgICAgU3RyaW5nIHNyY1VSTDsKLSAgICB1bnNp
Z25lZCBsaW5lU3RhcnQgPSBjZl9odG1sLmZpbmQoc3JjVVJMU3RyLCAwLCBmYWxzZSk7CisgICAg
dW5zaWduZWQgbGluZVN0YXJ0ID0gY2ZodG1sLmZpbmQoc3JjVVJMU3RyLCAwLCBmYWxzZSk7CiAg
ICAgaWYgKGxpbmVTdGFydCAhPSAtMSkgewotICAgICAgICB1bnNpZ25lZCBzcmNFbmQgPSBjZl9o
dG1sLmZpbmQoIlxuIiwgbGluZVN0YXJ0LCBmYWxzZSk7CisgICAgICAgIHVuc2lnbmVkIHNyY0Vu
ZCA9IGNmaHRtbC5maW5kKCJcbiIsIGxpbmVTdGFydCwgZmFsc2UpOwogICAgICAgICB1bnNpZ25l
ZCBzcmNTdGFydCA9IGxpbmVTdGFydCtzcmNVUkxTdHIubGVuZ3RoKCk7Ci0gICAgICAgIFN0cmlu
ZyByYXdTcmNVUkwgPSBjZl9odG1sLnN1YnN0cmluZyhzcmNTdGFydCwgc3JjRW5kLXNyY1N0YXJ0
KTsKKyAgICAgICAgU3RyaW5nIHJhd1NyY1VSTCA9IGNmaHRtbC5zdWJzdHJpbmcoc3JjU3RhcnQs
IHNyY0VuZC1zcmNTdGFydCk7CiAgICAgICAgIHJlcGxhY2VOQlNQV2l0aFNwYWNlKHJhd1NyY1VS
TCk7CiAgICAgICAgIHNyY1VSTCA9IHJhd1NyY1VSTC5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICB9
CiAKICAgICAvLyBmaW5kIHRoZSBtYXJrdXAgYmV0d2VlbiAiPCEtLVN0YXJ0RnJhZ21lbnQgLS0+
IiBhbmQgIjwhLS1FbmRGcmFnbWVudCAtLT4iLCBhY2NvdW50aW5nIGZvciBicm93c2VyIHF1aXJr
cwotICAgIHVuc2lnbmVkIG1hcmt1cFN0YXJ0ID0gY2ZfaHRtbC5maW5kKCI8aHRtbCIsIDAsIGZh
bHNlKTsKLSAgICB1bnNpZ25lZCB0YWdTdGFydCA9IGNmX2h0bWwuZmluZCgic3RhcnRmcmFnbWVu
dCIsIG1hcmt1cFN0YXJ0LCBmYWxzZSk7Ci0gICAgdW5zaWduZWQgZnJhZ21lbnRTdGFydCA9IGNm
X2h0bWwuZmluZCgnPicsIHRhZ1N0YXJ0KSArIDE7Ci0gICAgdW5zaWduZWQgdGFnRW5kID0gY2Zf
aHRtbC5maW5kKCJlbmRmcmFnbWVudCIsIGZyYWdtZW50U3RhcnQsIGZhbHNlKTsKLSAgICB1bnNp
Z25lZCBmcmFnbWVudEVuZCA9IGNmX2h0bWwucmV2ZXJzZUZpbmQoJzwnLCB0YWdFbmQpOwotICAg
IFN0cmluZyBtYXJrdXAgPSBjZl9odG1sLnN1YnN0cmluZyhmcmFnbWVudFN0YXJ0LCBmcmFnbWVu
dEVuZCAtIGZyYWdtZW50U3RhcnQpLnN0cmlwV2hpdGVTcGFjZSgpOworICAgIHVuc2lnbmVkIG1h
cmt1cFN0YXJ0ID0gY2ZodG1sLmZpbmQoIjxodG1sIiwgMCwgZmFsc2UpOworICAgIHVuc2lnbmVk
IHRhZ1N0YXJ0ID0gY2ZodG1sLmZpbmQoInN0YXJ0ZnJhZ21lbnQiLCBtYXJrdXBTdGFydCwgZmFs
c2UpOworICAgIHVuc2lnbmVkIGZyYWdtZW50U3RhcnQgPSBjZmh0bWwuZmluZCgnPicsIHRhZ1N0
YXJ0KSArIDE7CisgICAgdW5zaWduZWQgdGFnRW5kID0gY2ZodG1sLmZpbmQoImVuZGZyYWdtZW50
IiwgZnJhZ21lbnRTdGFydCwgZmFsc2UpOworICAgIHVuc2lnbmVkIGZyYWdtZW50RW5kID0gY2Zo
dG1sLnJldmVyc2VGaW5kKCc8JywgdGFnRW5kKTsKKyAgICBTdHJpbmcgbWFya3VwID0gY2ZodG1s
LnN1YnN0cmluZyhmcmFnbWVudFN0YXJ0LCBmcmFnbWVudEVuZCAtIGZyYWdtZW50U3RhcnQpLnN0
cmlwV2hpdGVTcGFjZSgpOwogCiAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChk
b2MsIG1hcmt1cCwgc3JjVVJMLCBGcmFnbWVudFNjcmlwdGluZ05vdEFsbG93ZWQpOwogfQpAQCAt
NDIwLDIzICs0MzQsMTkgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZy
b21IVE1MKERvY3VtZW50KiBkb2MsIElEYXRhT2JqZWN0KiBkYXRhKQogICAgIFN0cmluZyBodG1s
OwogICAgIFN0cmluZyBzcmNVUkw7CiAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5HZXREYXRhKGh0
bWxGb3JtYXQoKSwgJnN0b3JlKSkpIHsKLSAgICAgICAgLy9NUyBIVE1MIEZvcm1hdCBwYXJzaW5n
CisgICAgICAgIC8vIE1TIEhUTUwgRm9ybWF0IHBhcnNpbmcKICAgICAgICAgY2hhciogZGF0YSA9
IChjaGFyKilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICBTSVpFX1QgZGF0YVNp
emUgPSA6Okdsb2JhbFNpemUoc3RvcmUuaEdsb2JhbCk7Ci0gICAgICAgIFN0cmluZyBjZl9odG1s
KFVURjhFbmNvZGluZygpLmRlY29kZShkYXRhLCBkYXRhU2l6ZSkpOyAgICAgICAgIAorICAgICAg
ICBTdHJpbmcgY2ZodG1sKFVURjhFbmNvZGluZygpLmRlY29kZShkYXRhLCBkYXRhU2l6ZSkpOyAg
ICAgICAgIAogICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAgICAgIFJl
bGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsgCi0gICAgICAgIGlmIChQYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhZ21lbnRGcm9tQ0ZfSFRNTChkb2MsIGNmX2h0bWwpKQor
ICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdt
ZW50RnJvbUNGSFRNTChkb2MsIGNmaHRtbCkpCiAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7
CiAgICAgfSAKLSAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPkdldERhdGEodGV4dGh0bWxGb3JtYXQo
KSwgJnN0b3JlKSkpIHsKLSAgICAgICAgLy9yYXcgaHRtbAotICAgICAgICBVQ2hhciogZGF0YSA9
IChVQ2hhciopR2xvYmFsTG9jayhzdG9yZS5oR2xvYmFsKTsKLSAgICAgICAgaHRtbCA9IFN0cmlu
ZyhkYXRhKTsKLSAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOyAgICAgIAotICAg
ICAgICBSZWxlYXNlU3RnTWVkaXVtKCZzdG9yZSk7CisgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7
CisgICAgaHRtbCA9IGdldFRleHRIVE1MKGRhdGEsIHN1Y2Nlc3MpOworICAgIGlmIChzdWNjZXNz
KQogICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKGRvYywgaHRtbCwgc3Jj
VVJMLCBGcmFnbWVudFNjcmlwdGluZ05vdEFsbG93ZWQpOwotICAgIH0gCiAKICAgICByZXR1cm4g
MDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGll
c1dpbi5oIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKaW5k
ZXggYWM1ZWZkODY2MGMwNGJhZTRlMmNmMzMyMThhM2JiNTVkNDY5Y2U3YS4uNGNhNDZmOWRmMjVj
MmZiMTI3OGY1Y2QyZmY2ZTZjNjFmZWQ4MzMwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgRk9STUFURVRDKiBodG1s
Rm9ybWF0KCk7CiBGT1JNQVRFVEMqIGNmSERyb3BGb3JtYXQoKTsKIEZPUk1BVEVUQyogc21hcnRQ
YXN0ZUZvcm1hdCgpOwogCi12b2lkIG1hcmt1cFRvQ0ZfSFRNTChjb25zdCBTdHJpbmcmIG1hcmt1
cCwgY29uc3QgU3RyaW5nJiBzcmNVUkwsIFZlY3RvcjxjaGFyPiYgcmVzdWx0KTsKK3ZvaWQgbWFy
a3VwVG9DRkhUTUwoY29uc3QgU3RyaW5nJiBtYXJrdXAsIGNvbnN0IFN0cmluZyYgc3JjVVJMLCBW
ZWN0b3I8Y2hhcj4mIHJlc3VsdCk7CiAKIHZvaWQgcmVwbGFjZU5ld2xpbmVzV2l0aFdpbmRvd3NT
dHlsZU5ld2xpbmVzKFN0cmluZyYpOwogdm9pZCByZXBsYWNlTkJTUFdpdGhTcGFjZShTdHJpbmcm
KTsKQEAgLTU5LDEyICs1OSwxMiBAQCBib29sIGNvbnRhaW5zSFRNTChJRGF0YU9iamVjdCopOwog
CiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUZpbGVuYW1lcyhEb2N1
bWVudCosIGNvbnN0IElEYXRhT2JqZWN0Kik7CiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGZyYWdtZW50RnJvbUhUTUwoRG9jdW1lbnQqLCBJRGF0YU9iamVjdCopOwotUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21DRl9IVE1MKERvY3VtZW50KiwgY29uc3QgU3Ry
aW5nJiBjZl9odG1sKTsKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnRGcm9t
Q0ZIVE1MKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBjZmh0bWwpOwogCiBTdHJpbmcgZ2V0VVJM
KElEYXRhT2JqZWN0KiwgRHJhZ0RhdGE6OkZpbGVuYW1lQ29udmVyc2lvblBvbGljeSwgYm9vbCYg
c3VjY2VzcywgU3RyaW5nKiB0aXRsZSA9IDApOwogU3RyaW5nIGdldFBsYWluVGV4dChJRGF0YU9i
amVjdCosIGJvb2wmIHN1Y2Nlc3MpOworU3RyaW5nIGdldFRleHRIVE1MKElEYXRhT2JqZWN0Kiwg
Ym9vbCYgc3VjY2Vzcyk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIENs
aXBib2FyZFV0aWxpdGllc1dpbl9oCi0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3Bw
CmluZGV4IDNjM2EyMDU5MGUxYmY4MmU1MThiYzhhYzdjN2Q4ZWJlYmQyMGIyMjcuLjJjZDZmZWJl
M2RhOWYwYmY0ODAwZjg5NDEzYTc4YjY5OGE5YWE3OWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xp
cGJvYXJkV2luLmNwcApAQCAtMTA1LDkgKzEwNSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwYXRo
UmVtb3ZlQmFkRlNDaGFyYWN0ZXJzKFBXU1RSIHBzeiwgc2l6ZV90IGxlbmd0aCkKICAgICBzaXpl
X3QgcmVhZEZyb20gPSAwOwogICAgIHdoaWxlIChyZWFkRnJvbSA8IGxlbmd0aCkgewogICAgICAg
ICBVSU5UIHR5cGUgPSBQYXRoR2V0Q2hhclR5cGUocHN6W3JlYWRGcm9tXSk7Ci0gICAgICAgIGlm
IChwc3pbcmVhZEZyb21dID09IDAgfHwgdHlwZSAmIChHQ1RfTEZOQ0hBUiB8IEdDVF9TSE9SVENI
QVIpKSB7CisgICAgICAgIGlmICghcHN6W3JlYWRGcm9tXSB8fCB0eXBlICYgKEdDVF9MRk5DSEFS
IHwgR0NUX1NIT1JUQ0hBUikpCiAgICAgICAgICAgICBwc3pbd3JpdGVUbysrXSA9IHBzeltyZWFk
RnJvbV07Ci0gICAgICAgIH0KIAogICAgICAgICByZWFkRnJvbSsrOwogICAgIH0KQEAgLTIxNSw3
ICsyMTQsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNo
YXJlZEJ1ZmZlciogZGF0YSkKIAogc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250
ZW50KGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRh
KQogewotICAgIGlmIChmaWxlTmFtZS5pc0VtcHR5KCkgfHwgIWRhdGEgKQorICAgIGlmIChmaWxl
TmFtZS5pc0VtcHR5KCkgfHwgIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgV0NIQVIg
ZmlsZVBhdGhbTUFYX1BBVEhdOwpAQCAtMjkwLDcgKzI4OSw3IEBAIHN0YXRpYyBIR0xPQkFMIGNy
ZWF0ZUdsb2JhbFVybEZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHRpCiAgICAgZmdkLT5jSXRlbXMgPSAxOwogICAgIGZnZC0+ZmdkWzBdLmR3RmxhZ3MgPSBG
RF9GSUxFU0laRTsKICAgICBpbnQgZmlsZVNpemUgPSA6OldpZGVDaGFyVG9NdWx0aUJ5dGUoQ1Bf
QUNQLCAwLCB1cmwuY2hhcmFjdGVycygpLCB1cmwubGVuZ3RoKCksIDAsIDAsIDAsIDApOwotICAg
IGZpbGVTaXplICs9IHN0cmxlbihzelNoZWxsRG90VXJsVGVtcGxhdGUpIC0gMjsgIC8vIC0yIGlz
IGZvciBnZXR0aW5nIHJpZCBvZiAlcyBpbiB0aGUgdGVtcGxhdGUgc3RyaW5nCisgICAgZmlsZVNp
emUgKz0gc3RybGVuKHN6U2hlbGxEb3RVcmxUZW1wbGF0ZSkgLSAyOyAvLyAtMiBpcyBmb3IgZ2V0
dGluZyByaWQgb2YgJXMgaW4gdGhlIHRlbXBsYXRlIHN0cmluZwogICAgIGZnZC0+ZmdkWzBdLm5G
aWxlU2l6ZUxvdyA9IGZpbGVTaXplOwogICAgIGVzdGltYXRlZFNpemUgPSBmaWxlU2l6ZTsKICAg
ICBmc1BhdGggPSBmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKHVybCwgdGl0bGUsIEwiLlVS
TCIsIHRydWUpOwpAQCAtNDM3LDcgKzQzNiw3IEBAIHN0YXRpYyBib29sIHdyaXRlVVJMKFdDRGF0
YU9iamVjdCAqZGF0YSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0CiAK
ICAgICBpZiAod2l0aEhUTUwpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IGNmaHRtbERhdGE7Ci0g
ICAgICAgIG1hcmt1cFRvQ0ZfSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRt
bERhdGEpOworICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwg
IiIsIGNmaHRtbERhdGEpOwogICAgICAgICBtZWRpdW0uaEdsb2JhbCA9IGNyZWF0ZUdsb2JhbERh
dGEoY2ZodG1sRGF0YSk7CiAgICAgICAgIGlmIChtZWRpdW0uaEdsb2JhbCAmJiBGQUlMRUQoZGF0
YS0+U2V0RGF0YShodG1sRm9ybWF0KCksICZtZWRpdW0sIFRSVUUpKSkKICAgICAgICAgICAgIDo6
R2xvYmFsRnJlZShtZWRpdW0uaEdsb2JhbCk7CkBAIC00NTgsNyArNDU3LDcgQEAgc3RhdGljIGJv
b2wgd3JpdGVVUkwoV0NEYXRhT2JqZWN0ICpkYXRhLCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyB0
aXRsZSwgYm9vbCB3aXQKIAogdm9pZCBDbGlwYm9hcmRXaW46OmNsZWFyRGF0YShjb25zdCBTdHJp
bmcmIHR5cGUpCiB7Ci0gICAgLy9GSVhNRTogTmVlZCB0byBiZSBhYmxlIHRvIHdyaXRlIHRvIHRo
ZSBzeXN0ZW0gY2xpcGJvYXJkIDxyZGFyOi8vcHJvYmxlbS81MDE1OTQxPgorICAgIC8vIEZJWE1F
OiBOZWVkIHRvIGJlIGFibGUgdG8gd3JpdGUgdG8gdGhlIHN5c3RlbSBjbGlwYm9hcmQgPHJkYXI6
Ly9wcm9ibGVtLzUwMTU5NDE+CiAgICAgQVNTRVJUKGlzRm9yRHJhZ2dpbmcoKSk7CiAgICAgaWYg
KHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlIHx8ICFtX3dyaXRhYmxlRGF0YU9iamVjdCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNDc4LDcgKzQ3Nyw3IEBAIHZvaWQgQ2xpcGJvYXJkV2luOjpj
bGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogCiB2b2lkIENsaXBib2FyZFdpbjo6Y2xlYXJB
bGxEYXRhKCkKIHsKLSAgICAvL0ZJWE1FOiBOZWVkIHRvIGJlIGFibGUgdG8gd3JpdGUgdG8gdGhl
IHN5c3RlbSBjbGlwYm9hcmQgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NDE+CisgICAgLy8gRklYTUU6
IE5lZWQgdG8gYmUgYWJsZSB0byB3cml0ZSB0byB0aGUgc3lzdGVtIGNsaXBib2FyZCA8cmRhcjov
L3Byb2JsZW0vNTAxNTk0MT4KICAgICBBU1NFUlQoaXNGb3JEcmFnZ2luZygpKTsKICAgICBpZiAo
cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCiAgICAgICAgIHJldHVybjsKQEAgLTQ5MSwx
NCArNDkwLDEzIEBAIHZvaWQgQ2xpcGJvYXJkV2luOjpjbGVhckFsbERhdGEoKQogU3RyaW5nIENs
aXBib2FyZFdpbjo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNv
bnN0CiB7ICAgICAKICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgaWYgKHBvbGljeSgpICE9IENs
aXBib2FyZFJlYWRhYmxlIHx8ICFtX2RhdGFPYmplY3QpIHsKKyAgICBpZiAocG9saWN5KCkgIT0g
Q2xpcGJvYXJkUmVhZGFibGUgfHwgIW1fZGF0YU9iamVjdCkKICAgICAgICAgcmV0dXJuICIiOwot
ICAgIH0KIAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZy
b21NSU1FVHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVU
ZXh0KQogICAgICAgICByZXR1cm4gZ2V0UGxhaW5UZXh0KG1fZGF0YU9iamVjdC5nZXQoKSwgc3Vj
Y2Vzcyk7Ci0gICAgZWxzZSBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVVUkwpIAor
ICAgIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVVSTCkKICAgICAgICAgcmV0dXJu
IGdldFVSTChtX2RhdGFPYmplY3QuZ2V0KCksIERyYWdEYXRhOjpEb05vdENvbnZlcnRGaWxlbmFt
ZXMsIHN1Y2Nlc3MpOwogICAgIAogICAgIHJldHVybiAiIjsKQEAgLTU2OCw5ICs1NjYsOCBAQCBI
YXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJkV2luOjp0eXBlcygpIGNvbnN0CiAgICAgRk9STUFURVRD
IGRhdGE7CiAKICAgICAvLyBJRW51bUZPUk1BVEVUQzo6TmV4dCByZXR1cm5zIFNfRkFMU0UgaWYg
dGhlcmUgYXJlIG5vIG1vcmUgaXRlbXMuCi0gICAgd2hpbGUgKGl0ci0+TmV4dCgxLCAmZGF0YSwg
MCkgPT0gU19PSykgeworICAgIHdoaWxlIChpdHItPk5leHQoMSwgJmRhdGEsIDApID09IFNfT0sp
CiAgICAgICAgIGFkZE1pbWVUeXBlc0ZvckZvcm1hdChyZXN1bHRzLCBkYXRhKTsKLSAgICB9CiAK
ICAgICByZXR1cm4gcmVzdWx0czsKIH0KQEAgLTcyMCw3ICs3MTcsNyBAQCB2b2lkIENsaXBib2Fy
ZFdpbjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtV
UkwmIHVybCwgYwogCiAgICAgLy8gUHV0IGltZyB0YWcgb24gdGhlIGNsaXBib2FyZCByZWZlcmVu
Y2luZyB0aGUgaW1hZ2UKICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICBtYXJrdXBUb0NGX0hU
TUwoaW1hZ2VUb01hcmt1cChmdWxsVVJMKSwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZIVE1M
KGltYWdlVG9NYXJrdXAoZnVsbFVSTCksICIiLCBkYXRhKTsKICAgICBtZWRpdW0uaEdsb2JhbCA9
IGNyZWF0ZUdsb2JhbERhdGEoZGF0YSk7CiAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxF
RChtX3dyaXRhYmxlRGF0YU9iamVjdC0+U2V0RGF0YShodG1sRm9ybWF0KCksICZtZWRpdW0sIFRS
VUUpKSkKICAgICAgICAgOjpHbG9iYWxGcmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTc1Nyw3ICs3
NTQsNyBAQCB2b2lkIENsaXBib2FyZFdpbjo6d3JpdGVSYW5nZShSYW5nZSogc2VsZWN0ZWRSYW5n
ZSwgRnJhbWUqIGZyYW1lKQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCiAgICAgVmVjdG9y
PGNoYXI+IGRhdGE7Ci0gICAgbWFya3VwVG9DRl9IVE1MKGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJh
bmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKSwKKyAgICBtYXJrdXBUb0NGSFRNTChjcmVh
dGVNYXJrdXAoc2VsZWN0ZWRSYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSksCiAgICAg
ICAgIHNlbGVjdGVkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKGVjKS0+ZG9jdW1lbnQoKS0+dXJsKCku
c3RyaW5nKCksIGRhdGEpOwogICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShk
YXRhKTsKICAgICBpZiAobWVkaXVtLmhHbG9iYWwgJiYgRkFJTEVEKG1fd3JpdGFibGVEYXRhT2Jq
ZWN0LT5TZXREYXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmggYi9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9DbGlwYm9hcmRXaW4uaAppbmRleCA0OWZkY2ZlNDY1YzBkOTM3MzhlMzgxNDBkNjhhNmY5ODFm
Yzk3Njk5Li4xYjEzOWVkYTAzZGNjNTYyZTUzMTRmMTIwZmNiMDgzMWYxOTM3OGM0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uaAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uaApAQCAtMjYsNjYgKzI2LDY2IEBACiAjaWZuZGVmIENs
aXBib2FyZFdpbl9oCiAjZGVmaW5lIENsaXBib2FyZFdpbl9oCiAKKyNpbmNsdWRlICJDT01QdHIu
aCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNsaXBib2Fy
ZC5oIgotI2luY2x1ZGUgIkNPTVB0ci5oIgogCiBzdHJ1Y3QgSURhdGFPYmplY3Q7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIENhY2hlZEltYWdlOwotICAgIGNsYXNzIEludFBv
aW50OwotICAgIGNsYXNzIFdDRGF0YU9iamVjdDsKLQotICAgIC8vIFN0YXRlIGF2YWlsYWJsZSBk
dXJpbmcgSUUncyBldmVudHMgZm9yIGRyYWcgYW5kIGRyb3AgYW5kIGNvcHkvcGFzdGUKLSAgICBj
bGFzcyBDbGlwYm9hcmRXaW4gOiBwdWJsaWMgQ2xpcGJvYXJkLCBwdWJsaWMgQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJv
YXJkV2luPiBjcmVhdGUoYm9vbCBpc0ZvckRyYWdnaW5nLCBJRGF0YU9iamVjdCogZGF0YU9iamVj
dCwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRXaW4oaXNGb3JEcmFnZ2luZywgZGF0YU9iamVj
dCwgcG9saWN5KSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJv
YXJkV2luPiBjcmVhdGUoYm9vbCBpc0ZvckRyYWdnaW5nLCBXQ0RhdGFPYmplY3QqIGRhdGFPYmpl
Y3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkV2luKGlzRm9yRHJhZ2dpbmcsIGRhdGFPYmpl
Y3QsIHBvbGljeSkpOwotICAgICAgICB9Ci0gICAgICAgIH5DbGlwYm9hcmRXaW4oKTsKLSAgICAK
LSAgICAgICAgdm9pZCBjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKTsKLSAgICAgICAgdm9p
ZCBjbGVhckFsbERhdGEoKTsKLSAgICAgICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJiB0
eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdDsKLSAgICAgICAgYm9vbCBzZXREYXRhKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKTsKLSAgICAKLSAgICAgICAgLy8gZXh0ZW5z
aW9ucyBiZXlvbmQgSUUncyBBUEkKLSAgICAgICAgdmlydHVhbCBIYXNoU2V0PFN0cmluZz4gdHlw
ZXMoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbGVMaXN0PiBmaWxlcygp
IGNvbnN0OwotICAgIAotICAgICAgICB2b2lkIHNldERyYWdJbWFnZShDYWNoZWRJbWFnZSosIGNv
bnN0IEludFBvaW50Jik7Ci0gICAgICAgIHZvaWQgc2V0RHJhZ0ltYWdlRWxlbWVudChOb2RlKiwg
Y29uc3QgSW50UG9pbnQmKTsKLQotICAgICAgICB2aXJ0dWFsIERyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2UoSW50UG9pbnQmIGRyYWdMb2MpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgRnJhbWUqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHdyaXRlVVJMKGNvbnN0
IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBGcmFtZSopOwotICAgICAgICB2aXJ0dWFsIHZvaWQgd3Jp
dGVSYW5nZShSYW5nZSosIEZyYW1lKik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB3cml0ZVBsYWlu
VGV4dChjb25zdCBTdHJpbmcmKTsKLQotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzRGF0YSgpOwot
Ci0gICAgICAgIENPTVB0cjxJRGF0YU9iamVjdD4gZGF0YU9iamVjdCgpIHsgcmV0dXJuIG1fZGF0
YU9iamVjdDsgfQotCi0gICAgICAgIHZvaWQgc2V0RXh0ZXJuYWxEYXRhT2JqZWN0KElEYXRhT2Jq
ZWN0ICpkYXRhT2JqZWN0KTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIENsaXBib2FyZFdpbihi
b29sIGlzRm9yRHJhZ2dpbmcsIElEYXRhT2JqZWN0KiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5KTsK
LSAgICAgICAgQ2xpcGJvYXJkV2luKGJvb2wgaXNGb3JEcmFnZ2luZywgV0NEYXRhT2JqZWN0Kiwg
Q2xpcGJvYXJkQWNjZXNzUG9saWN5KTsKLQotICAgICAgICB2b2lkIHJlc2V0RnJvbUNsaXBib2Fy
ZCgpOwotICAgICAgICB2b2lkIHNldERyYWdJbWFnZShDYWNoZWRJbWFnZSosIE5vZGUqLCBjb25z
dCBJbnRQb2ludCYpOwotCi0gICAgICAgIENPTVB0cjxJRGF0YU9iamVjdD4gbV9kYXRhT2JqZWN0
OwotICAgICAgICBDT01QdHI8V0NEYXRhT2JqZWN0PiBtX3dyaXRhYmxlRGF0YU9iamVjdDsKLSAg
ICAgICAgRnJhbWUqIG1fZnJhbWU7Ci0gICAgfTsKK2NsYXNzIENhY2hlZEltYWdlOworY2xhc3Mg
SW50UG9pbnQ7CitjbGFzcyBXQ0RhdGFPYmplY3Q7CisKKy8vIFN0YXRlIGF2YWlsYWJsZSBkdXJp
bmcgSUUncyBldmVudHMgZm9yIGRyYWcgYW5kIGRyb3AgYW5kIGNvcHkvcGFzdGUKK2NsYXNzIENs
aXBib2FyZFdpbiA6IHB1YmxpYyBDbGlwYm9hcmQsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVu
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkV2luPiBjcmVhdGUo
Ym9vbCBpc0ZvckRyYWdnaW5nLCBJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5IHBvbGljeSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xp
cGJvYXJkV2luKGlzRm9yRHJhZ2dpbmcsIGRhdGFPYmplY3QsIHBvbGljeSkpOworICAgIH0KKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRXaW4+IGNyZWF0ZShib29sIGlzRm9yRHJhZ2dp
bmcsIFdDRGF0YU9iamVjdCogZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGlj
eSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkV2luKGlzRm9y
RHJhZ2dpbmcsIGRhdGFPYmplY3QsIHBvbGljeSkpOworICAgIH0KKyAgICB+Q2xpcGJvYXJkV2lu
KCk7CisKKyAgICB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIHZvaWQg
Y2xlYXJBbGxEYXRhKCk7CisgICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBi
b29sJiBzdWNjZXNzKSBjb25zdDsKKyAgICBib29sIHNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIGRhdGEpOworCisgICAgLy8gZXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBB
UEkKKyAgICB2aXJ0dWFsIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0OworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxGaWxlTGlzdD4gZmlsZXMoKSBjb25zdDsKKworICAgIHZvaWQgc2V0RHJh
Z0ltYWdlKENhY2hlZEltYWdlKiwgY29uc3QgSW50UG9pbnQmKTsKKyAgICB2b2lkIHNldERyYWdJ
bWFnZUVsZW1lbnQoTm9kZSosIGNvbnN0IEludFBvaW50Jik7CisKKyAgICB2aXJ0dWFsIERyYWdJ
bWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2UoSW50UG9pbnQmIGRyYWdMb2MpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRWxlbWVudCosIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGcmFtZSopOworICAgIHZpcnR1YWwgdm9pZCB3cml0ZVVS
TChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgRnJhbWUqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
d3JpdGVSYW5nZShSYW5nZSosIEZyYW1lKik7CisgICAgdmlydHVhbCB2b2lkIHdyaXRlUGxhaW5U
ZXh0KGNvbnN0IFN0cmluZyYpOworCisgICAgdmlydHVhbCBib29sIGhhc0RhdGEoKTsKKworICAg
IENPTVB0cjxJRGF0YU9iamVjdD4gZGF0YU9iamVjdCgpIHsgcmV0dXJuIG1fZGF0YU9iamVjdDsg
fQorCisgICAgdm9pZCBzZXRFeHRlcm5hbERhdGFPYmplY3QoSURhdGFPYmplY3QgKmRhdGFPYmpl
Y3QpOworCitwcml2YXRlOgorICAgIENsaXBib2FyZFdpbihib29sIGlzRm9yRHJhZ2dpbmcsIElE
YXRhT2JqZWN0KiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5KTsKKyAgICBDbGlwYm9hcmRXaW4oYm9v
bCBpc0ZvckRyYWdnaW5nLCBXQ0RhdGFPYmplY3QqLCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kpOwor
CisgICAgdm9pZCByZXNldEZyb21DbGlwYm9hcmQoKTsKKyAgICB2b2lkIHNldERyYWdJbWFnZShD
YWNoZWRJbWFnZSosIE5vZGUqLCBjb25zdCBJbnRQb2ludCYpOworCisgICAgQ09NUHRyPElEYXRh
T2JqZWN0PiBtX2RhdGFPYmplY3Q7CisgICAgQ09NUHRyPFdDRGF0YU9iamVjdD4gbV93cml0YWJs
ZURhdGFPYmplY3Q7CisgICAgRnJhbWUqIG1fZnJhbWU7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4u
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggNTEyZjZj
ZmNkZGQ4MmZmNzhkMTVjZmY5ZTMxODMwNjU1NThjNTJmMS4uODA4Yzg2MzNiOWU2ZTMwNGRhN2I0
ZDdkNDQwZGM1ZDc3NGE1MTllYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgc3RhdGljIExSRVNVTFQgQ0FMTEJBQ0sgUGFzdGVib2FyZE93
bmVyV25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHcKICAgICBMUkVTVUxU
IGxyZXN1bHQgPSAwOwogICAgIExPTkdfUFRSIGxvbmdQdHIgPSBHZXRXaW5kb3dMb25nUHRyKGhX
bmQsIDApOwogCi0gICAgc3dpdGNoKG1lc3NhZ2UpIHsKKyAgICBzd2l0Y2ggKG1lc3NhZ2UpIHsK
ICAgICBjYXNlIFdNX1JFTkRFUkZPUk1BVDoKICAgICAgICAgLy8gVGhpcyBtZXNzYWdlIGNvbWVz
IHdoZW4gU2V0Q2xpcGJvYXJkRGF0YSB3YXMgc2VudCBhIG51bGwgZGF0YSBoYW5kbGUgCiAgICAg
ICAgIC8vIGFuZCBub3cgaXQncyBjb21lIHRpbWUgdG8gcHV0IHRoZSBkYXRhIG9uIHRoZSBjbGlw
Ym9hcmQuCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlv
bihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZSwKICAgICBp
ZiAoOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICAgICAgbWFya3VwVG9DRl9IVE1M
KGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKSwK
KyAgICAgICAgbWFya3VwVG9DRkhUTUwoY3JlYXRlTWFya3VwKHNlbGVjdGVkUmFuZ2UsIDAsIEFu
bm90YXRlRm9ySW50ZXJjaGFuZ2UpLAogICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZS0+c3RhcnRD
b250YWluZXIoZWMpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSwgZGF0YSk7CiAgICAgICAg
IEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYgKCE6
OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKQEAgLTEzOSw3
ICsxMzksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3Rl
ZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLAogICAgIC8vIGVuYWJsZSBzbWFydC1y
ZXBsYWNpbmcgbGF0ZXIgb24gYnkgcHV0dGluZyBkdW1teSBkYXRhIG9uIHRoZSBwYXN0ZWJvYXJk
CiAgICAgaWYgKGNhblNtYXJ0Q29weU9yRGVsZXRlKSB7CiAgICAgICAgIGlmICg6Ok9wZW5DbGlw
Ym9hcmQobV9vd25lcikpIHsKLSAgICAgICAgICAgIDo6U2V0Q2xpcGJvYXJkRGF0YShXZWJTbWFy
dFBhc3RlRm9ybWF0LCBOVUxMKTsKKyAgICAgICAgICAgIDo6U2V0Q2xpcGJvYXJkRGF0YShXZWJT
bWFydFBhc3RlRm9ybWF0LCAwKTsKICAgICAgICAgICAgIDo6Q2xvc2VDbGlwYm9hcmQoKTsKICAg
ICAgICAgfQogICAgICAgICAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0ciwgRnJhbWUqIGZy
YW1lKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0byBiZSBh
YmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawogICAgIGlm
ICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGE7
Ci0gICAgICAgIG1hcmt1cFRvQ0ZfSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGRh
dGEpOworICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIs
IGRhdGEpOwogICAgICAgICBIR0xPQkFMIGNiRGF0YSA9IGNyZWF0ZUdsb2JhbERhdGEoZGF0YSk7
CiAgICAgICAgIGlmICghOjpTZXRDbGlwYm9hcmREYXRhKEhUTUxDbGlwYm9hcmRGb3JtYXQsIGNi
RGF0YSkpCiAgICAgICAgICAgICA6Okdsb2JhbEZyZWUoY2JEYXRhKTsKQEAgLTI2MCw4ICsyNjAs
OCBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cGxhaW5UZXh0KEZyYW1lKiBmcmFtZSkKICAgICAgICAg
ICAgIDo6R2xvYmFsVW5sb2NrKGNiRGF0YSk7CiAgICAgICAgICAgICA6OkNsb3NlQ2xpcGJvYXJk
KCk7CiAgICAgICAgICAgICByZXR1cm4gZnJvbUNsaXBib2FyZDsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICA6OkNsb3NlQ2xpcGJvYXJkKCk7CisgICAgICAgIH0KKyAgICAgICAgOjpDbG9z
ZUNsaXBib2FyZCgpOwogICAgIH0KIAogICAgIGlmICg6OklzQ2xpcGJvYXJkRm9ybWF0QXZhaWxh
YmxlKENGX1RFWFQpICYmIDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewpAQCAtMjcyLDggKzI3
Miw4IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpwbGFpblRleHQoRnJhbWUqIGZyYW1lKQogICAgICAg
ICAgICAgOjpHbG9iYWxVbmxvY2soY2JEYXRhKTsKICAgICAgICAgICAgIDo6Q2xvc2VDbGlwYm9h
cmQoKTsKICAgICAgICAgICAgIHJldHVybiBmcm9tQ2xpcGJvYXJkOwotICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIDo6Q2xvc2VDbGlwYm9hcmQoKTsKKyAgICAgICAgfQorICAgICAgICA6OkNs
b3NlQ2xpcGJvYXJkKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMjg4LDEx
ICsyODgsMTEgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBQYXN0ZWJvYXJkOjpkb2N1
bWVudEZyYWdtZW50KEZyYW1lKiBmcmFtZSwgUGFzc1JlZlAKICAgICAgICAgSEFORExFIGNiRGF0
YSA9IDo6R2V0Q2xpcGJvYXJkRGF0YShIVE1MQ2xpcGJvYXJkRm9ybWF0KTsKICAgICAgICAgaWYg
KGNiRGF0YSkgewogICAgICAgICAgICAgU0laRV9UIGRhdGFTaXplID0gOjpHbG9iYWxTaXplKGNi
RGF0YSk7Ci0gICAgICAgICAgICBTdHJpbmcgY2ZfaHRtbChVVEY4RW5jb2RpbmcoKS5kZWNvZGUo
KGNoYXIqKTo6R2xvYmFsTG9jayhjYkRhdGEpLCBkYXRhU2l6ZSkpOworICAgICAgICAgICAgU3Ry
aW5nIGNmaHRtbChVVEY4RW5jb2RpbmcoKS5kZWNvZGUoKGNoYXIqKTo6R2xvYmFsTG9jayhjYkRh
dGEpLCBkYXRhU2l6ZSkpOwogICAgICAgICAgICAgOjpHbG9iYWxVbmxvY2soY2JEYXRhKTsKICAg
ICAgICAgICAgIDo6Q2xvc2VDbGlwYm9hcmQoKTsKIAotICAgICAgICAgICAgUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUNGX0hUTUwoZnJhbWUtPmRv
Y3VtZW50KCksIGNmX2h0bWwpOworICAgICAgICAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUNGSFRNTChmcmFtZS0+ZG9jdW1lbnQoKSwgY2Zo
dG1sKTsKICAgICAgICAgICAgIGlmIChmcmFnbWVudCkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZnJhZ21lbnQ7CiAgICAgICAgIH0gZWxzZSAKQEAgLTMwNiw3ICszMDYsNyBAQCBQYXNzUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IFBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21lbnQoRnJhbWUqIGZy
YW1lLCBQYXNzUmVmUAogICAgICAgICAgICAgaWYgKGNiRGF0YSkgewogICAgICAgICAgICAgICAg
IFVDaGFyKiBidWZmZXIgPSAoVUNoYXIqKUdsb2JhbExvY2soY2JEYXRhKTsKICAgICAgICAgICAg
ICAgICBTdHJpbmcgc3RyKGJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgOjpHbG9iYWxVbmxvY2so
IGNiRGF0YSApOworICAgICAgICAgICAgICAgIDo6R2xvYmFsVW5sb2NrKGNiRGF0YSk7CiAgICAg
ICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29udGV4
dC5nZXQoKSwgc3RyKTsKICAgICAgICAgICAgICAgICBpZiAoZnJhZ21lbnQpCkBAIC0zMjMsNyAr
MzIzLDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBQYXN0ZWJvYXJkOjpkb2N1bWVu
dEZyYWdtZW50KEZyYW1lKiBmcmFtZSwgUGFzc1JlZlAKICAgICAgICAgICAgIGlmIChjYkRhdGEp
IHsKICAgICAgICAgICAgICAgICBjaGFyKiBidWZmZXIgPSAoY2hhciopR2xvYmFsTG9jayhjYkRh
dGEpOwogICAgICAgICAgICAgICAgIFN0cmluZyBzdHIoYnVmZmVyKTsKLSAgICAgICAgICAgICAg
ICA6Okdsb2JhbFVubG9jayggY2JEYXRhICk7CisgICAgICAgICAgICAgICAgOjpHbG9iYWxVbmxv
Y2soY2JEYXRhKTsKICAgICAgICAgICAgICAgICA6OkNsb3NlQ2xpcGJvYXJkKCk7CiAgICAgICAg
ICAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChjb250ZXh0LmdldCgpLCBzdHIpOwogICAgICAgICAgICAgICAgIGlmIChmcmFn
bWVudCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62021</attachid>
            <date>2010-07-19 18:24:17 -0700</date>
            <delta_ts>2010-07-19 18:40:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42609-20100719182416.patch</filename>
            <type>text/plain</type>
            <size>25143</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODQzNWMwZmU1MjNiZWFlMjkyMjMwMTQ4OTQ3ODQ0MWNlODM1ZGE3NS4uZWVlYmU4Yzg3YTUzNjlh
MWE3OGJiZjJjODk0YTcwZTdhMjkyMjdiZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMC0wNy0xOSAgVG9u
eSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGNsZWFuIHVwIHN0eWxlIGluIENsaXBib2FyZFdpbiBhbmQg
UGFzdGVib2FyZFdpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDI2MDkKKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgdGhpcyBpcyBqdXN0IGEg
c3R5bGUgY2xlYW51cC4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjptYXJrdXBUb0NGSFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0UGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmdldFRl
eHRIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OmZyYWdtZW50RnJvbUZpbGVuYW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpjb250YWluc0ZpbGVuYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpmcmFn
bWVudEZyb21DRkhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6ZnJhZ21lbnRGcm9tSFRNTCk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0aFJl
bW92ZUJhZEZTQ2hhcmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJv
cENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsVXJsRmlsZURlc2NyaXB0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkV2luOjpjbGVhckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpj
bGVhckFsbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpnZXREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6dHlwZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkV2luOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkV2luOjp3cml0ZVJhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkV2luLmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OmRhdGFPYmplY3QpOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmRPd25lclduZFByb2MpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVT
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21lbnQpOgorCiAyMDEwLTA3LTE5ICBFcmljIENhcmxz
b24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBX
ZWluaWcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNw
cAppbmRleCBmYmQwMDExNzk0MGQ5ZDNmOTIwNTE1YzEwMDUwZDc0YjU4YzY0NDc5Li44ZThlODEx
ZWJhODVjNTNlM2M4MTcwOGE5NDNmY2E1MDZhZDM2NDA1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKQEAgLTMyLDEwICszMiwxMCBAQAogI2lu
Y2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPENv
cmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8c2hsd2FwaS5oPgorI2lu
Y2x1ZGUgPHdpbmluZXQuaD4gLy8gZm9yIElOVEVSTkVUX01BWF9VUkxfTEVOR1RICiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNs
dWRlIDxzaGx3YXBpLmg+Ci0jaW5jbHVkZSA8d2luaW5ldC5oPiAgICAvLyBmb3IgSU5URVJORVRf
TUFYX1VSTF9MRU5HVEgKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC05Nyw3ICs5Nyw3IEBA
IHN0YXRpYyBTdHJpbmcgZXh0cmFjdFVSTChjb25zdCBTdHJpbmcgJmluVVJMLCBTdHJpbmcqIHRp
dGxlKQogICAgIHJldHVybiB1cmw7CiB9CiAKLS8vRmlyZWZveCB0ZXh0L2h0bWwKKy8vIEZpcmVm
b3ggdGV4dC9odG1sCiBzdGF0aWMgRk9STUFURVRDKiB0ZXh0aHRtbEZvcm1hdCgpIAogewogICAg
IHN0YXRpYyBVSU5UIGNmID0gUmVnaXN0ZXJDbGlwYm9hcmRGb3JtYXQoTCJ0ZXh0L2h0bWwiKTsK
QEAgLTEwOSw3ICsxMDksNyBAQCBIR0xPQkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIFN0cmluZyBtdXRhYmxlVVJMKHVybC5z
dHJpbmcoKSk7CiAgICAgU3RyaW5nIG11dGFibGVUaXRsZSh0aXRsZSk7Ci0gICAgU0laRV9UIHNp
emUgPSBtdXRhYmxlVVJMLmxlbmd0aCgpICsgbXV0YWJsZVRpdGxlLmxlbmd0aCgpICsgMjsgIC8v
ICsxIGZvciAiXG4iIGFuZCArMSBmb3IgbnVsbCB0ZXJtaW5hdG9yCisgICAgU0laRV9UIHNpemUg
PSBtdXRhYmxlVVJMLmxlbmd0aCgpICsgbXV0YWJsZVRpdGxlLmxlbmd0aCgpICsgMjsgLy8gKzEg
Zm9yICJcbiIgYW5kICsxIGZvciBudWxsIHRlcm1pbmF0b3IKICAgICBIR0xPQkFMIGNiRGF0YSA9
IDo6R2xvYmFsQWxsb2MoR1BUUiwgc2l6ZSAqIHNpemVvZihVQ2hhcikpOwogCiAgICAgaWYgKGNi
RGF0YSkgewpAQCAtMTU1LDcgKzE1NSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZChWZWN0b3I8Y2hh
cj4mIHZlY3RvciwgY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogfQogCiAvLyBEb2N1bWVudGF0aW9u
IGZvciB0aGUgQ0ZfSFRNTCBmb3JtYXQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9tc2RuLm1pY3Jv
c29mdC5jb20vd29ya3Nob3AvbmV0d29ya2luZy9jbGlwYm9hcmQvaHRtbGNsaXBib2FyZC5hc3AK
LXZvaWQgbWFya3VwVG9DRl9IVE1MKGNvbnN0IFN0cmluZyYgbWFya3VwLCBjb25zdCBTdHJpbmcm
IHNyY1VSTCwgVmVjdG9yPGNoYXI+JiByZXN1bHQpCit2b2lkIG1hcmt1cFRvQ0ZIVE1MKGNvbnN0
IFN0cmluZyYgbWFya3VwLCBjb25zdCBTdHJpbmcmIHNyY1VSTCwgVmVjdG9yPGNoYXI+JiByZXN1
bHQpCiB7CiAgICAgaWYgKG1hcmt1cC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI1
Niw3ICsyNTYsNyBAQCBGT1JNQVRFVEMqIGZpbGVuYW1lRm9ybWF0KCkKICAgICByZXR1cm4gJnVy
bEZvcm1hdDsKIH0KIAotLy9NU0lFIEhUTUwgRm9ybWF0CisvLyBNU0lFIEhUTUwgRm9ybWF0CiBG
T1JNQVRFVEMqIGh0bWxGb3JtYXQoKSAKIHsKICAgICBzdGF0aWMgVUlOVCBjZiA9IFJlZ2lzdGVy
Q2xpcGJvYXJkRm9ybWF0KEwiSFRNTCBGb3JtYXQiKTsKQEAgLTI5NiwxNiArMjk2LDE1IEBAIFN0
cmluZyBnZXRVUkwoSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIERyYWdEYXRhOjpGaWxlbmFtZUNv
bnZlcnNpb25Qb2xpY3kgZmlsZW5hCiAgICAgc3VjY2VzcyA9IGZhbHNlOwogICAgIGlmIChnZXRX
ZWJMb2NEYXRhKGRhdGFPYmplY3QsIHVybCwgdGl0bGUpKSB7CiAgICAgICAgIHN1Y2Nlc3MgPSB0
cnVlOwotICAgICAgICByZXR1cm4gdXJsOwogICAgIH0gZWxzZSBpZiAoU1VDQ0VFREVEKGRhdGFP
YmplY3QtPkdldERhdGEodXJsV0Zvcm1hdCgpLCAmc3RvcmUpKSkgewotICAgICAgICAvL1VSTCB1
c2luZyB1bmljb2RlCisgICAgICAgIC8vIFVSTCB1c2luZyB1bmljb2RlCiAgICAgICAgIFVDaGFy
KiBkYXRhID0gKFVDaGFyKilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICB1cmwg
PSBleHRyYWN0VVJMKFN0cmluZyhkYXRhKSwgdGl0bGUpOwogICAgICAgICBHbG9iYWxVbmxvY2so
c3RvcmUuaEdsb2JhbCk7ICAgICAgCiAgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsK
ICAgICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAgfSBlbHNlIGlmIChTVUNDRUVERUQoZGF0YU9i
amVjdC0+R2V0RGF0YSh1cmxGb3JtYXQoKSwgJnN0b3JlKSkpIHsKLSAgICAgICAgLy9VUkwgdXNp
bmcgYXNjaWkKKyAgICAgICAgLy8gVVJMIHVzaW5nIGFzY2lpCiAgICAgICAgIGNoYXIqIGRhdGEg
PSAoY2hhciopR2xvYmFsTG9jayhzdG9yZS5oR2xvYmFsKTsKICAgICAgICAgdXJsID0gZXh0cmFj
dFVSTChTdHJpbmcoZGF0YSksIHRpdGxlKTsKICAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhH
bG9iYWwpOyAgICAgIApAQCAtMzQ5LDE0ICszNDgsMTQgQEAgU3RyaW5nIGdldFBsYWluVGV4dChJ
RGF0YU9iamVjdCogZGF0YU9iamVjdCwgYm9vbCYgc3VjY2VzcykKICAgICBTdHJpbmcgdGV4dDsK
ICAgICBzdWNjZXNzID0gZmFsc2U7CiAgICAgaWYgKFNVQ0NFRURFRChkYXRhT2JqZWN0LT5HZXRE
YXRhKHBsYWluVGV4dFdGb3JtYXQoKSwgJnN0b3JlKSkpIHsKLSAgICAgICAgLy91bmljb2RlIHRl
eHQKKyAgICAgICAgLy8gdW5pY29kZSB0ZXh0CiAgICAgICAgIFVDaGFyKiBkYXRhID0gKFVDaGFy
KilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICB0ZXh0ID0gU3RyaW5nKGRhdGEp
OwogICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAgICAgIFJlbGVhc2VT
dGdNZWRpdW0oJnN0b3JlKTsKICAgICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAgfSBlbHNlIGlm
IChTVUNDRUVERUQoZGF0YU9iamVjdC0+R2V0RGF0YShwbGFpblRleHRGb3JtYXQoKSwgJnN0b3Jl
KSkpIHsKLSAgICAgICAgLy9hc2NpaSB0ZXh0CisgICAgICAgIC8vIGFzY2lpIHRleHQKICAgICAg
ICAgY2hhciogZGF0YSA9IChjaGFyKilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAg
ICB0ZXh0ID0gU3RyaW5nKGRhdGEpOwogICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2Jh
bCk7CkBAIC0zNzIsNDAgKzM3MSw1NSBAQCBTdHJpbmcgZ2V0UGxhaW5UZXh0KElEYXRhT2JqZWN0
KiBkYXRhT2JqZWN0LCBib29sJiBzdWNjZXNzKQogICAgIHJldHVybiB0ZXh0OwogfQogCitTdHJp
bmcgZ2V0VGV4dEhUTUwoSURhdGFPYmplY3QqIGRhdGEsIGJvb2wmIHN1Y2Nlc3MpCit7CisgICAg
U1RHTUVESVVNIHN0b3JlOworICAgIFN0cmluZyBodG1sOworICAgIHN1Y2Nlc3MgPSBmYWxzZTsK
KyAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPkdldERhdGEodGV4dGh0bWxGb3JtYXQoKSwgJnN0b3Jl
KSkpIHsKKyAgICAgICAgVUNoYXIqIGRhdGEgPSBzdGF0aWNfY2FzdDxVQ2hhcio+KEdsb2JhbExv
Y2soc3RvcmUuaEdsb2JhbCkpOworICAgICAgICBodG1sID0gU3RyaW5nKGRhdGEpOworICAgICAg
ICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CisgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0o
JnN0b3JlKTsKKyAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgfQorICAgIHJldHVybiBodG1s
OworfQorCiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUZpbGVuYW1l
cyhEb2N1bWVudCosIGNvbnN0IElEYXRhT2JqZWN0KikKIHsKLSAgICAvL0ZJWE1FOiBXZSBzaG91
bGQgYmUgYWJsZSB0byBjcmVhdGUgZnJhZ21lbnRzIGZyb20gZmlsZXMKKyAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGJlIGFibGUgdG8gY3JlYXRlIGZyYWdtZW50cyBmcm9tIGZpbGVzCiAgICAgcmV0
dXJuIDA7CiB9CiAKIGJvb2wgY29udGFpbnNGaWxlbmFtZXMoY29uc3QgSURhdGFPYmplY3QqKQog
ewotICAgIC8vRklYTUU6IFdlJ2xsIHdhbnQgdG8gdXBkYXRlIHRoaXMgb25jZSB3ZSBjYW4gcHJv
ZHVjZSBmcmFnbWVudHMgZnJvbSBmaWxlcworICAgIC8vIEZJWE1FOiBXZSdsbCB3YW50IHRvIHVw
ZGF0ZSB0aGlzIG9uY2Ugd2UgY2FuIHByb2R1Y2UgZnJhZ21lbnRzIGZyb20gZmlsZXMKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLS8vQ29udmVydCBhIFN0cmluZyBjb250YWluaW5nIENGX0hUTUwg
Zm9ybWF0dGVkIHRleHQgdG8gYSBEb2N1bWVudEZyYWdtZW50Ci1QYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUNGX0hUTUwoRG9jdW1lbnQqIGRvYywgY29uc3QgU3RyaW5n
JiBjZl9odG1sKQorLy8gQ29udmVydCBhIFN0cmluZyBjb250YWluaW5nIENGX0hUTUwgZm9ybWF0
dGVkIHRleHQgdG8gYSBEb2N1bWVudEZyYWdtZW50CitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50RnJvbUNGSFRNTChEb2N1bWVudCogZG9jLCBjb25zdCBTdHJpbmcmIGNmaHRt
bCkKIHsgICAgICAgIAogICAgIC8vIG9idGFpbiBiYXNlVVJMIGlmIHByZXNlbnQKICAgICBTdHJp
bmcgc3JjVVJMU3RyKCJzb3VyY2VVUkw6Iik7CiAgICAgU3RyaW5nIHNyY1VSTDsKLSAgICB1bnNp
Z25lZCBsaW5lU3RhcnQgPSBjZl9odG1sLmZpbmQoc3JjVVJMU3RyLCAwLCBmYWxzZSk7CisgICAg
dW5zaWduZWQgbGluZVN0YXJ0ID0gY2ZodG1sLmZpbmQoc3JjVVJMU3RyLCAwLCBmYWxzZSk7CiAg
ICAgaWYgKGxpbmVTdGFydCAhPSAtMSkgewotICAgICAgICB1bnNpZ25lZCBzcmNFbmQgPSBjZl9o
dG1sLmZpbmQoIlxuIiwgbGluZVN0YXJ0LCBmYWxzZSk7CisgICAgICAgIHVuc2lnbmVkIHNyY0Vu
ZCA9IGNmaHRtbC5maW5kKCJcbiIsIGxpbmVTdGFydCwgZmFsc2UpOwogICAgICAgICB1bnNpZ25l
ZCBzcmNTdGFydCA9IGxpbmVTdGFydCtzcmNVUkxTdHIubGVuZ3RoKCk7Ci0gICAgICAgIFN0cmlu
ZyByYXdTcmNVUkwgPSBjZl9odG1sLnN1YnN0cmluZyhzcmNTdGFydCwgc3JjRW5kLXNyY1N0YXJ0
KTsKKyAgICAgICAgU3RyaW5nIHJhd1NyY1VSTCA9IGNmaHRtbC5zdWJzdHJpbmcoc3JjU3RhcnQs
IHNyY0VuZC1zcmNTdGFydCk7CiAgICAgICAgIHJlcGxhY2VOQlNQV2l0aFNwYWNlKHJhd1NyY1VS
TCk7CiAgICAgICAgIHNyY1VSTCA9IHJhd1NyY1VSTC5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICB9
CiAKICAgICAvLyBmaW5kIHRoZSBtYXJrdXAgYmV0d2VlbiAiPCEtLVN0YXJ0RnJhZ21lbnQgLS0+
IiBhbmQgIjwhLS1FbmRGcmFnbWVudCAtLT4iLCBhY2NvdW50aW5nIGZvciBicm93c2VyIHF1aXJr
cwotICAgIHVuc2lnbmVkIG1hcmt1cFN0YXJ0ID0gY2ZfaHRtbC5maW5kKCI8aHRtbCIsIDAsIGZh
bHNlKTsKLSAgICB1bnNpZ25lZCB0YWdTdGFydCA9IGNmX2h0bWwuZmluZCgic3RhcnRmcmFnbWVu
dCIsIG1hcmt1cFN0YXJ0LCBmYWxzZSk7Ci0gICAgdW5zaWduZWQgZnJhZ21lbnRTdGFydCA9IGNm
X2h0bWwuZmluZCgnPicsIHRhZ1N0YXJ0KSArIDE7Ci0gICAgdW5zaWduZWQgdGFnRW5kID0gY2Zf
aHRtbC5maW5kKCJlbmRmcmFnbWVudCIsIGZyYWdtZW50U3RhcnQsIGZhbHNlKTsKLSAgICB1bnNp
Z25lZCBmcmFnbWVudEVuZCA9IGNmX2h0bWwucmV2ZXJzZUZpbmQoJzwnLCB0YWdFbmQpOwotICAg
IFN0cmluZyBtYXJrdXAgPSBjZl9odG1sLnN1YnN0cmluZyhmcmFnbWVudFN0YXJ0LCBmcmFnbWVu
dEVuZCAtIGZyYWdtZW50U3RhcnQpLnN0cmlwV2hpdGVTcGFjZSgpOworICAgIHVuc2lnbmVkIG1h
cmt1cFN0YXJ0ID0gY2ZodG1sLmZpbmQoIjxodG1sIiwgMCwgZmFsc2UpOworICAgIHVuc2lnbmVk
IHRhZ1N0YXJ0ID0gY2ZodG1sLmZpbmQoInN0YXJ0ZnJhZ21lbnQiLCBtYXJrdXBTdGFydCwgZmFs
c2UpOworICAgIHVuc2lnbmVkIGZyYWdtZW50U3RhcnQgPSBjZmh0bWwuZmluZCgnPicsIHRhZ1N0
YXJ0KSArIDE7CisgICAgdW5zaWduZWQgdGFnRW5kID0gY2ZodG1sLmZpbmQoImVuZGZyYWdtZW50
IiwgZnJhZ21lbnRTdGFydCwgZmFsc2UpOworICAgIHVuc2lnbmVkIGZyYWdtZW50RW5kID0gY2Zo
dG1sLnJldmVyc2VGaW5kKCc8JywgdGFnRW5kKTsKKyAgICBTdHJpbmcgbWFya3VwID0gY2ZodG1s
LnN1YnN0cmluZyhmcmFnbWVudFN0YXJ0LCBmcmFnbWVudEVuZCAtIGZyYWdtZW50U3RhcnQpLnN0
cmlwV2hpdGVTcGFjZSgpOwogCiAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChk
b2MsIG1hcmt1cCwgc3JjVVJMLCBGcmFnbWVudFNjcmlwdGluZ05vdEFsbG93ZWQpOwogfQpAQCAt
NDIwLDIzICs0MzQsMTkgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZy
b21IVE1MKERvY3VtZW50KiBkb2MsIElEYXRhT2JqZWN0KiBkYXRhKQogICAgIFN0cmluZyBodG1s
OwogICAgIFN0cmluZyBzcmNVUkw7CiAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5HZXREYXRhKGh0
bWxGb3JtYXQoKSwgJnN0b3JlKSkpIHsKLSAgICAgICAgLy9NUyBIVE1MIEZvcm1hdCBwYXJzaW5n
CisgICAgICAgIC8vIE1TIEhUTUwgRm9ybWF0IHBhcnNpbmcKICAgICAgICAgY2hhciogZGF0YSA9
IChjaGFyKilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICBTSVpFX1QgZGF0YVNp
emUgPSA6Okdsb2JhbFNpemUoc3RvcmUuaEdsb2JhbCk7Ci0gICAgICAgIFN0cmluZyBjZl9odG1s
KFVURjhFbmNvZGluZygpLmRlY29kZShkYXRhLCBkYXRhU2l6ZSkpOyAgICAgICAgIAorICAgICAg
ICBTdHJpbmcgY2ZodG1sKFVURjhFbmNvZGluZygpLmRlY29kZShkYXRhLCBkYXRhU2l6ZSkpOyAg
ICAgICAgIAogICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAgICAgIFJl
bGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsgCi0gICAgICAgIGlmIChQYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhZ21lbnRGcm9tQ0ZfSFRNTChkb2MsIGNmX2h0bWwpKQor
ICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdt
ZW50RnJvbUNGSFRNTChkb2MsIGNmaHRtbCkpCiAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7
CiAgICAgfSAKLSAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPkdldERhdGEodGV4dGh0bWxGb3JtYXQo
KSwgJnN0b3JlKSkpIHsKLSAgICAgICAgLy9yYXcgaHRtbAotICAgICAgICBVQ2hhciogZGF0YSA9
IChVQ2hhciopR2xvYmFsTG9jayhzdG9yZS5oR2xvYmFsKTsKLSAgICAgICAgaHRtbCA9IFN0cmlu
ZyhkYXRhKTsKLSAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOyAgICAgIAotICAg
ICAgICBSZWxlYXNlU3RnTWVkaXVtKCZzdG9yZSk7CisgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7
CisgICAgaHRtbCA9IGdldFRleHRIVE1MKGRhdGEsIHN1Y2Nlc3MpOworICAgIGlmIChzdWNjZXNz
KQogICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKGRvYywgaHRtbCwgc3Jj
VVJMLCBGcmFnbWVudFNjcmlwdGluZ05vdEFsbG93ZWQpOwotICAgIH0gCiAKICAgICByZXR1cm4g
MDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGll
c1dpbi5oIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKaW5k
ZXggYWM1ZWZkODY2MGMwNGJhZTRlMmNmMzMyMThhM2JiNTVkNDY5Y2U3YS4uNGNhNDZmOWRmMjVj
MmZiMTI3OGY1Y2QyZmY2ZTZjNjFmZWQ4MzMwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgRk9STUFURVRDKiBodG1s
Rm9ybWF0KCk7CiBGT1JNQVRFVEMqIGNmSERyb3BGb3JtYXQoKTsKIEZPUk1BVEVUQyogc21hcnRQ
YXN0ZUZvcm1hdCgpOwogCi12b2lkIG1hcmt1cFRvQ0ZfSFRNTChjb25zdCBTdHJpbmcmIG1hcmt1
cCwgY29uc3QgU3RyaW5nJiBzcmNVUkwsIFZlY3RvcjxjaGFyPiYgcmVzdWx0KTsKK3ZvaWQgbWFy
a3VwVG9DRkhUTUwoY29uc3QgU3RyaW5nJiBtYXJrdXAsIGNvbnN0IFN0cmluZyYgc3JjVVJMLCBW
ZWN0b3I8Y2hhcj4mIHJlc3VsdCk7CiAKIHZvaWQgcmVwbGFjZU5ld2xpbmVzV2l0aFdpbmRvd3NT
dHlsZU5ld2xpbmVzKFN0cmluZyYpOwogdm9pZCByZXBsYWNlTkJTUFdpdGhTcGFjZShTdHJpbmcm
KTsKQEAgLTU5LDEyICs1OSwxMiBAQCBib29sIGNvbnRhaW5zSFRNTChJRGF0YU9iamVjdCopOwog
CiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUZpbGVuYW1lcyhEb2N1
bWVudCosIGNvbnN0IElEYXRhT2JqZWN0Kik7CiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGZyYWdtZW50RnJvbUhUTUwoRG9jdW1lbnQqLCBJRGF0YU9iamVjdCopOwotUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21DRl9IVE1MKERvY3VtZW50KiwgY29uc3QgU3Ry
aW5nJiBjZl9odG1sKTsKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnRGcm9t
Q0ZIVE1MKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBjZmh0bWwpOwogCiBTdHJpbmcgZ2V0VVJM
KElEYXRhT2JqZWN0KiwgRHJhZ0RhdGE6OkZpbGVuYW1lQ29udmVyc2lvblBvbGljeSwgYm9vbCYg
c3VjY2VzcywgU3RyaW5nKiB0aXRsZSA9IDApOwogU3RyaW5nIGdldFBsYWluVGV4dChJRGF0YU9i
amVjdCosIGJvb2wmIHN1Y2Nlc3MpOworU3RyaW5nIGdldFRleHRIVE1MKElEYXRhT2JqZWN0Kiwg
Ym9vbCYgc3VjY2Vzcyk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIENs
aXBib2FyZFV0aWxpdGllc1dpbl9oCi0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3Bw
CmluZGV4IDNjM2EyMDU5MGUxYmY4MmU1MThiYzhhYzdjN2Q4ZWJlYmQyMGIyMjcuLjJjZDZmZWJl
M2RhOWYwYmY0ODAwZjg5NDEzYTc4YjY5OGE5YWE3OWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xp
cGJvYXJkV2luLmNwcApAQCAtMTA1LDkgKzEwNSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwYXRo
UmVtb3ZlQmFkRlNDaGFyYWN0ZXJzKFBXU1RSIHBzeiwgc2l6ZV90IGxlbmd0aCkKICAgICBzaXpl
X3QgcmVhZEZyb20gPSAwOwogICAgIHdoaWxlIChyZWFkRnJvbSA8IGxlbmd0aCkgewogICAgICAg
ICBVSU5UIHR5cGUgPSBQYXRoR2V0Q2hhclR5cGUocHN6W3JlYWRGcm9tXSk7Ci0gICAgICAgIGlm
IChwc3pbcmVhZEZyb21dID09IDAgfHwgdHlwZSAmIChHQ1RfTEZOQ0hBUiB8IEdDVF9TSE9SVENI
QVIpKSB7CisgICAgICAgIGlmICghcHN6W3JlYWRGcm9tXSB8fCB0eXBlICYgKEdDVF9MRk5DSEFS
IHwgR0NUX1NIT1JUQ0hBUikpCiAgICAgICAgICAgICBwc3pbd3JpdGVUbysrXSA9IHBzeltyZWFk
RnJvbV07Ci0gICAgICAgIH0KIAogICAgICAgICByZWFkRnJvbSsrOwogICAgIH0KQEAgLTIxNSw3
ICsyMTQsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNo
YXJlZEJ1ZmZlciogZGF0YSkKIAogc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250
ZW50KGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRh
KQogewotICAgIGlmIChmaWxlTmFtZS5pc0VtcHR5KCkgfHwgIWRhdGEgKQorICAgIGlmIChmaWxl
TmFtZS5pc0VtcHR5KCkgfHwgIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgV0NIQVIg
ZmlsZVBhdGhbTUFYX1BBVEhdOwpAQCAtMjkwLDcgKzI4OSw3IEBAIHN0YXRpYyBIR0xPQkFMIGNy
ZWF0ZUdsb2JhbFVybEZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHRpCiAgICAgZmdkLT5jSXRlbXMgPSAxOwogICAgIGZnZC0+ZmdkWzBdLmR3RmxhZ3MgPSBG
RF9GSUxFU0laRTsKICAgICBpbnQgZmlsZVNpemUgPSA6OldpZGVDaGFyVG9NdWx0aUJ5dGUoQ1Bf
QUNQLCAwLCB1cmwuY2hhcmFjdGVycygpLCB1cmwubGVuZ3RoKCksIDAsIDAsIDAsIDApOwotICAg
IGZpbGVTaXplICs9IHN0cmxlbihzelNoZWxsRG90VXJsVGVtcGxhdGUpIC0gMjsgIC8vIC0yIGlz
IGZvciBnZXR0aW5nIHJpZCBvZiAlcyBpbiB0aGUgdGVtcGxhdGUgc3RyaW5nCisgICAgZmlsZVNp
emUgKz0gc3RybGVuKHN6U2hlbGxEb3RVcmxUZW1wbGF0ZSkgLSAyOyAvLyAtMiBpcyBmb3IgZ2V0
dGluZyByaWQgb2YgJXMgaW4gdGhlIHRlbXBsYXRlIHN0cmluZwogICAgIGZnZC0+ZmdkWzBdLm5G
aWxlU2l6ZUxvdyA9IGZpbGVTaXplOwogICAgIGVzdGltYXRlZFNpemUgPSBmaWxlU2l6ZTsKICAg
ICBmc1BhdGggPSBmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKHVybCwgdGl0bGUsIEwiLlVS
TCIsIHRydWUpOwpAQCAtNDM3LDcgKzQzNiw3IEBAIHN0YXRpYyBib29sIHdyaXRlVVJMKFdDRGF0
YU9iamVjdCAqZGF0YSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0CiAK
ICAgICBpZiAod2l0aEhUTUwpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IGNmaHRtbERhdGE7Ci0g
ICAgICAgIG1hcmt1cFRvQ0ZfSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRt
bERhdGEpOworICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwg
IiIsIGNmaHRtbERhdGEpOwogICAgICAgICBtZWRpdW0uaEdsb2JhbCA9IGNyZWF0ZUdsb2JhbERh
dGEoY2ZodG1sRGF0YSk7CiAgICAgICAgIGlmIChtZWRpdW0uaEdsb2JhbCAmJiBGQUlMRUQoZGF0
YS0+U2V0RGF0YShodG1sRm9ybWF0KCksICZtZWRpdW0sIFRSVUUpKSkKICAgICAgICAgICAgIDo6
R2xvYmFsRnJlZShtZWRpdW0uaEdsb2JhbCk7CkBAIC00NTgsNyArNDU3LDcgQEAgc3RhdGljIGJv
b2wgd3JpdGVVUkwoV0NEYXRhT2JqZWN0ICpkYXRhLCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyB0
aXRsZSwgYm9vbCB3aXQKIAogdm9pZCBDbGlwYm9hcmRXaW46OmNsZWFyRGF0YShjb25zdCBTdHJp
bmcmIHR5cGUpCiB7Ci0gICAgLy9GSVhNRTogTmVlZCB0byBiZSBhYmxlIHRvIHdyaXRlIHRvIHRo
ZSBzeXN0ZW0gY2xpcGJvYXJkIDxyZGFyOi8vcHJvYmxlbS81MDE1OTQxPgorICAgIC8vIEZJWE1F
OiBOZWVkIHRvIGJlIGFibGUgdG8gd3JpdGUgdG8gdGhlIHN5c3RlbSBjbGlwYm9hcmQgPHJkYXI6
Ly9wcm9ibGVtLzUwMTU5NDE+CiAgICAgQVNTRVJUKGlzRm9yRHJhZ2dpbmcoKSk7CiAgICAgaWYg
KHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlIHx8ICFtX3dyaXRhYmxlRGF0YU9iamVjdCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNDc4LDcgKzQ3Nyw3IEBAIHZvaWQgQ2xpcGJvYXJkV2luOjpj
bGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogCiB2b2lkIENsaXBib2FyZFdpbjo6Y2xlYXJB
bGxEYXRhKCkKIHsKLSAgICAvL0ZJWE1FOiBOZWVkIHRvIGJlIGFibGUgdG8gd3JpdGUgdG8gdGhl
IHN5c3RlbSBjbGlwYm9hcmQgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NDE+CisgICAgLy8gRklYTUU6
IE5lZWQgdG8gYmUgYWJsZSB0byB3cml0ZSB0byB0aGUgc3lzdGVtIGNsaXBib2FyZCA8cmRhcjov
L3Byb2JsZW0vNTAxNTk0MT4KICAgICBBU1NFUlQoaXNGb3JEcmFnZ2luZygpKTsKICAgICBpZiAo
cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCiAgICAgICAgIHJldHVybjsKQEAgLTQ5MSwx
NCArNDkwLDEzIEBAIHZvaWQgQ2xpcGJvYXJkV2luOjpjbGVhckFsbERhdGEoKQogU3RyaW5nIENs
aXBib2FyZFdpbjo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNv
bnN0CiB7ICAgICAKICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgaWYgKHBvbGljeSgpICE9IENs
aXBib2FyZFJlYWRhYmxlIHx8ICFtX2RhdGFPYmplY3QpIHsKKyAgICBpZiAocG9saWN5KCkgIT0g
Q2xpcGJvYXJkUmVhZGFibGUgfHwgIW1fZGF0YU9iamVjdCkKICAgICAgICAgcmV0dXJuICIiOwot
ICAgIH0KIAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZy
b21NSU1FVHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVU
ZXh0KQogICAgICAgICByZXR1cm4gZ2V0UGxhaW5UZXh0KG1fZGF0YU9iamVjdC5nZXQoKSwgc3Vj
Y2Vzcyk7Ci0gICAgZWxzZSBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVVUkwpIAor
ICAgIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVVSTCkKICAgICAgICAgcmV0dXJu
IGdldFVSTChtX2RhdGFPYmplY3QuZ2V0KCksIERyYWdEYXRhOjpEb05vdENvbnZlcnRGaWxlbmFt
ZXMsIHN1Y2Nlc3MpOwogICAgIAogICAgIHJldHVybiAiIjsKQEAgLTU2OCw5ICs1NjYsOCBAQCBI
YXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJkV2luOjp0eXBlcygpIGNvbnN0CiAgICAgRk9STUFURVRD
IGRhdGE7CiAKICAgICAvLyBJRW51bUZPUk1BVEVUQzo6TmV4dCByZXR1cm5zIFNfRkFMU0UgaWYg
dGhlcmUgYXJlIG5vIG1vcmUgaXRlbXMuCi0gICAgd2hpbGUgKGl0ci0+TmV4dCgxLCAmZGF0YSwg
MCkgPT0gU19PSykgeworICAgIHdoaWxlIChpdHItPk5leHQoMSwgJmRhdGEsIDApID09IFNfT0sp
CiAgICAgICAgIGFkZE1pbWVUeXBlc0ZvckZvcm1hdChyZXN1bHRzLCBkYXRhKTsKLSAgICB9CiAK
ICAgICByZXR1cm4gcmVzdWx0czsKIH0KQEAgLTcyMCw3ICs3MTcsNyBAQCB2b2lkIENsaXBib2Fy
ZFdpbjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtV
UkwmIHVybCwgYwogCiAgICAgLy8gUHV0IGltZyB0YWcgb24gdGhlIGNsaXBib2FyZCByZWZlcmVu
Y2luZyB0aGUgaW1hZ2UKICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICBtYXJrdXBUb0NGX0hU
TUwoaW1hZ2VUb01hcmt1cChmdWxsVVJMKSwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZIVE1M
KGltYWdlVG9NYXJrdXAoZnVsbFVSTCksICIiLCBkYXRhKTsKICAgICBtZWRpdW0uaEdsb2JhbCA9
IGNyZWF0ZUdsb2JhbERhdGEoZGF0YSk7CiAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxF
RChtX3dyaXRhYmxlRGF0YU9iamVjdC0+U2V0RGF0YShodG1sRm9ybWF0KCksICZtZWRpdW0sIFRS
VUUpKSkKICAgICAgICAgOjpHbG9iYWxGcmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTc1Nyw3ICs3
NTQsNyBAQCB2b2lkIENsaXBib2FyZFdpbjo6d3JpdGVSYW5nZShSYW5nZSogc2VsZWN0ZWRSYW5n
ZSwgRnJhbWUqIGZyYW1lKQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCiAgICAgVmVjdG9y
PGNoYXI+IGRhdGE7Ci0gICAgbWFya3VwVG9DRl9IVE1MKGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJh
bmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKSwKKyAgICBtYXJrdXBUb0NGSFRNTChjcmVh
dGVNYXJrdXAoc2VsZWN0ZWRSYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSksCiAgICAg
ICAgIHNlbGVjdGVkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKGVjKS0+ZG9jdW1lbnQoKS0+dXJsKCku
c3RyaW5nKCksIGRhdGEpOwogICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShk
YXRhKTsKICAgICBpZiAobWVkaXVtLmhHbG9iYWwgJiYgRkFJTEVEKG1fd3JpdGFibGVEYXRhT2Jq
ZWN0LT5TZXREYXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmggYi9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9DbGlwYm9hcmRXaW4uaAppbmRleCA0OWZkY2ZlNDY1YzBkOTM3MzhlMzgxNDBkNjhhNmY5ODFm
Yzk3Njk5Li4xYjEzOWVkYTAzZGNjNTYyZTUzMTRmMTIwZmNiMDgzMWYxOTM3OGM0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uaAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uaApAQCAtMjYsNjYgKzI2LDY2IEBACiAjaWZuZGVmIENs
aXBib2FyZFdpbl9oCiAjZGVmaW5lIENsaXBib2FyZFdpbl9oCiAKKyNpbmNsdWRlICJDT01QdHIu
aCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNsaXBib2Fy
ZC5oIgotI2luY2x1ZGUgIkNPTVB0ci5oIgogCiBzdHJ1Y3QgSURhdGFPYmplY3Q7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIENhY2hlZEltYWdlOwotICAgIGNsYXNzIEludFBv
aW50OwotICAgIGNsYXNzIFdDRGF0YU9iamVjdDsKLQotICAgIC8vIFN0YXRlIGF2YWlsYWJsZSBk
dXJpbmcgSUUncyBldmVudHMgZm9yIGRyYWcgYW5kIGRyb3AgYW5kIGNvcHkvcGFzdGUKLSAgICBj
bGFzcyBDbGlwYm9hcmRXaW4gOiBwdWJsaWMgQ2xpcGJvYXJkLCBwdWJsaWMgQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJv
YXJkV2luPiBjcmVhdGUoYm9vbCBpc0ZvckRyYWdnaW5nLCBJRGF0YU9iamVjdCogZGF0YU9iamVj
dCwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRXaW4oaXNGb3JEcmFnZ2luZywgZGF0YU9iamVj
dCwgcG9saWN5KSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJv
YXJkV2luPiBjcmVhdGUoYm9vbCBpc0ZvckRyYWdnaW5nLCBXQ0RhdGFPYmplY3QqIGRhdGFPYmpl
Y3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkV2luKGlzRm9yRHJhZ2dpbmcsIGRhdGFPYmpl
Y3QsIHBvbGljeSkpOwotICAgICAgICB9Ci0gICAgICAgIH5DbGlwYm9hcmRXaW4oKTsKLSAgICAK
LSAgICAgICAgdm9pZCBjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKTsKLSAgICAgICAgdm9p
ZCBjbGVhckFsbERhdGEoKTsKLSAgICAgICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJiB0
eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdDsKLSAgICAgICAgYm9vbCBzZXREYXRhKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKTsKLSAgICAKLSAgICAgICAgLy8gZXh0ZW5z
aW9ucyBiZXlvbmQgSUUncyBBUEkKLSAgICAgICAgdmlydHVhbCBIYXNoU2V0PFN0cmluZz4gdHlw
ZXMoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbGVMaXN0PiBmaWxlcygp
IGNvbnN0OwotICAgIAotICAgICAgICB2b2lkIHNldERyYWdJbWFnZShDYWNoZWRJbWFnZSosIGNv
bnN0IEludFBvaW50Jik7Ci0gICAgICAgIHZvaWQgc2V0RHJhZ0ltYWdlRWxlbWVudChOb2RlKiwg
Y29uc3QgSW50UG9pbnQmKTsKLQotICAgICAgICB2aXJ0dWFsIERyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2UoSW50UG9pbnQmIGRyYWdMb2MpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgRnJhbWUqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHdyaXRlVVJMKGNvbnN0
IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBGcmFtZSopOwotICAgICAgICB2aXJ0dWFsIHZvaWQgd3Jp
dGVSYW5nZShSYW5nZSosIEZyYW1lKik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB3cml0ZVBsYWlu
VGV4dChjb25zdCBTdHJpbmcmKTsKLQotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzRGF0YSgpOwot
Ci0gICAgICAgIENPTVB0cjxJRGF0YU9iamVjdD4gZGF0YU9iamVjdCgpIHsgcmV0dXJuIG1fZGF0
YU9iamVjdDsgfQotCi0gICAgICAgIHZvaWQgc2V0RXh0ZXJuYWxEYXRhT2JqZWN0KElEYXRhT2Jq
ZWN0ICpkYXRhT2JqZWN0KTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIENsaXBib2FyZFdpbihi
b29sIGlzRm9yRHJhZ2dpbmcsIElEYXRhT2JqZWN0KiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5KTsK
LSAgICAgICAgQ2xpcGJvYXJkV2luKGJvb2wgaXNGb3JEcmFnZ2luZywgV0NEYXRhT2JqZWN0Kiwg
Q2xpcGJvYXJkQWNjZXNzUG9saWN5KTsKLQotICAgICAgICB2b2lkIHJlc2V0RnJvbUNsaXBib2Fy
ZCgpOwotICAgICAgICB2b2lkIHNldERyYWdJbWFnZShDYWNoZWRJbWFnZSosIE5vZGUqLCBjb25z
dCBJbnRQb2ludCYpOwotCi0gICAgICAgIENPTVB0cjxJRGF0YU9iamVjdD4gbV9kYXRhT2JqZWN0
OwotICAgICAgICBDT01QdHI8V0NEYXRhT2JqZWN0PiBtX3dyaXRhYmxlRGF0YU9iamVjdDsKLSAg
ICAgICAgRnJhbWUqIG1fZnJhbWU7Ci0gICAgfTsKK2NsYXNzIENhY2hlZEltYWdlOworY2xhc3Mg
SW50UG9pbnQ7CitjbGFzcyBXQ0RhdGFPYmplY3Q7CisKKy8vIFN0YXRlIGF2YWlsYWJsZSBkdXJp
bmcgSUUncyBldmVudHMgZm9yIGRyYWcgYW5kIGRyb3AgYW5kIGNvcHkvcGFzdGUKK2NsYXNzIENs
aXBib2FyZFdpbiA6IHB1YmxpYyBDbGlwYm9hcmQsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVu
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkV2luPiBjcmVhdGUo
Ym9vbCBpc0ZvckRyYWdnaW5nLCBJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5IHBvbGljeSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xp
cGJvYXJkV2luKGlzRm9yRHJhZ2dpbmcsIGRhdGFPYmplY3QsIHBvbGljeSkpOworICAgIH0KKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRXaW4+IGNyZWF0ZShib29sIGlzRm9yRHJhZ2dp
bmcsIFdDRGF0YU9iamVjdCogZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGlj
eSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkV2luKGlzRm9y
RHJhZ2dpbmcsIGRhdGFPYmplY3QsIHBvbGljeSkpOworICAgIH0KKyAgICB+Q2xpcGJvYXJkV2lu
KCk7CisKKyAgICB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIHZvaWQg
Y2xlYXJBbGxEYXRhKCk7CisgICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBi
b29sJiBzdWNjZXNzKSBjb25zdDsKKyAgICBib29sIHNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIGRhdGEpOworCisgICAgLy8gZXh0ZW5zaW9ucyBiZXlvbmQgSUUncyBB
UEkKKyAgICB2aXJ0dWFsIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0OworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxGaWxlTGlzdD4gZmlsZXMoKSBjb25zdDsKKworICAgIHZvaWQgc2V0RHJh
Z0ltYWdlKENhY2hlZEltYWdlKiwgY29uc3QgSW50UG9pbnQmKTsKKyAgICB2b2lkIHNldERyYWdJ
bWFnZUVsZW1lbnQoTm9kZSosIGNvbnN0IEludFBvaW50Jik7CisKKyAgICB2aXJ0dWFsIERyYWdJ
bWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2UoSW50UG9pbnQmIGRyYWdMb2MpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRWxlbWVudCosIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGcmFtZSopOworICAgIHZpcnR1YWwgdm9pZCB3cml0ZVVS
TChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgRnJhbWUqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
d3JpdGVSYW5nZShSYW5nZSosIEZyYW1lKik7CisgICAgdmlydHVhbCB2b2lkIHdyaXRlUGxhaW5U
ZXh0KGNvbnN0IFN0cmluZyYpOworCisgICAgdmlydHVhbCBib29sIGhhc0RhdGEoKTsKKworICAg
IENPTVB0cjxJRGF0YU9iamVjdD4gZGF0YU9iamVjdCgpIHsgcmV0dXJuIG1fZGF0YU9iamVjdDsg
fQorCisgICAgdm9pZCBzZXRFeHRlcm5hbERhdGFPYmplY3QoSURhdGFPYmplY3QgKmRhdGFPYmpl
Y3QpOworCitwcml2YXRlOgorICAgIENsaXBib2FyZFdpbihib29sIGlzRm9yRHJhZ2dpbmcsIElE
YXRhT2JqZWN0KiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5KTsKKyAgICBDbGlwYm9hcmRXaW4oYm9v
bCBpc0ZvckRyYWdnaW5nLCBXQ0RhdGFPYmplY3QqLCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kpOwor
CisgICAgdm9pZCByZXNldEZyb21DbGlwYm9hcmQoKTsKKyAgICB2b2lkIHNldERyYWdJbWFnZShD
YWNoZWRJbWFnZSosIE5vZGUqLCBjb25zdCBJbnRQb2ludCYpOworCisgICAgQ09NUHRyPElEYXRh
T2JqZWN0PiBtX2RhdGFPYmplY3Q7CisgICAgQ09NUHRyPFdDRGF0YU9iamVjdD4gbV93cml0YWJs
ZURhdGFPYmplY3Q7CisgICAgRnJhbWUqIG1fZnJhbWU7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4u
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggNTEyZjZj
ZmNkZGQ4MmZmNzhkMTVjZmY5ZTMxODMwNjU1NThjNTJmMS4uODA4Yzg2MzNiOWU2ZTMwNGRhN2I0
ZDdkNDQwZGM1ZDc3NGE1MTllYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgc3RhdGljIExSRVNVTFQgQ0FMTEJBQ0sgUGFzdGVib2FyZE93
bmVyV25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHcKICAgICBMUkVTVUxU
IGxyZXN1bHQgPSAwOwogICAgIExPTkdfUFRSIGxvbmdQdHIgPSBHZXRXaW5kb3dMb25nUHRyKGhX
bmQsIDApOwogCi0gICAgc3dpdGNoKG1lc3NhZ2UpIHsKKyAgICBzd2l0Y2ggKG1lc3NhZ2UpIHsK
ICAgICBjYXNlIFdNX1JFTkRFUkZPUk1BVDoKICAgICAgICAgLy8gVGhpcyBtZXNzYWdlIGNvbWVz
IHdoZW4gU2V0Q2xpcGJvYXJkRGF0YSB3YXMgc2VudCBhIG51bGwgZGF0YSBoYW5kbGUgCiAgICAg
ICAgIC8vIGFuZCBub3cgaXQncyBjb21lIHRpbWUgdG8gcHV0IHRoZSBkYXRhIG9uIHRoZSBjbGlw
Ym9hcmQuCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlv
bihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZSwKICAgICBp
ZiAoOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICAgICAgbWFya3VwVG9DRl9IVE1M
KGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKSwK
KyAgICAgICAgbWFya3VwVG9DRkhUTUwoY3JlYXRlTWFya3VwKHNlbGVjdGVkUmFuZ2UsIDAsIEFu
bm90YXRlRm9ySW50ZXJjaGFuZ2UpLAogICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZS0+c3RhcnRD
b250YWluZXIoZWMpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSwgZGF0YSk7CiAgICAgICAg
IEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYgKCE6
OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKQEAgLTEzOSw3
ICsxMzksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3Rl
ZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLAogICAgIC8vIGVuYWJsZSBzbWFydC1y
ZXBsYWNpbmcgbGF0ZXIgb24gYnkgcHV0dGluZyBkdW1teSBkYXRhIG9uIHRoZSBwYXN0ZWJvYXJk
CiAgICAgaWYgKGNhblNtYXJ0Q29weU9yRGVsZXRlKSB7CiAgICAgICAgIGlmICg6Ok9wZW5DbGlw
Ym9hcmQobV9vd25lcikpIHsKLSAgICAgICAgICAgIDo6U2V0Q2xpcGJvYXJkRGF0YShXZWJTbWFy
dFBhc3RlRm9ybWF0LCBOVUxMKTsKKyAgICAgICAgICAgIDo6U2V0Q2xpcGJvYXJkRGF0YShXZWJT
bWFydFBhc3RlRm9ybWF0LCAwKTsKICAgICAgICAgICAgIDo6Q2xvc2VDbGlwYm9hcmQoKTsKICAg
ICAgICAgfQogICAgICAgICAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0ciwgRnJhbWUqIGZy
YW1lKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0byBiZSBh
YmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawogICAgIGlm
ICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGE7
Ci0gICAgICAgIG1hcmt1cFRvQ0ZfSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGRh
dGEpOworICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIs
IGRhdGEpOwogICAgICAgICBIR0xPQkFMIGNiRGF0YSA9IGNyZWF0ZUdsb2JhbERhdGEoZGF0YSk7
CiAgICAgICAgIGlmICghOjpTZXRDbGlwYm9hcmREYXRhKEhUTUxDbGlwYm9hcmRGb3JtYXQsIGNi
RGF0YSkpCiAgICAgICAgICAgICA6Okdsb2JhbEZyZWUoY2JEYXRhKTsKQEAgLTI2MCw4ICsyNjAs
OCBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cGxhaW5UZXh0KEZyYW1lKiBmcmFtZSkKICAgICAgICAg
ICAgIDo6R2xvYmFsVW5sb2NrKGNiRGF0YSk7CiAgICAgICAgICAgICA6OkNsb3NlQ2xpcGJvYXJk
KCk7CiAgICAgICAgICAgICByZXR1cm4gZnJvbUNsaXBib2FyZDsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICA6OkNsb3NlQ2xpcGJvYXJkKCk7CisgICAgICAgIH0KKyAgICAgICAgOjpDbG9z
ZUNsaXBib2FyZCgpOwogICAgIH0KIAogICAgIGlmICg6OklzQ2xpcGJvYXJkRm9ybWF0QXZhaWxh
YmxlKENGX1RFWFQpICYmIDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewpAQCAtMjcyLDggKzI3
Miw4IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpwbGFpblRleHQoRnJhbWUqIGZyYW1lKQogICAgICAg
ICAgICAgOjpHbG9iYWxVbmxvY2soY2JEYXRhKTsKICAgICAgICAgICAgIDo6Q2xvc2VDbGlwYm9h
cmQoKTsKICAgICAgICAgICAgIHJldHVybiBmcm9tQ2xpcGJvYXJkOwotICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIDo6Q2xvc2VDbGlwYm9hcmQoKTsKKyAgICAgICAgfQorICAgICAgICA6OkNs
b3NlQ2xpcGJvYXJkKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMjg4LDEx
ICsyODgsMTEgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBQYXN0ZWJvYXJkOjpkb2N1
bWVudEZyYWdtZW50KEZyYW1lKiBmcmFtZSwgUGFzc1JlZlAKICAgICAgICAgSEFORExFIGNiRGF0
YSA9IDo6R2V0Q2xpcGJvYXJkRGF0YShIVE1MQ2xpcGJvYXJkRm9ybWF0KTsKICAgICAgICAgaWYg
KGNiRGF0YSkgewogICAgICAgICAgICAgU0laRV9UIGRhdGFTaXplID0gOjpHbG9iYWxTaXplKGNi
RGF0YSk7Ci0gICAgICAgICAgICBTdHJpbmcgY2ZfaHRtbChVVEY4RW5jb2RpbmcoKS5kZWNvZGUo
KGNoYXIqKTo6R2xvYmFsTG9jayhjYkRhdGEpLCBkYXRhU2l6ZSkpOworICAgICAgICAgICAgU3Ry
aW5nIGNmaHRtbChVVEY4RW5jb2RpbmcoKS5kZWNvZGUoKGNoYXIqKTo6R2xvYmFsTG9jayhjYkRh
dGEpLCBkYXRhU2l6ZSkpOwogICAgICAgICAgICAgOjpHbG9iYWxVbmxvY2soY2JEYXRhKTsKICAg
ICAgICAgICAgIDo6Q2xvc2VDbGlwYm9hcmQoKTsKIAotICAgICAgICAgICAgUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUNGX0hUTUwoZnJhbWUtPmRv
Y3VtZW50KCksIGNmX2h0bWwpOworICAgICAgICAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUNGSFRNTChmcmFtZS0+ZG9jdW1lbnQoKSwgY2Zo
dG1sKTsKICAgICAgICAgICAgIGlmIChmcmFnbWVudCkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZnJhZ21lbnQ7CiAgICAgICAgIH0gZWxzZSAKQEAgLTMwNiw3ICszMDYsNyBAQCBQYXNzUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IFBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21lbnQoRnJhbWUqIGZy
YW1lLCBQYXNzUmVmUAogICAgICAgICAgICAgaWYgKGNiRGF0YSkgewogICAgICAgICAgICAgICAg
IFVDaGFyKiBidWZmZXIgPSAoVUNoYXIqKUdsb2JhbExvY2soY2JEYXRhKTsKICAgICAgICAgICAg
ICAgICBTdHJpbmcgc3RyKGJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgOjpHbG9iYWxVbmxvY2so
IGNiRGF0YSApOworICAgICAgICAgICAgICAgIDo6R2xvYmFsVW5sb2NrKGNiRGF0YSk7CiAgICAg
ICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29udGV4
dC5nZXQoKSwgc3RyKTsKICAgICAgICAgICAgICAgICBpZiAoZnJhZ21lbnQpCkBAIC0zMjMsNyAr
MzIzLDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBQYXN0ZWJvYXJkOjpkb2N1bWVu
dEZyYWdtZW50KEZyYW1lKiBmcmFtZSwgUGFzc1JlZlAKICAgICAgICAgICAgIGlmIChjYkRhdGEp
IHsKICAgICAgICAgICAgICAgICBjaGFyKiBidWZmZXIgPSAoY2hhciopR2xvYmFsTG9jayhjYkRh
dGEpOwogICAgICAgICAgICAgICAgIFN0cmluZyBzdHIoYnVmZmVyKTsKLSAgICAgICAgICAgICAg
ICA6Okdsb2JhbFVubG9jayggY2JEYXRhICk7CisgICAgICAgICAgICAgICAgOjpHbG9iYWxVbmxv
Y2soY2JEYXRhKTsKICAgICAgICAgICAgICAgICA6OkNsb3NlQ2xpcGJvYXJkKCk7CiAgICAgICAg
ICAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChjb250ZXh0LmdldCgpLCBzdHIpOwogICAgICAgICAgICAgICAgIGlmIChmcmFn
bWVudCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62023</attachid>
            <date>2010-07-19 18:41:10 -0700</date>
            <delta_ts>2010-07-20 01:43:57 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-42609-20100719184109.patch</filename>
            <type>text/plain</type>
            <size>25297</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODQzNWMwZmU1MjNiZWFlMjkyMjMwMTQ4OTQ3ODQ0MWNlODM1ZGE3NS4uN2VkYTFjYTU2YzVjMjJk
MTk2MjlkMDMxOTU0MDZjN2NiNGVlODE4NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMC0wNy0xOSAgVG9u
eSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnQg
VGFtdXJhLgorCisgICAgICAgIGNsZWFuIHVwIHN0eWxlIGluIENsaXBib2FyZFdpbiBhbmQgUGFz
dGVib2FyZFdpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDI2MDkKKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgdGhpcyBpcyBqdXN0IGEgc3R5
bGUgY2xlYW51cC4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjptYXJrdXBUb0NGSFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0UGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmdldFRleHRI
VE1MKToKKyAgICAgICAgKFdlYkNvcmU6OmZyYWdtZW50RnJvbUZpbGVuYW1lcyk6CisgICAgICAg
IChXZWJDb3JlOjpjb250YWluc0ZpbGVuYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpmcmFnbWVu
dEZyb21DRkhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6ZnJhZ21lbnRGcm9tSFRNTCk6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0aFJlbW92
ZUJhZEZTQ2hhcmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsVXJsRmlsZURlc2NyaXB0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkV2luOjpjbGVhckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpjbGVh
ckFsbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpnZXREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6dHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkV2luOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkV2luOjp3cml0ZVJhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xp
cGJvYXJkV2luLmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OmRhdGFPYmplY3QpOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmRPd25lclduZFByb2MpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVVUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21lbnQpOgorCiAyMDEwLTA3LTE5ICBFcmljIENhcmxzb24g
IDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWlu
aWcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNX
aW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApp
bmRleCBmYmQwMDExNzk0MGQ5ZDNmOTIwNTE1YzEwMDUwZDc0YjU4YzY0NDc5Li5lNmFmN2VmYjFj
NjJmOGRjYzhiMWQ5OTk2ZGFkOTRmMjM5NTBiODBlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKQEAgLTMyLDEwICszMiwxMCBAQAogI2luY2x1
ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPENvcmVG
b3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8c2hsd2FwaS5oPgorI2luY2x1
ZGUgPHdpbmluZXQuaD4gLy8gZm9yIElOVEVSTkVUX01BWF9VUkxfTEVOR1RICiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRl
IDxzaGx3YXBpLmg+Ci0jaW5jbHVkZSA8d2luaW5ldC5oPiAgICAvLyBmb3IgSU5URVJORVRfTUFY
X1VSTF9MRU5HVEgKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC05Nyw3ICs5Nyw3IEBAIHN0
YXRpYyBTdHJpbmcgZXh0cmFjdFVSTChjb25zdCBTdHJpbmcgJmluVVJMLCBTdHJpbmcqIHRpdGxl
KQogICAgIHJldHVybiB1cmw7CiB9CiAKLS8vRmlyZWZveCB0ZXh0L2h0bWwKKy8vIEZpcmVmb3gg
dGV4dC9odG1sCiBzdGF0aWMgRk9STUFURVRDKiB0ZXh0aHRtbEZvcm1hdCgpIAogewogICAgIHN0
YXRpYyBVSU5UIGNmID0gUmVnaXN0ZXJDbGlwYm9hcmRGb3JtYXQoTCJ0ZXh0L2h0bWwiKTsKQEAg
LTEwOSw3ICsxMDksNyBAQCBIR0xPQkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIFN0cmluZyBtdXRhYmxlVVJMKHVybC5zdHJp
bmcoKSk7CiAgICAgU3RyaW5nIG11dGFibGVUaXRsZSh0aXRsZSk7Ci0gICAgU0laRV9UIHNpemUg
PSBtdXRhYmxlVVJMLmxlbmd0aCgpICsgbXV0YWJsZVRpdGxlLmxlbmd0aCgpICsgMjsgIC8vICsx
IGZvciAiXG4iIGFuZCArMSBmb3IgbnVsbCB0ZXJtaW5hdG9yCisgICAgU0laRV9UIHNpemUgPSBt
dXRhYmxlVVJMLmxlbmd0aCgpICsgbXV0YWJsZVRpdGxlLmxlbmd0aCgpICsgMjsgLy8gKzEgZm9y
ICJcbiIgYW5kICsxIGZvciBudWxsIHRlcm1pbmF0b3IKICAgICBIR0xPQkFMIGNiRGF0YSA9IDo6
R2xvYmFsQWxsb2MoR1BUUiwgc2l6ZSAqIHNpemVvZihVQ2hhcikpOwogCiAgICAgaWYgKGNiRGF0
YSkgewpAQCAtMTU1LDcgKzE1NSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZChWZWN0b3I8Y2hhcj4m
IHZlY3RvciwgY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogfQogCiAvLyBEb2N1bWVudGF0aW9uIGZv
ciB0aGUgQ0ZfSFRNTCBmb3JtYXQgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9tc2RuLm1pY3Jvc29m
dC5jb20vd29ya3Nob3AvbmV0d29ya2luZy9jbGlwYm9hcmQvaHRtbGNsaXBib2FyZC5hc3AKLXZv
aWQgbWFya3VwVG9DRl9IVE1MKGNvbnN0IFN0cmluZyYgbWFya3VwLCBjb25zdCBTdHJpbmcmIHNy
Y1VSTCwgVmVjdG9yPGNoYXI+JiByZXN1bHQpCit2b2lkIG1hcmt1cFRvQ0ZIVE1MKGNvbnN0IFN0
cmluZyYgbWFya3VwLCBjb25zdCBTdHJpbmcmIHNyY1VSTCwgVmVjdG9yPGNoYXI+JiByZXN1bHQp
CiB7CiAgICAgaWYgKG1hcmt1cC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI1Niw3
ICsyNTYsNyBAQCBGT1JNQVRFVEMqIGZpbGVuYW1lRm9ybWF0KCkKICAgICByZXR1cm4gJnVybEZv
cm1hdDsKIH0KIAotLy9NU0lFIEhUTUwgRm9ybWF0CisvLyBNU0lFIEhUTUwgRm9ybWF0CiBGT1JN
QVRFVEMqIGh0bWxGb3JtYXQoKSAKIHsKICAgICBzdGF0aWMgVUlOVCBjZiA9IFJlZ2lzdGVyQ2xp
cGJvYXJkRm9ybWF0KEwiSFRNTCBGb3JtYXQiKTsKQEAgLTI5NCwxOCArMjk0LDE3IEBAIFN0cmlu
ZyBnZXRVUkwoSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIERyYWdEYXRhOjpGaWxlbmFtZUNvbnZl
cnNpb25Qb2xpY3kgZmlsZW5hCiAgICAgU1RHTUVESVVNIHN0b3JlOwogICAgIFN0cmluZyB1cmw7
CiAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgIGlmIChnZXRXZWJMb2NEYXRhKGRhdGFPYmplY3Qs
IHVybCwgdGl0bGUpKSB7CisgICAgaWYgKGdldFdlYkxvY0RhdGEoZGF0YU9iamVjdCwgdXJsLCB0
aXRsZSkpCiAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwotICAgICAgICByZXR1cm4gdXJsOwotICAg
IH0gZWxzZSBpZiAoU1VDQ0VFREVEKGRhdGFPYmplY3QtPkdldERhdGEodXJsV0Zvcm1hdCgpLCAm
c3RvcmUpKSkgewotICAgICAgICAvL1VSTCB1c2luZyB1bmljb2RlCisgICAgZWxzZSBpZiAoU1VD
Q0VFREVEKGRhdGFPYmplY3QtPkdldERhdGEodXJsV0Zvcm1hdCgpLCAmc3RvcmUpKSkgeworICAg
ICAgICAvLyBVUkwgdXNpbmcgVW5pY29kZQogICAgICAgICBVQ2hhciogZGF0YSA9IChVQ2hhciop
R2xvYmFsTG9jayhzdG9yZS5oR2xvYmFsKTsKICAgICAgICAgdXJsID0gZXh0cmFjdFVSTChTdHJp
bmcoZGF0YSksIHRpdGxlKTsKICAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOyAg
ICAgIAogICAgICAgICBSZWxlYXNlU3RnTWVkaXVtKCZzdG9yZSk7CiAgICAgICAgIHN1Y2Nlc3Mg
PSB0cnVlOwogICAgIH0gZWxzZSBpZiAoU1VDQ0VFREVEKGRhdGFPYmplY3QtPkdldERhdGEodXJs
Rm9ybWF0KCksICZzdG9yZSkpKSB7Ci0gICAgICAgIC8vVVJMIHVzaW5nIGFzY2lpCisgICAgICAg
IC8vIFVSTCB1c2luZyBBU0NJSQogICAgICAgICBjaGFyKiBkYXRhID0gKGNoYXIqKUdsb2JhbExv
Y2soc3RvcmUuaEdsb2JhbCk7CiAgICAgICAgIHVybCA9IGV4dHJhY3RVUkwoU3RyaW5nKGRhdGEp
LCB0aXRsZSk7CiAgICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsgICAgICAKQEAg
LTM0OSwxNCArMzQ4LDE0IEBAIFN0cmluZyBnZXRQbGFpblRleHQoSURhdGFPYmplY3QqIGRhdGFP
YmplY3QsIGJvb2wmIHN1Y2Nlc3MpCiAgICAgU3RyaW5nIHRleHQ7CiAgICAgc3VjY2VzcyA9IGZh
bHNlOwogICAgIGlmIChTVUNDRUVERUQoZGF0YU9iamVjdC0+R2V0RGF0YShwbGFpblRleHRXRm9y
bWF0KCksICZzdG9yZSkpKSB7Ci0gICAgICAgIC8vdW5pY29kZSB0ZXh0CisgICAgICAgIC8vIFVu
aWNvZGUgdGV4dAogICAgICAgICBVQ2hhciogZGF0YSA9IChVQ2hhciopR2xvYmFsTG9jayhzdG9y
ZS5oR2xvYmFsKTsKICAgICAgICAgdGV4dCA9IFN0cmluZyhkYXRhKTsKICAgICAgICAgR2xvYmFs
VW5sb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICBSZWxlYXNlU3RnTWVkaXVtKCZzdG9yZSk7
CiAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgIH0gZWxzZSBpZiAoU1VDQ0VFREVEKGRhdGFP
YmplY3QtPkdldERhdGEocGxhaW5UZXh0Rm9ybWF0KCksICZzdG9yZSkpKSB7Ci0gICAgICAgIC8v
YXNjaWkgdGV4dAorICAgICAgICAvLyBBU0NJSSB0ZXh0CiAgICAgICAgIGNoYXIqIGRhdGEgPSAo
Y2hhciopR2xvYmFsTG9jayhzdG9yZS5oR2xvYmFsKTsKICAgICAgICAgdGV4dCA9IFN0cmluZyhk
YXRhKTsKICAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOwpAQCAtMzcyLDQwICsz
NzEsNTUgQEAgU3RyaW5nIGdldFBsYWluVGV4dChJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgYm9v
bCYgc3VjY2VzcykKICAgICByZXR1cm4gdGV4dDsKIH0KIAorU3RyaW5nIGdldFRleHRIVE1MKElE
YXRhT2JqZWN0KiBkYXRhLCBib29sJiBzdWNjZXNzKQoreworICAgIFNUR01FRElVTSBzdG9yZTsK
KyAgICBTdHJpbmcgaHRtbDsKKyAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgaWYgKFNVQ0NFRURF
RChkYXRhLT5HZXREYXRhKHRleHRodG1sRm9ybWF0KCksICZzdG9yZSkpKSB7CisgICAgICAgIFVD
aGFyKiBkYXRhID0gc3RhdGljX2Nhc3Q8VUNoYXIqPihHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwp
KTsKKyAgICAgICAgaHRtbCA9IFN0cmluZyhkYXRhKTsKKyAgICAgICAgR2xvYmFsVW5sb2NrKHN0
b3JlLmhHbG9iYWwpOworICAgICAgICBSZWxlYXNlU3RnTWVkaXVtKCZzdG9yZSk7CisgICAgICAg
IHN1Y2Nlc3MgPSB0cnVlOworICAgIH0KKyAgICByZXR1cm4gaHRtbDsKK30KKwogUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21GaWxlbmFtZXMoRG9jdW1lbnQqLCBjb25z
dCBJRGF0YU9iamVjdCopCiB7Ci0gICAgLy9GSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gY3Jl
YXRlIGZyYWdtZW50cyBmcm9tIGZpbGVzCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxl
IHRvIGNyZWF0ZSBmcmFnbWVudHMgZnJvbSBmaWxlcwogICAgIHJldHVybiAwOwogfQogCiBib29s
IGNvbnRhaW5zRmlsZW5hbWVzKGNvbnN0IElEYXRhT2JqZWN0KikKIHsKLSAgICAvL0ZJWE1FOiBX
ZSdsbCB3YW50IHRvIHVwZGF0ZSB0aGlzIG9uY2Ugd2UgY2FuIHByb2R1Y2UgZnJhZ21lbnRzIGZy
b20gZmlsZXMKKyAgICAvLyBGSVhNRTogV2UnbGwgd2FudCB0byB1cGRhdGUgdGhpcyBvbmNlIHdl
IGNhbiBwcm9kdWNlIGZyYWdtZW50cyBmcm9tIGZpbGVzCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci0vL0NvbnZlcnQgYSBTdHJpbmcgY29udGFpbmluZyBDRl9IVE1MIGZvcm1hdHRlZCB0ZXh0IHRv
IGEgRG9jdW1lbnRGcmFnbWVudAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVu
dEZyb21DRl9IVE1MKERvY3VtZW50KiBkb2MsIGNvbnN0IFN0cmluZyYgY2ZfaHRtbCkKKy8vIENv
bnZlcnQgYSBTdHJpbmcgY29udGFpbmluZyBDRl9IVE1MIGZvcm1hdHRlZCB0ZXh0IHRvIGEgRG9j
dW1lbnRGcmFnbWVudAorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21D
RkhUTUwoRG9jdW1lbnQqIGRvYywgY29uc3QgU3RyaW5nJiBjZmh0bWwpCiB7ICAgICAgICAKICAg
ICAvLyBvYnRhaW4gYmFzZVVSTCBpZiBwcmVzZW50CiAgICAgU3RyaW5nIHNyY1VSTFN0cigic291
cmNlVVJMOiIpOwogICAgIFN0cmluZyBzcmNVUkw7Ci0gICAgdW5zaWduZWQgbGluZVN0YXJ0ID0g
Y2ZfaHRtbC5maW5kKHNyY1VSTFN0ciwgMCwgZmFsc2UpOworICAgIHVuc2lnbmVkIGxpbmVTdGFy
dCA9IGNmaHRtbC5maW5kKHNyY1VSTFN0ciwgMCwgZmFsc2UpOwogICAgIGlmIChsaW5lU3RhcnQg
IT0gLTEpIHsKLSAgICAgICAgdW5zaWduZWQgc3JjRW5kID0gY2ZfaHRtbC5maW5kKCJcbiIsIGxp
bmVTdGFydCwgZmFsc2UpOworICAgICAgICB1bnNpZ25lZCBzcmNFbmQgPSBjZmh0bWwuZmluZCgi
XG4iLCBsaW5lU3RhcnQsIGZhbHNlKTsKICAgICAgICAgdW5zaWduZWQgc3JjU3RhcnQgPSBsaW5l
U3RhcnQrc3JjVVJMU3RyLmxlbmd0aCgpOwotICAgICAgICBTdHJpbmcgcmF3U3JjVVJMID0gY2Zf
aHRtbC5zdWJzdHJpbmcoc3JjU3RhcnQsIHNyY0VuZC1zcmNTdGFydCk7CisgICAgICAgIFN0cmlu
ZyByYXdTcmNVUkwgPSBjZmh0bWwuc3Vic3RyaW5nKHNyY1N0YXJ0LCBzcmNFbmQtc3JjU3RhcnQp
OwogICAgICAgICByZXBsYWNlTkJTUFdpdGhTcGFjZShyYXdTcmNVUkwpOwogICAgICAgICBzcmNV
UkwgPSByYXdTcmNVUkwuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgfQogCiAgICAgLy8gZmluZCB0
aGUgbWFya3VwIGJldHdlZW4gIjwhLS1TdGFydEZyYWdtZW50IC0tPiIgYW5kICI8IS0tRW5kRnJh
Z21lbnQgLS0+IiwgYWNjb3VudGluZyBmb3IgYnJvd3NlciBxdWlya3MKLSAgICB1bnNpZ25lZCBt
YXJrdXBTdGFydCA9IGNmX2h0bWwuZmluZCgiPGh0bWwiLCAwLCBmYWxzZSk7Ci0gICAgdW5zaWdu
ZWQgdGFnU3RhcnQgPSBjZl9odG1sLmZpbmQoInN0YXJ0ZnJhZ21lbnQiLCBtYXJrdXBTdGFydCwg
ZmFsc2UpOwotICAgIHVuc2lnbmVkIGZyYWdtZW50U3RhcnQgPSBjZl9odG1sLmZpbmQoJz4nLCB0
YWdTdGFydCkgKyAxOwotICAgIHVuc2lnbmVkIHRhZ0VuZCA9IGNmX2h0bWwuZmluZCgiZW5kZnJh
Z21lbnQiLCBmcmFnbWVudFN0YXJ0LCBmYWxzZSk7Ci0gICAgdW5zaWduZWQgZnJhZ21lbnRFbmQg
PSBjZl9odG1sLnJldmVyc2VGaW5kKCc8JywgdGFnRW5kKTsKLSAgICBTdHJpbmcgbWFya3VwID0g
Y2ZfaHRtbC5zdWJzdHJpbmcoZnJhZ21lbnRTdGFydCwgZnJhZ21lbnRFbmQgLSBmcmFnbWVudFN0
YXJ0KS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICB1bnNpZ25lZCBtYXJrdXBTdGFydCA9IGNmaHRt
bC5maW5kKCI8aHRtbCIsIDAsIGZhbHNlKTsKKyAgICB1bnNpZ25lZCB0YWdTdGFydCA9IGNmaHRt
bC5maW5kKCJzdGFydGZyYWdtZW50IiwgbWFya3VwU3RhcnQsIGZhbHNlKTsKKyAgICB1bnNpZ25l
ZCBmcmFnbWVudFN0YXJ0ID0gY2ZodG1sLmZpbmQoJz4nLCB0YWdTdGFydCkgKyAxOworICAgIHVu
c2lnbmVkIHRhZ0VuZCA9IGNmaHRtbC5maW5kKCJlbmRmcmFnbWVudCIsIGZyYWdtZW50U3RhcnQs
IGZhbHNlKTsKKyAgICB1bnNpZ25lZCBmcmFnbWVudEVuZCA9IGNmaHRtbC5yZXZlcnNlRmluZCgn
PCcsIHRhZ0VuZCk7CisgICAgU3RyaW5nIG1hcmt1cCA9IGNmaHRtbC5zdWJzdHJpbmcoZnJhZ21l
bnRTdGFydCwgZnJhZ21lbnRFbmQgLSBmcmFnbWVudFN0YXJ0KS5zdHJpcFdoaXRlU3BhY2UoKTsK
IAogICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9jLCBtYXJrdXAsIHNyY1VS
TCwgRnJhZ21lbnRTY3JpcHRpbmdOb3RBbGxvd2VkKTsKIH0KQEAgLTQyMCwyMyArNDM0LDE5IEBA
IFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnRGcm9tSFRNTChEb2N1bWVudCog
ZG9jLCBJRGF0YU9iamVjdCogZGF0YSkKICAgICBTdHJpbmcgaHRtbDsKICAgICBTdHJpbmcgc3Jj
VVJMOwogICAgIGlmIChTVUNDRUVERUQoZGF0YS0+R2V0RGF0YShodG1sRm9ybWF0KCksICZzdG9y
ZSkpKSB7Ci0gICAgICAgIC8vTVMgSFRNTCBGb3JtYXQgcGFyc2luZworICAgICAgICAvLyBNUyBI
VE1MIEZvcm1hdCBwYXJzaW5nCiAgICAgICAgIGNoYXIqIGRhdGEgPSAoY2hhciopR2xvYmFsTG9j
ayhzdG9yZS5oR2xvYmFsKTsKICAgICAgICAgU0laRV9UIGRhdGFTaXplID0gOjpHbG9iYWxTaXpl
KHN0b3JlLmhHbG9iYWwpOwotICAgICAgICBTdHJpbmcgY2ZfaHRtbChVVEY4RW5jb2RpbmcoKS5k
ZWNvZGUoZGF0YSwgZGF0YVNpemUpKTsgICAgICAgICAKKyAgICAgICAgU3RyaW5nIGNmaHRtbChV
VEY4RW5jb2RpbmcoKS5kZWNvZGUoZGF0YSwgZGF0YVNpemUpKTsgICAgICAgICAKICAgICAgICAg
R2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICBSZWxlYXNlU3RnTWVkaXVtKCZz
dG9yZSk7IAotICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVu
dCA9IGZyYWdtZW50RnJvbUNGX0hUTUwoZG9jLCBjZl9odG1sKSkKKyAgICAgICAgaWYgKFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBmcmFnbWVudEZyb21DRkhUTUwoZG9j
LCBjZmh0bWwpKQogICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwogICAgIH0gCi0gICAgaWYg
KFNVQ0NFRURFRChkYXRhLT5HZXREYXRhKHRleHRodG1sRm9ybWF0KCksICZzdG9yZSkpKSB7Ci0g
ICAgICAgIC8vcmF3IGh0bWwKLSAgICAgICAgVUNoYXIqIGRhdGEgPSAoVUNoYXIqKUdsb2JhbExv
Y2soc3RvcmUuaEdsb2JhbCk7Ci0gICAgICAgIGh0bWwgPSBTdHJpbmcoZGF0YSk7Ci0gICAgICAg
IEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsgICAgICAKLSAgICAgICAgUmVsZWFzZVN0Z01l
ZGl1bSgmc3RvcmUpOworICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOworICAgIGh0bWwgPSBnZXRU
ZXh0SFRNTChkYXRhLCBzdWNjZXNzKTsKKyAgICBpZiAoc3VjY2VzcykKICAgICAgICAgcmV0dXJu
IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChkb2MsIGh0bWwsIHNyY1VSTCwgRnJhZ21lbnRTY3Jp
cHRpbmdOb3RBbGxvd2VkKTsKLSAgICB9IAogCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaCBiL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCmluZGV4IGFjNWVmZDg2NjBjMDRi
YWU0ZTJjZjMzMjE4YTNiYjU1ZDQ2OWNlN2EuLjRjYTQ2ZjlkZjI1YzJmYjEyNzhmNWNkMmZmNmU2
YzYxZmVkODMzMDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0
aWxpdGllc1dpbi5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGll
c1dpbi5oCkBAIC00OSw3ICs0OSw3IEBAIEZPUk1BVEVUQyogaHRtbEZvcm1hdCgpOwogRk9STUFU
RVRDKiBjZkhEcm9wRm9ybWF0KCk7CiBGT1JNQVRFVEMqIHNtYXJ0UGFzdGVGb3JtYXQoKTsKIAot
dm9pZCBtYXJrdXBUb0NGX0hUTUwoY29uc3QgU3RyaW5nJiBtYXJrdXAsIGNvbnN0IFN0cmluZyYg
c3JjVVJMLCBWZWN0b3I8Y2hhcj4mIHJlc3VsdCk7Cit2b2lkIG1hcmt1cFRvQ0ZIVE1MKGNvbnN0
IFN0cmluZyYgbWFya3VwLCBjb25zdCBTdHJpbmcmIHNyY1VSTCwgVmVjdG9yPGNoYXI+JiByZXN1
bHQpOwogCiB2b2lkIHJlcGxhY2VOZXdsaW5lc1dpdGhXaW5kb3dzU3R5bGVOZXdsaW5lcyhTdHJp
bmcmKTsKIHZvaWQgcmVwbGFjZU5CU1BXaXRoU3BhY2UoU3RyaW5nJik7CkBAIC01OSwxMiArNTks
MTIgQEAgYm9vbCBjb250YWluc0hUTUwoSURhdGFPYmplY3QqKTsKIAogUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21GaWxlbmFtZXMoRG9jdW1lbnQqLCBjb25zdCBJRGF0
YU9iamVjdCopOwogUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21IVE1M
KERvY3VtZW50KiwgSURhdGFPYmplY3QqKTsKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZnJhZ21lbnRGcm9tQ0ZfSFRNTChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgY2ZfaHRtbCk7CitQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUNGSFRNTChEb2N1bWVudCos
IGNvbnN0IFN0cmluZyYgY2ZodG1sKTsKIAogU3RyaW5nIGdldFVSTChJRGF0YU9iamVjdCosIERy
YWdEYXRhOjpGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3ksIGJvb2wmIHN1Y2Nlc3MsIFN0cmluZyog
dGl0bGUgPSAwKTsKIFN0cmluZyBnZXRQbGFpblRleHQoSURhdGFPYmplY3QqLCBib29sJiBzdWNj
ZXNzKTsKK1N0cmluZyBnZXRUZXh0SFRNTChJRGF0YU9iamVjdCosIGJvb2wmIHN1Y2Nlc3MpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBDbGlwYm9hcmRVdGlsaXRpZXNX
aW5faAotCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAppbmRleCAzYzNhMjA1OTBl
MWJmODJlNTE4YmM4YWM3YzdkOGViZWJkMjBiMjI3Li4yY2Q2ZmViZTNkYTlmMGJmNDgwMGY4OTQx
M2E3OGI2OThhOWFhNzlmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9h
cmRXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKQEAg
LTEwNSw5ICsxMDUsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcGF0aFJlbW92ZUJhZEZTQ2hhcmFj
dGVycyhQV1NUUiBwc3osIHNpemVfdCBsZW5ndGgpCiAgICAgc2l6ZV90IHJlYWRGcm9tID0gMDsK
ICAgICB3aGlsZSAocmVhZEZyb20gPCBsZW5ndGgpIHsKICAgICAgICAgVUlOVCB0eXBlID0gUGF0
aEdldENoYXJUeXBlKHBzeltyZWFkRnJvbV0pOwotICAgICAgICBpZiAocHN6W3JlYWRGcm9tXSA9
PSAwIHx8IHR5cGUgJiAoR0NUX0xGTkNIQVIgfCBHQ1RfU0hPUlRDSEFSKSkgeworICAgICAgICBp
ZiAoIXBzeltyZWFkRnJvbV0gfHwgdHlwZSAmIChHQ1RfTEZOQ0hBUiB8IEdDVF9TSE9SVENIQVIp
KQogICAgICAgICAgICAgcHN6W3dyaXRlVG8rK10gPSBwc3pbcmVhZEZyb21dOwotICAgICAgICB9
CiAKICAgICAgICAgcmVhZEZyb20rKzsKICAgICB9CkBAIC0yMTUsNyArMjE0LDcgQEAgc3RhdGlj
IEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEp
CiAKIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBLVVJMJiB1
cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKLSAgICBpZiAoZmls
ZU5hbWUuaXNFbXB0eSgpIHx8ICFkYXRhICkKKyAgICBpZiAoZmlsZU5hbWUuaXNFbXB0eSgpIHx8
ICFkYXRhKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFdDSEFSIGZpbGVQYXRoW01BWF9QQVRI
XTsKQEAgLTI5MCw3ICsyODksNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxVcmxGaWxl
RGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aQogICAgIGZnZC0+
Y0l0ZW1zID0gMTsKICAgICBmZ2QtPmZnZFswXS5kd0ZsYWdzID0gRkRfRklMRVNJWkU7CiAgICAg
aW50IGZpbGVTaXplID0gOjpXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgdXJsLmNoYXJh
Y3RlcnMoKSwgdXJsLmxlbmd0aCgpLCAwLCAwLCAwLCAwKTsKLSAgICBmaWxlU2l6ZSArPSBzdHJs
ZW4oc3pTaGVsbERvdFVybFRlbXBsYXRlKSAtIDI7ICAvLyAtMiBpcyBmb3IgZ2V0dGluZyByaWQg
b2YgJXMgaW4gdGhlIHRlbXBsYXRlIHN0cmluZworICAgIGZpbGVTaXplICs9IHN0cmxlbihzelNo
ZWxsRG90VXJsVGVtcGxhdGUpIC0gMjsgLy8gLTIgaXMgZm9yIGdldHRpbmcgcmlkIG9mICVzIGlu
IHRoZSB0ZW1wbGF0ZSBzdHJpbmcKICAgICBmZ2QtPmZnZFswXS5uRmlsZVNpemVMb3cgPSBmaWxl
U2l6ZTsKICAgICBlc3RpbWF0ZWRTaXplID0gZmlsZVNpemU7CiAgICAgZnNQYXRoID0gZmlsZXN5
c3RlbVBhdGhGcm9tVXJsT3JUaXRsZSh1cmwsIHRpdGxlLCBMIi5VUkwiLCB0cnVlKTsKQEAgLTQz
Nyw3ICs0MzYsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNv
bnN0IEtVUkwmIHVybCwgU3RyaW5nIHRpdGxlLCBib29sIHdpdAogCiAgICAgaWYgKHdpdGhIVE1M
KSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NG
X0hUTUwodXJsVG9NYXJrdXAodXJsLCB0aXRsZSksICIiLCBjZmh0bWxEYXRhKTsKKyAgICAgICAg
bWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAodXJsLCB0aXRsZSksICIiLCBjZmh0bWxEYXRhKTsK
ICAgICAgICAgbWVkaXVtLmhHbG9iYWwgPSBjcmVhdGVHbG9iYWxEYXRhKGNmaHRtbERhdGEpOwog
ICAgICAgICBpZiAobWVkaXVtLmhHbG9iYWwgJiYgRkFJTEVEKGRhdGEtPlNldERhdGEoaHRtbEZv
cm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgICAgICA6Okdsb2JhbEZyZWUobWVkaXVt
LmhHbG9iYWwpOwpAQCAtNDU4LDcgKzQ1Nyw3IEBAIHN0YXRpYyBib29sIHdyaXRlVVJMKFdDRGF0
YU9iamVjdCAqZGF0YSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0CiAK
IHZvaWQgQ2xpcGJvYXJkV2luOjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAg
IC8vRklYTUU6IE5lZWQgdG8gYmUgYWJsZSB0byB3cml0ZSB0byB0aGUgc3lzdGVtIGNsaXBib2Fy
ZCA8cmRhcjovL3Byb2JsZW0vNTAxNTk0MT4KKyAgICAvLyBGSVhNRTogTmVlZCB0byBiZSBhYmxl
IHRvIHdyaXRlIHRvIHRoZSBzeXN0ZW0gY2xpcGJvYXJkIDxyZGFyOi8vcHJvYmxlbS81MDE1OTQx
PgogICAgIEFTU0VSVChpc0ZvckRyYWdnaW5nKCkpOwogICAgIGlmIChwb2xpY3koKSAhPSBDbGlw
Ym9hcmRXcml0YWJsZSB8fCAhbV93cml0YWJsZURhdGFPYmplY3QpCiAgICAgICAgIHJldHVybjsK
QEAgLTQ3OCw3ICs0NzcsNyBAQCB2b2lkIENsaXBib2FyZFdpbjo6Y2xlYXJEYXRhKGNvbnN0IFN0
cmluZyYgdHlwZSkKIAogdm9pZCBDbGlwYm9hcmRXaW46OmNsZWFyQWxsRGF0YSgpCiB7Ci0gICAg
Ly9GSVhNRTogTmVlZCB0byBiZSBhYmxlIHRvIHdyaXRlIHRvIHRoZSBzeXN0ZW0gY2xpcGJvYXJk
IDxyZGFyOi8vcHJvYmxlbS81MDE1OTQxPgorICAgIC8vIEZJWE1FOiBOZWVkIHRvIGJlIGFibGUg
dG8gd3JpdGUgdG8gdGhlIHN5c3RlbSBjbGlwYm9hcmQgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NDE+
CiAgICAgQVNTRVJUKGlzRm9yRHJhZ2dpbmcoKSk7CiAgICAgaWYgKHBvbGljeSgpICE9IENsaXBi
b2FyZFdyaXRhYmxlKQogICAgICAgICByZXR1cm47CkBAIC00OTEsMTQgKzQ5MCwxMyBAQCB2b2lk
IENsaXBib2FyZFdpbjo6Y2xlYXJBbGxEYXRhKCkKIFN0cmluZyBDbGlwYm9hcmRXaW46OmdldERh
dGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdAogeyAgICAgCiAgICAg
c3VjY2VzcyA9IGZhbHNlOwotICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJsZSB8
fCAhbV9kYXRhT2JqZWN0KSB7CisgICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxl
IHx8ICFtX2RhdGFPYmplY3QpCiAgICAgICAgIHJldHVybiAiIjsKLSAgICB9CiAKICAgICBDbGlw
Ym9hcmREYXRhVHlwZSBkYXRhVHlwZSA9IGNsaXBib2FyZFR5cGVGcm9tTUlNRVR5cGUodHlwZSk7
CiAgICAgaWYgKGRhdGFUeXBlID09IENsaXBib2FyZERhdGFUeXBlVGV4dCkKICAgICAgICAgcmV0
dXJuIGdldFBsYWluVGV4dChtX2RhdGFPYmplY3QuZ2V0KCksIHN1Y2Nlc3MpOwotICAgIGVsc2Ug
aWYgKGRhdGFUeXBlID09IENsaXBib2FyZERhdGFUeXBlVVJMKSAKKyAgICBpZiAoZGF0YVR5cGUg
PT0gQ2xpcGJvYXJkRGF0YVR5cGVVUkwpCiAgICAgICAgIHJldHVybiBnZXRVUkwobV9kYXRhT2Jq
ZWN0LmdldCgpLCBEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVzLCBzdWNjZXNzKTsKICAg
ICAKICAgICByZXR1cm4gIiI7CkBAIC01NjgsOSArNTY2LDggQEAgSGFzaFNldDxTdHJpbmc+IENs
aXBib2FyZFdpbjo6dHlwZXMoKSBjb25zdAogICAgIEZPUk1BVEVUQyBkYXRhOwogCiAgICAgLy8g
SUVudW1GT1JNQVRFVEM6Ok5leHQgcmV0dXJucyBTX0ZBTFNFIGlmIHRoZXJlIGFyZSBubyBtb3Jl
IGl0ZW1zLgotICAgIHdoaWxlIChpdHItPk5leHQoMSwgJmRhdGEsIDApID09IFNfT0spIHsKKyAg
ICB3aGlsZSAoaXRyLT5OZXh0KDEsICZkYXRhLCAwKSA9PSBTX09LKQogICAgICAgICBhZGRNaW1l
VHlwZXNGb3JGb3JtYXQocmVzdWx0cywgZGF0YSk7Ci0gICAgfQogCiAgICAgcmV0dXJuIHJlc3Vs
dHM7CiB9CkBAIC03MjAsNyArNzE3LDcgQEAgdm9pZCBDbGlwYm9hcmRXaW46OmRlY2xhcmVBbmRX
cml0ZURyYWdJbWFnZShFbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGMKIAogICAg
IC8vIFB1dCBpbWcgdGFnIG9uIHRoZSBjbGlwYm9hcmQgcmVmZXJlbmNpbmcgdGhlIGltYWdlCiAg
ICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAgbWFya3VwVG9DRl9IVE1MKGltYWdlVG9NYXJrdXAo
ZnVsbFVSTCksICIiLCBkYXRhKTsKKyAgICBtYXJrdXBUb0NGSFRNTChpbWFnZVRvTWFya3VwKGZ1
bGxVUkwpLCAiIiwgZGF0YSk7CiAgICAgbWVkaXVtLmhHbG9iYWwgPSBjcmVhdGVHbG9iYWxEYXRh
KGRhdGEpOwogICAgIGlmIChtZWRpdW0uaEdsb2JhbCAmJiBGQUlMRUQobV93cml0YWJsZURhdGFP
YmplY3QtPlNldERhdGEoaHRtbEZvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgIDo6
R2xvYmFsRnJlZShtZWRpdW0uaEdsb2JhbCk7CkBAIC03NTcsNyArNzU0LDcgQEAgdm9pZCBDbGlw
Ym9hcmRXaW46OndyaXRlUmFuZ2UoUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIEZyYW1lKiBmcmFtZSkK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKIAogICAgIFZlY3RvcjxjaGFyPiBkYXRhOwotICAg
IG1hcmt1cFRvQ0ZfSFRNTChjcmVhdGVNYXJrdXAoc2VsZWN0ZWRSYW5nZSwgMCwgQW5ub3RhdGVG
b3JJbnRlcmNoYW5nZSksCisgICAgbWFya3VwVG9DRkhUTUwoY3JlYXRlTWFya3VwKHNlbGVjdGVk
UmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UpLAogICAgICAgICBzZWxlY3RlZFJhbmdl
LT5zdGFydENvbnRhaW5lcihlYyktPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpLCBkYXRhKTsK
ICAgICBtZWRpdW0uaEdsb2JhbCA9IGNyZWF0ZUdsb2JhbERhdGEoZGF0YSk7CiAgICAgaWYgKG1l
ZGl1bS5oR2xvYmFsICYmIEZBSUxFRChtX3dyaXRhYmxlRGF0YU9iamVjdC0+U2V0RGF0YShodG1s
Rm9ybWF0KCksICZtZWRpdW0sIFRSVUUpKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0NsaXBib2FyZFdpbi5oIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmgK
aW5kZXggNDlmZGNmZTQ2NWMwZDkzNzM4ZTM4MTQwZDY4YTZmOTgxZmM5NzY5OS4uMWIxMzllZGEw
M2RjYzU2MmU1MzE0ZjEyMGZjYjA4MzFmMTkzNzhjNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJv
YXJkV2luLmgKQEAgLTI2LDY2ICsyNiw2NiBAQAogI2lmbmRlZiBDbGlwYm9hcmRXaW5faAogI2Rl
ZmluZSBDbGlwYm9hcmRXaW5faAogCisjaW5jbHVkZSAiQ09NUHRyLmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDbGlwYm9hcmQuaCIKLSNpbmNsdWRlICJD
T01QdHIuaCIKIAogc3RydWN0IElEYXRhT2JqZWN0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LSAgICBjbGFzcyBDYWNoZWRJbWFnZTsKLSAgICBjbGFzcyBJbnRQb2ludDsKLSAgICBjbGFzcyBX
Q0RhdGFPYmplY3Q7Ci0KLSAgICAvLyBTdGF0ZSBhdmFpbGFibGUgZHVyaW5nIElFJ3MgZXZlbnRz
IGZvciBkcmFnIGFuZCBkcm9wIGFuZCBjb3B5L3Bhc3RlCi0gICAgY2xhc3MgQ2xpcGJvYXJkV2lu
IDogcHVibGljIENsaXBib2FyZCwgcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKLSAgICBw
dWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZFdpbj4gY3JlYXRlKGJv
b2wgaXNGb3JEcmFnZ2luZywgSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vz
c1BvbGljeSBwb2xpY3kpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ2xpcGJvYXJkV2luKGlzRm9yRHJhZ2dpbmcsIGRhdGFPYmplY3QsIHBvbGljeSkpOwotICAg
ICAgICB9Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZFdpbj4gY3JlYXRlKGJv
b2wgaXNGb3JEcmFnZ2luZywgV0NEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nl
c3NQb2xpY3kgcG9saWN5KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENsaXBib2FyZFdpbihpc0ZvckRyYWdnaW5nLCBkYXRhT2JqZWN0LCBwb2xpY3kpKTsKLSAg
ICAgICAgfQotICAgICAgICB+Q2xpcGJvYXJkV2luKCk7Ci0gICAgCi0gICAgICAgIHZvaWQgY2xl
YXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0gICAgICAgIHZvaWQgY2xlYXJBbGxEYXRhKCk7
Ci0gICAgICAgIFN0cmluZyBnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2Vz
cykgY29uc3Q7Ci0gICAgICAgIGJvb2wgc2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgZGF0YSk7Ci0gICAgCi0gICAgICAgIC8vIGV4dGVuc2lvbnMgYmV5b25kIElFJ3Mg
QVBJCi0gICAgICAgIHZpcnR1YWwgSGFzaFNldDxTdHJpbmc+IHR5cGVzKCkgY29uc3Q7Ci0gICAg
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWxlTGlzdD4gZmlsZXMoKSBjb25zdDsKLSAgICAKLSAg
ICAgICAgdm9pZCBzZXREcmFnSW1hZ2UoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRQb2ludCYpOwot
ICAgICAgICB2b2lkIHNldERyYWdJbWFnZUVsZW1lbnQoTm9kZSosIGNvbnN0IEludFBvaW50Jik7
Ci0KLSAgICAgICAgdmlydHVhbCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlKEludFBvaW50
JiBkcmFnTG9jKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZShFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEZyYW1l
Kik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB3cml0ZVVSTChjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiwgRnJhbWUqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHdyaXRlUmFuZ2UoUmFuZ2UqLCBG
cmFtZSopOwotICAgICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5n
Jik7Ci0KLSAgICAgICAgdmlydHVhbCBib29sIGhhc0RhdGEoKTsKLQotICAgICAgICBDT01QdHI8
SURhdGFPYmplY3Q+IGRhdGFPYmplY3QoKSB7IHJldHVybiBtX2RhdGFPYmplY3Q7IH0KLQotICAg
ICAgICB2b2lkIHNldEV4dGVybmFsRGF0YU9iamVjdChJRGF0YU9iamVjdCAqZGF0YU9iamVjdCk7
Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBDbGlwYm9hcmRXaW4oYm9vbCBpc0ZvckRyYWdnaW5n
LCBJRGF0YU9iamVjdCosIENsaXBib2FyZEFjY2Vzc1BvbGljeSk7Ci0gICAgICAgIENsaXBib2Fy
ZFdpbihib29sIGlzRm9yRHJhZ2dpbmcsIFdDRGF0YU9iamVjdCosIENsaXBib2FyZEFjY2Vzc1Bv
bGljeSk7Ci0KLSAgICAgICAgdm9pZCByZXNldEZyb21DbGlwYm9hcmQoKTsKLSAgICAgICAgdm9p
ZCBzZXREcmFnSW1hZ2UoQ2FjaGVkSW1hZ2UqLCBOb2RlKiwgY29uc3QgSW50UG9pbnQmKTsKLQot
ICAgICAgICBDT01QdHI8SURhdGFPYmplY3Q+IG1fZGF0YU9iamVjdDsKLSAgICAgICAgQ09NUHRy
PFdDRGF0YU9iamVjdD4gbV93cml0YWJsZURhdGFPYmplY3Q7Ci0gICAgICAgIEZyYW1lKiBtX2Zy
YW1lOwotICAgIH07CitjbGFzcyBDYWNoZWRJbWFnZTsKK2NsYXNzIEludFBvaW50OworY2xhc3Mg
V0NEYXRhT2JqZWN0OworCisvLyBTdGF0ZSBhdmFpbGFibGUgZHVyaW5nIElFJ3MgZXZlbnRzIGZv
ciBkcmFnIGFuZCBkcm9wIGFuZCBjb3B5L3Bhc3RlCitjbGFzcyBDbGlwYm9hcmRXaW4gOiBwdWJs
aWMgQ2xpcGJvYXJkLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZFdpbj4gY3JlYXRlKGJvb2wgaXNGb3JEcmFnZ2lu
ZywgSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZFdpbihpc0ZvckRy
YWdnaW5nLCBkYXRhT2JqZWN0LCBwb2xpY3kpKTsKKyAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q2xpcGJvYXJkV2luPiBjcmVhdGUoYm9vbCBpc0ZvckRyYWdnaW5nLCBXQ0RhdGFPYmplY3Qq
IGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZFdpbihpc0ZvckRyYWdnaW5nLCBkYXRhT2Jq
ZWN0LCBwb2xpY3kpKTsKKyAgICB9CisgICAgfkNsaXBib2FyZFdpbigpOworCisgICAgdm9pZCBj
bGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICB2b2lkIGNsZWFyQWxsRGF0YSgpOwor
ICAgIFN0cmluZyBnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29u
c3Q7CisgICAgYm9vbCBzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBk
YXRhKTsKKworICAgIC8vIGV4dGVuc2lvbnMgYmV5b25kIElFJ3MgQVBJCisgICAgdmlydHVhbCBI
YXNoU2V0PFN0cmluZz4gdHlwZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Rmls
ZUxpc3Q+IGZpbGVzKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldERyYWdJbWFnZShDYWNoZWRJbWFn
ZSosIGNvbnN0IEludFBvaW50Jik7CisgICAgdm9pZCBzZXREcmFnSW1hZ2VFbGVtZW50KE5vZGUq
LCBjb25zdCBJbnRQb2ludCYpOworCisgICAgdmlydHVhbCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJh
Z0ltYWdlKEludFBvaW50JiBkcmFnTG9jKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVjbGFy
ZUFuZFdyaXRlRHJhZ0ltYWdlKEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0
aXRsZSwgRnJhbWUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVVUkwoY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYsIEZyYW1lKik7CisgICAgdmlydHVhbCB2b2lkIHdyaXRlUmFuZ2UoUmFuZ2Uq
LCBGcmFtZSopOworICAgIHZpcnR1YWwgdm9pZCB3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcm
KTsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNEYXRhKCk7CisKKyAgICBDT01QdHI8SURhdGFPYmpl
Y3Q+IGRhdGFPYmplY3QoKSB7IHJldHVybiBtX2RhdGFPYmplY3Q7IH0KKworICAgIHZvaWQgc2V0
RXh0ZXJuYWxEYXRhT2JqZWN0KElEYXRhT2JqZWN0ICpkYXRhT2JqZWN0KTsKKworcHJpdmF0ZToK
KyAgICBDbGlwYm9hcmRXaW4oYm9vbCBpc0ZvckRyYWdnaW5nLCBJRGF0YU9iamVjdCosIENsaXBi
b2FyZEFjY2Vzc1BvbGljeSk7CisgICAgQ2xpcGJvYXJkV2luKGJvb2wgaXNGb3JEcmFnZ2luZywg
V0NEYXRhT2JqZWN0KiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5KTsKKworICAgIHZvaWQgcmVzZXRG
cm9tQ2xpcGJvYXJkKCk7CisgICAgdm9pZCBzZXREcmFnSW1hZ2UoQ2FjaGVkSW1hZ2UqLCBOb2Rl
KiwgY29uc3QgSW50UG9pbnQmKTsKKworICAgIENPTVB0cjxJRGF0YU9iamVjdD4gbV9kYXRhT2Jq
ZWN0OworICAgIENPTVB0cjxXQ0RhdGFPYmplY3Q+IG1fd3JpdGFibGVEYXRhT2JqZWN0OworICAg
IEZyYW1lKiBtX2ZyYW1lOworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IDUxMmY2Y2ZjZGRkODJmZjc4ZDE1Y2Zm
OWUzMTgzMDY1NTU4YzUyZjEuLjgwOGM4NjMzYjllNmUzMDRkYTdiNGQ3ZDQ0MGRjNWQ3NzRhNTE5
ZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC01NCw3ICs1NCw3
IEBAIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFBhc3RlYm9hcmRPd25lclduZFByb2MoSFdORCBo
V25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3CiAgICAgTFJFU1VMVCBscmVzdWx0ID0gMDsKICAg
ICBMT05HX1BUUiBsb25nUHRyID0gR2V0V2luZG93TG9uZ1B0cihoV25kLCAwKTsKIAotICAgIHN3
aXRjaChtZXNzYWdlKSB7CisgICAgc3dpdGNoIChtZXNzYWdlKSB7CiAgICAgY2FzZSBXTV9SRU5E
RVJGT1JNQVQ6CiAgICAgICAgIC8vIFRoaXMgbWVzc2FnZSBjb21lcyB3aGVuIFNldENsaXBib2Fy
ZERhdGEgd2FzIHNlbnQgYSBudWxsIGRhdGEgaGFuZGxlIAogICAgICAgICAvLyBhbmQgbm93IGl0
J3MgY29tZSB0aW1lIHRvIHB1dCB0aGUgZGF0YSBvbiB0aGUgY2xpcGJvYXJkLgpAQCAtMTE3LDcg
KzExNyw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVk
UmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsCiAgICAgaWYgKDo6T3BlbkNsaXBib2Fy
ZChtX293bmVyKSkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgVmVj
dG9yPGNoYXI+IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZfSFRNTChjcmVhdGVNYXJrdXAoc2Vs
ZWN0ZWRSYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSksCisgICAgICAgIG1hcmt1cFRv
Q0ZIVE1MKGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hh
bmdlKSwKICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKGVjKS0+ZG9j
dW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksIGRhdGEpOwogICAgICAgICBIR0xPQkFMIGNiRGF0YSA9
IGNyZWF0ZUdsb2JhbERhdGEoZGF0YSk7CiAgICAgICAgIGlmICghOjpTZXRDbGlwYm9hcmREYXRh
KEhUTUxDbGlwYm9hcmRGb3JtYXQsIGNiRGF0YSkpCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9vbCBjYW5T
bWFydENvcHlPckRlbGV0ZSwKICAgICAvLyBlbmFibGUgc21hcnQtcmVwbGFjaW5nIGxhdGVyIG9u
IGJ5IHB1dHRpbmcgZHVtbXkgZGF0YSBvbiB0aGUgcGFzdGVib2FyZAogICAgIGlmIChjYW5TbWFy
dENvcHlPckRlbGV0ZSkgewogICAgICAgICBpZiAoOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7
Ci0gICAgICAgICAgICA6OlNldENsaXBib2FyZERhdGEoV2ViU21hcnRQYXN0ZUZvcm1hdCwgTlVM
TCk7CisgICAgICAgICAgICA6OlNldENsaXBib2FyZERhdGEoV2ViU21hcnRQYXN0ZUZvcm1hdCwg
MCk7CiAgICAgICAgICAgICA6OkNsb3NlQ2xpcGJvYXJkKCk7CiAgICAgICAgIH0KICAgICAgICAg
CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTChjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGVTdHIsIEZyYW1lKiBmcmFtZSkKICAgICAvLyB3cml0
ZSB0byBjbGlwYm9hcmQgaW4gZm9ybWF0IENGX0hUTUwgdG8gYmUgYWJsZSB0byBwYXN0ZSBpbnRv
IGNvbnRlbnRlZGl0YWJsZSBhcmVhcyBhcyBhIGxpbmsKICAgICBpZiAoOjpPcGVuQ2xpcGJvYXJk
KG1fb3duZXIpKSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhOwotICAgICAgICBtYXJrdXBU
b0NGX0hUTUwodXJsVG9NYXJrdXAodXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFy
a3VwVG9DRkhUTUwodXJsVG9NYXJrdXAodXJsLCB0aXRsZSksICIiLCBkYXRhKTsKICAgICAgICAg
SEdMT0JBTCBjYkRhdGEgPSBjcmVhdGVHbG9iYWxEYXRhKGRhdGEpOwogICAgICAgICBpZiAoITo6
U2V0Q2xpcGJvYXJkRGF0YShIVE1MQ2xpcGJvYXJkRm9ybWF0LCBjYkRhdGEpKQogICAgICAgICAg
ICAgOjpHbG9iYWxGcmVlKGNiRGF0YSk7CkBAIC0yNjAsOCArMjYwLDggQEAgU3RyaW5nIFBhc3Rl
Ym9hcmQ6OnBsYWluVGV4dChGcmFtZSogZnJhbWUpCiAgICAgICAgICAgICA6Okdsb2JhbFVubG9j
ayhjYkRhdGEpOwogICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAg
cmV0dXJuIGZyb21DbGlwYm9hcmQ7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgOjpDbG9z
ZUNsaXBib2FyZCgpOworICAgICAgICB9CisgICAgICAgIDo6Q2xvc2VDbGlwYm9hcmQoKTsKICAg
ICB9CiAKICAgICBpZiAoOjpJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZShDRl9URVhUKSAmJiA6
Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKQEAgLTI3Miw4ICsyNzIsOCBAQCBTdHJpbmcgUGFz
dGVib2FyZDo6cGxhaW5UZXh0KEZyYW1lKiBmcmFtZSkKICAgICAgICAgICAgIDo6R2xvYmFsVW5s
b2NrKGNiRGF0YSk7CiAgICAgICAgICAgICA6OkNsb3NlQ2xpcGJvYXJkKCk7CiAgICAgICAgICAg
ICByZXR1cm4gZnJvbUNsaXBib2FyZDsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICA6OkNs
b3NlQ2xpcGJvYXJkKCk7CisgICAgICAgIH0KKyAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwog
ICAgIH0KIAogICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTI4OCwxMSArMjg4LDExIEBAIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gUGFzdGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVudChGcmFt
ZSogZnJhbWUsIFBhc3NSZWZQCiAgICAgICAgIEhBTkRMRSBjYkRhdGEgPSA6OkdldENsaXBib2Fy
ZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCk7CiAgICAgICAgIGlmIChjYkRhdGEpIHsKICAgICAg
ICAgICAgIFNJWkVfVCBkYXRhU2l6ZSA9IDo6R2xvYmFsU2l6ZShjYkRhdGEpOwotICAgICAgICAg
ICAgU3RyaW5nIGNmX2h0bWwoVVRGOEVuY29kaW5nKCkuZGVjb2RlKChjaGFyKik6Okdsb2JhbExv
Y2soY2JEYXRhKSwgZGF0YVNpemUpKTsKKyAgICAgICAgICAgIFN0cmluZyBjZmh0bWwoVVRGOEVu
Y29kaW5nKCkuZGVjb2RlKChjaGFyKik6Okdsb2JhbExvY2soY2JEYXRhKSwgZGF0YVNpemUpKTsK
ICAgICAgICAgICAgIDo6R2xvYmFsVW5sb2NrKGNiRGF0YSk7CiAgICAgICAgICAgICA6OkNsb3Nl
Q2xpcGJvYXJkKCk7CiAKLSAgICAgICAgICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZnJhZ21lbnQgPSBmcmFnbWVudEZyb21DRl9IVE1MKGZyYW1lLT5kb2N1bWVudCgpLCBjZl9odG1s
KTsKKyAgICAgICAgICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBm
cmFnbWVudEZyb21DRkhUTUwoZnJhbWUtPmRvY3VtZW50KCksIGNmaHRtbCk7CiAgICAgICAgICAg
ICBpZiAoZnJhZ21lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwogICAgICAg
ICB9IGVsc2UgCkBAIC0zMDYsNyArMzA2LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBQYXN0ZWJvYXJkOjpkb2N1bWVudEZyYWdtZW50KEZyYW1lKiBmcmFtZSwgUGFzc1JlZlAKICAg
ICAgICAgICAgIGlmIChjYkRhdGEpIHsKICAgICAgICAgICAgICAgICBVQ2hhciogYnVmZmVyID0g
KFVDaGFyKilHbG9iYWxMb2NrKGNiRGF0YSk7CiAgICAgICAgICAgICAgICAgU3RyaW5nIHN0cihi
dWZmZXIpOwotICAgICAgICAgICAgICAgIDo6R2xvYmFsVW5sb2NrKCBjYkRhdGEgKTsKKyAgICAg
ICAgICAgICAgICA6Okdsb2JhbFVubG9jayhjYkRhdGEpOwogICAgICAgICAgICAgICAgIDo6Q2xv
c2VDbGlwYm9hcmQoKTsKICAgICAgICAgICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21UZXh0KGNvbnRleHQuZ2V0KCksIHN0cik7CiAg
ICAgICAgICAgICAgICAgaWYgKGZyYWdtZW50KQpAQCAtMzIzLDcgKzMyMyw3IEBAIFBhc3NSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gUGFzdGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVudChGcmFtZSog
ZnJhbWUsIFBhc3NSZWZQCiAgICAgICAgICAgICBpZiAoY2JEYXRhKSB7CiAgICAgICAgICAgICAg
ICAgY2hhciogYnVmZmVyID0gKGNoYXIqKUdsb2JhbExvY2soY2JEYXRhKTsKICAgICAgICAgICAg
ICAgICBTdHJpbmcgc3RyKGJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgOjpHbG9iYWxVbmxvY2so
IGNiRGF0YSApOworICAgICAgICAgICAgICAgIDo6R2xvYmFsVW5sb2NrKGNiRGF0YSk7CiAgICAg
ICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29udGV4
dC5nZXQoKSwgc3RyKTsKICAgICAgICAgICAgICAgICBpZiAoZnJhZ21lbnQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>