<?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>193483</bug_id>
          
          <creation_ts>2019-01-15 19:45:33 -0800</creation_ts>
          <short_desc>StringObjectUse should not be a structure check for the original string object structure</short_desc>
          <delta_ts>2019-01-20 21:04:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1494991</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-15 19:45:33 -0800</bug_when>
    <thetext>This is probably buggy, and goes against how we use UseKinds elsewhere. We should figure out the handful of places that actually rely on this behavior and have them emit a CheckStructure. And then change StringObjectUse to just mean that the thing has StringObject classInfo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495399</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-16 22:52:45 -0800</bug_when>
    <thetext>&lt;rdar://problem/47280522&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495404</commentid>
    <comment_count>2</comment_count>
      <attachid>359354</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-16 23:16:08 -0800</bug_when>
    <thetext>Created attachment 359354
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495407</commentid>
    <comment_count>3</comment_count>
      <attachid>359354</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-16 23:33:24 -0800</bug_when>
    <thetext>Comment on attachment 359354
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=359354&amp;action=review

r=me with FTL fixes

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6335
&gt; +            LValue type = m_out.load32(cell, m_heaps.JSCell_typeInfoType);

load8ZeroExt32?

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:16068
&gt; +        LValue type = m_out.load32(cellBase, m_heaps.JSCell_typeInfoType);

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:16088
&gt; +        LValue type = m_out.load32(cell, m_heaps.JSCell_typeInfoType);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495418</commentid>
    <comment_count>4</comment_count>
      <attachid>359354</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-17 00:07:31 -0800</bug_when>
    <thetext>Comment on attachment 359354
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=359354&amp;action=review

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6335
&gt;&gt; +            LValue type = m_out.load32(cell, m_heaps.JSCell_typeInfoType);
&gt; 
&gt; load8ZeroExt32?

Oops. Will fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495421</commentid>
    <comment_count>5</comment_count>
      <attachid>359359</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-17 00:11:52 -0800</bug_when>
    <thetext>Created attachment 359359
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495512</commentid>
    <comment_count>6</comment_count>
      <attachid>359359</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-17 09:50:33 -0800</bug_when>
    <thetext>Comment on attachment 359359
patch for landing

Clearing flags on attachment: 359359

Committed r240114: &lt;https://trac.webkit.org/changeset/240114&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495513</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-17 09:50:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496510</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-20 21:04:25 -0800</bug_when>
    <thetext>Committed r240225: &lt;https://trac.webkit.org/changeset/240225&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359354</attachid>
            <date>2019-01-16 23:16:08 -0800</date>
            <delta_ts>2019-01-17 00:11:52 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>36543</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDAxMDQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE5LTAxLTE2ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFN0cmluZ09iamVjdFVzZSBzaG91bGQgbm90IGJlIGEgc3RydWN0dXJl
