<?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>213069</bug_id>
          
          <creation_ts>2020-06-10 23:15:10 -0700</creation_ts>
          <short_desc>[JSC] Return DisposableCallSiteIndex when destroying GCAwareJITStubRoutineWithExceptionHandler</short_desc>
          <delta_ts>2020-06-11 13:11:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1661518</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-10 23:15:10 -0700</bug_when>
    <thetext>[JSC] Return DisposableCallSiteIndex when destroying GCAwareJITStubRoutineWithExceptionHandler</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661520</commentid>
    <comment_count>1</comment_count>
      <attachid>401622</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-10 23:27:05 -0700</bug_when>
    <thetext>Created attachment 401622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661521</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-10 23:27:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/64205186&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661522</commentid>
    <comment_count>3</comment_count>
      <attachid>401622</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-10 23:31:19 -0700</bug_when>
    <thetext>Comment on attachment 401622
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGCodeOriginPool.h:51
&gt; +    HashSet&lt;unsigned, WTF::IntHash&lt;unsigned&gt;, WTF::UnsignedWithZeroKeyHashTraits&lt;unsigned&gt;&gt; m_callSiteIndexFreeList;

I don&apos;t know why it is HashSet. Maybe, we can just make it Vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661525</commentid>
    <comment_count>4</comment_count>
      <attachid>401624</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-10 23:45:34 -0700</bug_when>
    <thetext>Created attachment 401624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661536</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-11 01:34:54 -0700</bug_when>
    <thetext>mac-debug-wk1 is recently crashing. https://results.webkit.org/?suite=layout-tests&amp;test=js%2Fdom%2Fpromise-stack-overflow.html And it seems that crash is unrelated to this.

https://build.webkit.org/results/Apple-Catalina-Release-WK1-Tests/r262781%20(6547)/js/dom/promise-stack-overflow-crash-log.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661619</commentid>
    <comment_count>6</comment_count>
      <attachid>401624</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-11 09:28:48 -0700</bug_when>
    <thetext>Comment on attachment 401624
Patch

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

&gt; Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:132
&gt; +    m_codeOriginPool = nullptr;

When is this function called?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661693</commentid>
    <comment_count>7</comment_count>
      <attachid>401624</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-11 12:33:39 -0700</bug_when>
    <thetext>Comment on attachment 401624
Patch

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

&gt;&gt; Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:132
&gt;&gt; +    m_codeOriginPool = nullptr;
&gt; 
&gt; When is this function called?

This function is called when CodeBlock is destroying whole JIT related data.

1. CodeBlock itself is getting destroyed.
2. Destroying entire JITData via resetJITData

So, we can just make it nullptr, since everything will be destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661698</commentid>
    <comment_count>8</comment_count>
      <attachid>401624</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-11 12:38:14 -0700</bug_when>
    <thetext>Comment on attachment 401624
Patch

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

r=me

&gt;&gt;&gt; Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:132
&gt;&gt;&gt; +    m_codeOriginPool = nullptr;
&gt;&gt; 
&gt;&gt; When is this function called?
&gt; 
&gt; This function is called when CodeBlock is destroying whole JIT related data.
&gt; 
&gt; 1. CodeBlock itself is getting destroyed.
&gt; 2. Destroying entire JITData via resetJITData
&gt; 
&gt; So, we can just make it nullptr, since everything will be destroyed.

Right. That&apos;s what I remembered, just wanted to make sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661714</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-11 13:11:38 -0700</bug_when>
    <thetext>Committed r262920: &lt;https://trac.webkit.org/changeset/262920&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401624.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401622</attachid>
            <date>2020-06-10 23:27:05 -0700</date>
            <delta_ts>2020-06-10 23:45:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213069-20200610232704.patch</filename>
            <type>text/plain</type>
            <size>40215</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OWRkNDRkMjhlOGViNGNjMWE4OWRlOTZhOTQxYjZlMmYyZDVjNmFlLi5mODYzMTA4NWU5NjQ0ZmMz