IGNoZWNrIGZvciB0aGUgb3JpZ2luYWwgc3RyaW5nIG9iamVjdCBzdHJ1Y3R1cmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzQ4MworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNDcyODA1MjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvY2FudC1lbGltaW5hdGUtc3RyaW5nLW9iamVjdC1z
dHJ1Y3R1cmUtY2hlY2std2hlbi1zdHJpbmctb2JqZWN0LWlzLXByb3Zlbi5qczogQWRkZWQuCisg
ICAgICAgIChmb28pOgorICAgICAgICAoYS52YWx1ZU9mLjApOgorCiAyMDE5LTAxLTE1ICBNYXJr
IExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBKU0Z1bmN0aW9uOjpjYW5Vc2VB
bGxvY2F0aW9uUHJvZmlsZSgpIHNob3VsZCBhY2NvdW50IGZvciBidWlsdGluIGZ1bmN0aW9ucyB3
aXRoIG5vIG93biBwcm90b3R5cGVzLgpJbmRleDogSlNUZXN0cy9zdHJlc3MvY2FudC1lbGltaW5h
dGUtc3RyaW5nLW9iamVjdC1zdHJ1Y3R1cmUtY2hlY2std2hlbi1zdHJpbmctb2JqZWN0LWlzLXBy
b3Zlbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9jYW50LWVsaW1pbmF0ZS1zdHJp
bmctb2JqZWN0LXN0cnVjdHVyZS1jaGVjay13aGVuLXN0cmluZy1vYmplY3QtaXMtcHJvdmVuLmpz
CShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL2NhbnQtZWxpbWluYXRlLXN0cmluZy1v
YmplY3Qtc3RydWN0dXJlLWNoZWNrLXdoZW4tc3RyaW5nLW9iamVjdC1pcy1wcm92ZW4uanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorLy9AIHJ1bkRlZmF1bHQoIi0tZm9yY2VFYWdl
ckNvbXBpbGF0aW9uPTEiLCAiLS11c2VDb25jdXJyZW50SklUPTAiKQorCitmdW5jdGlvbiBmb28o
eCkgeworICAgIHgudG9TdHJpbmcoKTsKK30KKwordmFyIGEgPSBuZXcgU3RyaW5nKCk7CithLnZh
bHVlT2YgPSAwCitmb3IgKHZhciBpID0gMDsgaSA8IDU7IGkrKykgeworICAgIGZvbyhhKQorfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDAxMDIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTA1IEBA
CisyMDE5LTAxLTE2ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFN0cmluZ09iamVjdFVzZSBzaG91bGQgbm90IGJlIGEgc3RydWN0dXJlIGNoZWNrIGZvciB0aGUg
b3JpZ2luYWwgc3RyaW5nIG9iamVjdCBzdHJ1Y3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzQ4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDcyODA1MjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUHJpb3IgdG8gdGhpcyBwYXRjaCwgdGhlIHVzZSBraW5kIGZvciBTdHJpbmdPYmplY3RVc2Ug
aW1wbGllZCB0aGF0IHdlCisgICAgICAgIGRvIGEgU3RydWN0dXJlQ2hlY2sgb24gdGhlIGlucHV0
IG9wZXJhbmQgZm9yIHRoZSAqb3JpZ2luYWwqIFN0cmluZ09iamVjdAorICAgICAgICBzdHJ1Y3R1
cmUuIFRoaXMgaXMgZ2VuZXJhbGx5IG5vdCBob3cgd2UgdXNlIFVzZUtpbmRzLCBzbyBpdCdzIG5v
IHN1cnByaXNlCisgICAgICAgIHRoYXQgdGhpcyBpcyBidWdneS4gQSBVc2VLaW5kIHNob3VsZCBt
YXAgdG8gYSBzZXQgb2YgU3BlY3VsYXRlZFR5cGVzLCBub3QgYW4KKyAgICAgICAgYWN0dWFsIHNl
dCBvZiBzdHJ1Y3R1cmVzLiBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIG1lYW5pbmcgb2YgU3RyaW5n
T2JqZWN0VXNlCisgICAgICAgIHRvIG1lYW4gYW4gb2JqZWN0IHdoZXJlIGpzRHluYW1pY0Nhc3Q8
U3RyaW5nT2JqZWN0Kj4gd291bGQgc3VjY2VlZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0
Y2ggYWxzbyBmaXhlcyBhIGJ1ZyB0aGF0IHdhcyBjYXVzZWQgYnkgdGhlIG9sZCBhbmQgd2VpcmQg
dXNhZ2Ugb2YgdGhlCisgICAgICAgIFVzZUtpbmQgdG8gbWVhbiBTdHJ1Y3R1cmVDaGVjay4gQ29u
c2lkZXIgYSBwcm9ncmFtIGxpa2UgdGhpczoKKyAgICAgICAgYGBgCisgICAgICAgIFMxID0gT3Jp
Z2luYWwgU3RyaW5nT2JqZWN0IHN0cnVjdHVyZQorICAgICAgICBTMiA9IE9yaWdpbmFsIFN0cmlu
Z09iamVjdCBzdHJ1Y3R1cmUgd2l0aCB0aGUgZmllbGQgImYiIGFkZGVkCisgICAgICAgIAorICAg
ICAgICBhOiBHZXRMb2NhbCgpCisgICAgICAgIGI6IENoZWNrU3RydWN0dXJlKEBhLCB7UzJ9KQor
ICAgICAgICBjOiBUb1N0cmluZyhTdHJpbmdPYmplY3Q6QGEpCisgICAgICAgIGBgYAorICAgICAg
ICAKKyAgICAgICAgQWNjb3JkaW5nIHRvIEFJLCBpbiB0aGUgYWJvdmUgcHJvZ3JhbSwgd2Ugd291
bGQgZXhpdCBhdCBAYywgc2luY2UKKyAgICAgICAgU3RyaW5nT2JqZWN0OkBhIGltcGxpZXMgYSBz
dHJ1Y3R1cmUgY2hlY2sgb2Yge1MxfSwgYW5kIHRoZSBpbnRlcnNlY3Rpb24KKyAgICAgICAgb2Yg
e1MxfSBhbmQge1MyfSBpcyB7fS4gU28sIHdlJ2QgY29udmVydCB0aGUgcHJvZ3JhbSB0byBiZToK
KyAgICAgICAgYGBgCisgICAgICAgIGE6IEdldExvY2FsKCkKKyAgICAgICAgYjogQ2hlY2tTdHJ1
Y3R1cmUoQGEsIHtTMn0pCisgICAgICAgIGM6IENoZWNrKFN0cmluZ09iamVjdDpAYSkKKyAgICAg
ICAgZDogVW5yZWFjaGFibGUKKyAgICAgICAgYGBgCisgICAgICAgIAorICAgICAgICBIb3dldmVy
LCBBSSB3b3VsZCBzZXQgdGhlIHByb29mIHN0YXR1cyBvZiB0aGUgU3RyaW5nT2JqZWN0OkBhIGVk
Z2UKKyAgICAgICAgdG8gYmUgcHJvdmVuLCBzaW5jZSB0aGUgU3BlY3VsYXRlZFR5cGUgZm9yIEBh
IGlzIFNwZWNTdHJpbmdPYmplY3QuCisgICAgICAgIFRoaXMgd2FzIGluY29ycmVjdCBvZiBBSSB0
byBkbyBiZWNhdXNlIHRoZSBTcGVjdWxhdGVkVHlwZSBpdHNlbGYKKyAgICAgICAgZGlkbid0IGNh
cHR1cmUgdGhlIGZ1bGwgcG93ZXIgb2YgU3RyaW5nT2JqZWN0VXNlLiBIb3dldmVyLCBoYXZpbmcK
KyAgICAgICAgYSBVc2VLaW5kIG1lYW4gQ2hlY2tTdHJ1Y3R1cmUgaXMgd2VpcmQgcHJlY2lzZWx5
IGJlY2F1c2Ugd2hhdCBBSSB3YXMKKyAgICAgICAgZG9pbmcgaXMgYSBuYXR1cmFsIGZpdCB0byBo
b3cgd2UgdHlwaWNhbGx5IHdlIHRoaW5rIGFib3V0IFVzZUtpbmRzLgorICAgICAgICAKKyAgICAg
ICAgU28gdGhlIGFib3ZlIHByb2dyYW0gd291bGQgdGhlbiBpbmNvcnJlY3RseSBiZSBjb252ZXJ0
ZWQgdG8gdGhpcywgYW5kCisgICAgICAgIHdlJ2QgY3Jhc2ggd2hlbiByZWFjaGluZyB0aGUgVW5y
ZWFjaGFibGUgbm9kZToKKyAgICAgICAgYGBgCisgICAgICAgIGE6IEdldExvY2FsKCkKKyAgICAg
ICAgYjogQ2hlY2tTdHJ1Y3R1cmUoQGEsIHtTMn0pCisgICAgICAgIGQ6IFVucmVhY2hhYmxlCisg
ICAgICAgIGBgYAorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBpdCBzbyB0aGF0
IFN0cmluZ09iamVjdFVzZSBqdXN0IG1lYW5zIHRoYXQgdGhlIG9iamVjdCB0aGF0CisgICAgICAg
IGZpbHRlcnMgdGhyb3VnaCBhIFN0cmluZ09iamVjdFVzZSBjaGVjayBtdXN0ICEhanNEeW5hbWlj
Q2FzdDxTdHJpbmdPYmplY3QqPi4KKyAgICAgICAgVGhpcyBpcyBub3cgaW4gbGluZSB3aXRoIGFs
bCBvdGhlciBVc2VLaW5kcy4gSXQgYWxzbyBsZXRzIHVzIHNpbXBsaWZ5IGEgYnVuY2gKKyAgICAg
ICAgb2Ygb3RoZXIgY29kZSB0aGF0IGhhZCB3ZWlyZCBjaGVja3MgZm9yIHRoZSBTdHJpbmdPYmpl
Y3RVc2UgVXNlS2luZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBp
dCBzbyB0aGF0IGFueXdoZXJlIHdoZXJlIHdlIHVzZWQgdG8gcmVseSBvbgorICAgICAgICBTdHJp
bmdPYmplY3RVc2UgaW1wbHlpbmcgYSBzdHJ1Y3R1cmUgY2hlY2sgd2UgYWN0dWFsbHkgZW1pdCBh
biBleHBsaWNpdAorICAgICAgICBDaGVja1N0cnVjdHVyZSBub2RlLgorCisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29k
ZS9FeGl0S2luZC5jcHA6CisgICAgICAgIChKU0M6OmV4aXRLaW5kVG9TdHJpbmcpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0V4aXRLaW5kLmg6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQ1NF
UGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0VkZ2VVc2VzU3RydWN0dXJlLmg6
IFJlbW92ZWQuCisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb0ZvcmNlU3RyaW5nQXJyYXlNb2RlQnlUb1N0cmlu
Z0NvbnZlcnNpb24pOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmFkZENoZWNrU3Ry
dWN0dXJlRm9yT3JpZ2luYWxTdHJpbmdPYmplY3RVc2UpOgorICAgICAgICAoSlNDOjpERkc6OkZp
eHVwUGhhc2U6OmZpeHVwVG9QcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhh
c2U6OmZpeHVwVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1wdFRvTWFrZUZhc3RTdHJpbmdBZGQpOgorICAgICAgICAo
SlNDOjpERkc6OkZpeHVwUGhhc2U6OmlzU3RyaW5nT2JqZWN0VXNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpjYW5PcHRp
bWl6ZVN0cmluZ09iamVjdEFjY2Vzcyk6CisgICAgICAgICogZGZnL0RGR01heUV4aXQuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JT
dHJpbmdWYWx1ZU9mKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlU3RyaW5nT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3Bl
Y3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3QpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJp
bmdPYmplY3RGb3JTdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdVc2VLaW5k
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6YWxyZWFkeUNoZWNrZWQpOgorICAgICAgICAoSlNDOjpE
Rkc6OnVzZXNTdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1Rv
QjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9T
dHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9yU3RyaW5nVmFsdWVPZik6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZVN0cmluZ09iamVjdCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZVN0cmluZ09yU3RyaW5n
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRl
U3RyaW5nT2JqZWN0Rm9yQ2VsbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OnNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZUlEKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0pTVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmpl
Y3QuaDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmg6CisKIDIwMTktMDEtMTYgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yIG5ldyBieXRlY29kZSBz
dHJ1Y3RzIHNvIHRoYXQgdGhlIGZpZWxkcyBhcmUgcHJlZml4ZWQgd2l0aCAibV8iLgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI0MDEwMikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDY0LDcgKzE0NjQsNiBAQAogCQlBNzhBOTc4MTE3OTczOEQ1MDA5
REY3NDQgLyogRlRMSklURmluYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzhBOTc3RTE3OTczOEQ1MDA5REY3NDQgLyogRlRMSklURmluYWxp
emVyLmggKi87IH07CiAJCUE3OTBERDZFMTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvclBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTc5MERENjgxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggKi87IH07
CiAJCUE3OTBERDcwMTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzkwREQ2QTE4MkY0OTk3MDA1
ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCUE3OTg2RDU3MTdBMEJCMUUwMEE5NUREMCAvKiBERkdFZGdlVXNl
c1N0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTc5ODZENTYxN0EwQkIxRTAwQTk1REQwIC8qIERGR0VkZ2VVc2VzU3RydWN0dXJlLmggKi87
IH07CiAJCUE3OUQzRUQ5QzUwNjRERDBBODQ2NkEzQSAvKiBNb2R1bGVTY29wZURhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwMEJFQUYwREY2MDQ0
ODFBRjZBQjY4QyAvKiBNb2R1bGVTY29wZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIxNzQgLyogQXJy
YXlCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3QThBRjI2MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3QThBRjM3MTdBREI1RjMwMDVB
QjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3QThBRjI4MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZp
ZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NDI2OCw3ICs0MjY3LDYgQEAKIAkJQTc5MERENjgxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJh
dG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNldEl0ZXJh
dG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3OTBERDY5MTgy
RjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTU2V0SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNzkwREQ2QTE4MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NldEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUE3OTg2RDU2MTdBMEJCMUUwMEE5NUREMCAvKiBERkdFZGdlVXNl
c1N0cnVjdHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdFZGdlVXNl
c1N0cnVjdHVyZS5oOyBwYXRoID0gZGZnL0RGR0VkZ2VVc2VzU3RydWN0dXJlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3OUU3ODFFMTVFRUNCQTgwMDQ3Qzg1NSAvKiBVbmxpbmtl
ZENvZGVCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmxp
bmtlZENvZGVCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3OUU3ODFG
MTVFRUNCQTgwMDQ3Qzg1NSAvKiBVbmxpbmtlZENvZGVCbG9jay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBVbmxpbmtlZENvZGVCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzlFREIwODExNTMxQ0Q2MDAxOUU5MTIgLyogSlNPYmplY3RSZWZQcml2YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTT2JqZWN0UmVmUHJpdmF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzM2OSw3ICs3MzY3LDYgQEAKIAkJCQkw
RkI0QjUxQjE2QjYyNzcyMDAzRjY5NkIgLyogREZHRWRnZS5jcHAgKi8sCiAJCQkJMEY2NkUxNjkx
NERGM0YxMzAwQjdCMkU0IC8qIERGR0VkZ2UuaCAqLywKIAkJCQlBN0Q5QTI5MTE3QTBCQzc0MDBF
RTI2MTggLyogREZHRWRnZURvbWluYXRlcy5oICovLAotCQkJCUE3OTg2RDU2MTdBMEJCMUUwMEE5
NUREMCAvKiBERkdFZGdlVXNlc1N0cnVjdHVyZS5oICovLAogCQkJCTBGOEYxNDJGMUFERjA5MDEw
MEVENzkyQyAvKiBERkdFcG9jaC5jcHAgKi8sCiAJCQkJMEY4RjE0MzAxQURGMDkwMTAwRUQ3OTJD
IC8qIERGR0Vwb2NoLmggKi8sCiAJCQkJQTc4QTk3NkMxNzk3MzhCODAwOURGNzQ0IC8qIERGR0Zh
aWxlZEZpbmFsaXplci5jcHAgKi8sCkBAIC04NzUwLDcgKzg3NDcsNiBAQAogCQkJCTBGRDNDODI4
MTQxMTVENEYwMEZEODFDQiAvKiBERkdEcml2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjZF
MTZDMTRERjNGMTYwMEI3QjJFNCAvKiBERkdFZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q5
QTI5NjE3QTBCQzc0MDBFRTI2MTggLyogREZHRWRnZURvbWluYXRlcy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJQTc5ODZENTcxN0EwQkIxRTAwQTk1REQwIC8qIERGR0VkZ2VVc2VzU3RydWN0dXJlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjhGMTQzNDFBREYwOTAxMDBFRDc5MkMgLyogREZHRXBvY2gu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkMwQUU4MTQ5NkM3QzcwMEQ0RkJERCAvKiBERkdFeGl0
UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4QTk3NzUxNzk3MzhCODAwOURGNzQ0IC8q
IERGR0ZhaWxlZEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5jcHAJKHJldmlzaW9uIDI0MDEwMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcwLDggKzcwLDYgQEAgY29uc3QgY2hhciogZXhpdEtpbmRUb1N0cmluZyhFeGl0S2luZCBr
aQogICAgICAgICByZXR1cm4gIkFyZ3VtZW50c0VzY2FwZWQiOwogICAgIGNhc2UgRXhvdGljT2Jq
ZWN0TW9kZToKICAgICAgICAgcmV0dXJuICJFeG90aWNPYmplY3RNb2RlIjsKLSAgICBjYXNlIE5v
dFN0cmluZ09iamVjdDoKLSAgICAgICAgcmV0dXJuICJOb3RTdHJpbmdPYmplY3QiOwogICAgIGNh
c2UgVmFyYXJnc092ZXJmbG93OgogICAgICAgICByZXR1cm4gIlZhcmFyZ3NPdmVyZmxvdyI7CiAg
ICAgY2FzZSBURFpGYWlsdXJlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4aXRLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4aXRLaW5kLmgJKHJldmlzaW9uIDI0MDEwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGl0S2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw2IEBAIGVudW0g
RXhpdEtpbmQgOiB1aW50OF90IHsKICAgICBJbmFkZXF1YXRlQ292ZXJhZ2UsIC8vIFdlIGV4aXRl
ZCBiZWNhdXNlIHdlIGVuZGVkIHVwIGluIGNvZGUgdGhhdCBkaWRuJ3QgaGF2ZSBwcm9maWxpbmcg
Y292ZXJhZ2UuCiAgICAgQXJndW1lbnRzRXNjYXBlZCwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYXJn
dW1lbnRzIGVzY2FwZWQgYnV0IHdlIGRpZG4ndCBleHBlY3QgdGhlbSB0by4KICAgICBFeG90aWNP
YmplY3RNb2RlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBzb21lIGV4b3RpYyBvYmplY3QgdGhhdCB3
ZSB3ZXJlIGFjY2Vzc2luZyB3YXMgaW4gYW4gZXhvdGljIG1vZGUgKGxpa2UgQXJndW1lbnRzIHdp
dGggc2xvdyBhcmd1bWVudHMpLgotICAgIE5vdFN0cmluZ09iamVjdCwgLy8gV2UgZXhpdGVkIGJl
Y2F1c2Ugd2Ugc2hvdWxkbid0IGhhdmUgYXR0ZW1wdGVkIHRvIG9wdGltaXplIHN0cmluZyBvYmpl
Y3QgYWNjZXNzLgogICAgIFZhcmFyZ3NPdmVyZmxvdywgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYSB2
YXJhcmdzIGNhbGwgcGFzc2VkIG1vcmUgYXJndW1lbnRzIHRoYW4gd2UgZXhwZWN0ZWQuCiAgICAg
VERaRmFpbHVyZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2Ugd2VyZSBpbiB0aGUgVERaIGFuZCBh
Y2Nlc3NlZCB0aGUgdmFyaWFibGUuCiAgICAgSG9pc3RpbmdGYWlsZWQsIC8vIFNvbWV0aGluZyB0
aGF0IHdhcyBob2lzdGVkIGV4aXRlZC4gU28sIGFzc3VtZSB0aGF0IGhvaXN0aW5nIGlzIGEgYmFk
IGlkZWEuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyNDAxMDIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI0MjEsMTIgKzI0MjEsNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6IHsKICAg
ICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBT
dHJpbmdPYmplY3RVc2U6Ci0gICAgICAgICAgICAvLyBUaGlzIGFsc28gZmlsdGVycyB0aGF0IHRo
ZSBTdHJpbmdPYmplY3QgaGFzIHRoZSBwcmltb3JkaWFsIFN0cmluZ09iamVjdAotICAgICAgICAg
ICAgLy8gc3RydWN0dXJlLgotICAgICAgICAgICAgZmlsdGVyKAotICAgICAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMSgpLAotICAgICAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUo
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c3RyaW5nT2Jq
ZWN0U3RydWN0dXJlKCkpKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN0cmlu
Z09yU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICBjYXNl
IEludDUyUmVwVXNlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFz
ZS5jcHAJKHJldmlzaW9uIDI0MDEwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAi
REZHQ2xvYmJlclNldC5oIgogI2luY2x1ZGUgIkRGR0Nsb2JiZXJpemUuaCIKICNpbmNsdWRlICJE
RkdEb21pbmF0b3JzLmgiCi0jaW5jbHVkZSAiREZHRWRnZVVzZXNTdHJ1Y3R1cmUuaCIKICNpbmNs
dWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR1BoYXNlLmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJ
KHJldmlzaW9uIDI0MDEwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgRU5BQkxFKERGR19K
SVQpCiAKICNpbmNsdWRlICJERkdBYnN0cmFjdEhlYXAuaCIKLSNpbmNsdWRlICJERkdFZGdlVXNl
c1N0cnVjdHVyZS5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHSGVhcExv
Y2F0aW9uLmgiCiAjaW5jbHVkZSAiREZHTGF6eU5vZGUuaCIKQEAgLTEwNyw5ICsxMDYsNiBAQCB2
b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgLy8gaW5mb3JtYXRp
b24gdGhhdCBjbG9iYmVyaXplKCkgcGFzc2VzIHRvIHdyaXRlKCkgYW5kIGRlZigpLiBPdGhlciBj
bGllbnRzIG9mIGNsb2JiZXJpemUoKSBjYW4KICAgICAvLyBqdXN0IGlnbm9yZSBkZWYoKSBieSB1
c2luZyBhIE5vT3BDbG9iYmVyaXplIGZ1bmN0b3IuCiAKLSAgICBpZiAoZWRnZXNVc2VTdHJ1Y3R1
cmUoZ3JhcGgsIG5vZGUpKQotICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7Ci0gICAg
CiAgICAgLy8gV2UgYWxsb3cgdGhlIHJ1bnRpbWUgdG8gcGVyZm9ybSBhIHN0YWNrIHNjYW4gYXQg
YW55IHRpbWUuIFdlIGRvbid0IG1vZGVsIHdoaWNoIG5vZGVzIGdldCBpbXBsZW1lbnRlZAogICAg
IC8vIGJ5IGNhbGxzIGludG8gdGhlIHJ1bnRpbWUuIEZvciBkZWJ1Z2dpbmcgd2UgbWlnaHQgcmVw
bGFjZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgYW55IG5vZGUgd2l0aCBhIGNhbGwKICAgICAvLyB0
byB0aGUgcnVudGltZSwgYW5kIHRoYXQgY2FsbCBtYXkgd2FsayBzdGFjay4gVGhlcmVmb3JlLCBl
YWNoIG5vZGUgbXVzdCByZWFkKCkgYW55dGhpbmcgdGhhdCBhIHN0YWNrCkBAIC0xNjUzLDE4ICsx
NjQ5LDE5IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBj
YXNlIFRvU3RyaW5nOgogICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOgogICAgICAgICBz
d2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewotICAgICAgICBjYXNlIFN0cmluZ09i
amVjdFVzZToKLSAgICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKLSAgICAgICAg
ICAgIC8vIFRoZXNlIGRvbid0IGRlZiBhIHB1cmUgdmFsdWUsIHVuZm9ydHVuYXRlbHkuIEknbGwg
YXZvaWQgbG9hZC1lbGltaW5hdGluZyB0aGVzZSBmb3IKLSAgICAgICAgICAgIC8vIG5vdy4KLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAogICAgICAgICBjYXNlIENlbGxVc2U6CiAg
ICAgICAgIGNhc2UgVW50eXBlZFVzZToKICAgICAgICAgICAgIHJlYWQoV29ybGQpOwogICAgICAg
ICAgICAgd3JpdGUoSGVhcCk7CiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgY2FzZSBT
dHJpbmdPYmplY3RVc2U6CisgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6Cisg
ICAgICAgICAgICAvLyBUaGVzZSB0d28gU3RyaW5nT2JqZWN0VXNlJ3MgYXJlIHB1cmUgYmVjYXVz
ZSBpZiB3ZSBlbWl0IHRoaXMgbm9kZSB3aXRoIGVpdGhlcgorICAgICAgICAgICAgLy8gb2YgdGhl
c2UgVXNlS2luZHMsIHdlJ2xsIGZpcnN0IGVtaXQgYSBTdHJ1Y3R1cmVDaGVjayBlbnN1cmluZyB0
aGF0IHdlJ3JlIHRoZQorICAgICAgICAgICAgLy8gb3JpZ2luYWwgU3RyaW5nIG9yIFN0cmluZ09i
amVjdCBzdHJ1Y3R1cmUuIFRoZXJlZm9yZSwgd2UgZG9uJ3QgaGF2ZSBhbiBvdmVycmlkZGVuCisg
ICAgICAgICAgICAvLyB2YWx1ZU9mLCBldGMuCisKICAgICAgICAgY2FzZSBJbnQzMlVzZToKICAg
ICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2VVc2VzU3RydWN0dXJlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlVXNlc1N0cnVjdHVyZS5o
CShyZXZpc2lvbiAyNDAxMDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2VV
c2VzU3RydWN0dXJlLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdHcmFwaC5oIgotCi1uYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7Ci0KLWNsYXNzIEVkZ2VVc2VzU3RydWN0dXJlIHsKLXB1YmxpYzoK
LSAgICBFZGdlVXNlc1N0cnVjdHVyZSgpCi0gICAgICAgIDogbV9yZXN1bHQoZmFsc2UpCi0gICAg
ewotICAgIH0KLSAgICAKLSAgICB2b2lkIG9wZXJhdG9yKCkoTm9kZSosIEVkZ2UgZWRnZSkKLSAg
ICB7Ci0gICAgICAgIG1fcmVzdWx0IHw9IHVzZXNTdHJ1Y3R1cmUoZWRnZS51c2VLaW5kKCkpOwot
ICAgIH0KLSAgICAKLSAgICBib29sIHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0OyB9
Ci0gICAgCi1wcml2YXRlOgotICAgIGJvb2wgbV9yZXN1bHQ7Ci19OwotCi1pbmxpbmUgYm9vbCBl
ZGdlc1VzZVN0cnVjdHVyZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCi17Ci0gICAgRWRnZVVz
ZXNTdHJ1Y3R1cmUgZWRnZVVzZXNTdHJ1Y3R1cmU7Ci0gICAgREZHX05PREVfRE9fVE9fQ0hJTERS
RU4oZ3JhcGgsIG5vZGUsIGVkZ2VVc2VzU3RydWN0dXJlKTsKLSAgICByZXR1cm4gZWRnZVVzZXNT
dHJ1Y3R1cmUucmVzdWx0KCk7Ci19Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyNDAxMDIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDU0LDIwICsy
NDU0LDIzIEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghbV9ncmFwaC5jYW5PcHRpbWl6ZVN0cmlu
Z09iamVjdEFjY2Vzcyhub2RlLT5vcmlnaW4uc2VtYW50aWMpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAKKyAgICAgICAgYWRkQ2hlY2tTdHJ1Y3R1cmVGb3JPcmlnaW5hbFN0cmluZ09i
amVjdFVzZSh1c2VLaW5kLCBub2RlLT5vcmlnaW4sIG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CiAg
ICAgICAgIGNyZWF0ZVRvU3RyaW5nPHVzZUtpbmQ+KG5vZGUsIG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgYXJyYXlNb2RlID0gQXJyYXlNb2RlKEFycmF5OjpTdHJpbmcsIEFycmF5OjpSZWFkKTsK
ICAgICB9Ci0gICAgCi0gICAgdGVtcGxhdGU8VXNlS2luZCB1c2VLaW5kPgotICAgIGJvb2wgaXNT
dHJpbmdPYmplY3RVc2UoKQorCisgICAgdm9pZCBhZGRDaGVja1N0cnVjdHVyZUZvck9yaWdpbmFs
U3RyaW5nT2JqZWN0VXNlKFVzZUtpbmQgdXNlS2luZCwgY29uc3QgTm9kZU9yaWdpbiYgb3JpZ2lu
LCBOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgc3dpdGNoICh1c2VLaW5kKSB7Ci0gICAgICAg
IGNhc2UgU3RyaW5nT2JqZWN0VXNlOgotICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0
VXNlOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodXNl
S2luZCA9PSBTdHJpbmdPYmplY3RVc2UgfHwgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2UpOworCisg
ICAgICAgIFN0cnVjdHVyZVNldCBzZXQ7CisgICAgICAgIHNldC5hZGQobV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkp
OworICAgICAgICBpZiAodXNlS2luZCA9PSBTdHJpbmdPclN0cmluZ09iamVjdFVzZSkKKyAgICAg
ICAgICAgIHNldC5hZGQodm0oKS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOworCisgICAgICAgIG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3Bl
Y05vbmUsIENoZWNrU3RydWN0dXJlLCBvcmlnaW4sCisgICAgICAgICAgICBPcEluZm8obV9ncmFw
aC5hZGRTdHJ1Y3R1cmVTZXQoc2V0KSksIEVkZ2Uobm9kZSwgQ2VsbFVzZSkpOwogICAgIH0KICAg
ICAKICAgICB0ZW1wbGF0ZTxVc2VLaW5kIHVzZUtpbmQ+CkBAIC0yNzQ5LDYgKzI3NTIsNyBAQCBw
cml2YXRlOgogICAgICAgICAKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVj
dWxhdGVTdHJpbmdPYmplY3QoKQogICAgICAgICAgICAgJiYgbV9ncmFwaC5jYW5PcHRpbWl6ZVN0
cmluZ09iamVjdEFjY2Vzcyhub2RlLT5vcmlnaW4uc2VtYW50aWMpKSB7CisgICAgICAgICAgICBh
ZGRDaGVja1N0cnVjdHVyZUZvck9yaWdpbmFsU3RyaW5nT2JqZWN0VXNlKFN0cmluZ09iamVjdFVz
ZSwgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgZml4
RWRnZTxTdHJpbmdPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIG5vZGUt
PmNvbnZlcnRUb1RvU3RyaW5nKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNzU2LDYgKzI3
NjAsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdCgpCiAgICAgICAgICAgICAmJiBtX2dy
YXBoLmNhbk9wdGltaXplU3RyaW5nT2JqZWN0QWNjZXNzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
IHsKKyAgICAgICAgICAgIGFkZENoZWNrU3RydWN0dXJlRm9yT3JpZ2luYWxTdHJpbmdPYmplY3RV
c2UoU3RyaW5nT3JTdHJpbmdPYmplY3RVc2UsIG5vZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGQxKCku
bm9kZSgpKTsKICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nT3JTdHJpbmdPYmplY3RVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1RvU3RyaW5nKCk7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0yODcxLDEyICsyODc2LDE0IEBAIHByaXZhdGU6CiAgICAg
ICAgIAogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ09i
amVjdCgpCiAgICAgICAgICAgICAmJiBtX2dyYXBoLmNhbk9wdGltaXplU3RyaW5nT2JqZWN0QWNj
ZXNzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpIHsKKyAgICAgICAgICAgIGFkZENoZWNrU3RydWN0
dXJlRm9yT3JpZ2luYWxTdHJpbmdPYmplY3RVc2UoU3RyaW5nT2JqZWN0VXNlLCBub2RlLT5vcmln
aW4sIG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CiAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ09i
amVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0
cmluZ09yU3RyaW5nT2JqZWN0KCkKICAgICAgICAgICAgICYmIG1fZ3JhcGguY2FuT3B0aW1pemVT
dHJpbmdPYmplY3RBY2Nlc3Mobm9kZS0+b3JpZ2luLnNlbWFudGljKSkgeworICAgICAgICAgICAg
YWRkQ2hlY2tTdHJ1Y3R1cmVGb3JPcmlnaW5hbFN0cmluZ09iamVjdFVzZShTdHJpbmdPclN0cmlu
Z09iamVjdFVzZSwgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAg
ICAgICAgZml4RWRnZTxTdHJpbmdPclN0cmluZ09iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yOTc1LDEyICsyOTgyLDE1IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRTdHJpbmdBZGRVc2U8U3RyaW5nVXNl
Pihub2RlLCBlZGdlKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5jYW5PcHRpbWl6ZVN0cmluZ09i
amVjdEFjY2Vzcyhub2RlLT5vcmlnaW4uc2VtYW50aWMpKTsKKyAgICAgICAgICAgICAgICBpZiAo
IU9wdGlvbnM6OnVzZUNvbmN1cnJlbnRKSVQoKSkKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KG1fZ3JhcGguY2FuT3B0aW1pemVTdHJpbmdPYmplY3RBY2Nlc3Mobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSk7CiAgICAgICAgICAgICAgICAgaWYgKGVkZ2UtPnNob3VsZFNwZWN1bGF0ZVN0cmluZ09i
amVjdCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZENoZWNrU3RydWN0dXJlRm9yT3JpZ2lu
YWxTdHJpbmdPYmplY3RVc2UoU3RyaW5nT2JqZWN0VXNlLCBub2RlLT5vcmlnaW4sIGVkZ2Uubm9k
ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY29udmVydFN0cmluZ0FkZFVzZTxTdHJpbmdPYmpl
Y3RVc2U+KG5vZGUsIGVkZ2UpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVTdHJp
bmdPclN0cmluZ09iamVjdCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZENoZWNrU3RydWN0
dXJlRm9yT3JpZ2luYWxTdHJpbmdPYmplY3RVc2UoU3RyaW5nT3JTdHJpbmdPYmplY3RVc2UsIG5v
ZGUtPm9yaWdpbiwgZWRnZS5ub2RlKCkpOwogICAgICAgICAgICAgICAgICAgICBjb252ZXJ0U3Ry
aW5nQWRkVXNlPFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlPihub2RlLCBlZGdlKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAyNDAxMDIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5MCw3ICsx
NjkwLDcgQEAgYm9vbCBHcmFwaDo6aXNTdHJpbmdQcm90b3R5cGVNZXRob2RTYW5lKAogCiBib29s
IEdyYXBoOjpjYW5PcHRpbWl6ZVN0cmluZ09iamVjdEFjY2Vzcyhjb25zdCBDb2RlT3JpZ2luJiBj
b2RlT3JpZ2luKQogewotICAgIGlmIChoYXNFeGl0U2l0ZShjb2RlT3JpZ2luLCBOb3RTdHJpbmdP
YmplY3QpKQorICAgIGlmIChoYXNFeGl0U2l0ZShjb2RlT3JpZ2luLCBCYWRDYWNoZSkgfHwgaGFz
RXhpdFNpdGUoY29kZU9yaWdpbiwgQmFkQ29uc3RhbnRDYWNoZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4
aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhp
dC5jcHAJKHJldmlzaW9uIDI0MDEwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NSwxMyArMTc1LDYgQEAgRXhpdE1vZGUg
bWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgICAgICAgICAgICAgIHJlc3VsdCA9
IEV4aXRzOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgLy8gVGhlc2UgYXJlIHNoYWR5IGJlY2F1c2UgdGhleSBjaGVjayB0aGUgc3RydWN0dXJl
IGV2ZW4gaWYgdGhlIHR5cGUgb2YgdGhlIGNoaWxkIG5vZGUKLSAgICAgICAgICAgIC8vIHBhc3Nl
cyB0aGUgU3RyaW5nT2JqZWN0IHR5cGUgZmlsdGVyLgotICAgICAgICAgICAgY2FzZSBTdHJpbmdP
YmplY3RVc2U6Ci0gICAgICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgotICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IEV4aXRzOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyNDAxMDIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQ2
OCw3ICs5NDY4LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JDYQog
ICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAKICAgICAg
ICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0KG5vZGUtPmNoaWxkMSgpLCBvcDFHUFIpOwotICAgICAg
ICBtX2ludGVycHJldGVyLmZpbHRlcihub2RlLT5jaGlsZDEoKSwgU3BlY1N0cmluZ09iamVjdCk7
CiAKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhvcDFHUFIsIEpT
V3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZUNlbGxPZmZzZXQoKSksIHJlc3VsdEdQUik7CiAg
ICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTk0NzksMTcgKzk0NzgsMTMg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JDYQogICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwogCi0gICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhvcDFH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlc3VsdEdQUik7Ci0gICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZSgKLSAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpFcXVhbCwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwKLSAg
ICAgICAgICAgIG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUobV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAgIG1faml0LmxvYWQ4KEpJVENvbXBpbGVyOjpB
ZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHJlc3VsdEdQUik7
CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNoMzIoSklU
Q29tcGlsZXI6OkVxdWFsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSk7CiAK
LSAgICAgICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKG5vZGUtPmNoaWxkMSgp
LCByZXN1bHRHUFIpOwotICAgICAgICAKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKS5ub2Rl
KCksIG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tMzIoU3RyaW5nT2JqZWN0VHlwZSkpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZUNl
bGxPZmZzZXQoKSksIHJlc3VsdEdQUik7Ci0gICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOworCiAgICAgICAgIGlzU3RyaW5nLmxpbmsoJm1faml0
KTsKICAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgIGRvbmUu
bGluaygmbV9qaXQpOwpAQCAtMTAxOTIsOSArMTAxODcsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVTdHJpbmcoRWRnCiAgICAgc3BlY3VsYXRlU3RyaW5nKGVkZ2UsIG9wZXJhbmQu
Z3ByKCkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPYmplY3Qo
RWRnZSBlZGdlLCBHUFJSZWcgZ3ByKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3Ry
aW5nT2JqZWN0KEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGxHUFIpCiB7Ci0gICAgc3BlY3VsYXRlU3Ry
aW5nT2JqZWN0Rm9yU3RydWN0dXJlKGVkZ2UsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGdwciwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisgICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwoY2VsbEdQUiksIGVkZ2UsIH5TcGVjQ2VsbENoZWNrIHwgU3BlY1N0
cmluZ09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIFN0cmluZ09iamVjdFR5
cGUpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT2JqZWN0KEVk
Z2UgZWRnZSkKQEAgLTEwMjA0LDExICsxMDE5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZVN0cmluZ09iamUKICAgICAKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5k
KHRoaXMsIGVkZ2UpOwogICAgIEdQUlJlZyBncHIgPSBvcGVyYW5kLmdwcigpOwotICAgIGlmICgh
bmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY1N0cmluZ09iamVjdCkpCi0gICAgICAgIHJldHVybjsK
LSAgICAKICAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3QoZWRnZSwgZ3ByKTsKLSAgICBtX2ludGVy
cHJldGVyLmZpbHRlcihlZGdlLCBTcGVjU3RyaW5nT2JqZWN0KTsKIH0KIAogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3QoRWRnZSBlZGdlKQpAQCAtMTAy
MjEsMTcgKzEwMjEyLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09y
U3QKICAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNTdHJpbmcgfCBTcGVjU3RyaW5n
T2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZUlE
KHRoaXMpOwotICAgIEdQUlJlZyBzdHJ1Y3R1cmVJREdQUiA9IHN0cnVjdHVyZUlELmdwcigpOwor
ICAgIEdQUlRlbXBvcmFyeSB0eXBlVGVtcCh0aGlzKTsKKyAgICBHUFJSZWcgdHlwZUdQUiA9IHR5
cGVUZW1wLmdwcigpOwogCi0gICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGdw
ciwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlSURHUFIpOyAKLSAgICBK
SVRDb21waWxlcjo6SnVtcCBpc1N0cmluZyA9IG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1cmUoCi0g
ICAgICAgIEpJVENvbXBpbGVyOjpFcXVhbCwKLSAgICAgICAgc3RydWN0dXJlSURHUFIsIAotICAg
ICAgICBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpOwotICAgIAotICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVj
dHVyZShlZGdlLCBzdHJ1Y3R1cmVJREdQUik7Ci0gICAgCisgICAgbV9qaXQubG9hZDgoSklUQ29t
cGlsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgdHlwZUdQ
Uik7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBpc1N0cmluZyA9IG1faml0LmJyYW5jaDMyKEpJ
VENvbXBpbGVyOjpFcXVhbCwgdHlwZUdQUiwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKTsKKyAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGdw
ciksIGVkZ2Uubm9kZSgpLCBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHR5
cGVHUFIsIFRydXN0ZWRJbW0zMihTdHJpbmdPYmplY3RUeXBlKSkpOwogICAgIGlzU3RyaW5nLmxp
bmsoJm1faml0KTsKICAgICAKICAgICBtX2ludGVycHJldGVyLmZpbHRlcihlZGdlLCBTcGVjU3Ry
aW5nIHwgU3BlY1N0cmluZ09iamVjdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAyNDAxMDIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE2
MzEsOCArMTYzMSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNwZWN1bGF0ZVN0cmluZ09yT3RoZXIo
RWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVOb3RTdHJpbmdWYXIoRWRnZSk7CiAgICAgdm9pZCBz
cGVjdWxhdGVOb3RTeW1ib2woRWRnZSk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU3RydWN0dXJl
TG9jYXRpb25UeXBlPgotICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJl
KEVkZ2UsIFN0cnVjdHVyZUxvY2F0aW9uVHlwZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdP
YmplY3QoRWRnZSwgR1BSUmVnKTsKICAgICB2b2lkIHNwZWN1bGF0ZVN0cmluZ09iamVjdChFZGdl
KTsKICAgICB2b2lkIHNwZWN1bGF0ZVN0cmluZ09yU3RyaW5nT2JqZWN0KEVkZ2UpOwpAQCAtMjYw
NCwyMCArMjYwMiw2IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgU3RydWN0dXJlTG9jYXRpb25UeXBlPgotdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKEVkZ2UgZWRnZSwgU3Ry
dWN0dXJlTG9jYXRpb25UeXBlIHN0cnVjdHVyZUxvY2F0aW9uKQotewotICAgIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RyaW5nT2JqZWN0U3RydWN0dXJlID0KLSAgICAgICAgbV9qaXQuZ3JhcGgoKS5y
ZWdpc3RlclN0cnVjdHVyZShtX2ppdC5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkpOwotICAgIAotICAgIGlmICgh
bV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fc3RydWN0dXJlLmlzU3Vic2V0T2YoUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldChzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSkgewotICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKAotICAgICAgICAgICAgTm90U3RyaW5nT2JqZWN0LCBKU1ZhbHVlUmVncygpLCAwLAot
ICAgICAgICAgICAgbV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZSgKLSAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6Tm90RXF1YWwsIHN0cnVjdHVyZUxvY2F0aW9uLCBzdHJpbmdPYmplY3RTdHJ1
Y3R1cmUpKTsKLSAgICB9Ci19Ci0KICNkZWZpbmUgREZHX1RZUEVfQ0hFQ0tfV0lUSF9FWElUX0tJ
TkQoZXhpdEtpbmQsIHNvdXJjZSwgZWRnZSwgdHlwZXNQYXNzZWRUaHJvdWdoLCBqdW1wVG9GYWls
KSBkbyB7IFwKICAgICAgICAgSlNWYWx1ZVNvdXJjZSBfZHRjX3NvdXJjZSA9IChzb3VyY2UpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgRWRnZSBfZHRjX2VkZ2UgPSAoZWRn
ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCShyZXZpc2lvbiAyNDAxMDIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMjY4
LDI3ICsyNjgsOSBAQCBpbmxpbmUgYm9vbCBpc0NlbGwoVXNlS2luZCBraW5kKQogICAgIH0KIH0K
IAotLy8gUmV0dXJucyB0cnVlIGlmIGl0IHVzZXMgc3RydWN0dXJlIGluIGEgd2F5IHRoYXQgY291
bGQgYmUgY2xvYmJlcmVkIGJ5Ci0vLyB0aGluZ3MgdGhhdCBjaGFuZ2UgdGhlIHN0cnVjdHVyZS4K
LWlubGluZSBib29sIHVzZXNTdHJ1Y3R1cmUoVXNlS2luZCBraW5kKQotewotICAgIHN3aXRjaCAo
a2luZCkgewotICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgotICAgIGNhc2UgU3RyaW5nT3JTdHJp
bmdPYmplY3RVc2U6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSd2ZSBhbHJl
YWR5IGd1YXJhbnRlZWQgdGhlIHR5cGUgCiBpbmxpbmUgYm9vbCBhbHJlYWR5Q2hlY2tlZChVc2VL
aW5kIGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiB7Ci0gICAgLy8gSWYgdGhlIGNoZWNrIGlu
dm9sdmVzIHRoZSBzdHJ1Y3R1cmUgdGhlbiB3ZSBuZWVkIHRvIGtub3cgbW9yZSB0aGFuIGp1c3Qg
dGhlIHR5cGUgdG8gYmUgc3VyZQotICAgIC8vIHRoYXQgdGhlIGNoZWNrIGlzIGRvbmUuCi0gICAg
aWYgKHVzZXNTdHJ1Y3R1cmUoa2luZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKICAg
ICByZXR1cm4gISh0eXBlICYgfnR5cGVGaWx0ZXJGb3Ioa2luZCkpOwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAy
NDAxMDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYzMjYsMjYgKzYzMjYsMjYgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBTdHJpbmdPYmplY3RVc2U6IHsKICAgICAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZv
ckNlbGwobV9ub2RlLT5jaGlsZDEoKSwgY2VsbCk7Ci0gICAgICAgICAgICBtX2ludGVycHJldGVy
LmZpbHRlcihtX25vZGUtPmNoaWxkMSgpLCBTcGVjU3RyaW5nT2JqZWN0KTsKLSAgICAgICAgICAg
IAogICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNX
cmFwcGVyT2JqZWN0X2ludGVybmFsVmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6
IHsKICAgICAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmVJRCA9IG1fb3V0LmxvYWQzMihjZWxsLCBtX2hl
YXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICBMVmFsdWUgdHlwZSA9IG1fb3V0
LmxvYWQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb1R5cGUpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RTdHJpbmcgPSBtX291dC5uZXdCbG9jaygpOwog
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2ltcGxlUmVzdWx0ID0g
bV9vdXQuYW5jaG9yKGNlbGwpOwogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAg
ICAgICAgIG1fb3V0LmVxdWFsKHN0cnVjdHVyZUlELCBtX291dC5jb25zdEludDMyKHZtKCkuc3Ry
aW5nU3RydWN0dXJlLT5pZCgpKSksCisgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwodHlwZSwg
bV9vdXQuY29uc3RJbnQzMihTdHJpbmdUeXBlKSksCiAgICAgICAgICAgICAgICAgdW5zdXJlKGNv
bnRpbnVhdGlvbiksIHVuc3VyZShub3RTdHJpbmcpKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhub3RTdHJpbmcsIGNvbnRp
bnVhdGlvbik7Ci0gICAgICAgICAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmVJ
RChtX25vZGUtPmNoaWxkMSgpLCBzdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICBzcGVjdWxhdGUo
CisgICAgICAgICAgICAgICAgQmFkVHlwZSwganNWYWx1ZVZhbHVlKGNlbGwpLCBtX25vZGUtPmNo
aWxkMSgpLm5vZGUoKSwKKyAgICAgICAgICAgICAgICBtX291dC5ub3RFcXVhbCh0eXBlLCBtX291
dC5jb25zdEludDMyKFN0cmluZ09iamVjdFR5cGUpKSk7CiAgICAgICAgICAgICBWYWx1ZUZyb21C
bG9jayB1bmJveGVkUmVzdWx0ID0gbV9vdXQuYW5jaG9yKAogICAgICAgICAgICAgICAgIG1fb3V0
LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU1dyYXBwZXJPYmplY3RfaW50ZXJuYWxWYWx1ZSkpOwog
ICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpAQCAtMTYwNTEsNDkgKzE2MDUx
LDQ0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBz
cGVjdWxhdGVTdHJpbmdPYmplY3RGb3JDZWxsKGVkZ2UsIGxvd0NlbGwoZWRnZSkpOwotICAgICAg
ICBtX2ludGVycHJldGVyLmZpbHRlcihlZGdlLCBTcGVjU3RyaW5nT2JqZWN0KTsKICAgICB9CiAg
ICAgCiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdChFZGdlIGVkZ2UpCiAg
ICAgewogICAgICAgICBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSwgU3Bl
Y1N0cmluZyB8IFNwZWNTdHJpbmdPYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIExWYWx1ZSBjZWxsQmFzZSA9IGxvd0NlbGwoZWRnZSk7CisgICAgICAgIGlmICghbV9pbnRl
cnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjU3RyaW5nIHwgU3BlY1N0cmluZ09iamVj
dCkpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBu
b3RTdHJpbmcgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51
YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAKLSAgICAgICAgTFZhbHVlIHN0cnVj
dHVyZUlEID0gbV9vdXQubG9hZDMyKGxvd0NlbGwoZWRnZSksIG1faGVhcHMuSlNDZWxsX3N0cnVj
dHVyZUlEKTsKKyAgICAgICAgTFZhbHVlIHR5cGUgPSBtX291dC5sb2FkMzIoY2VsbEJhc2UsIG1f
aGVhcHMuSlNDZWxsX3R5cGVJbmZvVHlwZSk7CiAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAg
ICAgICAgIG1fb3V0LmVxdWFsKHN0cnVjdHVyZUlELCBtX291dC5jb25zdEludDMyKHZtKCkuc3Ry
aW5nU3RydWN0dXJlLT5pZCgpKSksCisgICAgICAgICAgICBtX291dC5lcXVhbCh0eXBlLCBtX291
dC5jb25zdEludDMyKFN0cmluZ1R5cGUpKSwKICAgICAgICAgICAgIHVuc3VyZShjb250aW51YXRp
b24pLCB1bnN1cmUobm90U3RyaW5nKSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKG5vdFN0cmluZywgY29udGludWF0aW9uKTsKLSAgICAg
ICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlSUQoZWRnZSwgc3RydWN0dXJlSUQp
OworICAgICAgICBzcGVjdWxhdGUoCisgICAgICAgICAgICBCYWRUeXBlLCBqc1ZhbHVlVmFsdWUo
Y2VsbEJhc2UpLCBlZGdlLm5vZGUoKSwKKyAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKHR5cGUs
IG1fb3V0LmNvbnN0SW50MzIoU3RyaW5nT2JqZWN0VHlwZSkpKTsKICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgIAogICAgICAgICBtX2ludGVycHJldGVyLmZpbHRl
cihlZGdlLCBTcGVjU3RyaW5nIHwgU3BlY1N0cmluZ09iamVjdCk7CiAgICAgfQogICAgIAogICAg
IHZvaWQgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yQ2VsbChFZGdlIGVkZ2UsIExWYWx1ZSBjZWxs
KQogICAgIHsKLSAgICAgICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlSUQoZWRn
ZSwgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSk7Ci0gICAg
fQotICAgIAotICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlSUQoRWRn
ZSBlZGdlLCBMVmFsdWUgc3RydWN0dXJlSUQpCi0gICAgewotICAgICAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cmluZ09iamVjdFN0cnVjdHVyZSA9Ci0gICAgICAgICAgICBtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkpOwotCi0gICAgICAgIGlmIChhYnN0cmFjdFN0
cnVjdHVyZShlZGdlKS5pc1N1YnNldE9mKFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQoc3RyaW5nT2Jq
ZWN0U3RydWN0dXJlKSkpCisgICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVj
ayhlZGdlLCBTcGVjU3RyaW5nT2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
Ci0gICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgIE5vdFN0cmluZ09iamVjdCwgbm9WYWx1
ZSgpLCAwLAotICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoc3RydWN0dXJlSUQsIHdlYWtTdHJ1
Y3R1cmVJRChzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSk7Ci0gICAgfQogCisgICAgICAgIExWYWx1
ZSB0eXBlID0gbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3R5cGVJbmZvVHlwZSk7
CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwgU3BlY1N0
cmluZ09iamVjdCwgbV9vdXQubm90RXF1YWwodHlwZSwgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdP
YmplY3RUeXBlKSkpOworICAgIH0KKyAgICAKICAgICB2b2lkIHNwZWN1bGF0ZVN5bWJvbChFZGdl
IGVkZ2UsIExWYWx1ZSBjZWxsKQogICAgIHsKICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1
ZVZhbHVlKGNlbGwpLCBlZGdlLCBTcGVjU3ltYm9sLCBpc05vdFN5bWJvbChjZWxsKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAJKHJldmlzaW9uIDI0MDEw
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMCw2ICsxMDAsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgSlNDCiAgICAgQ0FTRShKU1dlYWtNYXBUeXBlKQogICAgIENBU0UoSlNXZWFrU2V0VHlw
ZSkKICAgICBDQVNFKFdlYkFzc2VtYmx5VG9KU0NhbGxlZVR5cGUpCisgICAgQ0FTRShTdHJpbmdP
YmplY3RUeXBlKQogICAgIENBU0UoTWF4SlNUeXBlKQogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCShyZXZpc2lvbiAyNDAxMDIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDEw
ICsxMTAsMTAgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICBKU1NldFR5cGUsCiAgICAg
SlNXZWFrTWFwVHlwZSwKICAgICBKU1dlYWtTZXRUeXBlLAotCiAgICAgV2ViQXNzZW1ibHlUb0pT
Q2FsbGVlVHlwZSwKKyAgICBTdHJpbmdPYmplY3RUeXBlLAogCi0gICAgTGFzdEpTQ09iamVjdFR5
cGUgPSBXZWJBc3NlbWJseVRvSlNDYWxsZWVUeXBlLCAvLyBUaGlzIGlzIHRoZSBsYXN0ICJKU0Mi
IE9iamVjdCB0eXBlLiBBZnRlciB0aGlzLCB3ZSBoYXZlIGVtYmVkZGVyJ3MgKGUuZy4sIFdlYkNv
cmUpIGV4dGVuZGVkIG9iamVjdCB0eXBlcy4KKyAgICBMYXN0SlNDT2JqZWN0VHlwZSA9IFN0cmlu
Z09iamVjdFR5cGUsIC8vIFRoaXMgaXMgdGhlIGxhc3QgIkpTQyIgT2JqZWN0IHR5cGUuIEFmdGVy
IHRoaXMsIHdlIGhhdmUgZW1iZWRkZXIncyAoZS5nLiwgV2ViQ29yZSkgZXh0ZW5kZWQgb2JqZWN0
IHR5cGVzLgogICAgIE1heEpTVHlwZSA9IDBiMTExMTExMTEsCiB9OwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkocmV2aXNpb24gMjQwMTAy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKFN0cmluZ09iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCShyZXZpc2lv
biAyNDAxMDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oU3RyaW5nT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAogICAgIERFQ0xBUkVf
SU5GTzsK
</data>
<flag name="review"
          id="376131"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359359</attachid>
            <date>2019-01-17 00:11:52 -0800</date>
            <delta_ts>2019-01-17 09:50:33 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>36565</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDAxMDQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE5LTAxLTE2ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFN0cmluZ09iamVjdFVzZSBzaG91bGQgbm90IGJlIGEgc3RydWN0dXJl
IGNoZWNrIGZvciB0aGUgb3JpZ2luYWwgc3RyaW5nIG9iamVjdCBzdHJ1Y3R1cmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzQ4MworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNDcyODA1MjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1
enVraS4KKworICAgICAgICAqIHN0cmVzcy9jYW50LWVsaW1pbmF0ZS1zdHJpbmctb2JqZWN0LXN0
cnVjdHVyZS1jaGVjay13aGVuLXN0cmluZy1vYmplY3QtaXMtcHJvdmVuLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGZvbyk6CisgICAgICAgIChhLnZhbHVlT2YuMCk6CisKIDIwMTktMDEtMTUgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEpTRnVuY3Rpb246OmNhblVzZUFs
bG9jYXRpb25Qcm9maWxlKCkgc2hvdWxkIGFjY291bnQgZm9yIGJ1aWx0aW4gZnVuY3Rpb25zIHdp
dGggbm8gb3duIHByb3RvdHlwZXMuCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9jYW50LWVsaW1pbmF0
ZS1zdHJpbmctb2JqZWN0LXN0cnVjdHVyZS1jaGVjay13aGVuLXN0cmluZy1vYmplY3QtaXMtcHJv
dmVuLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2NhbnQtZWxpbWluYXRlLXN0cmlu
Zy1vYmplY3Qtc3RydWN0dXJlLWNoZWNrLXdoZW4tc3RyaW5nLW9iamVjdC1pcy1wcm92ZW4uanMJ
KG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvY2FudC1lbGltaW5hdGUtc3RyaW5nLW9i
amVjdC1zdHJ1Y3R1cmUtY2hlY2std2hlbi1zdHJpbmctb2JqZWN0LWlzLXByb3Zlbi5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACisvL0AgcnVuRGVmYXVsdCgiLS1mb3JjZUVhZ2Vy
Q29tcGlsYXRpb249MSIsICItLXVzZUNvbmN1cnJlbnRKSVQ9MCIpCisKK2Z1bmN0aW9uIGZvbyh4
KSB7CisgICAgeC50b1N0cmluZygpOworfQorCit2YXIgYSA9IG5ldyBTdHJpbmcoKTsKK2EudmFs
dWVPZiA9IDAKK2ZvciAodmFyIGkgPSAwOyBpIDwgNTsgaSsrKSB7CisgICAgZm9vKGEpCit9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDEwMikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMDUgQEAK
KzIwMTktMDEtMTYgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
U3RyaW5nT2JqZWN0VXNlIHNob3VsZCBub3QgYmUgYSBzdHJ1Y3R1cmUgY2hlY2sgZm9yIHRoZSBv
cmlnaW5hbCBzdHJpbmcgb2JqZWN0IHN0cnVjdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNDgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80
NzI4MDUyMj4KKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAg
IFByaW9yIHRvIHRoaXMgcGF0Y2gsIHRoZSB1c2Uga2luZCBmb3IgU3RyaW5nT2JqZWN0VXNlIGlt
cGxpZWQgdGhhdCB3ZQorICAgICAgICBkbyBhIFN0cnVjdHVyZUNoZWNrIG9uIHRoZSBpbnB1dCBv
cGVyYW5kIGZvciB0aGUgKm9yaWdpbmFsKiBTdHJpbmdPYmplY3QKKyAgICAgICAgc3RydWN0dXJl
LiBUaGlzIGlzIGdlbmVyYWxseSBub3QgaG93IHdlIHVzZSBVc2VLaW5kcywgc28gaXQncyBubyBz
dXJwcmlzZQorICAgICAgICB0aGF0IHRoaXMgaXMgYnVnZ3kuIEEgVXNlS2luZCBzaG91bGQgbWFw
IHRvIGEgc2V0IG9mIFNwZWN1bGF0ZWRUeXBlcywgbm90IGFuCisgICAgICAgIGFjdHVhbCBzZXQg
b2Ygc3RydWN0dXJlcy4gVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBtZWFuaW5nIG9mIFN0cmluZ09i
amVjdFVzZQorICAgICAgICB0byBtZWFuIGFuIG9iamVjdCB3aGVyZSBqc0R5bmFtaWNDYXN0PFN0
cmluZ09iamVjdCo+IHdvdWxkIHN1Y2NlZWQuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNo
IGFsc28gZml4ZXMgYSBidWcgdGhhdCB3YXMgY2F1c2VkIGJ5IHRoZSBvbGQgYW5kIHdlaXJkIHVz
YWdlIG9mIHRoZQorICAgICAgICBVc2VLaW5kIHRvIG1lYW4gU3RydWN0dXJlQ2hlY2suIENvbnNp
ZGVyIGEgcHJvZ3JhbSBsaWtlIHRoaXM6CisgICAgICAgIGBgYAorICAgICAgICBTMSA9IE9yaWdp
bmFsIFN0cmluZ09iamVjdCBzdHJ1Y3R1cmUKKyAgICAgICAgUzIgPSBPcmlnaW5hbCBTdHJpbmdP
YmplY3Qgc3RydWN0dXJlIHdpdGggdGhlIGZpZWxkICJmIiBhZGRlZAorICAgICAgICAKKyAgICAg
ICAgYTogR2V0TG9jYWwoKQorICAgICAgICBiOiBDaGVja1N0cnVjdHVyZShAYSwge1MyfSkKKyAg
ICAgICAgYzogVG9TdHJpbmcoU3RyaW5nT2JqZWN0OkBhKQorICAgICAgICBgYGAKKyAgICAgICAg
CisgICAgICAgIEFjY29yZGluZyB0byBBSSwgaW4gdGhlIGFib3ZlIHByb2dyYW0sIHdlIHdvdWxk
IGV4aXQgYXQgQGMsIHNpbmNlCisgICAgICAgIFN0cmluZ09iamVjdDpAYSBpbXBsaWVzIGEgc3Ry
dWN0dXJlIGNoZWNrIG9mIHtTMX0sIGFuZCB0aGUgaW50ZXJzZWN0aW9uCisgICAgICAgIG9mIHtT
MX0gYW5kIHtTMn0gaXMge30uIFNvLCB3ZSdkIGNvbnZlcnQgdGhlIHByb2dyYW0gdG8gYmU6Cisg
ICAgICAgIGBgYAorICAgICAgICBhOiBHZXRMb2NhbCgpCisgICAgICAgIGI6IENoZWNrU3RydWN0
dXJlKEBhLCB7UzJ9KQorICAgICAgICBjOiBDaGVjayhTdHJpbmdPYmplY3Q6QGEpCisgICAgICAg
IGQ6IFVucmVhY2hhYmxlCisgICAgICAgIGBgYAorICAgICAgICAKKyAgICAgICAgSG93ZXZlciwg
QUkgd291bGQgc2V0IHRoZSBwcm9vZiBzdGF0dXMgb2YgdGhlIFN0cmluZ09iamVjdDpAYSBlZGdl
CisgICAgICAgIHRvIGJlIHByb3Zlbiwgc2luY2UgdGhlIFNwZWN1bGF0ZWRUeXBlIGZvciBAYSBp
cyBTcGVjU3RyaW5nT2JqZWN0LgorICAgICAgICBUaGlzIHdhcyBpbmNvcnJlY3Qgb2YgQUkgdG8g
ZG8gYmVjYXVzZSB0aGUgU3BlY3VsYXRlZFR5cGUgaXRzZWxmCisgICAgICAgIGRpZG4ndCBjYXB0
dXJlIHRoZSBmdWxsIHBvd2VyIG9mIFN0cmluZ09iamVjdFVzZS4gSG93ZXZlciwgaGF2aW5nCisg
ICAgICAgIGEgVXNlS2luZCBtZWFuIENoZWNrU3RydWN0dXJlIGlzIHdlaXJkIHByZWNpc2VseSBi
ZWNhdXNlIHdoYXQgQUkgd2FzCisgICAgICAgIGRvaW5nIGlzIGEgbmF0dXJhbCBmaXQgdG8gaG93
IHdlIHR5cGljYWxseSB3ZSB0aGluayBhYm91dCBVc2VLaW5kcy4KKyAgICAgICAgCisgICAgICAg
IFNvIHRoZSBhYm92ZSBwcm9ncmFtIHdvdWxkIHRoZW4gaW5jb3JyZWN0bHkgYmUgY29udmVydGVk
IHRvIHRoaXMsIGFuZAorICAgICAgICB3ZSdkIGNyYXNoIHdoZW4gcmVhY2hpbmcgdGhlIFVucmVh
Y2hhYmxlIG5vZGU6CisgICAgICAgIGBgYAorICAgICAgICBhOiBHZXRMb2NhbCgpCisgICAgICAg
IGI6IENoZWNrU3RydWN0dXJlKEBhLCB7UzJ9KQorICAgICAgICBkOiBVbnJlYWNoYWJsZQorICAg
ICAgICBgYGAKKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhhdCBT
dHJpbmdPYmplY3RVc2UganVzdCBtZWFucyB0aGF0IHRoZSBvYmplY3QgdGhhdAorICAgICAgICBm
aWx0ZXJzIHRocm91Z2ggYSBTdHJpbmdPYmplY3RVc2UgY2hlY2sgbXVzdCAhIWpzRHluYW1pY0Nh
c3Q8U3RyaW5nT2JqZWN0Kj4uCisgICAgICAgIFRoaXMgaXMgbm93IGluIGxpbmUgd2l0aCBhbGwg
b3RoZXIgVXNlS2luZHMuIEl0IGFsc28gbGV0cyB1cyBzaW1wbGlmeSBhIGJ1bmNoCisgICAgICAg
IG9mIG90aGVyIGNvZGUgdGhhdCBoYWQgd2VpcmQgY2hlY2tzIGZvciB0aGUgU3RyaW5nT2JqZWN0
VXNlIFVzZUtpbmQuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFsc28gbWFrZXMgaXQg
c28gdGhhdCBhbnl3aGVyZSB3aGVyZSB3ZSB1c2VkIHRvIHJlbHkgb24KKyAgICAgICAgU3RyaW5n
T2JqZWN0VXNlIGltcGx5aW5nIGEgc3RydWN0dXJlIGNoZWNrIHdlIGFjdHVhbGx5IGVtaXQgYW4g
ZXhwbGljaXQKKyAgICAgICAgQ2hlY2tTdHJ1Y3R1cmUgbm9kZS4KKworICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUv
RXhpdEtpbmQuY3BwOgorICAgICAgICAoSlNDOjpleGl0S2luZFRvU3RyaW5nKToKKyAgICAgICAg
KiBieXRlY29kZS9FeGl0S2luZC5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0NTRVBo
YXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdFZGdlVXNlc1N0cnVjdHVyZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpGaXh1cFBoYXNlOjphdHRlbXB0VG9Gb3JjZVN0cmluZ0FycmF5TW9kZUJ5VG9TdHJpbmdD
b252ZXJzaW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjphZGRDaGVja1N0cnVj
dHVyZUZvck9yaWdpbmFsU3RyaW5nT2JqZWN0VXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpmaXh1cFRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cFRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01ha2VGYXN0U3RyaW5nQWRkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjppc1N0cmluZ09iamVjdFVzZSk6IERlbGV0ZWQuCisgICAgICAg
ICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Y2FuT3B0aW1p
emVTdHJpbmdPYmplY3RBY2Nlc3MpOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9yU3Ry
aW5nVmFsdWVPZik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZVN0cmluZ09iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZVN0cmluZ09yU3RyaW5nT2JqZWN0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5n
T2JqZWN0Rm9yU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5o
OgorICAgICAgICAoSlNDOjpERkc6OmFscmVhZHlDaGVja2VkKToKKyAgICAgICAgKEpTQzo6REZH
Ojp1c2VzU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvU3Ry
aW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPclN0cmluZ1ZhbHVlT2YpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVTdHJpbmdPYmplY3QpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVTdHJpbmdPclN0cmluZ09i
amVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZVN0
cmluZ09iamVjdEZvckNlbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
OjpzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmVJRCk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9KU1R5cGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAg
ICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oOgorCiAyMDE5LTAxLTE2ICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBuZXcgYnl0ZWNvZGUgc3Ry
dWN0cyBzbyB0aGF0IHRoZSBmaWVsZHMgYXJlIHByZWZpeGVkIHdpdGggIm1fIi4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDAxMDIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTQ2NCw3ICsxNDY0LDYgQEAKIAkJQTc4QTk3ODExNzk3MzhENTAwOURG
NzQ0IC8qIEZUTEpJVEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTc4QTk3N0UxNzk3MzhENTAwOURGNzQ0IC8qIEZUTEpJVEZpbmFsaXpl
ci5oICovOyB9OwogCQlBNzkwREQ2RTE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
OTBERDY4MTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5oICovOyB9Owog
CQlBNzkwREQ3MDE4MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5MERENkExODJGNDk5NzAwNTg4
ODA3IC8qIEpTU2V0SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQlBNzk4NkQ1NzE3QTBCQjFFMDBBOTVERDAgLyogREZHRWRnZVVzZXNT
dHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3OTg2RDU2MTdBMEJCMUUwMEE5NUREMCAvKiBERkdFZGdlVXNlc1N0cnVjdHVyZS5oICovOyB9
OwogCQlBNzlEM0VEOUM1MDY0REQwQTg0NjZBM0EgLyogTW9kdWxlU2NvcGVEYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDBCRUFGMERGNjA0NDgx
QUY2QUI2OEMgLyogTW9kdWxlU2NvcGVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5
QnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0E4QUYyNjE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0E4QUYzNzE3QURCNUYzMDA1QUIx
NzQgLyogQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0E4QUYyODE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQy
NjgsNyArNDI2Nyw2IEBACiAJCUE3OTBERDY4MTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRv
clByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXRJdGVyYXRv
clByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzkwREQ2OTE4MkY0
OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1NldEl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTc5MERENkExODJGNDk5NzAwNTg4ODA3IC8qIEpTU2V0SXRlcmF0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZXRJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlBNzk4NkQ1NjE3QTBCQjFFMDBBOTVERDAgLyogREZHRWRnZVVzZXNT
dHJ1Y3R1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRWRnZVVzZXNT
dHJ1Y3R1cmUuaDsgcGF0aCA9IGRmZy9ERkdFZGdlVXNlc1N0cnVjdHVyZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNzlFNzgxRTE1RUVDQkE4MDA0N0M4NTUgLyogVW5saW5rZWRD
b2RlQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5saW5r
ZWRDb2RlQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzlFNzgxRjE1
RUVDQkE4MDA0N0M4NTUgLyogVW5saW5rZWRDb2RlQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVW5saW5rZWRDb2RlQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTc5RURCMDgxMTUzMUNENjAwMTlFOTEyIC8qIEpTT2JqZWN0UmVmUHJpdmF0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU09iamVjdFJlZlByaXZhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTczNjksNyArNzM2Nyw2IEBACiAJCQkJMEZC
NEI1MUIxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR0VkZ2UuY3BwICovLAogCQkJCTBGNjZFMTY5MTRE
RjNGMTMwMEI3QjJFNCAvKiBERkdFZGdlLmggKi8sCiAJCQkJQTdEOUEyOTExN0EwQkM3NDAwRUUy
NjE4IC8qIERGR0VkZ2VEb21pbmF0ZXMuaCAqLywKLQkJCQlBNzk4NkQ1NjE3QTBCQjFFMDBBOTVE
RDAgLyogREZHRWRnZVVzZXNTdHJ1Y3R1cmUuaCAqLywKIAkJCQkwRjhGMTQyRjFBREYwOTAxMDBF
RDc5MkMgLyogREZHRXBvY2guY3BwICovLAogCQkJCTBGOEYxNDMwMUFERjA5MDEwMEVENzkyQyAv
KiBERkdFcG9jaC5oICovLAogCQkJCUE3OEE5NzZDMTc5NzM4QjgwMDlERjc0NCAvKiBERkdGYWls
ZWRGaW5hbGl6ZXIuY3BwICovLApAQCAtODc1MCw3ICs4NzQ3LDYgQEAKIAkJCQkwRkQzQzgyODE0
MTE1RDRGMDBGRDgxQ0IgLyogREZHRHJpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2RTE2
QzE0REYzRjE2MDBCN0IyRTQgLyogREZHRWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEOUEy
OTYxN0EwQkM3NDAwRUUyNjE4IC8qIERGR0VkZ2VEb21pbmF0ZXMuaCBpbiBIZWFkZXJzICovLAot
CQkJCUE3OTg2RDU3MTdBMEJCMUUwMEE5NUREMCAvKiBERkdFZGdlVXNlc1N0cnVjdHVyZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY4RjE0MzQxQURGMDkwMTAwRUQ3OTJDIC8qIERGR0Vwb2NoLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkJDMEFFODE0OTZDN0M3MDBENEZCREQgLyogREZHRXhpdFBy
b2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OEE5Nzc1MTc5NzM4QjgwMDlERjc0NCAvKiBE
RkdGYWlsZWRGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCShyZXZpc2lvbiAyNDAxMDIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MCw4ICs3MCw2IEBAIGNvbnN0IGNoYXIqIGV4aXRLaW5kVG9TdHJpbmcoRXhpdEtpbmQga2kK
ICAgICAgICAgcmV0dXJuICJBcmd1bWVudHNFc2NhcGVkIjsKICAgICBjYXNlIEV4b3RpY09iamVj
dE1vZGU6CiAgICAgICAgIHJldHVybiAiRXhvdGljT2JqZWN0TW9kZSI7Ci0gICAgY2FzZSBOb3RT
dHJpbmdPYmplY3Q6Ci0gICAgICAgIHJldHVybiAiTm90U3RyaW5nT2JqZWN0IjsKICAgICBjYXNl
IFZhcmFyZ3NPdmVyZmxvdzoKICAgICAgICAgcmV0dXJuICJWYXJhcmdzT3ZlcmZsb3ciOwogICAg
IGNhc2UgVERaRmFpbHVyZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGl0S2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGl0S2luZC5oCShyZXZpc2lvbiAyNDAxMDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhpdEtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNiBAQCBlbnVtIEV4
aXRLaW5kIDogdWludDhfdCB7CiAgICAgSW5hZGVxdWF0ZUNvdmVyYWdlLCAvLyBXZSBleGl0ZWQg
YmVjYXVzZSB3ZSBlbmRlZCB1cCBpbiBjb2RlIHRoYXQgZGlkbid0IGhhdmUgcHJvZmlsaW5nIGNv
dmVyYWdlLgogICAgIEFyZ3VtZW50c0VzY2FwZWQsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGFyZ3Vt
ZW50cyBlc2NhcGVkIGJ1dCB3ZSBkaWRuJ3QgZXhwZWN0IHRoZW0gdG8uCiAgICAgRXhvdGljT2Jq
ZWN0TW9kZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugc29tZSBleG90aWMgb2JqZWN0IHRoYXQgd2Ug
d2VyZSBhY2Nlc3Npbmcgd2FzIGluIGFuIGV4b3RpYyBtb2RlIChsaWtlIEFyZ3VtZW50cyB3aXRo
IHNsb3cgYXJndW1lbnRzKS4KLSAgICBOb3RTdHJpbmdPYmplY3QsIC8vIFdlIGV4aXRlZCBiZWNh
dXNlIHdlIHNob3VsZG4ndCBoYXZlIGF0dGVtcHRlZCB0byBvcHRpbWl6ZSBzdHJpbmcgb2JqZWN0
IGFjY2Vzcy4KICAgICBWYXJhcmdzT3ZlcmZsb3csIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGEgdmFy
YXJncyBjYWxsIHBhc3NlZCBtb3JlIGFyZ3VtZW50cyB0aGFuIHdlIGV4cGVjdGVkLgogICAgIFRE
WkZhaWx1cmUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIHdlcmUgaW4gdGhlIFREWiBhbmQgYWNj
ZXNzZWQgdGhlIHZhcmlhYmxlLgogICAgIEhvaXN0aW5nRmFpbGVkLCAvLyBTb21ldGhpbmcgdGhh
dCB3YXMgaG9pc3RlZCBleGl0ZWQuIFNvLCBhc3N1bWUgdGhhdCBob2lzdGluZyBpcyBhIGJhZCBp
ZGVhLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjQwMTAyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDIxLDEyICsyNDIxLDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOiB7CiAgICAg
ICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgU3Ry
aW5nT2JqZWN0VXNlOgotICAgICAgICAgICAgLy8gVGhpcyBhbHNvIGZpbHRlcnMgdGhhdCB0aGUg
U3RyaW5nT2JqZWN0IGhhcyB0aGUgcHJpbW9yZGlhbCBTdHJpbmdPYmplY3QKLSAgICAgICAgICAg
IC8vIHN0cnVjdHVyZS4KLSAgICAgICAgICAgIGZpbHRlcigKLSAgICAgICAgICAgICAgICBub2Rl
LT5jaGlsZDEoKSwKLSAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnN0cmluZ09iamVj
dFN0cnVjdHVyZSgpKSk7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdHJpbmdP
clN0cmluZ09iamVjdFVzZToKICAgICAgICAgY2FzZSBJbnQzMlVzZToKICAgICAgICAgY2FzZSBJ
bnQ1MlJlcFVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyNDAxMDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NT
RVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkRG
R0Nsb2JiZXJTZXQuaCIKICNpbmNsdWRlICJERkdDbG9iYmVyaXplLmgiCiAjaW5jbHVkZSAiREZH
RG9taW5hdG9ycy5oIgotI2luY2x1ZGUgIkRGR0VkZ2VVc2VzU3RydWN0dXJlLmgiCiAjaW5jbHVk
ZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdQaGFzZS5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShy
ZXZpc2lvbiAyNDAxMDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShERkdfSklU
KQogCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RIZWFwLmgiCi0jaW5jbHVkZSAiREZHRWRnZVVzZXNT
dHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0hlYXBMb2Nh
dGlvbi5oIgogI2luY2x1ZGUgIkRGR0xhenlOb2RlLmgiCkBAIC0xMDcsOSArMTA2LDYgQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIC8vIGluZm9ybWF0aW9u
IHRoYXQgY2xvYmJlcml6ZSgpIHBhc3NlcyB0byB3cml0ZSgpIGFuZCBkZWYoKS4gT3RoZXIgY2xp
ZW50cyBvZiBjbG9iYmVyaXplKCkgY2FuCiAgICAgLy8ganVzdCBpZ25vcmUgZGVmKCkgYnkgdXNp
bmcgYSBOb09wQ2xvYmJlcml6ZSBmdW5jdG9yLgogCi0gICAgaWYgKGVkZ2VzVXNlU3RydWN0dXJl
KGdyYXBoLCBub2RlKSkKLSAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJlSUQpOwotICAgIAog
ICAgIC8vIFdlIGFsbG93IHRoZSBydW50aW1lIHRvIHBlcmZvcm0gYSBzdGFjayBzY2FuIGF0IGFu
eSB0aW1lLiBXZSBkb24ndCBtb2RlbCB3aGljaCBub2RlcyBnZXQgaW1wbGVtZW50ZWQKICAgICAv
LyBieSBjYWxscyBpbnRvIHRoZSBydW50aW1lLiBGb3IgZGVidWdnaW5nIHdlIG1pZ2h0IHJlcGxh
Y2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGFueSBub2RlIHdpdGggYSBjYWxsCiAgICAgLy8gdG8g
dGhlIHJ1bnRpbWUsIGFuZCB0aGF0IGNhbGwgbWF5IHdhbGsgc3RhY2suIFRoZXJlZm9yZSwgZWFj
aCBub2RlIG11c3QgcmVhZCgpIGFueXRoaW5nIHRoYXQgYSBzdGFjawpAQCAtMTY1MywxOCArMTY0
OSwxOSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2Fz
ZSBUb1N0cmluZzoKICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoKICAgICAgICAgc3dp
dGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKLSAgICAgICAgY2FzZSBTdHJpbmdPYmpl
Y3RVc2U6Ci0gICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6Ci0gICAgICAgICAg
ICAvLyBUaGVzZSBkb24ndCBkZWYgYSBwdXJlIHZhbHVlLCB1bmZvcnR1bmF0ZWx5LiBJJ2xsIGF2
b2lkIGxvYWQtZWxpbWluYXRpbmcgdGhlc2UgZm9yCi0gICAgICAgICAgICAvLyBub3cuCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAKICAgICAgICAgY2FzZSBDZWxsVXNlOgogICAg
ICAgICBjYXNlIFVudHlwZWRVc2U6CiAgICAgICAgICAgICByZWFkKFdvcmxkKTsKICAgICAgICAg
ICAgIHdyaXRlKEhlYXApOwogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGNhc2UgU3Ry
aW5nT2JqZWN0VXNlOgorICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgorICAg
ICAgICAgICAgLy8gVGhlc2UgdHdvIFN0cmluZ09iamVjdFVzZSdzIGFyZSBwdXJlIGJlY2F1c2Ug
aWYgd2UgZW1pdCB0aGlzIG5vZGUgd2l0aCBlaXRoZXIKKyAgICAgICAgICAgIC8vIG9mIHRoZXNl
IFVzZUtpbmRzLCB3ZSdsbCBmaXJzdCBlbWl0IGEgU3RydWN0dXJlQ2hlY2sgZW5zdXJpbmcgdGhh
dCB3ZSdyZSB0aGUKKyAgICAgICAgICAgIC8vIG9yaWdpbmFsIFN0cmluZyBvciBTdHJpbmdPYmpl
Y3Qgc3RydWN0dXJlLiBUaGVyZWZvcmUsIHdlIGRvbid0IGhhdmUgYW4gb3ZlcnJpZGRlbgorICAg
ICAgICAgICAgLy8gdmFsdWVPZiwgZXRjLgorCiAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAgICAg
ICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlVXNlc1N0cnVjdHVyZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZVVzZXNTdHJ1Y3R1cmUuaAko
cmV2aXNpb24gMjQwMTAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlVXNl
c1N0cnVjdHVyZS5oCShub25leGlzdGVudCkKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHR3JhcGguaCIKLQotbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBFZGdlVXNlc1N0cnVjdHVyZSB7Ci1wdWJsaWM6Ci0g
ICAgRWRnZVVzZXNTdHJ1Y3R1cmUoKQotICAgICAgICA6IG1fcmVzdWx0KGZhbHNlKQotICAgIHsK
LSAgICB9Ci0gICAgCi0gICAgdm9pZCBvcGVyYXRvcigpKE5vZGUqLCBFZGdlIGVkZ2UpCi0gICAg
ewotICAgICAgICBtX3Jlc3VsdCB8PSB1c2VzU3RydWN0dXJlKGVkZ2UudXNlS2luZCgpKTsKLSAg
ICB9Ci0gICAgCi0gICAgYm9vbCByZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdDsgfQot
ICAgIAotcHJpdmF0ZToKLSAgICBib29sIG1fcmVzdWx0OwotfTsKLQotaW5saW5lIGJvb2wgZWRn
ZXNVc2VTdHJ1Y3R1cmUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQotewotICAgIEVkZ2VVc2Vz
U3RydWN0dXJlIGVkZ2VVc2VzU3RydWN0dXJlOwotICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVO
KGdyYXBoLCBub2RlLCBlZGdlVXNlc1N0cnVjdHVyZSk7Ci0gICAgcmV0dXJuIGVkZ2VVc2VzU3Ry
dWN0dXJlLnJlc3VsdCgpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjQwMTAyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1NCwyMCArMjQ1
NCwyMyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIW1fZ3JhcGguY2FuT3B0aW1pemVTdHJpbmdP
YmplY3RBY2Nlc3Mobm9kZS0+b3JpZ2luLnNlbWFudGljKSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCisgICAgICAgIGFkZENoZWNrU3RydWN0dXJlRm9yT3JpZ2luYWxTdHJpbmdPYmpl
Y3RVc2UodXNlS2luZCwgbm9kZS0+b3JpZ2luLCBub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAg
ICAgICBjcmVhdGVUb1N0cmluZzx1c2VLaW5kPihub2RlLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgIGFycmF5TW9kZSA9IEFycmF5TW9kZShBcnJheTo6U3RyaW5nLCBBcnJheTo6UmVhZCk7CiAg
ICAgfQotICAgIAotICAgIHRlbXBsYXRlPFVzZUtpbmQgdXNlS2luZD4KLSAgICBib29sIGlzU3Ry
aW5nT2JqZWN0VXNlKCkKKworICAgIHZvaWQgYWRkQ2hlY2tTdHJ1Y3R1cmVGb3JPcmlnaW5hbFN0
cmluZ09iamVjdFVzZShVc2VLaW5kIHVzZUtpbmQsIGNvbnN0IE5vZGVPcmlnaW4mIG9yaWdpbiwg
Tm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAodXNlS2luZCkgewotICAgICAgICBj
YXNlIFN0cmluZ09iamVjdFVzZToKLSAgICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVz
ZToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHVzZUtp
bmQgPT0gU3RyaW5nT2JqZWN0VXNlIHx8IFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlKTsKKworICAg
ICAgICBTdHJ1Y3R1cmVTZXQgc2V0OworICAgICAgICBzZXQuYWRkKG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKTsK
KyAgICAgICAgaWYgKHVzZUtpbmQgPT0gU3RyaW5nT3JTdHJpbmdPYmplY3RVc2UpCisgICAgICAg
ICAgICBzZXQuYWRkKHZtKCkuc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKKworICAgICAgICBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNO
b25lLCBDaGVja1N0cnVjdHVyZSwgb3JpZ2luLAorICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgu
YWRkU3RydWN0dXJlU2V0KHNldCkpLCBFZGdlKG5vZGUsIENlbGxVc2UpKTsKICAgICB9CiAgICAg
CiAgICAgdGVtcGxhdGU8VXNlS2luZCB1c2VLaW5kPgpAQCAtMjc0OSw2ICsyNzUyLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlU3RyaW5nT2JqZWN0KCkKICAgICAgICAgICAgICYmIG1fZ3JhcGguY2FuT3B0aW1pemVTdHJp
bmdPYmplY3RBY2Nlc3Mobm9kZS0+b3JpZ2luLnNlbWFudGljKSkgeworICAgICAgICAgICAgYWRk
Q2hlY2tTdHJ1Y3R1cmVGb3JPcmlnaW5hbFN0cmluZ09iamVjdFVzZShTdHJpbmdPYmplY3RVc2Us
IG5vZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGZpeEVk
Z2U8U3RyaW5nT2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBub2RlLT5j
b252ZXJ0VG9Ub1N0cmluZygpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjc1Niw2ICsyNzYw
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hv
dWxkU3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3QoKQogICAgICAgICAgICAgJiYgbV9ncmFw
aC5jYW5PcHRpbWl6ZVN0cmluZ09iamVjdEFjY2Vzcyhub2RlLT5vcmlnaW4uc2VtYW50aWMpKSB7
CisgICAgICAgICAgICBhZGRDaGVja1N0cnVjdHVyZUZvck9yaWdpbmFsU3RyaW5nT2JqZWN0VXNl
KFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlLCBub2RlLT5vcmlnaW4sIG5vZGUtPmNoaWxkMSgpLm5v
ZGUoKSk7CiAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlPihub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9Ub1N0cmluZygpOwogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMjg3MSwxMiArMjg3NiwxNCBAQCBwcml2YXRlOgogICAgICAg
ICAKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmdPYmpl
Y3QoKQogICAgICAgICAgICAgJiYgbV9ncmFwaC5jYW5PcHRpbWl6ZVN0cmluZ09iamVjdEFjY2Vz
cyhub2RlLT5vcmlnaW4uc2VtYW50aWMpKSB7CisgICAgICAgICAgICBhZGRDaGVja1N0cnVjdHVy
ZUZvck9yaWdpbmFsU3RyaW5nT2JqZWN0VXNlKFN0cmluZ09iamVjdFVzZSwgbm9kZS0+b3JpZ2lu
LCBub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdPYmpl
Y3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJp
bmdPclN0cmluZ09iamVjdCgpCiAgICAgICAgICAgICAmJiBtX2dyYXBoLmNhbk9wdGltaXplU3Ry
aW5nT2JqZWN0QWNjZXNzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpIHsKKyAgICAgICAgICAgIGFk
ZENoZWNrU3RydWN0dXJlRm9yT3JpZ2luYWxTdHJpbmdPYmplY3RVc2UoU3RyaW5nT3JTdHJpbmdP
YmplY3RVc2UsIG5vZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAg
ICAgIGZpeEVkZ2U8U3RyaW5nT3JTdHJpbmdPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjk3NSwxMiArMjk4MiwxNSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICBjb252ZXJ0U3RyaW5nQWRkVXNlPFN0cmluZ1VzZT4o
bm9kZSwgZWRnZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGguY2FuT3B0aW1pemVTdHJpbmdPYmpl
Y3RBY2Nlc3Mobm9kZS0+b3JpZ2luLnNlbWFudGljKSk7CisgICAgICAgICAgICAgICAgaWYgKCFP
cHRpb25zOjp1c2VDb25jdXJyZW50SklUKCkpCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCht
X2dyYXBoLmNhbk9wdGltaXplU3RyaW5nT2JqZWN0QWNjZXNzKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpOwogICAgICAgICAgICAgICAgIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVTdHJpbmdPYmpl
Y3QoKSkgeworICAgICAgICAgICAgICAgICAgICBhZGRDaGVja1N0cnVjdHVyZUZvck9yaWdpbmFs
U3RyaW5nT2JqZWN0VXNlKFN0cmluZ09iamVjdFVzZSwgbm9kZS0+b3JpZ2luLCBlZGdlLm5vZGUo
KSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRTdHJpbmdBZGRVc2U8U3RyaW5nT2JqZWN0
VXNlPihub2RlLCBlZGdlKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5n
T3JTdHJpbmdPYmplY3QoKSkgeworICAgICAgICAgICAgICAgICAgICBhZGRDaGVja1N0cnVjdHVy
ZUZvck9yaWdpbmFsU3RyaW5nT2JqZWN0VXNlKFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlLCBub2Rl
LT5vcmlnaW4sIGVkZ2Uubm9kZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY29udmVydFN0cmlu
Z0FkZFVzZTxTdHJpbmdPclN0cmluZ09iamVjdFVzZT4obm9kZSwgZWRnZSk7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjQwMTAyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OTAsNyArMTY5
MCw3IEBAIGJvb2wgR3JhcGg6OmlzU3RyaW5nUHJvdG90eXBlTWV0aG9kU2FuZSgKIAogYm9vbCBH
cmFwaDo6Y2FuT3B0aW1pemVTdHJpbmdPYmplY3RBY2Nlc3MoY29uc3QgQ29kZU9yaWdpbiYgY29k
ZU9yaWdpbikKIHsKLSAgICBpZiAoaGFzRXhpdFNpdGUoY29kZU9yaWdpbiwgTm90U3RyaW5nT2Jq
ZWN0KSkKKyAgICBpZiAoaGFzRXhpdFNpdGUoY29kZU9yaWdpbiwgQmFkQ2FjaGUpIHx8IGhhc0V4
aXRTaXRlKGNvZGVPcmlnaW4sIEJhZENvbnN0YW50Q2FjaGUpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQu
Y3BwCShyZXZpc2lvbiAyNDAxMDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsMTMgKzE3NSw2IEBAIEV4aXRNb2RlIG1h
eUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSoKICAgICAgICAgICAgICAgICByZXN1bHQgPSBF
eGl0czsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIC8vIFRoZXNlIGFyZSBzaGFkeSBiZWNhdXNlIHRoZXkgY2hlY2sgdGhlIHN0cnVjdHVyZSBl
dmVuIGlmIHRoZSB0eXBlIG9mIHRoZSBjaGlsZCBub2RlCi0gICAgICAgICAgICAvLyBwYXNzZXMg
dGhlIFN0cmluZ09iamVjdCB0eXBlIGZpbHRlci4KLSAgICAgICAgICAgIGNhc2UgU3RyaW5nT2Jq
ZWN0VXNlOgotICAgICAgICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKLSAgICAg
ICAgICAgICAgICByZXN1bHQgPSBFeGl0czsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjQwMTAyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0Njgs
NyArOTQ2OCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2EKICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCiAgICAgICAg
IHNwZWN1bGF0ZVN0cmluZ09iamVjdChub2RlLT5jaGlsZDEoKSwgb3AxR1BSKTsKLSAgICAgICAg
bV9pbnRlcnByZXRlci5maWx0ZXIobm9kZS0+Y2hpbGQxKCksIFNwZWNTdHJpbmdPYmplY3QpOwog
CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU1dy
YXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWVDZWxsT2Zmc2V0KCkpLCByZXN1bHRHUFIpOwogICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC05NDc5LDE3ICs5NDc4LDEzIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2EKICAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKIAotICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHRHUFIpOwotICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBpc1N0cmluZyA9IG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1cmUoCi0gICAg
ICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsCi0gICAgICAgICAgICByZXN1bHRHUFIsCi0gICAg
ICAgICAgICBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1faml0LnZtKCktPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpOworICAgICAgICBtX2ppdC5sb2FkOChKSVRDb21waWxlcjo6QWRk
cmVzcyhvcDFHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCByZXN1bHRHUFIpOwor
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc1N0cmluZyA9IG1faml0LmJyYW5jaDMyKEpJVENv
bXBpbGVyOjpFcXVhbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOwogCi0g
ICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShub2RlLT5jaGlsZDEoKSwg
cmVzdWx0R1BSKTsKLSAgICAgICAgCisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCkubm9kZSgp
LCBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbTMyKFN0cmluZ09iamVjdFR5cGUpKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29t
cGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWVDZWxs
T2Zmc2V0KCkpLCByZXN1bHRHUFIpOwotICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKwogICAgICAgICBpc1N0cmluZy5saW5rKCZtX2ppdCk7
CiAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwogICAgICAgICBkb25lLmxp
bmsoJm1faml0KTsKQEAgLTEwMTkyLDkgKzEwMTg3LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlU3RyaW5nKEVkZwogICAgIHNwZWN1bGF0ZVN0cmluZyhlZGdlLCBvcGVyYW5kLmdw
cigpKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT2JqZWN0KEVk
Z2UgZWRnZSwgR1BSUmVnIGdwcikKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmlu
Z09iamVjdChFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsR1BSKQogewotICAgIHNwZWN1bGF0ZVN0cmlu
Z09iamVjdEZvclN0cnVjdHVyZShlZGdlLCBKSVRDb21waWxlcjo6QWRkcmVzcyhncHIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKGNlbGxHUFIpLCBlZGdlLCB+U3BlY0NlbGxDaGVjayB8IFNwZWNTdHJp
bmdPYmplY3QsIG1faml0LmJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBTdHJpbmdPYmplY3RUeXBl
KSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09iamVjdChFZGdl
IGVkZ2UpCkBAIC0xMDIwNCwxMSArMTAxOTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVTdHJpbmdPYmplCiAgICAgCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0
aGlzLCBlZGdlKTsKICAgICBHUFJSZWcgZ3ByID0gb3BlcmFuZC5ncHIoKTsKLSAgICBpZiAoIW5l
ZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNTdHJpbmdPYmplY3QpKQotICAgICAgICByZXR1cm47Ci0g
ICAgCiAgICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0KGVkZ2UsIGdwcik7Ci0gICAgbV9pbnRlcnBy
ZXRlci5maWx0ZXIoZWRnZSwgU3BlY1N0cmluZ09iamVjdCk7CiB9CiAKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09yU3RyaW5nT2JqZWN0KEVkZ2UgZWRnZSkKQEAgLTEwMjIx
LDE3ICsxMDIxMiwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPclN0
CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjU3RyaW5nIHwgU3BlY1N0cmluZ09i
amVjdCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmVJRCh0
aGlzKTsKLSAgICBHUFJSZWcgc3RydWN0dXJlSURHUFIgPSBzdHJ1Y3R1cmVJRC5ncHIoKTsKKyAg
ICBHUFJUZW1wb3JhcnkgdHlwZVRlbXAodGhpcyk7CisgICAgR1BSUmVnIHR5cGVHUFIgPSB0eXBl
VGVtcC5ncHIoKTsKIAotICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhncHIs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZUlER1BSKTsgCi0gICAgSklU
Q29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKAotICAg
ICAgICBKSVRDb21waWxlcjo6RXF1YWwsCi0gICAgICAgIHN0cnVjdHVyZUlER1BSLCAKLSAgICAg
ICAgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShtX2ppdC52bSgpLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKTsKLSAgICAKLSAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1
cmUoZWRnZSwgc3RydWN0dXJlSURHUFIpOwotICAgIAorICAgIG1faml0LmxvYWQ4KEpJVENvbXBp
bGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHR5cGVHUFIp
OworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2gzMihKSVRD
b21waWxlcjo6RXF1YWwsIHR5cGVHUFIsIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSk7CisgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChncHIp
LCBlZGdlLm5vZGUoKSwgbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCB0eXBl
R1BSLCBUcnVzdGVkSW1tMzIoU3RyaW5nT2JqZWN0VHlwZSkpKTsKICAgICBpc1N0cmluZy5saW5r
KCZtX2ppdCk7CiAgICAgCiAgICAgbV9pbnRlcnByZXRlci5maWx0ZXIoZWRnZSwgU3BlY1N0cmlu
ZyB8IFNwZWNTdHJpbmdPYmplY3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjQwMTAyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMx
LDggKzE2MzEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdPck90aGVyKEVk
Z2UpOwogICAgIHZvaWQgc3BlY3VsYXRlTm90U3RyaW5nVmFyKEVkZ2UpOwogICAgIHZvaWQgc3Bl
Y3VsYXRlTm90U3ltYm9sKEVkZ2UpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFN0cnVjdHVyZUxv
Y2F0aW9uVHlwZT4KLSAgICB2b2lkIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShF
ZGdlLCBTdHJ1Y3R1cmVMb2NhdGlvblR5cGUpOwogICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nT2Jq
ZWN0KEVkZ2UsIEdQUlJlZyk7CiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdPYmplY3QoRWRnZSk7
CiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdChFZGdlKTsKQEAgLTI2MDQs
MjAgKzI2MDIsNiBAQCBwcml2YXRlOgogICAgIEdQUlJlZyBtX2dwck9ySW52YWxpZDsKIH07CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFN0cnVjdHVyZUxvY2F0aW9uVHlwZT4KLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShFZGdlIGVkZ2UsIFN0cnVj
dHVyZUxvY2F0aW9uVHlwZSBzdHJ1Y3R1cmVMb2NhdGlvbikKLXsKLSAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cmluZ09iamVjdFN0cnVjdHVyZSA9Ci0gICAgICAgIG1faml0LmdyYXBoKCkucmVn
aXN0ZXJTdHJ1Y3R1cmUobV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdp
bi5zZW1hbnRpYyktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKTsKLSAgICAKLSAgICBpZiAoIW1f
c3RhdGUuZm9yTm9kZShlZGdlKS5tX3N0cnVjdHVyZS5pc1N1YnNldE9mKFJlZ2lzdGVyZWRTdHJ1
Y3R1cmVTZXQoc3RyaW5nT2JqZWN0U3RydWN0dXJlKSkpIHsKLSAgICAgICAgc3BlY3VsYXRpb25D
aGVjaygKLSAgICAgICAgICAgIE5vdFN0cmluZ09iamVjdCwgSlNWYWx1ZVJlZ3MoKSwgMCwKLSAg
ICAgICAgICAgIG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1cmUoCi0gICAgICAgICAgICAgICAgSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLCBzdHJ1Y3R1cmVMb2NhdGlvbiwgc3RyaW5nT2JqZWN0U3RydWN0
dXJlKSk7Ci0gICAgfQotfQotCiAjZGVmaW5lIERGR19UWVBFX0NIRUNLX1dJVEhfRVhJVF9LSU5E
KGV4aXRLaW5kLCBzb3VyY2UsIGVkZ2UsIHR5cGVzUGFzc2VkVGhyb3VnaCwganVtcFRvRmFpbCkg
ZG8geyBcCiAgICAgICAgIEpTVmFsdWVTb3VyY2UgX2R0Y19zb3VyY2UgPSAoc291cmNlKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIEVkZ2UgX2R0Y19lZGdlID0gKGVkZ2Up
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkocmV2aXNpb24gMjQwMTAyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2OCwy
NyArMjY4LDkgQEAgaW5saW5lIGJvb2wgaXNDZWxsKFVzZUtpbmQga2luZCkKICAgICB9CiB9CiAK
LS8vIFJldHVybnMgdHJ1ZSBpZiBpdCB1c2VzIHN0cnVjdHVyZSBpbiBhIHdheSB0aGF0IGNvdWxk
IGJlIGNsb2JiZXJlZCBieQotLy8gdGhpbmdzIHRoYXQgY2hhbmdlIHRoZSBzdHJ1Y3R1cmUuCi1p
bmxpbmUgYm9vbCB1c2VzU3RydWN0dXJlKFVzZUtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtp
bmQpIHsKLSAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKLSAgICBjYXNlIFN0cmluZ09yU3RyaW5n
T2JqZWN0VXNlOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCiAvLyBSZXR1cm5zIHRydWUgaWYgd2UndmUgYWxyZWFk
eSBndWFyYW50ZWVkIHRoZSB0eXBlIAogaW5saW5lIGJvb2wgYWxyZWFkeUNoZWNrZWQoVXNlS2lu
ZCBraW5kLCBTcGVjdWxhdGVkVHlwZSB0eXBlKQogewotICAgIC8vIElmIHRoZSBjaGVjayBpbnZv
bHZlcyB0aGUgc3RydWN0dXJlIHRoZW4gd2UgbmVlZCB0byBrbm93IG1vcmUgdGhhbiBqdXN0IHRo
ZSB0eXBlIHRvIGJlIHN1cmUKLSAgICAvLyB0aGF0IHRoZSBjaGVjayBpcyBkb25lLgotICAgIGlm
ICh1c2VzU3RydWN0dXJlKGtpbmQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCiAgICAg
cmV0dXJuICEodHlwZSAmIH50eXBlRmlsdGVyRm9yKGtpbmQpKTsKIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjQw
MTAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MzI2LDI2ICs2MzI2LDI2IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgU3RyaW5nT2JqZWN0VXNlOiB7CiAgICAgICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwo
bV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCksIGNlbGwpOwotICAgICAgICAgICAgbV9pbnRlcnByZXRlci5m
aWx0ZXIobV9ub2RlLT5jaGlsZDEoKSwgU3BlY1N0cmluZ09iamVjdCk7Ci0gICAgICAgICAgICAK
ICAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTV3Jh
cHBlck9iamVjdF9pbnRlcm5hbFZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOiB7
CiAgICAgICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7Ci0g
ICAgICAgICAgICBMVmFsdWUgc3RydWN0dXJlSUQgPSBtX291dC5sb2FkMzIoY2VsbCwgbV9oZWFw
cy5KU0NlbGxfc3RydWN0dXJlSUQpOworICAgICAgICAgICAgTFZhbHVlIHR5cGUgPSBtX291dC5s
b2FkOFplcm9FeHQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb1R5cGUpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RTdHJpbmcgPSBtX291dC5uZXdCbG9j
aygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3Qmxv
Y2soKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2ltcGxlUmVz
dWx0ID0gbV9vdXQuYW5jaG9yKGNlbGwpOwogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAg
ICAgICAgICAgICAgIG1fb3V0LmVxdWFsKHN0cnVjdHVyZUlELCBtX291dC5jb25zdEludDMyKHZt
KCkuc3RyaW5nU3RydWN0dXJlLT5pZCgpKSksCisgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwo
dHlwZSwgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdUeXBlKSksCiAgICAgICAgICAgICAgICAgdW5z
dXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RTdHJpbmcpKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhub3RTdHJpbmcs
IGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1
Y3R1cmVJRChtX25vZGUtPmNoaWxkMSgpLCBzdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICBzcGVj
dWxhdGUoCisgICAgICAgICAgICAgICAgQmFkVHlwZSwganNWYWx1ZVZhbHVlKGNlbGwpLCBtX25v
ZGUtPmNoaWxkMSgpLm5vZGUoKSwKKyAgICAgICAgICAgICAgICBtX291dC5ub3RFcXVhbCh0eXBl
LCBtX291dC5jb25zdEludDMyKFN0cmluZ09iamVjdFR5cGUpKSk7CiAgICAgICAgICAgICBWYWx1
ZUZyb21CbG9jayB1bmJveGVkUmVzdWx0ID0gbV9vdXQuYW5jaG9yKAogICAgICAgICAgICAgICAg
IG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU1dyYXBwZXJPYmplY3RfaW50ZXJuYWxWYWx1
ZSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpAQCAtMTYwNTEsNDkg
KzE2MDUxLDQ0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAg
ICAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JDZWxsKGVkZ2UsIGxvd0NlbGwoZWRnZSkpOwot
ICAgICAgICBtX2ludGVycHJldGVyLmZpbHRlcihlZGdlLCBTcGVjU3RyaW5nT2JqZWN0KTsKICAg
ICB9CiAgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdChFZGdlIGVk
Z2UpCiAgICAgewogICAgICAgICBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRn
ZSwgU3BlY1N0cmluZyB8IFNwZWNTdHJpbmdPYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIExWYWx1ZSBjZWxsQmFzZSA9IGxvd0NlbGwoZWRnZSk7CisgICAgICAgIGlmICgh
bV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjU3RyaW5nIHwgU3BlY1N0cmlu
Z09iamVjdCkpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBMQmFzaWNC
bG9jayBub3RTdHJpbmcgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBj
b250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAKLSAgICAgICAgTFZhbHVl
IHN0cnVjdHVyZUlEID0gbV9vdXQubG9hZDMyKGxvd0NlbGwoZWRnZSksIG1faGVhcHMuSlNDZWxs
X3N0cnVjdHVyZUlEKTsKKyAgICAgICAgTFZhbHVlIHR5cGUgPSBtX291dC5sb2FkOFplcm9FeHQz
MihjZWxsQmFzZSwgbV9oZWFwcy5KU0NlbGxfdHlwZUluZm9UeXBlKTsKICAgICAgICAgbV9vdXQu
YnJhbmNoKAotICAgICAgICAgICAgbV9vdXQuZXF1YWwoc3RydWN0dXJlSUQsIG1fb3V0LmNvbnN0
SW50MzIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUtPmlkKCkpKSwKKyAgICAgICAgICAgIG1fb3V0LmVx
dWFsKHR5cGUsIG1fb3V0LmNvbnN0SW50MzIoU3RyaW5nVHlwZSkpLAogICAgICAgICAgICAgdW5z
dXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RTdHJpbmcpKTsKICAgICAgICAgCiAgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8obm90U3RyaW5nLCBjb250aW51
YXRpb24pOwotICAgICAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmVJRChlZGdl
LCBzdHJ1Y3R1cmVJRCk7CisgICAgICAgIHNwZWN1bGF0ZSgKKyAgICAgICAgICAgIEJhZFR5cGUs
IGpzVmFsdWVWYWx1ZShjZWxsQmFzZSksIGVkZ2Uubm9kZSgpLAorICAgICAgICAgICAgbV9vdXQu
bm90RXF1YWwodHlwZSwgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdPYmplY3RUeXBlKSkpOwogICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAogICAgICAgICBtX291dC5h
cHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgCiAgICAgICAgIG1faW50
ZXJwcmV0ZXIuZmlsdGVyKGVkZ2UsIFNwZWNTdHJpbmcgfCBTcGVjU3RyaW5nT2JqZWN0KTsKICAg
ICB9CiAgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JDZWxsKEVkZ2UgZWRn
ZSwgTFZhbHVlIGNlbGwpCiAgICAgewotICAgICAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JT
dHJ1Y3R1cmVJRChlZGdlLCBtX291dC5sb2FkMzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0
dXJlSUQpKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JT
dHJ1Y3R1cmVJRChFZGdlIGVkZ2UsIExWYWx1ZSBzdHJ1Y3R1cmVJRCkKLSAgICB7Ci0gICAgICAg
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RyaW5nT2JqZWN0U3RydWN0dXJlID0KLSAgICAgICAgICAg
IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSk7Ci0KLSAgICAgICAg
aWYgKGFic3RyYWN0U3RydWN0dXJlKGVkZ2UpLmlzU3Vic2V0T2YoUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldChzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSkKKyAgICAgICAgaWYgKCFtX2ludGVycHJldGVy
Lm5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNTdHJpbmdPYmplY3QpKQogICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAKLSAgICAgICAgc3BlY3VsYXRlKAotICAgICAgICAgICAgTm90U3RyaW5n
T2JqZWN0LCBub1ZhbHVlKCksIDAsCi0gICAgICAgICAgICBtX291dC5ub3RFcXVhbChzdHJ1Y3R1
cmVJRCwgd2Vha1N0cnVjdHVyZUlEKHN0cmluZ09iamVjdFN0cnVjdHVyZSkpKTsKLSAgICB9CiAK
KyAgICAgICAgTFZhbHVlIHR5cGUgPSBtX291dC5sb2FkOFplcm9FeHQzMihjZWxsLCBtX2hlYXBz
LkpTQ2VsbF90eXBlSW5mb1R5cGUpOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFs
dWUoY2VsbCksIGVkZ2UsIFNwZWNTdHJpbmdPYmplY3QsIG1fb3V0Lm5vdEVxdWFsKHR5cGUsIG1f
b3V0LmNvbnN0SW50MzIoU3RyaW5nT2JqZWN0VHlwZSkpKTsKKyAgICB9CisgICAgCiAgICAgdm9p
ZCBzcGVjdWxhdGVTeW1ib2woRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKICAgICB7CiAgICAgICAg
IEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwgU3BlY1N5bWJvbCwgaXNO
b3RTeW1ib2woY2VsbCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGUuY3BwCShyZXZpc2lvbiAyNDAxMDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDcgQEAgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQwogICAgIENBU0UoSlNXZWFrTWFwVHlwZSkK
ICAgICBDQVNFKEpTV2Vha1NldFR5cGUpCiAgICAgQ0FTRShXZWJBc3NlbWJseVRvSlNDYWxsZWVU
eXBlKQorICAgIENBU0UoU3RyaW5nT2JqZWN0VHlwZSkKICAgICBDQVNFKE1heEpTVHlwZSkKICAg
ICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkocmV2aXNp
b24gMjQwMTAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTExMCwxMCArMTEwLDEwIEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7
CiAgICAgSlNTZXRUeXBlLAogICAgIEpTV2Vha01hcFR5cGUsCiAgICAgSlNXZWFrU2V0VHlwZSwK
LQogICAgIFdlYkFzc2VtYmx5VG9KU0NhbGxlZVR5cGUsCisgICAgU3RyaW5nT2JqZWN0VHlwZSwK
IAotICAgIExhc3RKU0NPYmplY3RUeXBlID0gV2ViQXNzZW1ibHlUb0pTQ2FsbGVlVHlwZSwgLy8g
VGhpcyBpcyB0aGUgbGFzdCAiSlNDIiBPYmplY3QgdHlwZS4gQWZ0ZXIgdGhpcywgd2UgaGF2ZSBl
bWJlZGRlcidzIChlLmcuLCBXZWJDb3JlKSBleHRlbmRlZCBvYmplY3QgdHlwZXMuCisgICAgTGFz
dEpTQ09iamVjdFR5cGUgPSBTdHJpbmdPYmplY3RUeXBlLCAvLyBUaGlzIGlzIHRoZSBsYXN0ICJK
U0MiIE9iamVjdCB0eXBlLiBBZnRlciB0aGlzLCB3ZSBoYXZlIGVtYmVkZGVyJ3MgKGUuZy4sIFdl
YkNvcmUpIGV4dGVuZGVkIG9iamVjdCB0eXBlcy4KICAgICBNYXhKU1R5cGUgPSAwYjExMTExMTEx
LAogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmgJKHJldmlzaW9uIDI0MDEwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhTdHJpbmdPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCiBw
cm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuaAkocmV2aXNpb24gMjQwMTAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKFN0cmluZ09iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
ICAgICB9CiAKICAgICBERUNMQVJFX0lORk87Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>