YzBmMTU3NDg4YjBmN2RhMWFkZGU5ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NiBAQAorMjAyMC0wNi0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJldHVybiBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCB3aGVuIGRl
c3Ryb3lpbmcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzA2OQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjQyMDUxODY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW5zaWRlIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNl
cHRpb25IYW5kbGVyOjpvYnNlcnZlWmVyb1JlZkNvdW50LCB3ZSBhcmUgcmV0dXJuaW5nIERpc3Bv
c2FibGVDYWxsU2l0ZUluZGV4IHRvIGZyZWVsaXN0LgorICAgICAgICBIb3dldmVyLCBHQ0F3YXJl
SklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6b2JzZXJ2ZVplcm9SZWZDb3VudCBj
YW4gYmUgY2FsbGVkIGV2ZW4gaWYgdGhlIGNvZGUgb2YgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0
aEV4Y2VwdGlvbkhhbmRsZXIgaXMKKyAgICAgICAgb24gdGhlIHN0YWNrLiBMZXQncyBjb25zaWRl
ciB0aGUgZm9sbG93aW5nIHNjZW5hcmlvLgorCisgICAgICAgICAgICAxLiBFeGVjdXRlIEdDQXdh
cmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyJ3MgY29kZS4gU2V0IENhbGxTaXRl
SW5kZXggdG8gdGhlIHN0YWNrLgorICAgICAgICAgICAgMi4gRXhlY3V0ZSBtb3JlIGNvZGUuICgx
KSdzIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyJ3MgY29kZSBpcyBv
biB0aGUgc3RhY2suCisgICAgICAgICAgICAzLiAoMSkncyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVX
aXRoRXhjZXB0aW9uSGFuZGxlcidzIHJlZmNvdW50IGJlY29tZXMgemVyby4KKyAgICAgICAgICAg
IDQuIENhbGxTaXRlSW5kZXggb2YgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhh
bmRsZXIgaXMgcmV0dXJuZWQuCisgICAgICAgICAgICA1LiBFeGVjdXRlIFN0YWNrVmlzaXRvciB0
byBjb25zdHJ1Y3QgZnJhbWVzLiBCdXQgd2UgY2Fubm90IGZpbmQgQ29kZU9yaWdpbiBjb3JyZXNw
b25kaW5nIHRvIENhbGxTaXRlSW5kZXggc3RvcmVkIGluICgxKSBzaW5jZSBpdCBpcyBhbHJlYWR5
IHJldHVybmVkLgorCisgICAgICAgIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IHNob3VsZCBiZSBy
ZXR1cm5lZCBhZnRlciBlbnN1cmluZyB0aGF0IEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNl
cHRpb25IYW5kbGVyJ3MgY29kZSBpcyBub3Qgb24gdGhlIHN0YWNrLiBEZXRlY3RpbmcgdGhpcyBp
cyB0aGUgZnVuY3Rpb25hbGl0eQorICAgICAgICB3aGF0IEdDQXdhcmVKSVRTdHViUm91dGluZVdp
dGhFeGNlcHRpb25IYW5kbGVyIGNhbiBvZmZlci4gSXQgaXMgZGVzdHJveWVkIGFmdGVyIGVuc3Vy
aW5nIHRoYXQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIncyBjb2Rl
IGlzIG5vdCBvbiB0aGUgc3RhY2suCisKKyAgICAgICAgVGhpcyBwYXRjaCBkZWxheXMgRGlzcG9z
YWJsZUNhbGxTaXRlSW5kZXggcmV0dXJuaW5nIHVudGlsIHdlIGRlc3Ryb3kgb3duZXIgR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIuIEJ1dCBpdCBpcyBwb3NzaWJsZSB0
aGF0IENvZGVCbG9jayogY29ycmVzcG9uZGluZyB0bworICAgICAgICBHQ0F3YXJlSklUU3R1YlJv
dXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBpcyBhbHJlYWR5IGRlc3Ryb3llZC4gVG8gYXZvaWQg
dGhpcyBjb25kaXRpb24sIHdlIGV4dHJhY3QgQ29kZU9yaWdpbnMgdmVjdG9yIGFzIFJlZjxERkc6
OkNvZGVPcmlnaW5Qb29sPiBhbmQga2VlcCBpdCBhbGl2ZSBmcm9tCisgICAgICAgIEdDQXdhcmVK
SVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIHRvby4gQW5kIHNpbmNlIENvZGVPcmln
aW4gYWRkaXRpb24gLyByZW1vdmFsIGhhcHBlbnMgb25seSBmcm9tIHRoZSBtYWluIHRocmVhZCBh
ZnRlciBmaW5pc2hpbmcgdGhlIGNvbXBpbGF0aW9uLCBhbmQKKyAgICAgICAgR0NBd2FyZUpJVFN0
dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIncyBkZXN0cnVjdG9yIGlzIGNhbGxlZCBmcm9t
IHRoZSBIZWFwJ3MgZmluYWxpemVyLCB3aGljaCBtdXN0IGJlIGV4ZWN1dGVkIGZyb20gdGhlIG1h
aW4gdGhyZWFkLCB3ZSBjYW4ganVzdCBtb2RpZnkgaXQgd2l0aG91dCBhIGxvY2suCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bmV3RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUluZGV4KToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb2RlT3JpZ2lucyk6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y29kZU9yaWdpbik6CisgICAg
ICAgICogZGZnL0RGR0NvZGVPcmlnaW5Qb29sLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkRG
Rzo6Q29kZU9yaWdpblBvb2w6OmFkZENvZGVPcmlnaW4pOgorICAgICAgICAoSlNDOjpERkc6OkNv
ZGVPcmlnaW5Qb29sOjphZGRVbmlxdWVDYWxsU2l0ZUluZGV4KToKKyAgICAgICAgKEpTQzo6REZH
OjpDb2RlT3JpZ2luUG9vbDo6bGFzdENhbGxTaXRlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZH
OjpDb2RlT3JpZ2luUG9vbDo6YWRkRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgpOgorICAgICAgICAo
SlNDOjpERkc6OkNvZGVPcmlnaW5Qb29sOjpyZW1vdmVEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCk6
CisgICAgICAgIChKU0M6OkRGRzo6Q29kZU9yaWdpblBvb2w6OnNocmlua1RvRml0KToKKyAgICAg
ICAgKiBkZmcvREZHQ29kZU9yaWdpblBvb2wuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6
Q29kZU9yaWdpblBvb2w6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q29kZU9yaWdpblBv
b2w6OmdldCk6CisgICAgICAgIChKU0M6OkRGRzo6Q29kZU9yaWdpblBvb2w6OnNpemUgY29uc3Qp
OgorICAgICAgICAqIGRmZy9ERkdDb21tb25EYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpD
b21tb25EYXRhOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6OkRGRzo6Q29tbW9uRGF0YTo6
YWRkQ29kZU9yaWdpbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Q29tbW9uRGF0YTo6
YWRkVW5pcXVlQ2FsbFNpdGVJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Q29t
bW9uRGF0YTo6bGFzdENhbGxTaXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZH
OjpDb21tb25EYXRhOjphZGREaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkRGRzo6Q29tbW9uRGF0YTo6cmVtb3ZlRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgp
OiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdDb21tb25EYXRhLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Q29tbW9uRGF0YTo6Q29tbW9uRGF0YSk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBp
bGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6ZXhjZXB0aW9uQ2hlY2sp
OgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJ
VENvbXBpbGVyOjphZGRDYWxsU2l0ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlk
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5VmFs
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0
cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEaXJl
Y3RDYWxsT3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlVGFpbENhbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJnc1NwcmVhZCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3RWYXJhcmdzKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxFdmFsKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUluQnlJZCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbnN0YW5jZU9mKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUxvZ1NoYWRvd0NoaWNr
ZW5UYWlsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QnlJZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldEJ5SWRXaXRoVGhpcyk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmxhenlTbG93UGF0aCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhbGxQcmVmbGlnaHQpOgorICAg
ICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGwuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbGxT
aXRlSW5kZXhGb3JDb2RlT3JpZ2luKToKKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0
aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlv
bkhhbmRsZXI6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKToKKyAg
ICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6On5H
Q0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChKU0M6
OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjphYm91dFRvRGllKToK
KyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6
Om9ic2VydmVaZXJvUmVmQ291bnQpOgorICAgICAgICAqIGppdC9HQ0F3YXJlSklUU3R1YlJvdXRp
bmUuaDoKKwogMjAyMC0wNi0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIFtKU0NdIEpTQ2FsbGJhY2tPYmplY3Q6OmRlbGV0ZVByb3BlcnR5IHNob3VsZCBy
ZWRpcmVjdCB0byBQYXJlbnQ6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCBpZiBwcm9wZXJ0eU5hbWUg
aXMgaW5kZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTg1YjI5MWJiNmI3NzA2
NGJiOTIzNzdhZmRmMGRkZTVkZTUyM2Q5NC4uY2FkYzkwYTBiNWRiMDhjZWE0YzRhZDc4NDI3ZDhh
ZDI5MDFmMmI5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MTIsNiArMTgx
Miw3IEBACiAJCUUzM0Y1MDgxMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRjUwN0Yx
Qjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzRjUwODcxQjg0NDlFRjAwNDEzODU2
IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNGNTA4NjFCODQ0OUVGMDA0MTM4NTYgLyog
SlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKIAkJRTM0MDBFQzEyMkEx
Q0M3QjAwOURFRDU0IC8qIEZ1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNDAwRUMwMjJBMUNDNzgwMDlERUQ1
NCAvKiBGdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmggKi87IH07CisJCUUzNDlBNzgxMjQ5MUYx
NjEwMDFCQTMzNiAvKiBERkdDb2RlT3JpZ2luUG9vbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0OUE3ODAyNDkxRjE1QTAwMUJBMzM2IC8qIERGR0Nv
ZGVPcmlnaW5Qb29sLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTM0RTY1NzUyMDY2OEVBQTAwRkI4MUFDIC8qIFBhcnNlSGFzaC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0RTY1NzMyMDY2OEU4RDAw
RkI4MUFDIC8qIFBhcnNlSGFzaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzNEVEQkY3MURCNUZGQzkwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEVEQkY2
MURCNUZGQzEwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzRGOTMwRTIzMjJEODgyMDAyQjhEQjQgLyog
SlNHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNEY5MzBDMjMyMkQ4ODEwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5oICovOyB9OwpAQCAt
NDk3Miw2ICs0OTczLDggQEAKIAkJRTMzRjUwODYxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJu
YWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzM0Y1MDg4MUI4NDRBMUEwMDQxMzg1NiAvKiBJbnRlcm5hbFByb21pc2VD
b25zdHJ1Y3Rvci5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IElu
dGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzQwMEVDMDIyQTFDQzc4MDA5REVENTQgLyogRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzNDlBNzdGMjQ5MUYxNTkwMDFCQTMzNiAvKiBERkdDb2RlT3Jp
Z2luUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDb2RlT3JpZ2luUG9vbC5jcHA7IHBh
dGggPSBkZmcvREZHQ29kZU9yaWdpblBvb2wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzQ5QTc4MDI0OTFGMTVBMDAxQkEzMzYgLyogREZHQ29kZU9yaWdpblBvb2wuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHQ29kZU9yaWdpblBvb2wuaDsgcGF0aCA9IGRmZy9ERkdDb2RlT3JpZ2lu
UG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzRFNjU3MzIwNjY4RThEMDBG
QjgxQUMgLyogUGFyc2VIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBh
cnNlSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzRFNjU3NDIwNjY4RThF
MDBGQjgxQUMgLyogUGFyc2VIYXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBhcnNlSGFzaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEVE
QkY2MURCNUZGQzEwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRnJhbWVUcmFjZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03ODY0LDYgKzc4NjcsOCBAQAogCQkJCUE3N0E0MjNCMTdBMEJCRkQwMEE4REI4MSAvKiBE
RkdDbG9iYmVyU2V0LmggKi8sCiAJCQkJMEYzQzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Ns
b2JiZXJzRXhpdFN0YXRlLmNwcCAqLywKIAkJCQkwRjNDMUYxOTFCODY4RTc5MDBBQkIwOEIgLyog
REZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLywKKwkJCQlFMzQ5QTc3RjI0OTFGMTU5MDAxQkEzMzYg
LyogREZHQ29kZU9yaWdpblBvb2wuY3BwICovLAorCQkJCUUzNDlBNzgwMjQ5MUYxNUEwMDFCQTMz
NiAvKiBERkdDb2RlT3JpZ2luUG9vbC5oICovLAogCQkJCTBGMDQzOTZCMUIwM0RDMEIwMDk1OThC
NyAvKiBERkdDb21iaW5lZExpdmVuZXNzLmNwcCAqLywKIAkJCQkwRjA0Mzk2QzFCMDNEQzBCMDA5
NTk4QjcgLyogREZHQ29tYmluZWRMaXZlbmVzcy5oICovLAogCQkJCTBGQjRCNTFBMTZCNjI3NzIw
MDNGNjk2QiAvKiBERkdDb21tb24uY3BwICovLApAQCAtOTMyNyw2ICs5MzMyLDcgQEAKIAkJCQlB
NzdBNDI0MDE3QTBCQkZEMDBBOERCODEgLyogREZHQ2xvYmJlcml6ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTc3QTQyNDIxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Nsb2JiZXJTZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGM0MxRjFCMUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM0OUE3ODEyNDkxRjE2MTAwMUJBMzM2IC8qIERG
R0NvZGVPcmlnaW5Qb29sLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA0Mzk2RTFCMDNEQzBCMDA5
NTk4QjcgLyogREZHQ29tYmluZWRMaXZlbmVzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5
NEQxNEMzQ0Q0QzAwN0MzREIxIC8qIERGR0NvbW1vbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
QTBBMzIxNzBENDBCRjAwQkI3MjJDIC8qIERGR0NvbW1vbkRhdGEuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDliYjcyY2I2ZDUyOTUzNjZmNjE4OGM2YTVk
NmJmZDQ2ZjdjNmQ0ZmEuLjMzZGIzZmIwY2MxNzllZGJhMWM4MmVlMWI0ZmU2YzI1NTcxZmY3NjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTMzMiw2ICszMzIsNyBAQCBkZmcvREZH
Q2xlYW5VcFBoYXNlLmNwcAogZGZnL0RGR0Nsb2JiZXJTZXQuY3BwCiBkZmcvREZHQ2xvYmJlcml6
ZS5jcHAKIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKK2RmZy9ERkdDb2RlT3JpZ2luUG9v
bC5jcHAKIGRmZy9ERkdDb21iaW5lZExpdmVuZXNzLmNwcAogZGZnL0RGR0NvbW1vbi5jcHAKIGRm
Zy9ERkdDb21tb25EYXRhLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAppbmRleCAzZDBlNTc2YmJmNDZlOWQzYTRjYWU2ZGQwZDMxZTc3Mjc3YjM5MjFj
Li45NTAyMzg5OTlkYjFiZjA0YmEzNmFhMmE5NTIyOTA3NjI1MGVhY2FmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTg3NSw3ICsxODc1LDcg
QEAgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggQ29kZUJsb2NrOjpuZXdFeGNlcHRpb25IYW5kbGlu
Z0NhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmQKICAgICBSRUxFQVNFX0FTU0VSVChjYW5HZXRDb2Rl
T3JpZ2luKG9yaWdpbmFsQ2FsbFNpdGUpKTsKICAgICBBU1NFUlQoISFoYW5kbGVyRm9ySW5kZXgo
b3JpZ2luYWxDYWxsU2l0ZS5iaXRzKCkpKTsKICAgICBDb2RlT3JpZ2luIG9yaWdpbmFsT3JpZ2lu
ID0gY29kZU9yaWdpbihvcmlnaW5hbENhbGxTaXRlKTsKLSAgICByZXR1cm4gbV9qaXRDb2RlLT5k
ZmdDb21tb24oKS0+YWRkRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgob3JpZ2luYWxPcmlnaW4pOwor
ICAgIHJldHVybiBtX2ppdENvZGUtPmRmZ0NvbW1vbigpLT5jb2RlT3JpZ2lucy0+YWRkRGlzcG9z
YWJsZUNhbGxTaXRlSW5kZXgob3JpZ2luYWxPcmlnaW4pOwogI2Vsc2UKICAgICAvLyBXZSBuZXZl
ciBjcmVhdGUgbmV3IG9uLXRoZS1mbHkgZXhjZXB0aW9uIGhhbmRsaW5nCiAgICAgLy8gY2FsbCBz
aXRlcyBvdXRzaWRlIHRoZSBERkcvRlRMIGlubGluZSBjYWNoZXMuCkBAIC0yNzY5LDkgKzI3Njks
OSBAQCBBcnJheVByb2ZpbGUqIENvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxlKEJ5dGVjb2RlSW5k
ZXggYnl0ZWNvZGVJbmRleCkKIH0KIAogI2lmIEVOQUJMRShERkdfSklUKQotVmVjdG9yPENvZGVP
cmlnaW4sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiYgQ29kZUJsb2NrOjpjb2RlT3JpZ2lucygp
CitERkc6OkNvZGVPcmlnaW5Qb29sJiBDb2RlQmxvY2s6OmNvZGVPcmlnaW5zKCkKIHsKLSAgICBy
ZXR1cm4gbV9qaXRDb2RlLT5kZmdDb21tb24oKS0+Y29kZU9yaWdpbnM7CisgICAgcmV0dXJuIG1f
aml0Q29kZS0+ZGZnQ29tbW9uKCktPmNvZGVPcmlnaW5zLmdldCgpOwogfQogCiBzaXplX3QgQ29k
ZUJsb2NrOjpudW1iZXJPZkRGR0lkZW50aWZpZXJzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBhOTE0NWY3YjA2Y2Q3ZTVjMzQwMGMwMWY2
MDVhOTY3OWU2MWQ3YjNkLi40ZDE3ZmM5M2Y2N2Y0YmM1ZTc4ZDY5ZDkyODQwZWU2NjNmOTYzMDdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJDb21waWxhdGlvblJl
c3VsdC5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJERkdDb2Rl
T3JpZ2luUG9vbC5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1ZGUgIkRpcmVjdEV2
YWxDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJFdmFsRXhlY3V0YWJsZS5oIgpAQCAtNTMzLDcgKzUz
NCw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaGFzRXhw
cmVzc2lvbkluZm8oKSB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aGFzRXhwcmVzc2lvbkluZm8o
KTsgfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCi0gICAgVmVjdG9yPENvZGVPcmlnaW4sIDAsIFVu
c2FmZVZlY3Rvck92ZXJmbG93PiYgY29kZU9yaWdpbnMoKTsKKyAgICBERkc6OkNvZGVPcmlnaW5Q
b29sJiBjb2RlT3JpZ2lucygpOwogICAgIAogICAgIC8vIEhhdmluZyBjb2RlIG9yaWdpbnMgaW1w
bGllcyB0aGF0IHRoZXJlIGhhcyBiZWVuIHNvbWUgaW5saW5pbmcuCiAgICAgYm9vbCBoYXNDb2Rl
T3JpZ2lucygpCkBAIC01NTAsNyArNTUxLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpT
Q2VsbCB7CiAKICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4oQ2FsbFNpdGVJbmRleCBpbmRleCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBjb2RlT3JpZ2lucygpW2luZGV4LmJpdHMoKV07CisgICAg
ICAgIHJldHVybiBjb2RlT3JpZ2lucygpLmdldChpbmRleC5iaXRzKCkpOwogICAgIH0KIAogICAg
IENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlciYgbGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvZGVPcmlnaW5Qb29sLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29kZU9yaWdpblBvb2wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0Y2RjMzZjMjY5
YTYyZTQ1ZWEyNDk0MGJiNzA1OTMwZDE0YzA3NzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvZGVPcmlnaW5Qb29sLmNwcApAQCAtMCwwICsxLDg1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkRGR0NvZGVPcmlnaW5Qb29sLmgiCisKKyNpZiBFTkFCTEUo
REZHX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitDYWxsU2l0ZUlu
ZGV4IENvZGVPcmlnaW5Qb29sOjphZGRDb2RlT3JpZ2luKENvZGVPcmlnaW4gY29kZU9yaWdpbikK
K3sKKyAgICBpZiAobV9jb2RlT3JpZ2lucy5pc0VtcHR5KCkKKyAgICAgICAgfHwgbV9jb2RlT3Jp
Z2lucy5sYXN0KCkgIT0gY29kZU9yaWdpbikKKyAgICAgICAgbV9jb2RlT3JpZ2lucy5hcHBlbmQo
Y29kZU9yaWdpbik7CisgICAgdW5zaWduZWQgaW5kZXggPSBtX2NvZGVPcmlnaW5zLnNpemUoKSAt
IDE7CisgICAgQVNTRVJUKG1fY29kZU9yaWdpbnNbaW5kZXhdID09IGNvZGVPcmlnaW4pOworICAg
IHJldHVybiBDYWxsU2l0ZUluZGV4KGluZGV4KTsKK30KKworQ2FsbFNpdGVJbmRleCBDb2RlT3Jp
Z2luUG9vbDo6YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCit7
CisgICAgbV9jb2RlT3JpZ2lucy5hcHBlbmQoY29kZU9yaWdpbik7CisgICAgdW5zaWduZWQgaW5k
ZXggPSBtX2NvZGVPcmlnaW5zLnNpemUoKSAtIDE7CisgICAgQVNTRVJUKG1fY29kZU9yaWdpbnNb
aW5kZXhdID09IGNvZGVPcmlnaW4pOworICAgIHJldHVybiBDYWxsU2l0ZUluZGV4KGluZGV4KTsK
K30KKworQ2FsbFNpdGVJbmRleCBDb2RlT3JpZ2luUG9vbDo6bGFzdENhbGxTaXRlKCkgY29uc3QK
K3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX2NvZGVPcmlnaW5zLnNpemUoKSk7CisgICAgcmV0dXJu
IENhbGxTaXRlSW5kZXgobV9jb2RlT3JpZ2lucy5zaXplKCkgLSAxKTsKK30KKworRGlzcG9zYWJs
ZUNhbGxTaXRlSW5kZXggQ29kZU9yaWdpblBvb2w6OmFkZERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4
KENvZGVPcmlnaW4gY29kZU9yaWdpbikKK3sKKyAgICBpZiAobV9jYWxsU2l0ZUluZGV4RnJlZUxp
c3Quc2l6ZSgpKSB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jYWxsU2l0ZUluZGV4RnJl
ZUxpc3QudGFrZUFueSgpOworICAgICAgICBtX2NvZGVPcmlnaW5zW2luZGV4XSA9IGNvZGVPcmln
aW47CisgICAgICAgIHJldHVybiBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleChpbmRleCk7CisgICAg
fQorCisgICAgbV9jb2RlT3JpZ2lucy5hcHBlbmQoY29kZU9yaWdpbik7CisgICAgdW5zaWduZWQg
aW5kZXggPSBtX2NvZGVPcmlnaW5zLnNpemUoKSAtIDE7CisgICAgQVNTRVJUKG1fY29kZU9yaWdp
bnNbaW5kZXhdID09IGNvZGVPcmlnaW4pOworICAgIHJldHVybiBEaXNwb3NhYmxlQ2FsbFNpdGVJ
bmRleChpbmRleCk7Cit9CisKK3ZvaWQgQ29kZU9yaWdpblBvb2w6OnJlbW92ZURpc3Bvc2FibGVD
YWxsU2l0ZUluZGV4KERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGNhbGxTaXRlKQoreworICAgIFJF
TEVBU0VfQVNTRVJUKGNhbGxTaXRlLmJpdHMoKSA8IG1fY29kZU9yaWdpbnMuc2l6ZSgpKTsKKyAg
ICBtX2NhbGxTaXRlSW5kZXhGcmVlTGlzdC5hZGQoY2FsbFNpdGUuYml0cygpKTsKKyAgICBtX2Nv
ZGVPcmlnaW5zW2NhbGxTaXRlLmJpdHMoKV0gPSBDb2RlT3JpZ2luKCk7Cit9CisKK3ZvaWQgQ29k
ZU9yaWdpblBvb2w6OnNocmlua1RvRml0KCkKK3sKKyAgICBtX2NvZGVPcmlnaW5zLnNocmlua1Rv
Rml0KCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb2Rl
T3JpZ2luUG9vbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb2RlT3JpZ2luUG9v
bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmEwZjYyYzhmZTg2ZmQ2NDMwOGE4YjZmMDgwNGY4NmY3ZTE5YTQ5MmIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvZGVPcmln
aW5Qb29sLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgQ29kZU9yaWdpblBvb2wgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29kZU9yaWdpblBvb2w+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPENvZGVPcmlnaW5Qb29sPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ29kZU9yaWdpblBvb2wpOworICAgIH0KKworICAgIENhbGxTaXRl
SW5kZXggYWRkQ29kZU9yaWdpbihDb2RlT3JpZ2luKTsKKyAgICBDYWxsU2l0ZUluZGV4IGFkZFVu
aXF1ZUNhbGxTaXRlSW5kZXgoQ29kZU9yaWdpbik7CisgICAgQ2FsbFNpdGVJbmRleCBsYXN0Q2Fs
bFNpdGUoKSBjb25zdDsKKyAgICBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBhZGREaXNwb3NhYmxl
Q2FsbFNpdGVJbmRleChDb2RlT3JpZ2luKTsKKyAgICB2b2lkIHJlbW92ZURpc3Bvc2FibGVDYWxs
U2l0ZUluZGV4KERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4KTsKKyAgICB2b2lkIHNocmlua1RvRml0
KCk7CisKKyAgICBDb2RlT3JpZ2luIGdldCh1bnNpZ25lZCBpbmRleCkgeyByZXR1cm4gbV9jb2Rl
T3JpZ2luc1tpbmRleF07IH0KKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9j
b2RlT3JpZ2lucy5zaXplKCk7IH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8Q29kZU9yaWdpbiwg
MCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fY29kZU9yaWdpbnM7CisgICAgSGFzaFNldDx1bnNp
Z25lZCwgV1RGOjpJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czx1bnNpZ25lZD4+IG1fY2FsbFNpdGVJbmRleEZyZWVMaXN0OworfTsKKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcAppbmRleCA2MmY4Y2I0NGE5NjJh
YWM3ZjIwOWRlM2FkNmFhZWRlYjIyZTgyNDc1Li42NWVmNTQwOWY0ZTk2ZTU1NjM2OGU0NjkzOWRj
NTZkMDVkMWQ4YjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bW1vbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0
YS5jcHAKQEAgLTQ3LDU1ICs0Nyw5IEBAIHZvaWQgQ29tbW9uRGF0YTo6bm90aWZ5Q29tcGlsaW5n
U3RydWN0dXJlVHJhbnNpdGlvbihQbGFuJiBwbGFuLCBDb2RlQmxvY2sqIGNvZGVCCiAgICAgICAg
IG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dC5nZXQoKSk7CiB9CiAKLUNhbGxTaXRlSW5kZXggQ29t
bW9uRGF0YTo6YWRkQ29kZU9yaWdpbihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi17Ci0gICAgaWYg
KGNvZGVPcmlnaW5zLmlzRW1wdHkoKQotICAgICAgICB8fCBjb2RlT3JpZ2lucy5sYXN0KCkgIT0g
Y29kZU9yaWdpbikKLSAgICAgICAgY29kZU9yaWdpbnMuYXBwZW5kKGNvZGVPcmlnaW4pOwotICAg
IHVuc2lnbmVkIGluZGV4ID0gY29kZU9yaWdpbnMuc2l6ZSgpIC0gMTsKLSAgICBBU1NFUlQoY29k
ZU9yaWdpbnNbaW5kZXhdID09IGNvZGVPcmlnaW4pOwotICAgIHJldHVybiBDYWxsU2l0ZUluZGV4
KGluZGV4KTsKLX0KLQotQ2FsbFNpdGVJbmRleCBDb21tb25EYXRhOjphZGRVbmlxdWVDYWxsU2l0
ZUluZGV4KENvZGVPcmlnaW4gY29kZU9yaWdpbikKLXsKLSAgICBjb2RlT3JpZ2lucy5hcHBlbmQo
Y29kZU9yaWdpbik7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBjb2RlT3JpZ2lucy5zaXplKCkgLSAx
OwotICAgIEFTU0VSVChjb2RlT3JpZ2luc1tpbmRleF0gPT0gY29kZU9yaWdpbik7Ci0gICAgcmV0
dXJuIENhbGxTaXRlSW5kZXgoaW5kZXgpOwotfQotCi1DYWxsU2l0ZUluZGV4IENvbW1vbkRhdGE6
Omxhc3RDYWxsU2l0ZSgpIGNvbnN0Ci17Ci0gICAgUkVMRUFTRV9BU1NFUlQoY29kZU9yaWdpbnMu
c2l6ZSgpKTsKLSAgICByZXR1cm4gQ2FsbFNpdGVJbmRleChjb2RlT3JpZ2lucy5zaXplKCkgLSAx
KTsKLX0KLQotRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggQ29tbW9uRGF0YTo6YWRkRGlzcG9zYWJs
ZUNhbGxTaXRlSW5kZXgoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQotewotICAgIGlmIChjYWxsU2l0
ZUluZGV4RnJlZUxpc3Quc2l6ZSgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gY2FsbFNp
dGVJbmRleEZyZWVMaXN0LnRha2VBbnkoKTsKLSAgICAgICAgY29kZU9yaWdpbnNbaW5kZXhdID0g
Y29kZU9yaWdpbjsKLSAgICAgICAgcmV0dXJuIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4KGluZGV4
KTsKLSAgICB9Ci0KLSAgICBjb2RlT3JpZ2lucy5hcHBlbmQoY29kZU9yaWdpbik7Ci0gICAgdW5z
aWduZWQgaW5kZXggPSBjb2RlT3JpZ2lucy5zaXplKCkgLSAxOwotICAgIEFTU0VSVChjb2RlT3Jp
Z2luc1tpbmRleF0gPT0gY29kZU9yaWdpbik7Ci0gICAgcmV0dXJuIERpc3Bvc2FibGVDYWxsU2l0
ZUluZGV4KGluZGV4KTsKLX0KLQotCi12b2lkIENvbW1vbkRhdGE6OnJlbW92ZURpc3Bvc2FibGVD
YWxsU2l0ZUluZGV4KERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGNhbGxTaXRlKQotewotICAgIFJF
TEVBU0VfQVNTRVJUKGNhbGxTaXRlLmJpdHMoKSA8IGNvZGVPcmlnaW5zLnNpemUoKSk7Ci0gICAg
Y2FsbFNpdGVJbmRleEZyZWVMaXN0LmFkZChjYWxsU2l0ZS5iaXRzKCkpOwotICAgIGNvZGVPcmln
aW5zW2NhbGxTaXRlLmJpdHMoKV0gPSBDb2RlT3JpZ2luKCk7Ci19Ci0KIHZvaWQgQ29tbW9uRGF0
YTo6c2hyaW5rVG9GaXQoKQogewotICAgIGNvZGVPcmlnaW5zLnNocmlua1RvRml0KCk7CisgICAg
Y29kZU9yaWdpbnMtPnNocmlua1RvRml0KCk7CiAgICAgZGZnSWRlbnRpZmllcnMuc2hyaW5rVG9G
aXQoKTsKICAgICB3ZWFrUmVmZXJlbmNlcy5zaHJpbmtUb0ZpdCgpOwogICAgIHdlYWtTdHJ1Y3R1
cmVSZWZlcmVuY2VzLnNocmlua1RvRml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29tbW9uRGF0YS5oCmluZGV4IGRjMzI0ZGU5ZWE2NzNhZjk4ODA2ZDJiZjQ0OTY4YTUzYjNlNWU0
YTguLjY1MWVlMzA0NzRiZjY4MGM5Yjk5YjgzNzY2Y2U2ODU3NTZiYzlmNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAiREZHQWRh
cHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAiREZHQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmgiCisjaW5jbHVkZSAiREZHQ29kZU9yaWdpblBvb2wu
aCIKICNpbmNsdWRlICJERkdKdW1wUmVwbGFjZW1lbnQuaCIKICNpbmNsdWRlICJERkdPU1JFbnRy
eS5oIgogI2luY2x1ZGUgIklubGluZUNhbGxGcmFtZVNldC5oIgpAQCAtNzMsMjAgKzc0LDEyIEBA
IGNsYXNzIENvbW1vbkRhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbW1vbkRhdGEp
OwogcHVibGljOgogICAgIENvbW1vbkRhdGEoKQotICAgICAgICA6IGlzU3RpbGxWYWxpZCh0cnVl
KQotICAgICAgICAsIGZyYW1lUmVnaXN0ZXJDb3VudChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpCi0gICAgICAgICwgcmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdChzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCisgICAgICAgIDogY29kZU9yaWdpbnMo
Q29kZU9yaWdpblBvb2w6OmNyZWF0ZSgpKQogICAgIHsgfQogICAgIH5Db21tb25EYXRhKCk7CiAg
ICAgCiAgICAgdm9pZCBub3RpZnlDb21waWxpbmdTdHJ1Y3R1cmVUcmFuc2l0aW9uKFBsYW4mLCBD
b2RlQmxvY2sqLCBOb2RlKik7Ci0gICAgQ2FsbFNpdGVJbmRleCBhZGRDb2RlT3JpZ2luKENvZGVP
cmlnaW4pOwotICAgIENhbGxTaXRlSW5kZXggYWRkVW5pcXVlQ2FsbFNpdGVJbmRleChDb2RlT3Jp
Z2luKTsKLSAgICBDYWxsU2l0ZUluZGV4IGxhc3RDYWxsU2l0ZSgpIGNvbnN0OwogCi0gICAgRGlz
cG9zYWJsZUNhbGxTaXRlSW5kZXggYWRkRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgoQ29kZU9yaWdp
bik7Ci0gICAgdm9pZCByZW1vdmVEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleChEaXNwb3NhYmxlQ2Fs
bFNpdGVJbmRleCk7Ci0gICAgCiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogICAgIAogICAgIGJv
b2wgaW52YWxpZGF0ZSgpOyAvLyBSZXR1cm5zIHRydWUgaWYgd2UgZGlkIGludmFsaWRhdGUsIG9y
IGZhbHNlIGlmIHRoZSBjb2RlIGJsb2NrIHdhcyBhbHJlYWR5IGludmFsaWRhdGVkLgpAQCAtMTIw
LDcgKzExMyw3IEBAIGNsYXNzIENvbW1vbkRhdGEgewogICAgIHZvaWQgY2xlYXJXYXRjaHBvaW50
cygpOwogCiAgICAgUmVmUHRyPElubGluZUNhbGxGcmFtZVNldD4gaW5saW5lQ2FsbEZyYW1lczsK
LSAgICBWZWN0b3I8Q29kZU9yaWdpbiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IGNvZGVPcmln
aW5zOworICAgIFJlZjxDb2RlT3JpZ2luUG9vbD4gY29kZU9yaWdpbnM7CiAgICAgCiAgICAgVmVj
dG9yPElkZW50aWZpZXI+IGRmZ0lkZW50aWZpZXJzOwogICAgIFZlY3RvcjxXZWFrUmVmZXJlbmNl
VHJhbnNpdGlvbj4gdHJhbnNpdGlvbnM7CkBAIC0xMzcsMTkgKzEzMCwxNSBAQCBjbGFzcyBDb21t
b25EYXRhIHsKICAgICBSZWZQdHI8UHJvZmlsZXI6OkNvbXBpbGF0aW9uPiBjb21waWxhdGlvbjsK
ICAgICBib29sIGxpdmVuZXNzSGFzQmVlblByb3ZlZDsgLy8gSW5pdGlhbGl6ZWQgYW5kIHVzZWQg
b24gZXZlcnkgR0MuCiAgICAgYm9vbCBhbGxUcmFuc2l0aW9uc0hhdmVCZWVuTWFya2VkOyAvLyBJ
bml0aWFsaXplZCBhbmQgdXNlZCBvbiBldmVyeSBHQy4KLSAgICBib29sIGlzU3RpbGxWYWxpZDsK
KyAgICBib29sIGlzU3RpbGxWYWxpZCB7IHRydWUgfTsKICAgICBib29sIGhhc1ZNVHJhcHNCcmVh
a3BvaW50c0luc3RhbGxlZCB7IGZhbHNlIH07CiAgICAgCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFnPGRvdWJsZT4+IGRvdWJsZUNvbnN0YW50czsKICNlbmRp
ZgogICAgIAotICAgIHVuc2lnbmVkIGZyYW1lUmVnaXN0ZXJDb3VudDsKLSAgICB1bnNpZ25lZCBy
ZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0OwotCi1wcml2YXRlOgotICAgIEhhc2hTZXQ8dW5z
aWduZWQsIFdURjo6SW50SGFzaDx1bnNpZ25lZD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8dW5zaWduZWQ+PiBjYWxsU2l0ZUluZGV4RnJlZUxpc3Q7Ci0KKyAgICB1bnNpZ25l
ZCBmcmFtZVJlZ2lzdGVyQ291bnQgeyBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkgfTsKKyAgICB1bnNpZ25lZCByZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0IHsgc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIH07CiB9OwogCiBDb2RlQmxvY2sqIGNvZGVC
bG9ja0ZvclZNVHJhcFBDKHZvaWQqIHBjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAKaW5kZXggZmU5ZGI4Yjg4ZTA2MDU4MmZiOTc2MmZiZmI4NmIwYWRi
MzQwMzk4Mi4uYzYxZjk5NzljMmQ1OGUzZjFlZDdmZmFiNTI1YWIxNzNlYjU2YjNmYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTYyNiw3ICs2
MjYsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpleGNlcHRpb25DaGVjaygpCiAgICAgICAgIHVuc2ln
bmVkIHN0cmVhbUluZGV4ID0gbV9zcGVjdWxhdGl2ZS0+bV9vdXRPZkxpbmVTdHJlYW1JbmRleCA/
ICptX3NwZWN1bGF0aXZlLT5tX291dE9mTGluZVN0cmVhbUluZGV4IDogbV9zcGVjdWxhdGl2ZS0+
bV9zdHJlYW0tPnNpemUoKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaGFkRXhjZXB0
aW9uID0gZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKCkpOwogICAgICAgICAvLyBX
ZSBhc3N1bWUgaGVyZSB0aGF0IHRoaXMgaXMgY2FsbGVkIGFmdGVyIGNhbGxPcGVhcnRpb24oKS9h
cHBlbmRDYWxsKCkgaXMgY2FsbGVkLgotICAgICAgICBhcHBlbmRFeGNlcHRpb25IYW5kbGluZ09T
UkV4aXQoRXhjZXB0aW9uQ2hlY2ssIHN0cmVhbUluZGV4LCBvcENhdGNoT3JpZ2luLCBleGNlcHRp
b25IYW5kbGVyLCBtX2ppdENvZGUtPmNvbW1vbi5sYXN0Q2FsbFNpdGUoKSwgaGFkRXhjZXB0aW9u
KTsKKyAgICAgICAgYXBwZW5kRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0KEV4Y2VwdGlvbkNoZWNr
LCBzdHJlYW1JbmRleCwgb3BDYXRjaE9yaWdpbiwgZXhjZXB0aW9uSGFuZGxlciwgbV9qaXRDb2Rl
LT5jb21tb24uY29kZU9yaWdpbnMtPmxhc3RDYWxsU2l0ZSgpLCBoYWRFeGNlcHRpb24pOwogICAg
IH0gZWxzZQogICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5hcHBlbmQoZW1pdEV4Y2VwdGlvbkNo
ZWNrKHZtKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
aAppbmRleCAzNmI2ZTYzYWMwZDE1YTVkYmM3NjdhNWYxYzc0YTI0MGM2MWRhNjlmLi5iN2RlY2E4
MWFmMmZmYzMxODIyODQ1NjVlYjJlNDg4NGE5ZDVmODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0xMjMsNyArMTIzLDcgQEAgY2xhc3MgSklUQ29t
cGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsKICAgICAKICAgICBDYWxsU2l0ZUluZGV4IGFk
ZENhbGxTaXRlKENvZGVPcmlnaW4gY29kZU9yaWdpbikKICAgICB7Ci0gICAgICAgIHJldHVybiBt
X2ppdENvZGUtPmNvbW1vbi5hZGRDb2RlT3JpZ2luKGNvZGVPcmlnaW4pOworICAgICAgICByZXR1
cm4gbV9qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZENvZGVPcmlnaW4oY29kZU9yaWdp
bik7CiAgICAgfQogCiAgICAgQ2FsbFNpdGVJbmRleCBlbWl0U3RvcmVDb2RlT3JpZ2luKENvZGVP
cmlnaW4gY29kZU9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAppbmRleCA1MzAwNmNiZTMxMWI5ZTEzMjQ4NzdkNWZiMTA1MGM3MzI5ODBhYzQ2
Li43MGMwOWVhNDQwYjJkNjFjYjhmZDZiOTRlYzkxYzUwZWE0NWY1YTQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC00MTk3LDcgKzQxOTcs
NyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAogICAgICAgICAgICAgICAgIENh
bGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLT5q
aXRDb2RlLT5jb21tb24uYWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50
aWMpOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmln
aW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKICAg
ICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CiAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24o
cGFyYW1zKS0+anVtcHMoaml0KTsKQEAgLTQ4MTAsNyArNDgxMCw3IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAg
ICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CiAKLSAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBz
dGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgg
PSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUlu
ZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlz
IHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAg
ICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhh
bmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKQEAgLTU0MDgs
NyArNTQwOCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCiAgICAgICAgICAg
ICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAgICAg
c3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24u
Y29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKIAogICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRp
b25zID0KICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRD
cmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwpAQCAtOTI2Niw3ICs5MjY2LDcgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAg
ICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZUluZGV4ID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUlu
ZGV4KGNvZGVPcmlnaW4pOworICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxT
aXRlSW5kZXgoY29kZU9yaWdpbik7CiAKICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUt
PnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7CiAK
QEAgLTkzODYsNyArOTM4Niw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNo
cG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAg
ICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAg
ICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2Rl
LT5jb21tb24uYWRkVW5pcXVlQ2FsbFNpdGVJbmRleChjb2RlT3JpZ2luKTsKKyAgICAgICAgICAg
ICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9u
LmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KGNvZGVPcmlnaW4pOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIEdQUlJlZyBjYWxsZWVHUFIgPSBwYXJhbXNbIWlz
VGFpbF0uZ3ByKCk7CiAKQEAgLTk1NzQsNyArOTU3NCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2Ny
YXRjaChqaXQpOwotICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9
IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRkVW5pcXVlQ2FsbFNpdGVJbmRleChjb2RlT3JpZ2lu
KTsKKyAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+
aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KGNvZGVP
cmlnaW4pOwogCiAgICAgICAgICAgICAgICAgLy8gWWVzLCB0aGlzIGlzIHJlYWxseSBuZWNlc3Nh
cnkuIFlvdSBjb3VsZCB0aHJvdyBhbiBleGNlcHRpb24gaW4gYSBob3N0IGNhbGwgb24gdGhlCiAg
ICAgICAgICAgICAgICAgLy8gc2xvdyBwYXRoLiBUaGF0J2xsIHJvdXRlIHVzIHRvIG9wZXJhdGlv
bkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIoKSwgd2hpY2ggdW53aW5kcyBzdGFydGluZwpAQCAtOTcx
OCw3ICs5NzE4LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2Ny
YXRjaChqaXQpOwogICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9
Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRkVW5pcXVlQ2Fs
bFNpdGVJbmRleChjb2RlT3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENv
ZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChjb2RlT3JpZ2lu
KTsKIAogICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRp
b25zID0KICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRD
cmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwpAQCAtMTAwMjAsNyArMTAwMjAsNyBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBB
bGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAg
ICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAg
ICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KGNvZGVPcmln
aW4pOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmln
aW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KGNvZGVPcmlnaW4pOwogCiAgICAgICAgICAgICAg
ICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQogICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1
bXBzKGppdCk7CkBAIC0xMDI3NCw3ICsxMDI3NCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9LCAmdm1dIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dT
Y3JhdGNoKGppdCk7Ci0gICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4
ID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KGNvZGVPcmln
aW4pOworICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRl
LT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgoY29k
ZU9yaWdpbik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVs
cGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhp
dENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CiAgICAgICAgICAgICAgICAgCkBAIC0xMTc3
Myw3ICsxMTc3Myw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCiAgICAgICAg
ICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAg
ICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21t
b24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKIAogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdl
dCBmb3Igb3BlcmF0aW9uIGNhbGxzLgogICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0PiBleGNlcHRpb25zID0KQEAgLTEyMDM1LDcgKzEyMDM1LDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJh
bmNoSWZOb3RDZWxsKHByb3RvdHlwZUdQUikpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9Ci0gICAgICAgICAgICAgICAgICAg
IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmln
aW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9u
LmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGly
ZWN0IGV4aXQgdGFyZ2V0IGZvciBvcGVyYXRpb24gY2FsbHMuCiAgICAgICAgICAgICAgICAgQm94
PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQpAQCAtMTMxMDksNyArMTMxMDks
NyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBMVmFsdWUgcGFja2V0ID0gZW5zdXJl
U2hhZG93Q2hpY2tlblBhY2tldCgpOwogICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIHNjb3BlID0gbG93Q2VsbCht
X25vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0g
bV9mdGxTdGF0ZS5qaXRDb2RlLT5jb21tb24uYWRkQ29kZU9yaWdpbihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CisgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IG1fZnRsU3Rh
dGUuaml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRDb2RlT3JpZ2luKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fY2FsbEZy
YW1lLCBwYWNrZXQsIG1faGVhcHMuU2hhZG93Q2hpY2tlbl9QYWNrZXRfZnJhbWUpOwogICAgICAg
ICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+
KFNoYWRvd0NoaWNrZW46OlBhY2tldDo6dGFpbE1hcmtlcigpKSksIHBhY2tldCwgbV9oZWFwcy5T
aGFkb3dDaGlja2VuX1BhY2tldF9jYWxsZWUpOwpAQCAtMTM1MjQsNyArMTM1MjQsNyBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAogICAgICAgICAgICAgICAgIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGVJbmRleCA9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5j
b21tb24uYWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAg
ICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRV
bmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKICAgICAgICAgICAg
ICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxs
cy4KICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9u
cyA9CkBAIC0xMzU5Myw3ICsxMzU5Myw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwogCiAgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAg
ICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUlu
ZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5q
aXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKIAogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVj
dCBleGl0IHRhcmdldCBmb3Igb3BlcmF0aW9uIGNhbGxzLgogICAgICAgICAgICAgICAgIEJveDxD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0KQEAgLTE2NzM2LDcgKzE2NzM2LDcg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gbGlua2VkRG9uZSA9IGxpbmtCdWZm
ZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihkb25lKTsKIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Q29kZS0+Y29tbW9uLmFkZFVuaXF1ZUNhbGxT
aXRlSW5kZXgob3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChvcmlnaW4p
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxhenlTbG93UGF0aC0+aW5pdGlhbGl6ZSgKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rZWRQYXRjaGFibGVKdW1wLCBsaW5rZWREb25l
LApAQCAtMTg2NjUsNyArMTg2NjUsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIAogICAg
IHZvaWQgY2FsbFByZWZsaWdodChDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiAgICAgewotICAgICAg
ICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBtX2Z0bFN0YXRlLmppdENvZGUtPmNvbW1v
bi5hZGRDb2RlT3JpZ2luKGNvZGVPcmlnaW4pOworICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXggPSBtX2Z0bFN0YXRlLmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkQ29k
ZU9yaWdpbihjb2RlT3JpZ2luKTsKICAgICAgICAgbV9vdXQuc3RvcmUzMigKICAgICAgICAgICAg
IG1fb3V0LmNvbnN0SW50MzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAogICAgICAgICAgICAgdGFn
Rm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1Bh
dGhDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNw
cAppbmRleCBmYjdiN2QyMzk5ZWVkZTVhM2IwNThlZjE3OWM4YjE0NmEwYzM3YmZiLi4zMjg0YWQy
ZmM1ZWRiMjcwYzk3ODkwNDg1YmVhZjU3ZGFlNTM2NTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgU2xvd1Bh
dGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPgogQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4Rm9yQ29kZU9yaWdp
bihTdGF0ZSYgc3RhdGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbikKIHsKICAgICBpZiAoY29kZU9y
aWdpbikKLSAgICAgICAgcmV0dXJuIHN0YXRlLmppdENvZGUtPmNvbW1vbi5hZGRDb2RlT3JpZ2lu
KGNvZGVPcmlnaW4pOworICAgICAgICByZXR1cm4gc3RhdGUuaml0Q29kZS0+Y29tbW9uLmNvZGVP
cmlnaW5zLT5hZGRDb2RlT3JpZ2luKGNvZGVPcmlnaW4pOwogICAgIHJldHVybiBDYWxsU2l0ZUlu
ZGV4KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lLmNwcAppbmRleCBmNDk4NzgzNjdjM2ZlMDVkYzUxNDNjNDJkMGZkYjBjYWE0
YWI0N2IzLi5jYWRkNDM1YWM4NDRkYWZjZDBkMjE1MjdlYzcyZDU3ZjM4MjhlMGIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3Bw
CkBAIC0xMDQsMjIgKzEwNCwzOSBAQCBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9u
SGFuZGxlcjo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbgogICAgIENvZGVC
bG9jayogY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIERpc3Bvc2FibGVDYWxsU2l0ZUlu
ZGV4IGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KQogICAgIDogTWFya2luZ0dDQXdhcmVK
SVRTdHViUm91dGluZShjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5m
b3MpKQogICAgICwgbV9jb2RlQmxvY2tXaXRoRXhjZXB0aW9uSGFuZGxlcihjb2RlQmxvY2tGb3JF
eGNlcHRpb25IYW5kbGVycykKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICAsIG1fY29kZU9yaWdp
blBvb2woJm1fY29kZUJsb2NrV2l0aEV4Y2VwdGlvbkhhbmRsZXItPmNvZGVPcmlnaW5zKCkpCisj
ZW5kaWYKICAgICAsIG1fZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgoZXhjZXB0aW9uSGFu
ZGxlckNhbGxTaXRlSW5kZXgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb2RlQmxvY2tXaXRo
RXhjZXB0aW9uSGFuZGxlcik7CiAgICAgQVNTRVJUKCEhbV9jb2RlQmxvY2tXaXRoRXhjZXB0aW9u
SGFuZGxlci0+aGFuZGxlckZvckluZGV4KGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4LmJp
dHMoKSkpOwogfQogCitHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6
fkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKCkKK3sKKyNpZiBFTkFC
TEUoREZHX0pJVCkKKyAgICAvLyBXZSBkZWxheSBkZWFsbG9jYXRpb24gb2YgbV9leGNlcHRpb25I
YW5kbGVyQ2FsbFNpdGVJbmRleCB1bnRpbCBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0
aW9uSGFuZGxlciBnZXRzIGRlc3Ryb3llZC4KKyAgICAvLyBUaGlzIG1lYW5zIHRoYXQgQ2FsbFNp
dGVJbmRleCBjYW4gYmUgcmVzZXJ2ZWQgY29ycmVjdGx5IHNvIGxvbmcgYXMgdGhlIGNvZGUgb3du
ZWQgYnkgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIgaXMgb24gdGhl
IHN0YWNrLgorICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IHNpbmNlIENhbGxTaXRlIGNhbiBiZSBx
dWVyaWVkIHNvIGxvbmcgYXMgdGhpcyBjb2RlIGlzIG9uIHRoZSBzdGFjazogU3RhY2tWaXNpdG9y
IGNhbiByZXRyZWl2ZSBDYWxsU2l0ZUluZGV4IGZyb20gdGhlIHN0YWNrLgorICAgIEFTU0VSVCgh
aXNDb21waWxhdGlvblRocmVhZCgpICYmICFUaHJlYWQ6Om1heUJlR0NUaHJlYWQoKSk7CisgICAg
aWYgKG1fY29kZU9yaWdpblBvb2wpCisgICAgICAgIG1fY29kZU9yaWdpblBvb2wtPnJlbW92ZURp
c3Bvc2FibGVDYWxsU2l0ZUluZGV4KG1fZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpOwor
I2VuZGlmCit9CisKIHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRs
ZXI6OmFib3V0VG9EaWUoKQogewogICAgIG1fY29kZUJsb2NrV2l0aEV4Y2VwdGlvbkhhbmRsZXIg
PSBudWxscHRyOworI2lmIEVOQUJMRShERkdfSklUKQorICAgIG1fY29kZU9yaWdpblBvb2wgPSBu
dWxscHRyOworI2VuZGlmCiB9CiAKIHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2Vw
dGlvbkhhbmRsZXI6Om9ic2VydmVaZXJvUmVmQ291bnQoKQogewogI2lmIEVOQUJMRShERkdfSklU
KQogICAgIGlmIChtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5kbGVyKSB7Ci0gICAgICAgIG1f
Y29kZUJsb2NrV2l0aEV4Y2VwdGlvbkhhbmRsZXItPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPnJl
bW92ZURpc3Bvc2FibGVDYWxsU2l0ZUluZGV4KG1fZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5k
ZXgpOwogICAgICAgICBtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5kbGVyLT5yZW1vdmVFeGNl
cHRpb25IYW5kbGVyRm9yQ2FsbFNpdGUobV9leGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRleCk7
CiAgICAgICAgIG1fY29kZUJsb2NrV2l0aEV4Y2VwdGlvbkhhbmRsZXIgPSBudWxscHRyOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJS
b3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGlu
ZS5oCmluZGV4IDE1Y2Q4YzY3MzYyMGI3OTM0OWIyNjkxZTliODRkYTM1MDUzNmI5NDguLjMxOTg2
NGRhYzk0ZTYxZDIxOGQyYTdiNTVlODRlOTk3ZGU3YjUzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaApAQCAtMzMsNiArMzMsOSBA
QAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2Ug
REZHIHsKK2NsYXNzIENvZGVPcmlnaW5Qb29sOworfQogCiBjbGFzcyBDYWxsTGlua0luZm87CiBj
bGFzcyBKSVRTdHViUm91dGluZVNldDsKQEAgLTEwMiwxMiArMTA1LDE2IEBAIGNsYXNzIEdDQXdh
cmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtp
bmdHQ0F3YXJlSklUCiAgICAgdHlwZWRlZiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgQmFzZTsKIAog
ICAgIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvbnN0IE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2Vs
bCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYsIENv
ZGVCbG9jayosIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4KTsKKyAgICB+R0NBd2FyZUpJVFN0dWJS
b3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoKSBmaW5hbDsKIAogICAgIHZvaWQgYWJvdXRUb0Rp
ZSgpIGZpbmFsOwogICAgIHZvaWQgb2JzZXJ2ZVplcm9SZWZDb3VudCgpIGZpbmFsOwogCiBwcml2
YXRlOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2tXaXRoRXhjZXB0aW9uSGFuZGxlcjsKKyNp
ZiBFTkFCTEUoREZHX0pJVCkKKyAgICBSZWZQdHI8REZHOjpDb2RlT3JpZ2luUG9vbD4gbV9jb2Rl
T3JpZ2luUG9vbDsKKyNlbmRpZgogICAgIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IG1fZXhjZXB0
aW9uSGFuZGxlckNhbGxTaXRlSW5kZXg7CiB9OwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5n
ZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGMwYTUxMDc5M2Q2ZTAwMzA3ZjVjOTIxYjZk
MWQ4ZDQyMDU4ODMxZGUuLjZjNDU4Y2MxYmVmODA2MDYxNTc5MjNiMjEwZjE1ZTI2NGQwMjIxZTUg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjAtMDYtMTAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBSZXR1cm4gRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggd2hl
biBkZXN0cm95aW5nIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMwNjkKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY0MjA1MTg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2RvbnQtZGlzcG9zZS1jYWxsc2l0ZWlu
ZGV4LXdoaWxlLWV4ZWN1dGluZy5qczogQWRkZWQuCisgICAgICAgIChlbXB0eUZ1bmN0aW9uKToK
KyAgICAgICAgKGZvby5iYXIuc2V0IGNhdGNoKToKKyAgICAgICAgKGZvby5iYXIpOgorICAgICAg
ICAoZm9vKToKKwogMjAyMC0wNi0xMCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtKU0NdIGFkZCBzdHJlc3MgdGVzdCBmb3Igb3BfZ2V0X3ByaXZhdGVfbmFt
ZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZG9udC1kaXNwb3NlLWNhbGxzaXRlaW5kZXgt
d2hpbGUtZXhlY3V0aW5nLmpzIGIvSlNUZXN0cy9zdHJlc3MvZG9udC1kaXNwb3NlLWNhbGxzaXRl
aW5kZXgtd2hpbGUtZXhlY3V0aW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MzM5YmQ2ZWZiMjZkZDU3Mzkw
NGUwZTE0Nzg0OTczMWFhN2ZmYTEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9k
b250LWRpc3Bvc2UtY2FsbHNpdGVpbmRleC13aGlsZS1leGVjdXRpbmcuanMKQEAgLTAsMCArMSwy
NCBAQAorLy9AIHJ1bkRlZmF1bHQoIi0taml0UG9saWN5U2NhbGU9MCIpCisKK2Z1bmN0aW9uIGVt
cHR5RnVuY3Rpb24oKSB7fQorCitmdW5jdGlvbiBmb28oYTApIHsKKyAgZnVuY3Rpb24gYmFyKGEx
KSB7CisgICAgbGV0IG8gPSBPYmplY3QoYTApOworICAgIHRyeSB7CisgICAgICBvLnggPSAwOwor
ICAgICAgbmV3IFNldCgpLnZhbHVlcygpOworICAgICAgZ2MoKTsKKyAgICAgIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShhMSwgJ3gnLCB7IHNldDogYmFyIH0pOworICAgIH0gY2F0Y2gge30KKworICAg
IHRyeSB7CisgICAgICBGdW5jdGlvbignZnVuY3Rpb24nKTsKKyAgICB9IGNhdGNoIHt9CisgIH0K
KyAgYmFyKGVtcHR5RnVuY3Rpb24pOworfQorCitmb28oMCk7Citmb3IgKGxldCBpPTA7IGk8MTAw
OyBpKyspCisgIGZvbyhlbXB0eUZ1bmN0aW9uKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401624</attachid>
            <date>2020-06-10 23:45:34 -0700</date>
            <delta_ts>2020-06-11 13:11:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213069-20200610234533.patch</filename>
            <type>text/plain</type>
            <size>40736</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OWRkNDRkMjhlOGViNGNjMWE4OWRlOTZhOTQxYjZlMmYyZDVjNmFlLi45ZDMzMzVkZGU3OGZiMjA0
NTZkNmY3MzZlMDM0ZDAxYTJmNmVlOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NyBAQAorMjAyMC0wNi0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJldHVybiBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCB3aGVuIGRl
c3Ryb3lpbmcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzA2OQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjQyMDUxODY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW5zaWRlIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNl
cHRpb25IYW5kbGVyOjpvYnNlcnZlWmVyb1JlZkNvdW50LCB3ZSBhcmUgcmV0dXJuaW5nIERpc3Bv
c2FibGVDYWxsU2l0ZUluZGV4IHRvIGZyZWVsaXN0LgorICAgICAgICBIb3dldmVyLCBHQ0F3YXJl
SklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6b2JzZXJ2ZVplcm9SZWZDb3VudCBj
YW4gYmUgY2FsbGVkIGV2ZW4gaWYgdGhlIGNvZGUgb2YgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0
aEV4Y2VwdGlvbkhhbmRsZXIgaXMKKyAgICAgICAgb24gdGhlIHN0YWNrLiBMZXQncyBjb25zaWRl
ciB0aGUgZm9sbG93aW5nIHNjZW5hcmlvLgorCisgICAgICAgICAgICAxLiBFeGVjdXRlIEdDQXdh
cmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyJ3MgY29kZS4gU2V0IENhbGxTaXRl
SW5kZXggdG8gdGhlIHN0YWNrLgorICAgICAgICAgICAgMi4gRXhlY3V0ZSBtb3JlIGNvZGUuICgx
KSdzIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyJ3MgY29kZSBpcyBv
biB0aGUgc3RhY2suCisgICAgICAgICAgICAzLiAoMSkncyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVX
aXRoRXhjZXB0aW9uSGFuZGxlcidzIHJlZmNvdW50IGJlY29tZXMgemVyby4KKyAgICAgICAgICAg
IDQuIENhbGxTaXRlSW5kZXggb2YgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhh
bmRsZXIgaXMgcmV0dXJuZWQuCisgICAgICAgICAgICA1LiBFeGVjdXRlIFN0YWNrVmlzaXRvciB0
byBjb25zdHJ1Y3QgZnJhbWVzLiBCdXQgd2UgY2Fubm90IGZpbmQgQ29kZU9yaWdpbiBjb3JyZXNw
b25kaW5nIHRvIENhbGxTaXRlSW5kZXggc3RvcmVkIGluICgxKSBzaW5jZSBpdCBpcyBhbHJlYWR5
IHJldHVybmVkLgorCisgICAgICAgIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IHNob3VsZCBiZSBy
ZXR1cm5lZCBhZnRlciBlbnN1cmluZyB0aGF0IEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNl
cHRpb25IYW5kbGVyJ3MgY29kZSBpcyBub3Qgb24gdGhlIHN0YWNrLiBEZXRlY3RpbmcgdGhpcyBp
cyB0aGUgZnVuY3Rpb25hbGl0eQorICAgICAgICB3aGF0IEdDQXdhcmVKSVRTdHViUm91dGluZVdp
dGhFeGNlcHRpb25IYW5kbGVyIGNhbiBvZmZlci4gSXQgaXMgZGVzdHJveWVkIGFmdGVyIGVuc3Vy
aW5nIHRoYXQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIncyBjb2Rl
IGlzIG5vdCBvbiB0aGUgc3RhY2suCisKKyAgICAgICAgVGhpcyBwYXRjaCBkZWxheXMgRGlzcG9z
YWJsZUNhbGxTaXRlSW5kZXggcmV0dXJuaW5nIHVudGlsIHdlIGRlc3Ryb3kgb3duZXIgR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIuIEJ1dCBpdCBpcyBwb3NzaWJsZSB0
aGF0IENvZGVCbG9jayogY29ycmVzcG9uZGluZyB0bworICAgICAgICBHQ0F3YXJlSklUU3R1YlJv
dXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBpcyBhbHJlYWR5IGRlc3Ryb3llZC4gVG8gYXZvaWQg
dGhpcyBjb25kaXRpb24sIHdlIGV4dHJhY3QgQ29kZU9yaWdpbnMgdmVjdG9yIGFzIFJlZjxERkc6
OkNvZGVPcmlnaW5Qb29sPiBhbmQga2VlcCBpdCBhbGl2ZSBmcm9tCisgICAgICAgIEdDQXdhcmVK
SVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIHRvby4gQW5kIHNpbmNlIENvZGVPcmln
aW4gYWRkaXRpb24gLyByZW1vdmFsIGhhcHBlbnMgb25seSBmcm9tIHRoZSBtYWluIHRocmVhZCBh
ZnRlciBmaW5pc2hpbmcgdGhlIGNvbXBpbGF0aW9uLCBhbmQKKyAgICAgICAgR0NBd2FyZUpJVFN0
dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIncyBkZXN0cnVjdG9yIGlzIGNhbGxlZCBmcm9t
IHRoZSBIZWFwJ3MgZmluYWxpemVyLCB3aGljaCBtdXN0IGJlIGV4ZWN1dGVkIGZyb20gdGhlIG1h
aW4gdGhyZWFkLCB3ZSBjYW4ganVzdCBtb2RpZnkgaXQgd2l0aG91dCBhIGxvY2suCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bmV3RXhjZXB0aW9u
SGFuZGxpbmdDYWxsU2l0ZUluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb2RlT3Jp
Z2lucyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6Y29kZU9yaWdpbik6CisgICAgICAgICogZGZnL0RGR0NvZGVPcmlnaW5Qb29sLmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6Q29kZU9yaWdpblBvb2w6OmFkZENvZGVPcmln
aW4pOgorICAgICAgICAoSlNDOjpERkc6OkNvZGVPcmlnaW5Qb29sOjphZGRVbmlxdWVDYWxsU2l0
ZUluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpDb2RlT3JpZ2luUG9vbDo6bGFzdENhbGxTaXRl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpDb2RlT3JpZ2luUG9vbDo6YWRkRGlzcG9zYWJs
ZUNhbGxTaXRlSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkNvZGVPcmlnaW5Qb29sOjpyZW1v
dmVEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6Q29kZU9yaWdp
blBvb2w6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBkZmcvREZHQ29kZU9yaWdpblBvb2wuaDog
QWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6Q29kZU9yaWdpblBvb2w6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6Q29kZU9yaWdpblBvb2w6OmdldCk6CisgICAgICAgIChKU0M6OkRGRzo6
Q29kZU9yaWdpblBvb2w6OnNpemUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdDb21tb25EYXRh
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb21tb25EYXRhOjpzaHJpbmtUb0ZpdCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Q29tbW9uRGF0YTo6YWRkQ29kZU9yaWdpbik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkRGRzo6Q29tbW9uRGF0YTo6YWRkVW5pcXVlQ2FsbFNpdGVJbmRleCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Q29tbW9uRGF0YTo6bGFzdENhbGxTaXRlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpDb21tb25EYXRhOjphZGREaXNwb3NhYmxlQ2Fs
bFNpdGVJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Q29tbW9uRGF0YTo6cmVt
b3ZlRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdD
b21tb25EYXRhLmg6CisgICAgICAgIChKU0M6OkRGRzo6Q29tbW9uRGF0YTo6Q29tbW9uRGF0YSk6
CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpK
SVRDb21waWxlcjo6ZXhjZXB0aW9uQ2hlY2spOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxl
ci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjphZGRDYWxsU2l0ZSk6CisgICAg
ICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEaXJlY3RDYWxsT3JDb25zdHJ1Y3QpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVGFpbENhbGwpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJn
c1NwcmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVD
YWxsT3JDb25zdHJ1Y3RWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZUNhbGxFdmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZUluQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZUxvZ1NoYWRvd0NoaWNrZW5UYWlsKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Z2V0QnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmdldEJ5SWRXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmxhenlTbG93UGF0aCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNhbGxQcmVmbGlnaHQpOgorICAgICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGwuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OmNhbGxTaXRlSW5kZXhGb3JDb2RlT3JpZ2luKToKKyAgICAg
ICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6R0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6OkdDQXdhcmVKSVRTdHViUm91dGlu
ZVdpdGhFeGNlcHRpb25IYW5kbGVyKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0
aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6On5HQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0
aW9uSGFuZGxlcik6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNl
cHRpb25IYW5kbGVyOjphYm91dFRvRGllKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJS
b3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6Om9ic2VydmVaZXJvUmVmQ291bnQpOgorICAgICAg
ICAqIGppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaDoKKwogMjAyMC0wNi0xMCAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEpTQ2FsbGJhY2tPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5IHNob3VsZCByZWRpcmVjdCB0byBQYXJlbnQ6OmRlbGV0ZVByb3Bl
cnR5QnlJbmRleCBpZiBwcm9wZXJ0eU5hbWUgaXMgaW5kZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCBiYTAyMDU5Y2Q1YjlmOWFhNWYzOGU1ZWVjMzU0MGU2MzM5NDExZjAy
Li5hNWM3NGMxMmMxNGFjOTQ0N2I3MmM0ZTQ1OGQyZTg4OTYzMzE1ZDQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NjMsNiArNTYzLDcgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBkZWJ1Z2dlci9EZWJ1Z2dlclBhcnNl
RGF0YS5oCiAgICAgZGVidWdnZXIvRGVidWdnZXJQcmltaXRpdmVzLmgKIAorICAgIGRmZy9ERkdD
b2RlT3JpZ2luUG9vbC5oCiAgICAgZGZnL0RGR0NvbW1vbi5oCiAgICAgZGZnL0RGR0NvbXBpbGF0
aW9uTW9kZS5oCiAgICAgZGZnL0RGR0RvZXNHQ0NoZWNrLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYTg1YjI5MWJiNmI3NzA2NGJiOTIzNzdhZmRmMGRkZTVkZTUyM2Q5NC4uY2Fk
YzkwYTBiNWRiMDhjZWE0YzRhZDc4NDI3ZDhhZDI5MDFmMmI5OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE4MTIsNiArMTgxMiw3IEBACiAJCUUzM0Y1MDgxMUI4NDI5QTQwMDQx
Mzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMzRjUwN0YxQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQ
cm9taXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTMzRjUwODcxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0
b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzNGNTA4NjFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5s
dXQuaCAqLzsgfTsKIAkJRTM0MDBFQzEyMkExQ0M3QjAwOURFRDU0IC8qIEZ1bmN0aW9uRXhlY3V0
YWJsZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNDAwRUMwMjJBMUNDNzgwMDlERUQ1NCAvKiBGdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVz
LmggKi87IH07CisJCUUzNDlBNzgxMjQ5MUYxNjEwMDFCQTMzNiAvKiBERkdDb2RlT3JpZ2luUG9v
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0OUE3
ODAyNDkxRjE1QTAwMUJBMzM2IC8qIERGR0NvZGVPcmlnaW5Qb29sLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM0RTY1NzUyMDY2OEVBQTAwRkI4
MUFDIC8qIFBhcnNlSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM0RTY1NzMyMDY2OEU4RDAwRkI4MUFDIC8qIFBhcnNlSGFzaC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNEVEQkY3MURCNUZG
QzkwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEVEQkY2MURCNUZGQzEwMERDODdBNSAvKiBGcmFtZVRyYWNl
cnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
MzRGOTMwRTIzMjJEODgyMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEY5MzBDMjMyMkQ4ODEwMDJCOERCNCAv
KiBKU0dlbmVyYXRvci5oICovOyB9OwpAQCAtNDk3Miw2ICs0OTczLDggQEAKIAkJRTMzRjUwODYx
Qjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0
b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzM0Y1MDg4MUI4NDRBMUEw
MDQxMzg1NiAvKiBJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzQwMEVDMDIyQTFDQzc4MDA5REVENTQgLyog
RnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbkV4ZWN1
dGFibGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNDlBNzdGMjQ5
MUYxNTkwMDFCQTMzNiAvKiBERkdDb2RlT3JpZ2luUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdDb2RlT3JpZ2luUG9vbC5jcHA7IHBhdGggPSBkZmcvREZHQ29kZU9yaWdpblBvb2wuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzQ5QTc4MDI0OTFGMTVBMDAxQkEzMzYg
LyogREZHQ29kZU9yaWdpblBvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ29kZU9yaWdpblBvb2wu
aDsgcGF0aCA9IGRmZy9ERkdDb2RlT3JpZ2luUG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzRFNjU3MzIwNjY4RThEMDBGQjgxQUMgLyogUGFyc2VIYXNoLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcnNlSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzRFNjU3NDIwNjY4RThFMDBGQjgxQUMgLyogUGFyc2VIYXNoLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcnNlSGFzaC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEVEQkY2MURCNUZGQzEwMERDODdBNSAvKiBGcmFtZVRy
YWNlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVUcmFjZXJzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODY0LDYgKzc4NjcsOCBAQAogCQkJCUE3
N0E0MjNCMTdBMEJCRkQwMEE4REI4MSAvKiBERkdDbG9iYmVyU2V0LmggKi8sCiAJCQkJMEYzQzFG
MTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLywKIAkJCQkw
RjNDMUYxOTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLywKKwkJ
CQlFMzQ5QTc3RjI0OTFGMTU5MDAxQkEzMzYgLyogREZHQ29kZU9yaWdpblBvb2wuY3BwICovLAor
CQkJCUUzNDlBNzgwMjQ5MUYxNUEwMDFCQTMzNiAvKiBERkdDb2RlT3JpZ2luUG9vbC5oICovLAog
CQkJCTBGMDQzOTZCMUIwM0RDMEIwMDk1OThCNyAvKiBERkdDb21iaW5lZExpdmVuZXNzLmNwcCAq
LywKIAkJCQkwRjA0Mzk2QzFCMDNEQzBCMDA5NTk4QjcgLyogREZHQ29tYmluZWRMaXZlbmVzcy5o
ICovLAogCQkJCTBGQjRCNTFBMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdDb21tb24uY3BwICovLApA
QCAtOTMyNyw2ICs5MzMyLDcgQEAKIAkJCQlBNzdBNDI0MDE3QTBCQkZEMDBBOERCODEgLyogREZH
Q2xvYmJlcml6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3QTQyNDIxN0EwQkJGRDAwQThEQjgx
IC8qIERGR0Nsb2JiZXJTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGM0MxRjFCMUI4NjhFNzkw
MEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM0
OUE3ODEyNDkxRjE2MTAwMUJBMzM2IC8qIERGR0NvZGVPcmlnaW5Qb29sLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjA0Mzk2RTFCMDNEQzBCMDA5NTk4QjcgLyogREZHQ29tYmluZWRMaXZlbmVzcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEQxNEMzQ0Q0QzAwN0MzREIxIC8qIERGR0NvbW1v
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMzIxNzBENDBCRjAwQkI3MjJDIC8qIERGR0Nv
bW1vbkRhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4
IDliYjcyY2I2ZDUyOTUzNjZmNjE4OGM2YTVkNmJmZDQ2ZjdjNmQ0ZmEuLjMzZGIzZmIwY2MxNzll
ZGJhMWM4MmVlMWI0ZmU2YzI1NTcxZmY3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQK
QEAgLTMzMiw2ICszMzIsNyBAQCBkZmcvREZHQ2xlYW5VcFBoYXNlLmNwcAogZGZnL0RGR0Nsb2Ji
ZXJTZXQuY3BwCiBkZmcvREZHQ2xvYmJlcml6ZS5jcHAKIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0
ZS5jcHAKK2RmZy9ERkdDb2RlT3JpZ2luUG9vbC5jcHAKIGRmZy9ERkdDb21iaW5lZExpdmVuZXNz
LmNwcAogZGZnL0RGR0NvbW1vbi5jcHAKIGRmZy9ERkdDb21tb25EYXRhLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzZDBlNTc2YmJmNDZl
OWQzYTRjYWU2ZGQwZDMxZTc3Mjc3YjM5MjFjLi45NTAyMzg5OTlkYjFiZjA0YmEzNmFhMmE5NTIy
OTA3NjI1MGVhY2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcApAQCAtMTg3NSw3ICsxODc1LDcgQEAgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggQ29k
ZUJsb2NrOjpuZXdFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmQKICAg
ICBSRUxFQVNFX0FTU0VSVChjYW5HZXRDb2RlT3JpZ2luKG9yaWdpbmFsQ2FsbFNpdGUpKTsKICAg
ICBBU1NFUlQoISFoYW5kbGVyRm9ySW5kZXgob3JpZ2luYWxDYWxsU2l0ZS5iaXRzKCkpKTsKICAg
ICBDb2RlT3JpZ2luIG9yaWdpbmFsT3JpZ2luID0gY29kZU9yaWdpbihvcmlnaW5hbENhbGxTaXRl
KTsKLSAgICByZXR1cm4gbV9qaXRDb2RlLT5kZmdDb21tb24oKS0+YWRkRGlzcG9zYWJsZUNhbGxT
aXRlSW5kZXgob3JpZ2luYWxPcmlnaW4pOworICAgIHJldHVybiBtX2ppdENvZGUtPmRmZ0NvbW1v
bigpLT5jb2RlT3JpZ2lucy0+YWRkRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgob3JpZ2luYWxPcmln
aW4pOwogI2Vsc2UKICAgICAvLyBXZSBuZXZlciBjcmVhdGUgbmV3IG9uLXRoZS1mbHkgZXhjZXB0
aW9uIGhhbmRsaW5nCiAgICAgLy8gY2FsbCBzaXRlcyBvdXRzaWRlIHRoZSBERkcvRlRMIGlubGlu
ZSBjYWNoZXMuCkBAIC0yNzY5LDkgKzI3NjksOSBAQCBBcnJheVByb2ZpbGUqIENvZGVCbG9jazo6
Z2V0QXJyYXlQcm9maWxlKEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKIH0KIAogI2lmIEVO
QUJMRShERkdfSklUKQotVmVjdG9yPENvZGVPcmlnaW4sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93
PiYgQ29kZUJsb2NrOjpjb2RlT3JpZ2lucygpCitERkc6OkNvZGVPcmlnaW5Qb29sJiBDb2RlQmxv
Y2s6OmNvZGVPcmlnaW5zKCkKIHsKLSAgICByZXR1cm4gbV9qaXRDb2RlLT5kZmdDb21tb24oKS0+
Y29kZU9yaWdpbnM7CisgICAgcmV0dXJuIG1faml0Q29kZS0+ZGZnQ29tbW9uKCktPmNvZGVPcmln
aW5zLmdldCgpOwogfQogCiBzaXplX3QgQ29kZUJsb2NrOjpudW1iZXJPZkRGR0lkZW50aWZpZXJz
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRl
eCBhOTE0NWY3YjA2Y2Q3ZTVjMzQwMGMwMWY2MDVhOTY3OWU2MWQ3YjNkLi40ZDE3ZmM5M2Y2N2Y0
YmM1ZTc4ZDY5ZDkyODQwZWU2NjNmOTYzMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQ29kZVR5cGUu
aCIKICNpbmNsdWRlICJDb21waWxhdGlvblJlc3VsdC5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRK
U0xvY2suaCIKKyNpbmNsdWRlICJERkdDb2RlT3JpZ2luUG9vbC5oIgogI2luY2x1ZGUgIkRGR0Nv
bW1vbi5oIgogI2luY2x1ZGUgIkRpcmVjdEV2YWxDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJFdmFs
RXhlY3V0YWJsZS5oIgpAQCAtNTMzLDcgKzUzNCw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIGJvb2wgaGFzRXhwcmVzc2lvbkluZm8oKSB7IHJldHVybiBtX3VubGlu
a2VkQ29kZS0+aGFzRXhwcmVzc2lvbkluZm8oKTsgfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCi0g
ICAgVmVjdG9yPENvZGVPcmlnaW4sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiYgY29kZU9yaWdp
bnMoKTsKKyAgICBERkc6OkNvZGVPcmlnaW5Qb29sJiBjb2RlT3JpZ2lucygpOwogICAgIAogICAg
IC8vIEhhdmluZyBjb2RlIG9yaWdpbnMgaW1wbGllcyB0aGF0IHRoZXJlIGhhcyBiZWVuIHNvbWUg
aW5saW5pbmcuCiAgICAgYm9vbCBoYXNDb2RlT3JpZ2lucygpCkBAIC01NTAsNyArNTUxLDcgQEAg
Y2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4oQ2FsbFNpdGVJbmRleCBpbmRleCkKICAgICB7Ci0gICAgICAgIHJldHVybiBjb2RlT3Jp
Z2lucygpW2luZGV4LmJpdHMoKV07CisgICAgICAgIHJldHVybiBjb2RlT3JpZ2lucygpLmdldChp
bmRleC5iaXRzKCkpOwogICAgIH0KIAogICAgIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZUhvbGRlciYgbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvZGVPcmln
aW5Qb29sLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29kZU9yaWdpblBvb2wu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZmZjg2ZTJjNGI5N2FkNmUzNGFhZjk3YWViNjRlZmM1NTI5YzFlMGYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvZGVPcmln
aW5Qb29sLmNwcApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRGR0NvZGVP
cmlnaW5Qb29sLmgiCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgeworCitDYWxsU2l0ZUluZGV4IENvZGVPcmlnaW5Qb29sOjphZGRDb2RlT3Jp
Z2luKENvZGVPcmlnaW4gY29kZU9yaWdpbikKK3sKKyAgICBpZiAobV9jb2RlT3JpZ2lucy5pc0Vt
cHR5KCkKKyAgICAgICAgfHwgbV9jb2RlT3JpZ2lucy5sYXN0KCkgIT0gY29kZU9yaWdpbikKKyAg
ICAgICAgbV9jb2RlT3JpZ2lucy5hcHBlbmQoY29kZU9yaWdpbik7CisgICAgdW5zaWduZWQgaW5k
ZXggPSBtX2NvZGVPcmlnaW5zLnNpemUoKSAtIDE7CisgICAgQVNTRVJUKG1fY29kZU9yaWdpbnNb
aW5kZXhdID09IGNvZGVPcmlnaW4pOworICAgIHJldHVybiBDYWxsU2l0ZUluZGV4KGluZGV4KTsK
K30KKworQ2FsbFNpdGVJbmRleCBDb2RlT3JpZ2luUG9vbDo6YWRkVW5pcXVlQ2FsbFNpdGVJbmRl
eChDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCit7CisgICAgbV9jb2RlT3JpZ2lucy5hcHBlbmQoY29k
ZU9yaWdpbik7CisgICAgdW5zaWduZWQgaW5kZXggPSBtX2NvZGVPcmlnaW5zLnNpemUoKSAtIDE7
CisgICAgQVNTRVJUKG1fY29kZU9yaWdpbnNbaW5kZXhdID09IGNvZGVPcmlnaW4pOworICAgIHJl
dHVybiBDYWxsU2l0ZUluZGV4KGluZGV4KTsKK30KKworQ2FsbFNpdGVJbmRleCBDb2RlT3JpZ2lu
UG9vbDo6bGFzdENhbGxTaXRlKCkgY29uc3QKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX2NvZGVP
cmlnaW5zLnNpemUoKSk7CisgICAgcmV0dXJuIENhbGxTaXRlSW5kZXgobV9jb2RlT3JpZ2lucy5z
aXplKCkgLSAxKTsKK30KKworRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggQ29kZU9yaWdpblBvb2w6
OmFkZERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4KENvZGVPcmlnaW4gY29kZU9yaWdpbikKK3sKKyAg
ICBpZiAoIW1fY2FsbFNpdGVJbmRleEZyZWVMaXN0LmlzRW1wdHkoKSkgeworICAgICAgICB1bnNp
Z25lZCBpbmRleCA9IG1fY2FsbFNpdGVJbmRleEZyZWVMaXN0LnRha2VMYXN0KCk7CisgICAgICAg
IG1fY29kZU9yaWdpbnNbaW5kZXhdID0gY29kZU9yaWdpbjsKKyAgICAgICAgcmV0dXJuIERpc3Bv
c2FibGVDYWxsU2l0ZUluZGV4KGluZGV4KTsKKyAgICB9CisKKyAgICBtX2NvZGVPcmlnaW5zLmFw
cGVuZChjb2RlT3JpZ2luKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29kZU9yaWdpbnMuc2l6
ZSgpIC0gMTsKKyAgICBBU1NFUlQobV9jb2RlT3JpZ2luc1tpbmRleF0gPT0gY29kZU9yaWdpbik7
CisgICAgcmV0dXJuIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4KGluZGV4KTsKK30KKwordm9pZCBD
b2RlT3JpZ2luUG9vbDo6cmVtb3ZlRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgoRGlzcG9zYWJsZUNh
bGxTaXRlSW5kZXggY2FsbFNpdGUpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoY2FsbFNpdGUuYml0
cygpIDwgbV9jb2RlT3JpZ2lucy5zaXplKCkpOworICAgIG1fY2FsbFNpdGVJbmRleEZyZWVMaXN0
LmFwcGVuZChjYWxsU2l0ZS5iaXRzKCkpOworICAgIG1fY29kZU9yaWdpbnNbY2FsbFNpdGUuYml0
cygpXSA9IENvZGVPcmlnaW4oKTsKK30KKwordm9pZCBDb2RlT3JpZ2luUG9vbDo6c2hyaW5rVG9G
aXQoKQoreworICAgIG1fY29kZU9yaWdpbnMuc2hyaW5rVG9GaXQoKTsKKyAgICBtX2NhbGxTaXRl
SW5kZXhGcmVlTGlzdC5zaHJpbmtUb0ZpdCgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29kZU9yaWdpblBvb2wuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29kZU9yaWdpblBvb2wuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNGIyMjBjNDZlNGI0MWYzNTYw
NTMzYjNmNWFiOGMyYTIzMzNjMzVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb2RlT3JpZ2luUG9vbC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShERkdfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2Ns
YXNzIENvZGVPcmlnaW5Qb29sIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvZGVPcmln
aW5Qb29sPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDb2RlT3JpZ2luUG9vbD4gY3JlYXRl
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvZGVPcmlnaW5Qb29sKTsK
KyAgICB9CisKKyAgICBDYWxsU2l0ZUluZGV4IGFkZENvZGVPcmlnaW4oQ29kZU9yaWdpbik7Cisg
ICAgQ2FsbFNpdGVJbmRleCBhZGRVbmlxdWVDYWxsU2l0ZUluZGV4KENvZGVPcmlnaW4pOworICAg
IENhbGxTaXRlSW5kZXggbGFzdENhbGxTaXRlKCkgY29uc3Q7CisgICAgRGlzcG9zYWJsZUNhbGxT
aXRlSW5kZXggYWRkRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgoQ29kZU9yaWdpbik7CisgICAgdm9p
ZCByZW1vdmVEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleChEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCk7
CisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOworCisgICAgQ29kZU9yaWdpbiBnZXQodW5zaWduZWQg
aW5kZXgpIHsgcmV0dXJuIG1fY29kZU9yaWdpbnNbaW5kZXhdOyB9CisgICAgdW5zaWduZWQgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZU9yaWdpbnMuc2l6ZSgpOyB9CisKK3ByaXZhdGU6Cisg
ICAgVmVjdG9yPENvZGVPcmlnaW4sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX2NvZGVPcmln
aW5zOworICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9jYWxsU2l0ZUluZGV4RnJlZUxpc3Q7Cit9Owor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuY3BwCmluZGV4IDYyZjhj
YjQ0YTk2MmFhYzdmMjA5ZGUzYWQ2YWFlZGViMjJlODI0NzUuLjY1ZWY1NDA5ZjRlOTZlNTU2MzY4
ZTQ2OTM5ZGM1NmQwNWQxZDhiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29tbW9uRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b21tb25EYXRhLmNwcApAQCAtNDcsNTUgKzQ3LDkgQEAgdm9pZCBDb21tb25EYXRhOjpub3RpZnlD
b21waWxpbmdTdHJ1Y3R1cmVUcmFuc2l0aW9uKFBsYW4mIHBsYW4sIENvZGVCbG9jayogY29kZUIK
ICAgICAgICAgbm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0LmdldCgpKTsKIH0KIAotQ2FsbFNpdGVJ
bmRleCBDb21tb25EYXRhOjphZGRDb2RlT3JpZ2luKENvZGVPcmlnaW4gY29kZU9yaWdpbikKLXsK
LSAgICBpZiAoY29kZU9yaWdpbnMuaXNFbXB0eSgpCi0gICAgICAgIHx8IGNvZGVPcmlnaW5zLmxh
c3QoKSAhPSBjb2RlT3JpZ2luKQotICAgICAgICBjb2RlT3JpZ2lucy5hcHBlbmQoY29kZU9yaWdp
bik7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBjb2RlT3JpZ2lucy5zaXplKCkgLSAxOwotICAgIEFT
U0VSVChjb2RlT3JpZ2luc1tpbmRleF0gPT0gY29kZU9yaWdpbik7Ci0gICAgcmV0dXJuIENhbGxT
aXRlSW5kZXgoaW5kZXgpOwotfQotCi1DYWxsU2l0ZUluZGV4IENvbW1vbkRhdGE6OmFkZFVuaXF1
ZUNhbGxTaXRlSW5kZXgoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQotewotICAgIGNvZGVPcmlnaW5z
LmFwcGVuZChjb2RlT3JpZ2luKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IGNvZGVPcmlnaW5zLnNp
emUoKSAtIDE7Ci0gICAgQVNTRVJUKGNvZGVPcmlnaW5zW2luZGV4XSA9PSBjb2RlT3JpZ2luKTsK
LSAgICByZXR1cm4gQ2FsbFNpdGVJbmRleChpbmRleCk7Ci19Ci0KLUNhbGxTaXRlSW5kZXggQ29t
bW9uRGF0YTo6bGFzdENhbGxTaXRlKCkgY29uc3QKLXsKLSAgICBSRUxFQVNFX0FTU0VSVChjb2Rl
T3JpZ2lucy5zaXplKCkpOwotICAgIHJldHVybiBDYWxsU2l0ZUluZGV4KGNvZGVPcmlnaW5zLnNp
emUoKSAtIDEpOwotfQotCi1EaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBDb21tb25EYXRhOjphZGRE
aXNwb3NhYmxlQ2FsbFNpdGVJbmRleChDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi17Ci0gICAgaWYg
KGNhbGxTaXRlSW5kZXhGcmVlTGlzdC5zaXplKCkpIHsKLSAgICAgICAgdW5zaWduZWQgaW5kZXgg
PSBjYWxsU2l0ZUluZGV4RnJlZUxpc3QudGFrZUFueSgpOwotICAgICAgICBjb2RlT3JpZ2luc1tp
bmRleF0gPSBjb2RlT3JpZ2luOwotICAgICAgICByZXR1cm4gRGlzcG9zYWJsZUNhbGxTaXRlSW5k
ZXgoaW5kZXgpOwotICAgIH0KLQotICAgIGNvZGVPcmlnaW5zLmFwcGVuZChjb2RlT3JpZ2luKTsK
LSAgICB1bnNpZ25lZCBpbmRleCA9IGNvZGVPcmlnaW5zLnNpemUoKSAtIDE7Ci0gICAgQVNTRVJU
KGNvZGVPcmlnaW5zW2luZGV4XSA9PSBjb2RlT3JpZ2luKTsKLSAgICByZXR1cm4gRGlzcG9zYWJs
ZUNhbGxTaXRlSW5kZXgoaW5kZXgpOwotfQotCi0KLXZvaWQgQ29tbW9uRGF0YTo6cmVtb3ZlRGlz
cG9zYWJsZUNhbGxTaXRlSW5kZXgoRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggY2FsbFNpdGUpCi17
Ci0gICAgUkVMRUFTRV9BU1NFUlQoY2FsbFNpdGUuYml0cygpIDwgY29kZU9yaWdpbnMuc2l6ZSgp
KTsKLSAgICBjYWxsU2l0ZUluZGV4RnJlZUxpc3QuYWRkKGNhbGxTaXRlLmJpdHMoKSk7Ci0gICAg
Y29kZU9yaWdpbnNbY2FsbFNpdGUuYml0cygpXSA9IENvZGVPcmlnaW4oKTsKLX0KLQogdm9pZCBD
b21tb25EYXRhOjpzaHJpbmtUb0ZpdCgpCiB7Ci0gICAgY29kZU9yaWdpbnMuc2hyaW5rVG9GaXQo
KTsKKyAgICBjb2RlT3JpZ2lucy0+c2hyaW5rVG9GaXQoKTsKICAgICBkZmdJZGVudGlmaWVycy5z
aHJpbmtUb0ZpdCgpOwogICAgIHdlYWtSZWZlcmVuY2VzLnNocmlua1RvRml0KCk7CiAgICAgd2Vh
a1N0cnVjdHVyZVJlZmVyZW5jZXMuc2hyaW5rVG9GaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb21tb25EYXRhLmgKaW5kZXggZGMzMjRkZTllYTY3M2FmOTg4MDZkMmJmNDQ5Njhh
NTNiM2U1ZTRhOC4uNjUxZWUzMDQ3NGJmNjgwYzliOTliODM3NjZjZTY4NTc1NmJjOWY2YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaCIKICNpbmNsdWRl
ICJERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuaCIKICNpbmNsdWRl
ICJERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJERkdDb2RlT3Jp
Z2luUG9vbC5oIgogI2luY2x1ZGUgIkRGR0p1bXBSZXBsYWNlbWVudC5oIgogI2luY2x1ZGUgIkRG
R09TUkVudHJ5LmgiCiAjaW5jbHVkZSAiSW5saW5lQ2FsbEZyYW1lU2V0LmgiCkBAIC03MywyMCAr
NzQsMTIgQEAgY2xhc3MgQ29tbW9uRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29t
bW9uRGF0YSk7CiBwdWJsaWM6CiAgICAgQ29tbW9uRGF0YSgpCi0gICAgICAgIDogaXNTdGlsbFZh
bGlkKHRydWUpCi0gICAgICAgICwgZnJhbWVSZWdpc3RlckNvdW50KHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgLCByZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JF
eGl0KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICAgICAgOiBjb2Rl
T3JpZ2lucyhDb2RlT3JpZ2luUG9vbDo6Y3JlYXRlKCkpCiAgICAgeyB9CiAgICAgfkNvbW1vbkRh
dGEoKTsKICAgICAKICAgICB2b2lkIG5vdGlmeUNvbXBpbGluZ1N0cnVjdHVyZVRyYW5zaXRpb24o
UGxhbiYsIENvZGVCbG9jayosIE5vZGUqKTsKLSAgICBDYWxsU2l0ZUluZGV4IGFkZENvZGVPcmln
aW4oQ29kZU9yaWdpbik7Ci0gICAgQ2FsbFNpdGVJbmRleCBhZGRVbmlxdWVDYWxsU2l0ZUluZGV4
KENvZGVPcmlnaW4pOwotICAgIENhbGxTaXRlSW5kZXggbGFzdENhbGxTaXRlKCkgY29uc3Q7CiAK
LSAgICBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBhZGREaXNwb3NhYmxlQ2FsbFNpdGVJbmRleChD
b2RlT3JpZ2luKTsKLSAgICB2b2lkIHJlbW92ZURpc3Bvc2FibGVDYWxsU2l0ZUluZGV4KERpc3Bv
c2FibGVDYWxsU2l0ZUluZGV4KTsKLSAgICAKICAgICB2b2lkIHNocmlua1RvRml0KCk7CiAgICAg
CiAgICAgYm9vbCBpbnZhbGlkYXRlKCk7IC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBkaWQgaW52YWxp
ZGF0ZSwgb3IgZmFsc2UgaWYgdGhlIGNvZGUgYmxvY2sgd2FzIGFscmVhZHkgaW52YWxpZGF0ZWQu
CkBAIC0xMjAsNyArMTEzLDcgQEAgY2xhc3MgQ29tbW9uRGF0YSB7CiAgICAgdm9pZCBjbGVhcldh
dGNocG9pbnRzKCk7CiAKICAgICBSZWZQdHI8SW5saW5lQ2FsbEZyYW1lU2V0PiBpbmxpbmVDYWxs
RnJhbWVzOwotICAgIFZlY3RvcjxDb2RlT3JpZ2luLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4g
Y29kZU9yaWdpbnM7CisgICAgUmVmPENvZGVPcmlnaW5Qb29sPiBjb2RlT3JpZ2luczsKICAgICAK
ICAgICBWZWN0b3I8SWRlbnRpZmllcj4gZGZnSWRlbnRpZmllcnM7CiAgICAgVmVjdG9yPFdlYWtS
ZWZlcmVuY2VUcmFuc2l0aW9uPiB0cmFuc2l0aW9uczsKQEAgLTEzNywxOSArMTMwLDE1IEBAIGNs
YXNzIENvbW1vbkRhdGEgewogICAgIFJlZlB0cjxQcm9maWxlcjo6Q29tcGlsYXRpb24+IGNvbXBp
bGF0aW9uOwogICAgIGJvb2wgbGl2ZW5lc3NIYXNCZWVuUHJvdmVkOyAvLyBJbml0aWFsaXplZCBh
bmQgdXNlZCBvbiBldmVyeSBHQy4KICAgICBib29sIGFsbFRyYW5zaXRpb25zSGF2ZUJlZW5NYXJr
ZWQ7IC8vIEluaXRpYWxpemVkIGFuZCB1c2VkIG9uIGV2ZXJ5IEdDLgotICAgIGJvb2wgaXNTdGls
bFZhbGlkOworICAgIGJvb2wgaXNTdGlsbFZhbGlkIHsgdHJ1ZSB9OwogICAgIGJvb2wgaGFzVk1U
cmFwc0JyZWFrcG9pbnRzSW5zdGFsbGVkIHsgZmFsc2UgfTsKICAgICAKICNpZiBVU0UoSlNWQUxV
RTMyXzY0KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWc8ZG91YmxlPj4gZG91YmxlQ29uc3RhbnRz
OwogI2VuZGlmCiAgICAgCi0gICAgdW5zaWduZWQgZnJhbWVSZWdpc3RlckNvdW50OwotICAgIHVu
c2lnbmVkIHJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4aXQ7Ci0KLXByaXZhdGU6Ci0gICAgSGFz
aFNldDx1bnNpZ25lZCwgV1RGOjpJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+IGNhbGxTaXRlSW5kZXhGcmVlTGlzdDsKLQorICAg
IHVuc2lnbmVkIGZyYW1lUmVnaXN0ZXJDb3VudCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSB9OworICAgIHVuc2lnbmVkIHJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4aXQg
eyBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgfTsKIH07CiAKIENvZGVCbG9j
ayogY29kZUJsb2NrRm9yVk1UcmFwUEModm9pZCogcGMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBmZTlkYjhiODhlMDYwNTgyZmI5NzYyZmJm
Yjg2YjBhZGIzNDAzOTgyLi5jNjFmOTk3OWMyZDU4ZTNmMWVkN2ZmYWI1MjVhYjE3M2ViNTZiM2Zj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAt
NjI2LDcgKzYyNiw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmV4Y2VwdGlvbkNoZWNrKCkKICAgICAg
ICAgdW5zaWduZWQgc3RyZWFtSW5kZXggPSBtX3NwZWN1bGF0aXZlLT5tX291dE9mTGluZVN0cmVh
bUluZGV4ID8gKm1fc3BlY3VsYXRpdmUtPm1fb3V0T2ZMaW5lU3RyZWFtSW5kZXggOiBtX3NwZWN1
bGF0aXZlLT5tX3N0cmVhbS0+c2l6ZSgpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBo
YWRFeGNlcHRpb24gPSBlbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0oKSk7CiAgICAg
ICAgIC8vIFdlIGFzc3VtZSBoZXJlIHRoYXQgdGhpcyBpcyBjYWxsZWQgYWZ0ZXIgY2FsbE9wZWFy
dGlvbigpL2FwcGVuZENhbGwoKSBpcyBjYWxsZWQuCi0gICAgICAgIGFwcGVuZEV4Y2VwdGlvbkhh
bmRsaW5nT1NSRXhpdChFeGNlcHRpb25DaGVjaywgc3RyZWFtSW5kZXgsIG9wQ2F0Y2hPcmlnaW4s
IGV4Y2VwdGlvbkhhbmRsZXIsIG1faml0Q29kZS0+Y29tbW9uLmxhc3RDYWxsU2l0ZSgpLCBoYWRF
eGNlcHRpb24pOworICAgICAgICBhcHBlbmRFeGNlcHRpb25IYW5kbGluZ09TUkV4aXQoRXhjZXB0
aW9uQ2hlY2ssIHN0cmVhbUluZGV4LCBvcENhdGNoT3JpZ2luLCBleGNlcHRpb25IYW5kbGVyLCBt
X2ppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+bGFzdENhbGxTaXRlKCksIGhhZEV4Y2VwdGlv
bik7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmFwcGVuZChlbWl0RXhj
ZXB0aW9uQ2hlY2sodm0oKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5oCmluZGV4IDM2YjZlNjNhYzBkMTVhNWRiYzc2N2E1ZjFjNzRhMjQwYzYxZGE2OWYu
LmI3ZGVjYTgxYWYyZmZjMzE4MjI4NDU2NWViMmU0ODg0YTlkNWY4OTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBjbGFz
cyBKSVRDb21waWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAgIAogICAgIENhbGxTaXRl
SW5kZXggYWRkQ2FsbFNpdGUoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIG1faml0Q29kZS0+Y29tbW9uLmFkZENvZGVPcmlnaW4oY29kZU9yaWdpbik7CisgICAg
ICAgIHJldHVybiBtX2ppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkQ29kZU9yaWdpbihj
b2RlT3JpZ2luKTsKICAgICB9CiAKICAgICBDYWxsU2l0ZUluZGV4IGVtaXRTdG9yZUNvZGVPcmln
aW4oQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDUzMDA2Y2JlMzExYjllMTMyNDg3N2Q1ZmIxMDUwYzcz
Mjk4MGFjNDYuLjcwYzA5ZWE0NDBiMmQ2MWNiOGZkNmI5NGVjOTFjNTBlYTQ1ZjVhNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTQxOTcs
NyArNDE5Nyw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCiAgICAgICAgICAg
ICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAgICAg
c3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24u
Y29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKIAogICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRp
b25zID0KICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRD
cmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwpAQCAtNDgxMCw3ICs0ODEwLDcgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxv
d1NjcmF0Y2goaml0KTsKIAotICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uYWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNp
dGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNh
bGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAogICAgICAgICAgICAgICAgIC8v
IFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBmb3Igb3BlcmF0aW9uIGNhbGxzLgogICAg
ICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0gZXhj
ZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwpA
QCAtNTQwOCw3ICs1NDA4LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAKICAg
ICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPQotICAgICAgICAgICAg
ICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUt
PmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwogCiAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+
IGV4Y2VwdGlvbnMgPQogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVk
dWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CkBAIC05MjY2LDcgKzkyNjYsNyBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3Io
CiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgICAgICBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZFVuaXF1ZUNh
bGxTaXRlSW5kZXgoY29kZU9yaWdpbik7CisgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZUluZGV4ID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5p
cXVlQ2FsbFNpdGVJbmRleChjb2RlT3JpZ2luKTsKIAogICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUlu
ZGV4KTsKIApAQCAtOTM4Niw3ICs5Mzg2LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7Ci0gICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUt
PmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KGNvZGVPcmlnaW4pOworICAg
ICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2Rl
LT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgoY29kZU9yaWdpbik7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHBh
cmFtc1shaXNUYWlsXS5ncHIoKTsKIApAQCAtOTU3NCw3ICs5NTc0LDcgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAg
Wz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBw
YXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Ug
YWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZUluZGV4ID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KGNv
ZGVPcmlnaW4pOworICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9
IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5k
ZXgoY29kZU9yaWdpbik7CiAKICAgICAgICAgICAgICAgICAvLyBZZXMsIHRoaXMgaXMgcmVhbGx5
IG5lY2Vzc2FyeS4gWW91IGNvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiBpbiBhIGhvc3QgY2FsbCBv
biB0aGUKICAgICAgICAgICAgICAgICAvLyBzbG93IHBhdGguIFRoYXQnbGwgcm91dGUgdXMgdG8g
b3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcigpLCB3aGljaCB1bndpbmRzIHN0YXJ0aW5n
CkBAIC05NzE4LDcgKzk3MTgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAg
Wz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBw
YXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Ug
YWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRV
bmlxdWVDYWxsU2l0ZUluZGV4KGNvZGVPcmlnaW4pOworICAgICAgICAgICAgICAgICAgICBzdGF0
ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KGNv
ZGVPcmlnaW4pOwogCiAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+
IGV4Y2VwdGlvbnMgPQogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVk
dWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CkBAIC0xMDAyMCw3ICsxMDAyMCw3
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
ICAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPQotICAgICAgICAg
ICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgo
Y29kZU9yaWdpbik7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24u
Y29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgoY29kZU9yaWdpbik7CiAKICAgICAg
ICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CiAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFy
YW1zKS0+anVtcHMoaml0KTsKQEAgLTEwMjc0LDcgKzEwMjc0LDcgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz0s
ICZ2bV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgo
Y29kZU9yaWdpbik7CisgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4
ID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJ
bmRleChjb2RlT3JpZ2luKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBCb3g8
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2No
ZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKICAgICAgICAgICAgICAgICAK
QEAgLTExNzczLDcgKzExNzczLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAg
ICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAK
ICAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPQotICAgICAgICAg
ICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgo
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENv
ZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmln
aW4uc2VtYW50aWMpOwogCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4
aXQgdGFyZ2V0IGZvciBvcGVyYXRpb24gY2FsbHMuCiAgICAgICAgICAgICAgICAgQm94PENDYWxs
SGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQpAQCAtMTIwMzUsNyArMTIwMzUsNyBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5k
KGppdC5icmFuY2hJZk5vdENlbGwocHJvdG90eXBlR1BSKSk7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAg
ICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2Rl
LT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlz
IHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAg
ICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CkBAIC0xMzEwOSw3
ICsxMzEwOSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIExWYWx1ZSBwYWNrZXQg
PSBlbnN1cmVTaGFkb3dDaGlja2VuUGFja2V0KCk7CiAgICAgICAgIExWYWx1ZSB0aGlzVmFsdWUg
PSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBMVmFsdWUgc2NvcGUgPSBs
b3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
SW5kZXggPSBtX2Z0bFN0YXRlLmppdENvZGUtPmNvbW1vbi5hZGRDb2RlT3JpZ2luKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0g
bV9mdGxTdGF0ZS5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZENvZGVPcmlnaW4obV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuc3RvcmVQdHIo
bV9jYWxsRnJhbWUsIHBhY2tldCwgbV9oZWFwcy5TaGFkb3dDaGlja2VuX1BhY2tldF9mcmFtZSk7
CiAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDxp
bnRwdHJfdD4oU2hhZG93Q2hpY2tlbjo6UGFja2V0Ojp0YWlsTWFya2VyKCkpKSwgcGFja2V0LCBt
X2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X2NhbGxlZSk7CkBAIC0xMzUyNCw3ICsxMzUyNCw3
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCiAgICAgICAgICAgICAgICAgQ2Fs
bFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmpp
dENvZGUtPmNvbW1vbi5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdp
bnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAogICAg
ICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBmb3Igb3BlcmF0
aW9uIGNhbGxzLgogICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBl
eGNlcHRpb25zID0KQEAgLTEzNTkzLDcgKzEzNTkzLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7CiAKICAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgg
PQotICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmFkZFVuaXF1ZUNh
bGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICAgICAg
c3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRl
eChub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0
aGUgZGlyZWN0IGV4aXQgdGFyZ2V0IGZvciBvcGVyYXRpb24gY2FsbHMuCiAgICAgICAgICAgICAg
ICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQpAQCAtMTY3MzYsNyAr
MTY3MzYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBsaW5rZWREb25lID0g
bGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGRvbmUpOwogCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXRDb2RlLT5jb21tb24uYWRkVW5p
cXVlQ2FsbFNpdGVJbmRleChvcmlnaW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4
KG9yaWdpbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGF6eVNsb3dQYXRoLT5pbml0aWFsaXplKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtlZFBhdGNoYWJsZUp1bXAsIGxp
bmtlZERvbmUsCkBAIC0xODY2NSw3ICsxODY2NSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgCiAgICAgdm9pZCBjYWxsUHJlZmxpZ2h0KENvZGVPcmlnaW4gY29kZU9yaWdpbikKICAgICB7
Ci0gICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IG1fZnRsU3RhdGUuaml0Q29k
ZS0+Y29tbW9uLmFkZENvZGVPcmlnaW4oY29kZU9yaWdpbik7CisgICAgICAgIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGVJbmRleCA9IG1fZnRsU3RhdGUuaml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5z
LT5hZGRDb2RlT3JpZ2luKGNvZGVPcmlnaW4pOwogICAgICAgICBtX291dC5zdG9yZTMyKAogICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAg
ICAgICB0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTbG93UGF0aENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0
aENhbGwuY3BwCmluZGV4IGZiN2I3ZDIzOTllZWRlNWEzYjA1OGVmMTc5YzhiMTQ2YTBjMzdiZmIu
LjMyODRhZDJmYzVlZGIyNzBjOTc4OTA0ODViZWFmNTdkYWU1MzY1MzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKQEAgLTEzNiw3ICsxMzYsNyBA
QCBTbG93UGF0aENhbGwgU2xvd1BhdGhDYWxsQ29udGV4dDo6bWFrZUNhbGwoVk0mIHZtLCBGdW5j
dGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+CiBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXhGb3JD
b2RlT3JpZ2luKFN0YXRlJiBzdGF0ZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogewogICAgIGlm
IChjb2RlT3JpZ2luKQotICAgICAgICByZXR1cm4gc3RhdGUuaml0Q29kZS0+Y29tbW9uLmFkZENv
ZGVPcmlnaW4oY29kZU9yaWdpbik7CisgICAgICAgIHJldHVybiBzdGF0ZS5qaXRDb2RlLT5jb21t
b24uY29kZU9yaWdpbnMtPmFkZENvZGVPcmlnaW4oY29kZU9yaWdpbik7CiAgICAgcmV0dXJuIENh
bGxTaXRlSW5kZXgoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9H
Q0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCmluZGV4IGY0OTg3ODM2N2MzZmUwNWRjNTE0M2M0MmQw
ZmRiMGNhYTRhYjQ3YjMuLmNhZGQ0MzVhYzg0NGRhZmNkMGQyMTUyN2VjNzJkNTdmMzgyOGUwYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0
aW5lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91
dGluZS5jcHAKQEAgLTEwNCwyMiArMTA0LDM5IEBAIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhF
eGNlcHRpb25IYW5kbGVyOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuCiAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgRGlzcG9zYWJsZUNh
bGxTaXRlSW5kZXggZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpCiAgICAgOiBNYXJraW5n
R0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2Fs
bExpbmtJbmZvcykpCiAgICAgLCBtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGVC
bG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzKQorI2lmIEVOQUJMRShERkdfSklUKQorICAgICwgbV9j
b2RlT3JpZ2luUG9vbCgmbV9jb2RlQmxvY2tXaXRoRXhjZXB0aW9uSGFuZGxlci0+Y29kZU9yaWdp
bnMoKSkKKyNlbmRpZgogICAgICwgbV9leGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRleChleGNl
cHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRleCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2NvZGVC
bG9ja1dpdGhFeGNlcHRpb25IYW5kbGVyKTsKICAgICBBU1NFUlQoISFtX2NvZGVCbG9ja1dpdGhF
eGNlcHRpb25IYW5kbGVyLT5oYW5kbGVyRm9ySW5kZXgoZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRl
SW5kZXguYml0cygpKSk7CiB9CiAKK0dDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25I
YW5kbGVyOjp+R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoKQorewor
I2lmIEVOQUJMRShERkdfSklUKQorICAgIC8vIFdlIGRlbGF5IGRlYWxsb2NhdGlvbiBvZiBtX2V4
Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4IHVudGlsIEdDQXdhcmVKSVRTdHViUm91dGluZVdp
dGhFeGNlcHRpb25IYW5kbGVyIGdldHMgZGVzdHJveWVkLgorICAgIC8vIFRoaXMgbWVhbnMgdGhh
dCBDYWxsU2l0ZUluZGV4IGNhbiBiZSByZXNlcnZlZCBjb3JyZWN0bHkgc28gbG9uZyBhcyB0aGUg
Y29kZSBvd25lZCBieSBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBp
cyBvbiB0aGUgc3RhY2suCisgICAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgc2luY2UgQ2FsbFNpdGUg
Y2FuIGJlIHF1ZXJpZWQgc28gbG9uZyBhcyB0aGlzIGNvZGUgaXMgb24gdGhlIHN0YWNrOiBTdGFj
a1Zpc2l0b3IgY2FuIHJldHJlaXZlIENhbGxTaXRlSW5kZXggZnJvbSB0aGUgc3RhY2suCisgICAg
QVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkgJiYgIVRocmVhZDo6bWF5QmVHQ1RocmVhZCgp
KTsKKyAgICBpZiAobV9jb2RlT3JpZ2luUG9vbCkKKyAgICAgICAgbV9jb2RlT3JpZ2luUG9vbC0+
cmVtb3ZlRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgobV9leGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJ
bmRleCk7CisjZW5kaWYKK30KKwogdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0
aW9uSGFuZGxlcjo6YWJvdXRUb0RpZSgpCiB7CiAgICAgbV9jb2RlQmxvY2tXaXRoRXhjZXB0aW9u
SGFuZGxlciA9IG51bGxwdHI7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgbV9jb2RlT3JpZ2lu
UG9vbCA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAogdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmVX
aXRoRXhjZXB0aW9uSGFuZGxlcjo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpCiB7CiAjaWYgRU5BQkxF
KERGR19KSVQpCiAgICAgaWYgKG1fY29kZUJsb2NrV2l0aEV4Y2VwdGlvbkhhbmRsZXIpIHsKLSAg
ICAgICAgbV9jb2RlQmxvY2tXaXRoRXhjZXB0aW9uSGFuZGxlci0+aml0Q29kZSgpLT5kZmdDb21t
b24oKS0+cmVtb3ZlRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgobV9leGNlcHRpb25IYW5kbGVyQ2Fs
bFNpdGVJbmRleCk7CiAgICAgICAgIG1fY29kZUJsb2NrV2l0aEV4Y2VwdGlvbkhhbmRsZXItPnJl
bW92ZUV4Y2VwdGlvbkhhbmRsZXJGb3JDYWxsU2l0ZShtX2V4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0
ZUluZGV4KTsKICAgICAgICAgbV9jb2RlQmxvY2tXaXRoRXhjZXB0aW9uSGFuZGxlciA9IG51bGxw
dHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJl
SklUU3R1YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0
dWJSb3V0aW5lLmgKaW5kZXggMTVjZDhjNjczNjIwYjc5MzQ5YjI2OTFlOWI4NGRhMzUwNTM2Yjk0
OC4uMzE5ODY0ZGFjOTRlNjFkMjE4ZDJhN2I1NWU4NGU5OTdkZTdiNTNjMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCkBAIC0zMyw2
ICszMyw5IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKK25h
bWVzcGFjZSBERkcgeworY2xhc3MgQ29kZU9yaWdpblBvb2w7Cit9CiAKIGNsYXNzIENhbGxMaW5r
SW5mbzsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwpAQCAtMTAyLDEyICsxMDUsMTYgQEAgY2xh
c3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIgZmluYWwgOiBwdWJs
aWMgTWFya2luZ0dDQXdhcmVKSVQKICAgICB0eXBlZGVmIEdDQXdhcmVKSVRTdHViUm91dGluZSBC
YXNlOwogCiAgICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29u
c3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgY29u
c3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5m
bz4mJiwgQ29kZUJsb2NrKiwgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgpOworICAgIH5HQ0F3YXJl
SklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcigpIGZpbmFsOwogCiAgICAgdm9pZCBh
Ym91dFRvRGllKCkgZmluYWw7CiAgICAgdm9pZCBvYnNlcnZlWmVyb1JlZkNvdW50KCkgZmluYWw7
CiAKIHByaXZhdGU6CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5k
bGVyOworI2lmIEVOQUJMRShERkdfSklUKQorICAgIFJlZlB0cjxERkc6OkNvZGVPcmlnaW5Qb29s
PiBtX2NvZGVPcmlnaW5Qb29sOworI2VuZGlmCiAgICAgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgg
bV9leGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRleDsKIH07CiAKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzBhNTEwNzkzZDZlMDAzMDdm
NWM5MjFiNmQxZDhkNDIwNTg4MzFkZS4uNmM0NThjYzFiZWY4MDYwNjE1NzkyM2IyMTBmMTVlMjY0
ZDAyMjFlNSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wNi0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFJldHVybiBEaXNwb3NhYmxlQ2FsbFNpdGVJ
bmRleCB3aGVuIGRlc3Ryb3lpbmcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhh
bmRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MzA2OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQyMDUxODY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvZG9udC1kaXNwb3NlLWNh
bGxzaXRlaW5kZXgtd2hpbGUtZXhlY3V0aW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGVtcHR5RnVu
Y3Rpb24pOgorICAgICAgICAoZm9vLmJhci5zZXQgY2F0Y2gpOgorICAgICAgICAoZm9vLmJhcik6
CisgICAgICAgIChmb28pOgorCiAyMDIwLTA2LTEwICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gYWRkIHN0cmVzcyB0ZXN0IGZvciBvcF9nZXRfcHJp
dmF0ZV9uYW1lCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kb250LWRpc3Bvc2UtY2FsbHNp
dGVpbmRleC13aGlsZS1leGVjdXRpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9kb250LWRpc3Bvc2Ut
Y2FsbHNpdGVpbmRleC13aGlsZS1leGVjdXRpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzkzMzliZDZlZmIy
NmRkNTczOTA0ZTBlMTQ3ODQ5NzMxYWE3ZmZhMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2RvbnQtZGlzcG9zZS1jYWxsc2l0ZWluZGV4LXdoaWxlLWV4ZWN1dGluZy5qcwpAQCAt
MCwwICsxLDI0IEBACisvL0AgcnVuRGVmYXVsdCgiLS1qaXRQb2xpY3lTY2FsZT0wIikKKworZnVu
Y3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9CisKK2Z1bmN0aW9uIGZvbyhhMCkgeworICBmdW5jdGlv
biBiYXIoYTEpIHsKKyAgICBsZXQgbyA9IE9iamVjdChhMCk7CisgICAgdHJ5IHsKKyAgICAgIG8u
eCA9IDA7CisgICAgICBuZXcgU2V0KCkudmFsdWVzKCk7CisgICAgICBnYygpOworICAgICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGExLCAneCcsIHsgc2V0OiBiYXIgfSk7CisgICAgfSBjYXRjaCB7
fQorCisgICAgdHJ5IHsKKyAgICAgIEZ1bmN0aW9uKCdmdW5jdGlvbicpOworICAgIH0gY2F0Y2gg
e30KKyAgfQorICBiYXIoZW1wdHlGdW5jdGlvbik7Cit9CisKK2ZvbygwKTsKK2ZvciAobGV0IGk9
MDsgaTwxMDA7IGkrKykKKyAgZm9vKGVtcHR5RnVuY3Rpb24pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>