<?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>209129</bug_id>
          
          <creation_ts>2020-03-15 15:56:31 -0700</creation_ts>
          <short_desc>Move most of TextIterator off of live ranges</short_desc>
          <delta_ts>2020-04-03 12:10:44 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=209980</see_also>
          <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>
          
          <blocked>209932</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1630215</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-15 15:56:31 -0700</bug_when>
    <thetext>Move most of TextIterator off of live ranges</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630218</commentid>
    <comment_count>1</comment_count>
      <attachid>393628</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-15 16:45:52 -0700</bug_when>
    <thetext>Created attachment 393628
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630219</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-15 16:52:13 -0700</bug_when>
    <thetext>This is ready for Mac and iOS, but I’ll let EWS run now to tell me if there are compilation issues on other platforms, or in Release builds, or catch if there was some configuration where I didn’t run tests. Before I ask anyone to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630248</commentid>
    <comment_count>3</comment_count>
      <attachid>393633</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-15 22:35:38 -0700</bug_when>
    <thetext>Created attachment 393633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630253</commentid>
    <comment_count>4</comment_count>
      <attachid>393633</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-16 00:13:28 -0700</bug_when>
    <thetext>Comment on attachment 393633
Patch

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

&gt; Source/WebCore/ChangeLog:17
&gt; +        - Re-remove the include of SimpleRange.h from TextIterator.h. Instead, files that
&gt; +          use TextIterator.h will include SimpleRange.h as needed. This probably re-breaks
&gt; +          unified builds, but the fix will be to add includes of SimpleRange.h elsewhere,
&gt; +          not to TextIterator.h itself.

Does this lead to fewer includes somewhere? Presumably at least every cpp file using TextIterator directly is going to need SimpleRange anyway.

If not, this might add unnecessary maintenance burden.

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:1905
&gt; +    for (TextIterator it(*range); !it.atEnd(); it.advance()) {

Not sure if it is worth the effort but it would be nice to eventually be able to do something like

for (auto&amp; textItem : textIteratorRange(*range))

&gt; Source/WebKit/WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.mm:52
&gt; -    _textIterator = makeUnique&lt;WebCore::TextIterator&gt;(WebKit::toWebCoreRange(range));
&gt; +    if (!range)
&gt; +        return self;
&gt; +
&gt; +    _textIterator = makeUnique&lt;WebCore::TextIterator&gt;(*WebKit::toWebCoreRange(range));

I suppose an alternative in these cased would be to construct a TextIterator with empty range? That would lead to fewer null checks in other parts of the code and maybe fewer chances to get things wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630254</commentid>
    <comment_count>5</comment_count>
      <attachid>393633</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-16 00:15:13 -0700</bug_when>
    <thetext>Comment on attachment 393633
Patch

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

&gt; Source/WebCore/dom/Range.h:46
&gt; +// FIXME: Rename to LiveRange, while leaving the DOM-exposed name as Range.

Good idea!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630329</commentid>
    <comment_count>6</comment_count>
      <attachid>393633</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-16 08:43:31 -0700</bug_when>
    <thetext>Comment on attachment 393633
Patch

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

Need to fix the iOS test failure before landing.

&gt;&gt; Source/WebCore/ChangeLog:17
&gt;&gt; +          not to TextIterator.h itself.
&gt; 
&gt; Does this lead to fewer includes somewhere? Presumably at least every cpp file using TextIterator directly is going to need SimpleRange anyway.
&gt; 
&gt; If not, this might add unnecessary maintenance burden.

There are functions in TextIterator.h that you can use without SimpleRange; like using an iterator created elsewhere and passed to you, for example. But, yes, still not 100% sure this is better. Would be willing to do the reverse and add it here and remove all the unnecessary places it’s included elsewhere.

&gt;&gt; Source/WebCore/accessibility/AXObjectCache.cpp:1905
&gt;&gt; +    for (TextIterator it(*range); !it.atEnd(); it.advance()) {
&gt; 
&gt; Not sure if it is worth the effort but it would be nice to eventually be able to do something like
&gt; 
&gt; for (auto&amp; textItem : textIteratorRange(*range))

I like that idea. I think it’s worth it. It’s how I would design the text iterator if I was creating it now. I will eventually come back and do that.

&gt;&gt; Source/WebKit/WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.mm:52
&gt;&gt; +    _textIterator = makeUnique&lt;WebCore::TextIterator&gt;(*WebKit::toWebCoreRange(range));
&gt; 
&gt; I suppose an alternative in these cased would be to construct a TextIterator with empty range? That would lead to fewer null checks in other parts of the code and maybe fewer chances to get things wrong.

Even an empty SimoleRange requires at least one node, which I don’t have here. But I could add a default constructor to TextIterator that makes an empty iterator. I chose this approach because the class is so small (only 5 null checks needed) and was already heap-allocating the TextIterator. But I would happily consider an alternative.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630348</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-16 09:38:02 -0700</bug_when>
    <thetext>&gt; There are functions in TextIterator.h that you can use without SimpleRange;
&gt; like using an iterator created elsewhere and passed to you, for example.
&gt; But, yes, still not 100% sure this is better. Would be willing to do the
&gt; reverse and add it here and remove all the unnecessary places it’s included
&gt; elsewhere.

I&apos;d prefer that.

&gt; Even an empty SimoleRange requires at least one node, which I don’t have
&gt; here. But I could add a default constructor to TextIterator that makes an
&gt; empty iterator. I chose this approach because the class is so small (only 5
&gt; null checks needed) and was already heap-allocating the TextIterator. But I
&gt; would happily consider an alternative.

Note that there is another similar class in WebKitLegacy following this pattern. I&apos;m ok with the current approach too if you prefer it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630364</commentid>
    <comment_count>8</comment_count>
      <attachid>393658</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-03-16 10:24:49 -0700</bug_when>
    <thetext>Created attachment 393658
Crash Log from ews122

Manually copied crash log from ews122 from https://ews-build.webkit.org/#/builders/24/builds/13112</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630386</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-16 11:36:43 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #7)
&gt; &gt; There are functions in TextIterator.h that you can use without SimpleRange;
&gt; &gt; like using an iterator created elsewhere and passed to you, for example.
&gt; &gt; But, yes, still not 100% sure this is better. Would be willing to do the
&gt; &gt; reverse and add it here and remove all the unnecessary places it’s included
&gt; &gt; elsewhere.
&gt; 
&gt; I&apos;d prefer that.

Sure thing. I came to that conclusion already and was already working on it.

&gt; &gt; Even an empty SimoleRange requires at least one node, which I don’t have
&gt; &gt; here. But I could add a default constructor to TextIterator that makes an
&gt; &gt; empty iterator. I chose this approach because the class is so small (only 5
&gt; &gt; null checks needed) and was already heap-allocating the TextIterator. But I
&gt; &gt; would happily consider an alternative.
&gt; 
&gt; Note that there is another similar class in WebKitLegacy following this
&gt; pattern. I&apos;m ok with the current approach too if you prefer it.

Yes, it’s the same class, just copied and pasted for Legacy vs. Modern WebKit. I will stick with this approach for now. Could always come back later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630402</commentid>
    <comment_count>10</comment_count>
      <attachid>393668</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-16 12:01:15 -0700</bug_when>
    <thetext>Created attachment 393668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630408</commentid>
    <comment_count>11</comment_count>
      <attachid>393670</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-16 12:08:02 -0700</bug_when>
    <thetext>Created attachment 393670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630512</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-16 16:02:16 -0700</bug_when>
    <thetext>Committed r258525: &lt;https://trac.webkit.org/changeset/258525&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630514</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-16 16:03:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/60514402&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393628</attachid>
            <date>2020-03-15 16:45:52 -0700</date>
            <delta_ts>2020-03-15 22:35:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209129-20200315164551.patch</filename>
            <type>text/plain</type>
            <size>107317</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmVlZjkzYmM5YmI1NDI3
NjZjYzg5M2FkZjA0YTQ3ZGRiOTM3NTI4NC4uNjhjYzA0ODJmZGE3NWZmODZmNzk1NzFjOTlkZGIx
NzA4ZDM3M2U1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OSBAQAorMjAyMC0wMy0xNSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBtb3N0IG9mIFRleHRJ
dGVyYXRvciBvZmYgb2YgbGl2ZSByYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwOTEyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIC0gQ2hhbmdlIGFsbW9zdCBhbGwgYXJndW1lbnRzIGFuZCByZXR1
cm4gdmFsdWVzIG9mIGZ1bmN0aW9ucyBpbiBUZXh0SXRlcmF0b3IuaAorICAgICAgICAgIHRvIHVz
ZSBTaW1wbGVSYW5nZSBpbnN0ZWFkIG9mIGxpdmUgcmFuZ2VzLiBFeGNlcHRpb25zIGFyZSBhbiBv
dmVybG9hZCBvZiBwbGFpblRleHQKKyAgICAgICAgICBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
LCBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoLAorICAgICAgICAgIFRl
eHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UsIGFuZCBUZXh0SXRlcmF0
b3I6OnN1YnJhbmdlLiBUaG9zZQorICAgICAgICAgIGZpdmUgYXJlIGEgbGl0dGxlIHRyaWNraWVy
IHRvIGNvbnZlcnQsIHNvIEkgd2lsbCBkbyB0aGVtIGVhY2ggaW4gc2VwYXJhdGUgcGF0Y2hlcy4K
KworICAgICAgICAtIFJlLXJlbW92ZSB0aGUgaW5jbHVkZSBvZiBTaW1wbGVSYW5nZS5oIGZyb20g
VGV4dEl0ZXJhdG9yLmguIEluc3RlYWQsIGZpbGVzIHRoYXQKKyAgICAgICAgICB1c2UgVGV4dEl0
ZXJhdG9yLmggd2lsbCBpbmNsdWRlIFNpbXBsZVJhbmdlLmggYXMgbmVlZGVkLiBUaGlzIHByb2Jh
Ymx5IHJlLWJyZWFrcworICAgICAgICAgIHVuaWZpZWQgYnVpbGRzLCBidXQgdGhlIGZpeCB3aWxs
IGJlIHRvIGFkZCBpbmNsdWRlcyBvZiBTaW1wbGVSYW5nZS5oIGVsc2V3aGVyZSwKKyAgICAgICAg
ICBub3QgdG8gVGV4dEl0ZXJhdG9yLmggaXRzZWxmLgorCisgICAgICAgIC0gR28gd2l0aCB0aGUg
ZmxvdyBpbiBhZGRpbmcgYW4gaW5jbHVkZSBvZiBOb2RlLmggdG8gQm91bmRhcnlQb2ludC5oLiBJ
IGhhZCBhdm9pZGVkCisgICAgICAgICAgdGhpcyBpbiB0aGUgaW5pdGlhbCB2ZXJzaW9uLCBidXQg
bm93IGl0IHNlZW1zIHByYWN0aWNhbCB0byBqdXN0IGxlYXZlIGl0IHRoYXQgd2F5LgorICAgICAg
ICAgIFRoaXMgbGVkIHRvIHJlbW92aW5nIEJvdW5kYXJ5UG9pbnQuY3BwIGFuZCBtb3ZpbmcgYWxs
IGZ1bmN0aW9ucyB0byB0aGUgaGVhZGVyLgorCisgICAgICAgIC0gQ29udmVydGVkIG1hbnkgbWVt
YmVyIGZ1bmN0aW9ucyBvZiB0aGUgUG9zaXRpb24gY2xhc3MgZnJvbSB1c2luZyBpbnQgdG8gdW5z
aWduZWQKKyAgICAgICAgICBmb3Igb2Zmc2V0cy4gVGhlIERPTSBzcGVjaWZpZXMgdW5zaWduZWQg
Zm9yIG9mZnNldHMsIGJ1dCBmb3Igc29tZSByZWFzb24gd2UgdXNlZAorICAgICAgICAgIGludCBm
b3IgdGhlbSBhIGxvdCBoaXN0b3JpY2FsbHksIGV2ZW4gdGhvdWdoIG5lZ2F0aXZlIG51bWJlcnMg
ZG9uJ3QgbWFrZSBzZW5zZS4KKyAgICAgICAgICBOZXcgY2xhc3NlcyBsaWtlIFN0YXRpY1Jhbmdl
LCBTaW1wbGVSYW5nZSwgYW5kIEJvdW5kYXJ5UG9pbnQgYXJlIGFscmVhZHkgdXNpbmcKKyAgICAg
ICAgICB1bnNpZ25lZCBleGNsdXNpdmVseSBhbmQgd2UnbGwgZXZlbnR1YWxseSBjb252ZXJ0IGV2
ZXJ5dGhpbmcuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDogUmVtb3ZlZCBCb3VuZGFyeVBvaW50
LmNwcC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRv
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnRyYXZlcnNlVG9PZmZzZXRJblJhbmdlKTogVXBkYXRl
ZCB0byBwYXNzIGEgcmVmZXJlbmNlCisgICAgICAgIHRvIGEgcmFuZ2UgcmF0aGVyIHRoYW4gYSBw
b2ludGVyLCBhZnRlciBudWxsLWNoZWNraW5nIGl0LgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6bGVuZ3RoRm9yUmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6Om5leHRCb3VuZGFyeSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6cHJldmlvdXNCb3VuZGFyeSk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzdHJpbmdGb3JSYW5nZSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3RyaW5nRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omxlbmd0aEZvclZp
c2libGVQb3NpdGlvblJhbmdlIGNvbnN0KTogRGl0dG8uCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06CisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6YXR0
cmlidXRlZDpdKTogRGl0dG8uCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIGRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlOnNwZWxs
Q2hlY2s6XSk6IERpdHRvLgorCisgICAgICAgICogZG9tL0JvdW5kYXJ5UG9pbnQuY3BwOiBSZW1v
dmVkLgorCisgICAgICAgICogZG9tL0JvdW5kYXJ5UG9pbnQuaDogUmVtb3ZlZCByZWR1bmRhbnQg
aW5jbHVkZXMgYW5kIGZvcndhcmQgZGVjbGFyYXRpb25zCisgICAgICAgIHNpbmNlIHdlJ3JlIG5v
dyBjb21taXR0aW5nIHRvIGluY2x1ZGluZyAiTm9kZS5oIiBoZXJlLiBNb3ZlZCBmdW5jdGlvbnMK
KyAgICAgICAgYWxsIG91dCBvZiB0aGUgLmNwcCBmaWxlIGFuZCBtYWRlIHRoZW0gaW5saW5lcy4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4dFJhbmdlcyk6IFBh
c3MgYSByZWZlcmVuY2UgdG8KKyAgICAgICAgYSByYW5nZSBpbnN0ZWFkIG9mIGEgcG9pbnRlci4K
KworICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlv
bjo6UG9zaXRpb24pOiBUYWtlIHVuc2lnbmVkLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246
Om1vdmVUb1Bvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6bW92
ZVRvT2Zmc2V0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6cGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50IGNvbnN0KTogQ2FzdCB0byB1bnNpZ25lZC4KKyAgICAgICAgKFdlYkNv
cmU6OlBvc2l0aW9uOjphbmNob3JUeXBlRm9yTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKTogVGFrZSB1
bnNpZ25lZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpwcmV2aW91cyBjb25zdCk6IFVz
ZSB1bnNpZ25lZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpuZXh0IGNvbnN0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6dW5jaGVja2VkUHJldmlvdXNPZmZzZXQp
OiBUYWtlIHVuc2lnbmVkLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnVuY2hlY2tlZFBy
ZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UG9zaXRpb246OnVuY2hlY2tlZE5leHRPZmZzZXQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlBvc2l0aW9uOjphdExhc3RFZGl0aW5nUG9zaXRpb25Gb3JOb2RlIGNvbnN0KTogQ2FzdCB0
byB1bnNpZ25lZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjphdEVuZE9mVHJlZSBjb25z
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnJlbmRlcnNJbkRpZmZlcmVu
dFBvc2l0aW9uIGNvbnN0KTogQWRkZWQgY2FzdHMgdG8KKyAgICAgICAgdW5zaWduZWQgYW5kIGFs
c28gcmVtb3ZlZCB1bm5lZWRlZCByZWR1bmRhbnQgY2hlY2tzLiBJbiBhIHBsYWNlIHdoZXJlCisg
ICAgICAgIHdlIGhhZCBhbHJlYWR5IGNoZWNrZWQgdGhhdCBib3RoIG5vZGVzIHdlcmUgdGhlIHNh
bWUgYW5kIGJvdGggb2Zmc2V0cworICAgICAgICB3ZXJlIGRpZmZlcmVudCwgd2Ugd2VyZSBjaGVj
a2luZyB0aGUgdHlwZXMgb2YgYm90aCBub2RlcyAoYnV0IHRoZXkgYXJlCisgICAgICAgIHRoZSBz
YW1lIHNvIG9ubHkgbmVlZCB0byBjaGVjayBvbmUpIGFuZCB3ZSB3ZXJlIGNoZWNraW5nIHRoYXQg
Ym90aAorICAgICAgICBvZmZzZXRzIHdlcmUgZGlmZmVyZW50IChidXQgd2UgYWxyZWFkeSBrbmV3
IHRoZXkgd2VyZSBkaWZmZXJlbnQpLgorICAgICAgICAoV2ViQ29yZTo6c2VhcmNoQWhlYWRGb3JC
ZXR0ZXJNYXRjaCk6IFVzZSB1bnNpZ25lZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpn
ZXRJbmxpbmVCb3hBbmRPZmZzZXQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBv
c2l0aW9uOjplcXVhbHMgY29uc3QpOiBSZW1vdmVkIGEgY2FzdCB0byBpbnQuCisgICAgICAgIChX
ZWJDb3JlOjptYWtlQm91bmRhcnlQb2ludCk6IE1vdmVkIHRoaXMgZnVuY3Rpb24gaGVyZSBzbyBu
b3cgaXQgY2FuIGJlCisgICAgICAgIHVzZWQgaW4gbW9yZSBwbGFjZXMuCisKKyAgICAgICAgKiBk
b20vUG9zaXRpb24uaDogQ2hhbmdlZCBtYW55IGFyZ3VtZW50IHR5cGVzIHRvIHVuc2lnbmVkLiBN
b3ZlZCBkZWNsYXJhdGlvbnMKKyAgICAgICAgb2YgYWxsIHRoZSBmdW5jdGlvbnMgdXAgYWJvdmUg
YWxsIHRoZSBpbmxpbmUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBmdW5jdGlvbnMKKyAgICAgICAg
dG8gc2VwYXJhdGUgaW50ZXJmYWNlIGZyb20gaW1wbGVtZW50YXRpb24gYSBiaXQgYmV0dGVyLiBX
cm90ZSBhIEZJWE1FIGFib3V0CisgICAgICAgIHRoZSBuYW1lIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbi4gTW92ZWQgbWFrZUJvdW5kYXJ5UG9pbnQgaGVyZSBhbmQgZXhwb3J0ZWQKKyAgICAg
ICAgaXQgZnJvbSBXZWJDb3JlIHNvIHdlIGNhbiB1c2UgaXQgZnJvbSBtb3JlIHBsYWNlcy4KKwor
ICAgICAgICAqIGRvbS9SYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVMaXZlUmFu
Z2UpOiBNb3ZlZCB0aGVzZSBmdW5jdGlvbnMgaGVyZSBmcm9tIFNpbXBsZVJhbmdlLmNwcAorICAg
ICAgICBiZWNhdXNlIGEgbGl2ZSByYW5nZSBpcyBtb3JlIGFkdmFuY2VkIGNvbmNlcHQsIHNvIG1h
a2VzIG1vcmUgc2Vuc2UgZm9yIGxpdmUKKyAgICAgICAgcmFuZ2UgdG8ga25vdyBhYm91dCBzaW1w
bGUgcmFuZ2UgcmF0aGVyIHRoYW4gdmljZSB2ZXJzYS4KKworICAgICAgICAqIGRvbS9SYW5nZS5o
OiBSZW1vdmVkIHNvbWUgdW5uZWVkZWQgaW5jbHVkZXMgYW5kIGZvcndhcmQgZGVjbGFyYXRpb25z
LgorICAgICAgICBBZGRlZCBhIEZJWE1FIGFib3V0IHJlbmFtaW5nIHRvIExpdmVSYW5nZS4gTW92
ZWQgdGhlIGNyZWF0ZUxpdmVSYW5nZQorICAgICAgICBmdW5jdGlvbnMgaGVyZS4gTW92ZWQgZGVj
bGFyYXRpb25zIG9mIGZ1bmN0aW9ucyBhYm92ZSBpbmxpbmUgZnVuY3Rpb24gYm9kaWVzLgorCisg
ICAgICAgICogZG9tL1NpbXBsZVJhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUxp
dmVSYW5nZSk6IE1vdmVkIHRvIFJhbmdlLmNwcC4KKworICAgICAgICAqIGRvbS9TaW1wbGVSYW5n
ZS5oOiBFeHBvcnRlZCB0aGUgY29uc3RydWN0b3IuIFJlbW92ZWQgdW5uZWVkZWQgb3ZlcmxvYWQK
KyAgICAgICAgdGhhdCB0YWtlcyBhIFJhbmdlKi4KKworICAgICAgICAqIGVkaXRpbmcvQXBwbHlT
dHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6Om1l
cmdlU3RhcnRXaXRoUHJldmlvdXNJZklkZW50aWNhbCk6CisgICAgICAgIFJlZmFjdG9yZWQgY29k
ZSBhIGJpdCBhbmQgdXNlIHVuc2lnbmVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNv
bW1hbmQ6Om1lcmdlRW5kV2l0aE5leHRJZklkZW50aWNhbCk6IFVzZSB1bnNpZ25lZC4KKworICAg
ICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2aXNpYmxlSW1h
Z2VFbGVtZW50c0luUmFuZ2VXaXRoTm9uTG9hZGVkSW1hZ2VzKTogVXNlIGEgcmVmZXJlbmNlCisg
ICAgICAgIHRvIGEgcmFuZ2UgcmF0aGVyIHRoYW4gYSBwb2ludGVyLgorCisgICAgICAgICogZWRp
dGluZy9FZGl0aW5nLmg6IEFkZGVkIGEgZm9yd2FyZCBkZWNsYXJhdGlvbiBvZiBSYW5nZSB0aGF0
IG5vdyBzZWVtcyB0bworICAgICAgICBiZSBuZWVkZWQgdG8gY29tcGlsZS4KKworICAgICAgICAq
IGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0ZWRU
ZXh0IGNvbnN0KTogVXNlIGEgcmFuZ2UgdG8gY2FsbCBwbGFpblRleHQgc2luY2UKKyAgICAgICAg
d2Ugbm8gbG9uZ2VyIGhhdmUgYW4gb3ZlcmxvYWQgdGhhdCB0YWtlcyB0d28gUG9zaXRpb24gb2Jq
ZWN0cy4KKworICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmZpcnN0Tm9kZSk6IEFkZGVkLiBXZSB1c2UgdGhpcyBpbnN0ZWFkIG9mIFJhbmdlOjpm
aXJzdE5vZGUuCisgICAgICAgIElmIHdlIGZpbmQgd2UgbmVlZCBpdCBvdXRzaWRlIFRleHRJdGVy
YXRvciB3ZSBjYW4gZmluZCBhIGhlYWRlciBmb3IgaXQuCisgICAgICAgIE5vdCBzdXJlIGl0IHdv
dWxkIGJlIGdyZWF0IHRvIGFkZCBpdCB0byBpbiBCb3VuZGFyeVBvaW50LmgsIG5vciBpcyBpdAor
ICAgICAgICBvYnZpb3VzbHkgYmV0dGVyIGFzIGEgQm91bmRhcnlQb2ludCBtZW1iZXIgZnVuY3Rp
b24uCisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcik6IEN1dCBk
b3duIG9uIHRoZSBleHRyYSBjb25zdHJ1Y3RvcnMKKyAgICAgICAgYW5kIGhhdmUgdGhlIHNpbmds
ZSByZW1haW5pbmcgb25lIHRha2UgYSBTaW1wbGVSYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRl
cmF0b3IpOgorICAgICAgICBEaXR0by4gQWxzbyBjaGFuZ2Ugc29tZSBpbnQgdG8gdW5zaWduZWQu
CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJJdGVyYXRvcjo6Q2hhcmFjdGVySXRlcmF0b3Ip
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjpC
YWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V29y
ZEF3YXJlSXRlcmF0b3I6OldvcmRBd2FyZUl0ZXJhdG9yKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKTogU2luY2UgdGhpcyBpcyBvbmUgb2YgdGhl
IGZ1bmN0aW9ucworICAgICAgICB0aGF0IHN0aWxsIHRha2VzIGEgbGl2ZSByYW5nZSBwb2ludGVy
LCB1cGRhdGVkIGl0IHRvIGNoZWNrIGZvciBudWxsIGFuZAorICAgICAgICBwYXNzIGEgcmVmZXJl
bmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRv
cjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
Omhhc0FueVBsYWluVGV4dCk6IFJlbW92ZWQgbm93LXVubmVlZGVkIGNhbGwgdG8gY3JlYXRlTGl2
ZVJhbmdlLgorICAgICAgICAoV2ViQ29yZTo6cGxhaW5UZXh0KTogVXBkYXRlZCB0aGUgbWFpbiBp
bXBsZW1lbnRhdGlvbiB0byB0YWtlIGEgU2ltcGxlUmFuZ2UsCisgICAgICAgIGVsaW1pbmF0aW5n
IHRoZSB2ZXJzaW9uIHRoYXQgdGFrZXMgdHdvIFBvc2l0aW9uIG9iamVjdHMsIGJ1dCBrZWVwaW5n
IHRoZQorICAgICAgICBvbmUgdGhhdCB0YWtlcyBhIGxpdmUgcmFuZ2UgcG9pbnRlciBmb3Igbm93
LgorICAgICAgICAoV2ViQ29yZTo6cGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKTogUmVt
b3ZlZCBhbGwgYnV0IHRoZSBvbmUsIGFuZAorICAgICAgICBoYXZlIHRoYXQgb25lIHRha2UgYSBT
aW1wbGVSYW5nZS4KKworICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6IFJlbW92ZWQg
dGhlIGluY2x1ZGUgb2YgU2ltcGxlUmFuZ2UuaC4gQWxzbworICAgICAgICBVcGRhdGVkIGZvciB0
aGUgY2hhbmdlcyBhYm92ZSwgZWxpbWluYXRpbmcgZml2ZSBkaWZmZXJlbnQgY29uc3RydWN0b3Jz
CisgICAgICAgIHRoYXQgdGFrZSBhIGxpdmUgcmFuZ2UgYW5kIGFsc28gb3ZlcmxvYWRzIHRoYXQg
dGFrZSB0d28gUG9zaXRpb24gb2JqZWN0cy4KKworICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWdyYXBoQ29udGVu
dEl0ZXJhdG9yOjpQYXJhZ3JhcGhDb250ZW50SXRlcmF0b3IpOgorICAgICAgICBDYWxsIG1ha2VC
b3VuZGFyeVBvaW50IHR3aWNlIGhlcmUgdG8gY29udmVydCB0d28gUG9zaXRpb24gb2JqZWN0cyBp
bnRvCisgICAgICAgIGEgU2ltcGxlUmFuZ2UuCisKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVV
bml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdWZmaXhMZW5ndGhGb3JSYW5nZSk6IFBhc3Mg
YSByZWZlcmVuY2UgdG8gYSByYW5nZSBrbm93biB0bworICAgICAgICBub3QgYmUgbnVsbC4KKyAg
ICAgICAgKFdlYkNvcmU6OnByZXZpb3VzQm91bmRhcnkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6Om5leHRCb3VuZGFyeSk6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRh
RGV0ZWN0aW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRRdWVyeSk6IFRha2UgYSBTaW1w
bGVSYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJ
blJhbmdlKTogQWRkZWQgYSBudWxsIGNoZWNrIG9uCisgICAgICAgIGEgbGl2ZSByYW5nZSBhbmQg
cGFzcyBhIHJlZmVyZW5jZSB0byBpdC4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RpY3Rpb25h
cnlMb29rdXAubW06CisgICAgICAgIChXZWJDT3JlOjpEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0
SGl0VGVzdFJlc3VsdCk6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29u
dmVydGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9t
UmFuZ2UpOiBQYXNzIGEgcmVmZXJlbmNlIHRvIGEgcmFuZ2UKKyAgICAgICAga25vd24gdG8gbm90
IGJlIG51bGwuCisgICAgICAgICogcGFnZS9UZXh0SW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmVzdGltYXRlZFRleHRDb2xvcnNGb3JSYW5nZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Y29udGFpbnNPbmx5V2hpdGVTcGFjZVRleHQpOiBEaXR0by4KKyAgICAgICAgKiBwYWdl
L2lvcy9GcmFtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbnRlcnByZXRhdGlv
bnNGb3JDdXJyZW50Um9vdCBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6c2VsZWN0
ZWRUZXh0IGNvbnN0KTogQWRkZWQgYSBudWxsIGNoZWNrIG9uCisgICAgICAgIGEgbGl2ZSByYW5n
ZSBhbmQgcGFzcyBhIHJlZmVyZW5jZSB0byBpdC4KKwogMjAyMC0wMy0xNSAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW1RGQ10gQWRkIGJhc2ljIGNvbHVt
biBzcGFuIHN1cHBvcnQgZm9yIGNvbnRlbnQgYm94IHdpZHRoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRlMmIzZTY1
YjVjYmRmNWUyMzBmNzJmZDQ5Zjk2MjQwMGEyODEyNTcuLjhlNjIxMzlkNDhkNjhmNTUyODEyYmM0
MWVlOTFmYmE2ZDY0ZjE4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjAtMDMtMTUg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgbW9zdCBvZiBU
ZXh0SXRlcmF0b3Igb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkxMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21h
Yy9XS0RPTVRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1bV0tET01UZXh0SXRlcmF0b3IgaW5p
dFdpdGhSYW5nZTpdKTogTGVhdmUgX3RleHRJdGVyYXRvciBhcyBhIG51bGxwdHIKKyAgICAgICAg
aWYgdGhlIHBhc3NlZC1pbiByYW5nZSBpcyBuaWwgc2luY2Ugd2Ugbm8gbG9uZ2VyIG9mZmVyIGEg
d2F5IHRvIGNyZWF0ZQorICAgICAgICBhbiBlbXB0eSBUZXh0SXRlcmF0b3I7IG90aGVyIGNsaWVu
dHMgZG9uJ3Qgc2VlbSB0byBuZWVkIG9uZS4KKyAgICAgICAgKC1bV0tET01UZXh0SXRlcmF0b3Ig
YWR2YW5jZV0pOiBBZGQgYSBudWxsIGNoZWNrLgorICAgICAgICAoLVtXS0RPTVRleHRJdGVyYXRv
ciBhdEVuZF0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tET01UZXh0SXRlcmF0b3IgY3VycmVudFJh
bmdlXSk6IERpdHRvLgorICAgICAgICAoLVtXS0RPTVRleHRJdGVyYXRvciBjdXJyZW50VGV4dFBv
aW50ZXJdKTogRGl0dG8uCisgICAgICAgICgtW1dLRE9NVGV4dEl0ZXJhdG9yIGN1cnJlbnRUZXh0
TGVuZ3RoXSk6IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yOjpjb21wdXRlVGV4dExlZ2liaWxpdHlTY2FsZXMpOiBQYXNzCisgICAg
ICAgIGEgcmVmZXJlbmNlIHRvIGEgcmFuZ2Uga25vd24gbm90IHRvIGJlIG51bGwuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06IFJlbW92ZWQgYSAidXNp
bmcgbmFlbXNhcGNlIFdlYkNvcmUiLgorICAgICAgICBBZGRlZCB0d28gbG9jYWwgZnVuY3Rpb25z
CisgICAgICAgIChXZWJLaXQ6OnBsYWluVGV4dEZvckNvbnRleHQpOiBBZGRlZC4gSGVscGVyIGZv
ciBqdXN0IHRoaXMgZmlsZSB3aGVyZSBjYWxsaW5nCisgICAgICAgIHBsYWluVGV4dFJlcGxhY2lu
Z05vQnJlYWtTcGFjZSBvbiBhIHBvc3NpYmx5IG51bGwgUmFuZ2UgaXMgY29tbW9uLgorICAgICAg
ICAoV2ViS2l0OjpwbGFpblRleHRGb3JEaXNwbGF5KTogRGl0dG8uIFRoaXMgb25lIHBhc3NlcyB0
cnVlIGZvciBpc0Rpc3BsYXlTdHJpbmcuCisgICAgICAgIE5vdCBlbnRpcmVseSBjbGVhciBob3cg
Y2FyZWZ1bGx5IHdlIGNob3NlIHdoaWNoIG9mIHRoZSB0d28gdG8gY2FsbCwgb3IgaWYgdGhlcmUK
KyAgICAgICAgaXMgc3VmZmljaWVudCB0ZXN0IGNvdmVyYWdlLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KTogVXNlIHBsYWluVGV4dEZvckNvbnRl
eHQKKyAgICAgICAgYW5kIHBsYWluVGV4dEZvckRpc3BsYXkuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmdldFNlbGVjdGlvbkNvbnRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Z2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KTogVXNlIHBsYWluVGV4dEZv
ckRpc3BsYXkuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3REaWN0YXRpb25Db250
ZXh0KTogVXNlIHBsYWluVGV4dEZvckNvbnRleHQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnJlcGxhY2VTZWxlY3RlZFRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cmVwbGFjZURpY3RhdGVkVGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpy
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmFwcGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjphdXRvY29ycmVjdGlvbkNvbnRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYktp
dDo6ZGF0YURldGVjdG9yTGlua1Bvc2l0aW9uSW5mb3JtYXRpb24pOiBVc2UgcGxhaW5UZXh0Rm9y
RGlzcGxheS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdERvY3VtZW50RWRpdGlu
Z0NvbnRleHQpOiBVc2UgUmV0YWluUHRyIGluc3RlYWQgb2YKKyAgICAgICAgYXV0b3JlbGVhc2Uu
IFVzZSBtYWtlQm91bmRhcnlQb2ludCB0byBjb252ZXJ0IFBvc2l0aW9uIG9iamVjdHMgdG8gU2lt
cGxlUmFuZ2UuCisKIDIwMjAtMDMtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBTaG91bGQgbm90IHVzZSB2YXJpYWJsZS1sZW5ndGgtYXJyYXkgKFZMQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBmODAyNjdhNTkwZjNkYjAxM2U1YjRlZjli
NTUxNTg5ZGI3NzNlYmUxLi5lYTYzNzRjZDUwNzdiZmIxNGFlYzQ0MzM3Yzg5OGNmZTRkNzAxZDQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjAtMDMt
MTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgbW9zdCBv
ZiBUZXh0SXRlcmF0b3Igb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkxMjkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IF9sZWdhY3lBdHRyaWJ1dGVkU3RyaW5nRnJvbTpvZmZzZXQ6dG86
b2Zmc2V0Ol0pOgorICAgICAgICBBZGQgY2FzdHMgdG8gdW5zaWduZWQuCisKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1bV2ViVGV4dEl0ZXJhdG9yIGlu
aXRXaXRoUmFuZ2U6XSk6IExlYXZlIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yCisgICAgICAgIGFz
IGEgbnVsbHB0ciBpZiB0aGUgcGFzc2VkLWluIHJhbmdlIGlzIG5pbCBzaW5jZSB3ZSBubyBsb25n
ZXIgb2ZmZXIKKyAgICAgICAgYSB3YXkgdG8gY3JlYXRlIGFuIGVtcHR5IFRleHRJdGVyYXRvcjsg
b3RoZXIgY2xpZW50cyBkb24ndCBzZWVtIHRvCisgICAgICAgIG5lZWQgb25lLgorICAgICAgICAo
LVtXZWJUZXh0SXRlcmF0b3IgYWR2YW5jZV0pOiBDaGVjayBfcHJpdmF0ZS0+X3RleHRJdGVyYXRv
ciBmb3IgbnVsbC4KKyAgICAgICAgKC1bV2ViVGV4dEl0ZXJhdG9yIGF0RW5kXSk6IERpdHRvLgor
ICAgICAgICAoLVtXZWJUZXh0SXRlcmF0b3IgY3VycmVudFJhbmdlXSk6IERpdHRvLgorICAgICAg
ICAoLVtXZWJUZXh0SXRlcmF0b3IgY3VycmVudFRleHRQb2ludGVyXSk6IERpdHRvLgorICAgICAg
ICAoLVtXZWJUZXh0SXRlcmF0b3IgY3VycmVudFRleHRMZW5ndGhdKTogRGl0dG8uCisgICAgICAg
ICgtW1dlYlRleHRJdGVyYXRvciBjdXJyZW50Tm9kZV0pOiBEaXR0by4KKyAgICAgICAgKC1bV2Vi
VGV4dEl0ZXJhdG9yIGN1cnJlbnRUZXh0XSk6IERpdHRvLgorCiAyMDIwLTAzLTE1ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgU2hvdWxkIG5vdCB1c2UgdmFy
aWFibGUtbGVuZ3RoLWFycmF5IChWTEEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDc3ODI2M2U0YTBiMzE3
MzFlM2I1ZjY0ODEwODljMWQwZTMxODU0ODAuLjYxMjIyYTEwMTcxOWNkNDYxOWM2ZGExOWNmMDk0
NzUxMzFkYTYwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC04MjUsNyArODI1LDYgQEAgZG9tL0F0dHIu
Y3BwCiBkb20vQmVmb3JlTG9hZEV2ZW50LmNwcAogZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50
LmNwcAogZG9tL0JlZm9yZVVubG9hZEV2ZW50LmNwcAotZG9tL0JvdW5kYXJ5UG9pbnQuY3BwCiBk
b20vQ0RBVEFTZWN0aW9uLmNwcAogZG9tL0NoYXJhY3RlckRhdGEuY3BwCiBkb20vQ2hpbGRMaXN0
TXV0YXRpb25TY29wZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA3M2YzYTlmOGI2NWUzZDE3ZDk4Y2RhMmZkZmQyMDI2ZjVl
MjA5MTE0Li45YWUwYTlkZTI4NWUxM2I4MjZhY2U4ZjU3M2FmODUwODQ2YjcxOTE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MDY1NCw3ICsxMDY1NCw2IEBACiAJCTkzMTUzQkUxMTQxOTVBNTcwMEZDRjVCRSAvKiBtaXNzaW5n
SW1hZ2UucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gaW1hZ2UucG5nOyBwYXRoID0gbWlzc2luZ0ltYWdlLnBuZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTMxNkRERjgyNDBDNjRCMzAwOTM0MEFBIC8qIFNpbXBsZVJhbmdlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXBsZVJhbmdlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzMTZEREZBMjQwQzY0QjMwMDkzNDBBQSAvKiBTaW1wbGVSYW5n
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW1wbGVSYW5nZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzMTZEREZEMjQwQzY0RjgwMDkzNDBB
QSAvKiBCb3VuZGFyeVBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEJvdW5kYXJ5UG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzE2
RERGRTI0MEM2NEY4MDA5MzQwQUEgLyogQm91bmRhcnlQb2ludC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCb3VuZGFyeVBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzMUFFM0I4MUZCODBFQUUwMEY1RUZCMiAvKiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVJbldyYXBwZWRPYmplY3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTMxQkNDNjAxMTI0REZDQjAwQkU3MEREIC8qIE1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNhblN0
YXJ0TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MDc1LDcgKzI4
MDc0LDYgQEAKIAkJCQk4NTAzMUIyNjBBNDRFRkM3MDBGOTkyRTAgLyogQmVmb3JlVW5sb2FkRXZl
bnQuY3BwICovLAogCQkJCTg1MDMxQjI3MEE0NEVGQzcwMEY5OTJFMCAvKiBCZWZvcmVVbmxvYWRF
dmVudC5oICovLAogCQkJCTdDMUU4Q0ZGMUVEMEMyQkUwMEIxRDk4MyAvKiBCZWZvcmVVbmxvYWRF
dmVudC5pZGwgKi8sCi0JCQkJOTMxNkRERkQyNDBDNjRGODAwOTM0MEFBIC8qIEJvdW5kYXJ5UG9p
bnQuY3BwICovLAogCQkJCTkzMTZEREZFMjQwQzY0RjgwMDkzNDBBQSAvKiBCb3VuZGFyeVBvaW50
LmggKi8sCiAJCQkJN0MxRThEMDAxRUQwQzJCRTAwQjFEOTgzIC8qIENhbGxiYWNrUmVzdWx0Lmgg
Ki8sCiAJCQkJNjU1MEI2OTMwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5jcHAgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRl
eCAxZWI2MjZiNmM5Yjc1YmJiM2VkNmMxOWZmYmJhZGFhMGYzMjhhYTA4Li5mMzM1OTFlMmY2ODNi
YTdjMTlkYTEwNDgzMWQ1OTFkNmE5NDJiNWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTE3OTEsNyArMTc5MSw3IEBAIENoYXJhY3Rl
ck9mZnNldCBBWE9iamVjdENhY2hlOjp0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShSZWZQdHI8UmFu
Z2U+cmFuZ2UsIGludCBvCiAgICAgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOwogICAgIGludCBsYXN0
U3RhcnRPZmZzZXQgPSAwOwogICAgIAotICAgIFRleHRJdGVyYXRvciBpdGVyYXRvcihyYW5nZS5n
ZXQoKSwgZG9Ob3RFbnRlclRleHRDb250cm9scyA/IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlv
ciA6IFRleHRJdGVyYXRvckVudGVyc1RleHRDb250cm9scyk7CisgICAgVGV4dEl0ZXJhdG9yIGl0
ZXJhdG9yKCpyYW5nZSwgZG9Ob3RFbnRlclRleHRDb250cm9scyA/IFRleHRJdGVyYXRvckRlZmF1
bHRCZWhhdmlvciA6IFRleHRJdGVyYXRvckVudGVyc1RleHRDb250cm9scyk7CiAgICAgCiAgICAg
Ly8gV2hlbiB0aGUgcmFuZ2UgaGFzIHplcm8gbGVuZ3RoLCB0aGVyZSBtaWdodCBiZSByZXBsYWNl
ZCBub2RlIG9yIGJyVGFnIHRoYXQgd2UgbmVlZCB0byBpbmNyZW1lbnQgdGhlIGNoYXJhY3Rlck9m
ZnNldC4KICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgewpAQCAtMTkwMiw3ICsxOTAyLDcgQEAg
aW50IEFYT2JqZWN0Q2FjaGU6Omxlbmd0aEZvclJhbmdlKFJhbmdlKiByYW5nZSkKICAgICBpZiAo
IXJhbmdlKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaW50IGxlbmd0aCA9IDA7Ci0gICAgZm9y
IChUZXh0SXRlcmF0b3IgaXQocmFuZ2UpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7Cisg
ICAgZm9yIChUZXh0SXRlcmF0b3IgaXQoKnJhbmdlKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2Uo
KSkgewogICAgICAgICAvLyBub24temVybyBsZW5ndGggbWVhbnMgdGV4dHVhbCBub2RlLCB6ZXJv
IGxlbmd0aCBtZWFucyByZXBsYWNlZCBub2RlIChBS0EgImF0dGFjaG1lbnRzIiBpbiBBWCkKICAg
ICAgICAgaWYgKGl0LnRleHQoKS5sZW5ndGgoKSkKICAgICAgICAgICAgIGxlbmd0aCArPSBpdC50
ZXh0KCkubGVuZ3RoKCk7CkBAIC0yNjAyLDcgKzI2MDIsNyBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhP
YmplY3RDYWNoZTo6bmV4dEJvdW5kYXJ5KGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVy
T2ZmcwogICAgICAgICByZXR1cm4geyB9OwogICAgIENoYXJhY3Rlck9mZnNldCBlbmQgPSBzdGFy
dE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2Uoc2VhcmNoUmFuZ2UsIGZhbHNlKTsKICAgICAK
LSAgICBUZXh0SXRlcmF0b3IgaXQoc2VhcmNoUmFuZ2UuZ2V0KCksIFRleHRJdGVyYXRvckVtaXRz
T2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJzKTsKKyAgICBUZXh0SXRlcmF0b3IgaXQoKnNlYXJj
aFJhbmdlLCBUZXh0SXRlcmF0b3JFbWl0c09iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVycyk7CiAg
ICAgdW5zaWduZWQgbmV4dCA9IGZvcndhcmRTZWFyY2hGb3JCb3VuZGFyeVdpdGhUZXh0SXRlcmF0
b3IoaXQsIHN0cmluZywgcHJlZml4TGVuZ3RoLCBzZWFyY2hGdW5jdGlvbik7CiAgICAgCiAgICAg
aWYgKGl0LmF0RW5kKCkgJiYgbmV4dCA9PSBzdHJpbmcuc2l6ZSgpKQpAQCAtMjY0Myw3ICsyNjQz
LDcgQEAgQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OnByZXZpb3VzQm91bmRhcnkoY29u
c3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXIKICAgICAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgICAgIGlmICghc2V0UmFuZ2VTdGFydE9yRW5kV2l0aENoYXJhY3Rlck9mZnNldChmb3J3YXJk
c1NjYW5SYW5nZSwgZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCBmYWxzZSkpCiAgICAgICAgICAgICBy
ZXR1cm4geyB9OwotICAgICAgICBmb3IgKFRleHRJdGVyYXRvciBmb3J3YXJkc0l0ZXJhdG9yKGZv
cndhcmRzU2NhblJhbmdlLnB0cigpKTsgIWZvcndhcmRzSXRlcmF0b3IuYXRFbmQoKTsgZm9yd2Fy
ZHNJdGVyYXRvci5hZHZhbmNlKCkpCisgICAgICAgIGZvciAoVGV4dEl0ZXJhdG9yIGZvcndhcmRz
SXRlcmF0b3IoZm9yd2FyZHNTY2FuUmFuZ2UpOyAhZm9yd2FyZHNJdGVyYXRvci5hdEVuZCgpOyBm
b3J3YXJkc0l0ZXJhdG9yLmFkdmFuY2UoKSkKICAgICAgICAgICAgIGFwcGVuZChzdHJpbmcsIGZv
cndhcmRzSXRlcmF0b3IudGV4dCgpKTsKICAgICAgICAgc3VmZml4TGVuZ3RoID0gc3RyaW5nLnNp
emUoKTsKICAgICB9IGVsc2UgaWYgKHJlcXVpcmVzQ29udGV4dEZvcldvcmRCb3VuZGFyeShjaGFy
YWN0ZXJCZWZvcmUoY2hhcmFjdGVyT2Zmc2V0KSkpIHsKQEAgLTI2NjYsNyArMjY2Niw3IEBAIENo
YXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpwcmV2aW91c0JvdW5kYXJ5KGNvbnN0IENoYXJh
Y3Rlck9mZnNldCYgY2hhcmFjdGVyCiAgICAgICAgIHJldHVybiBpdC5hdEVuZCgpID8gc3RhcnQg
OiBjaGFyYWN0ZXJPZmZzZXQ7CiAgICAgCiAgICAgYXV0byYgbm9kZSA9IGl0LmF0RW5kKCkgPyBz
ZWFyY2hSYW5nZS0+c3RhcnRDb250YWluZXIoKSA6IGl0LnJhbmdlKCkuc3RhcnQuY29udGFpbmVy
LmdldCgpOwotICAgIAorCiAgICAgLy8gU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvciBp
Z25vcmVzIHJlcGxhY2VkIGVsZW1lbnRzLgogICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpy
ZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3RlcihjaGFyYWN0ZXJPZmZzZXQubm9kZSkpCiAgICAgICAg
IHJldHVybiBjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zmc2V0KCpjaGFyYWN0ZXJPZmZzZXQu
bm9kZSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAppbmRleCA2MTkxMjFkNjYyNzEwNjI0ODkyMzU1MTAxNzJkY2Y5M2E1
ZDQ5NjA5Li5hNWRmMGM3ZDNlMTZjODUxMzg5ZTY1ZWI1MjUwZDdlYjc1MzNkZWEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAKQEAgLTc2LDYgKzc2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKICNpbmNsdWRl
ICJSZW5kZXJlZFBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJT
aW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAi
VGV4dENoZWNraW5nSGVscGVyLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCkBAIC0xMjY3
LDcgKzEyNjgsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3RyaW5nRm9yUmFuZ2Uo
UmVmUHRyPFJhbmdlPiByYW5nZSkgY29uc3QKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAgICAgCi0gICAgVGV4dEl0ZXJhdG9yIGl0KHJhbmdlLmdldCgpKTsKKyAg
ICBUZXh0SXRlcmF0b3IgaXQoKnJhbmdlKTsKICAgICBpZiAoaXQuYXRFbmQoKSkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogICAgIApAQCAtMTI5Niw3ICsxMjk3LDEwIEBAIFN0cmluZyBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzdHJpbmdGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNp
YmxlUG9zaXRpb25SCiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IG1ha2VSYW5nZSh2aXNpYmxlUG9zaXRpb25SYW5nZS5zdGFydCwgdmlzaWJs
ZVBvc2l0aW9uUmFuZ2UuZW5kKTsKLSAgICBmb3IgKFRleHRJdGVyYXRvciBpdChyYW5nZS5nZXQo
KSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKKyAgICBpZiAoIXJhbmdlKQorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdCgqcmFuZ2UpOyAh
aXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CiAgICAgICAgIC8vIG5vbi16ZXJvIGxlbmd0aCBt
ZWFucyB0ZXh0dWFsIG5vZGUsIHplcm8gbGVuZ3RoIG1lYW5zIHJlcGxhY2VkIG5vZGUgKEFLQSAi
YXR0YWNobWVudHMiIGluIEFYKQogICAgICAgICBpZiAoaXQudGV4dCgpLmxlbmd0aCgpKSB7CiAg
ICAgICAgICAgICAvLyBBZGQgYSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIGZvciBsaXN0IG1hcmtl
ciB0ZXh0LgpAQCAtMTMxOCw5ICsxMzIyLDEyIEBAIGludCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojps
ZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nCiAg
ICAgaWYgKHZpc2libGVQb3NpdGlvblJhbmdlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gLTE7
CiAKLSAgICBpbnQgbGVuZ3RoID0gMDsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gbWFrZVJh
bmdlKHZpc2libGVQb3NpdGlvblJhbmdlLnN0YXJ0LCB2aXNpYmxlUG9zaXRpb25SYW5nZS5lbmQp
OwotICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHJhbmdlLmdldCgpKTsgIWl0LmF0RW5kKCk7IGl0
LmFkdmFuY2UoKSkgeworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiAtMTsKKworICAg
IGludCBsZW5ndGggPSAwOworICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KCpyYW5nZSk7ICFpdC5h
dEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKICAgICAgICAgLy8gbm9uLXplcm8gbGVuZ3RoIG1lYW5z
IHRleHR1YWwgbm9kZSwgemVybyBsZW5ndGggbWVhbnMgcmVwbGFjZWQgbm9kZSAoQUtBICJhdHRh
Y2htZW50cyIgaW4gQVgpCiAgICAgICAgIGlmIChpdC50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAg
ICAgICBsZW5ndGggKz0gaXQudGV4dCgpLmxlbmd0aCgpOwpAQCAtMTMyOSw3ICsxMzM2LDYgQEAg
aW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6Omxlbmd0aEZvclZpc2libGVQb3NpdGlvblJhbmdlKGNv
bnN0IFZpc2libGVQb3NpdGlvblJhbmcKICAgICAgICAgICAgICAgICArK2xlbmd0aDsKICAgICAg
ICAgfQogICAgIH0KLQogICAgIHJldHVybiBsZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggYzMxMzA4ZTQwM2VhYzU5MDExYjJmMTNhYjdkMjlj
YzhjNmMyYjI4OC4uMTM0ZmUyNmM5NjllMTgwMmNiMTgyODcyMzNjNmIxMmMzYjU4MjlkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTIyNTMsMTAgKzIyNTMs
MTQgQEAgLSAoTlNBcnJheSAqKWFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKilt
YXJrZXJzIGF0dHJpYnV0ZWQ6KEJPT0wpYXR0cmkKICAgICBWaXNpYmxlUG9zaXRpb24gZW5kVmlz
aWJsZVBvc2l0aW9uID0gW2VuZE1hcmtlciB2aXNpYmxlUG9zaXRpb25dOwogICAgIGlmIChlbmRW
aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCisKKyAg
ICBhdXRvIHJhbmdlID0gbWFrZVJhbmdlKHN0YXJ0VmlzaWJsZVBvc2l0aW9uLCBlbmRWaXNpYmxl
UG9zaXRpb24pOworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiBuaWw7CisKICAgICAv
LyBpdGVyYXRlIG92ZXIgdGhlIHJhbmdlIHRvIGJ1aWxkIHRoZSBBWCBhdHRyaWJ1dGVkIHN0cmlu
ZwogICAgIE5TTXV0YWJsZUFycmF5KiBhcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRdOwotICAgIFRleHRJdGVyYXRvciBpdChtYWtlUmFuZ2Uoc3RhcnRWaXNpYmxlUG9zaXRpb24s
IGVuZFZpc2libGVQb3NpdGlvbikuZ2V0KCkpOworICAgIFRleHRJdGVyYXRvciBpdCgqcmFuZ2Up
OwogICAgIGZvciAoOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CiAgICAgICAgIE5vZGUm
IG5vZGUgPSBpdC5yYW5nZSgpLnN0YXJ0LmNvbnRhaW5lcjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA4NTM1MWEyNzIwZGFmNjdmYzY1YTBhM2I3MWMwNzUz
Mzc3NjE1MjBkLi42NmE4YjMxMDM0MjJmODllNmM2NWE2YjE2N2Y1Nzg3NjdhYjliNTU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMTI1NSw3ICsxMjU1LDkg
QEAgLSAoTlNBdHRyaWJ1dGVkU3RyaW5nKilkb0FYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZTooaWQpdGV4dE1hcmtlclJhbmcKIAogICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
ID0gW3Byb3RlY3RlZFNlbGYgcmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2U6dGV4dE1hcmtlclJhbmdl
XTsKICAgICAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZyA9IFtbTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF07Ci0gICAgICAgIFRleHRJdGVyYXRv
ciBpdChyYW5nZS5nZXQoKSk7CisgICAgICAgIGlmICghcmFuZ2UpCisgICAgICAgICAgICByZXR1
cm4gbmlsOworICAgICAgICBUZXh0SXRlcmF0b3IgaXQoKnJhbmdlKTsKICAgICAgICAgd2hpbGUg
KCFpdC5hdEVuZCgpKSB7CiAgICAgICAgICAgICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS5zdGFy
dC5jb250YWluZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBv
aW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggODdlMGYzNjQwN2U3N2VlOGJjZDUwOTU5OGRiYWM0MGQzNDhj
YTQzNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkJvdW5k
YXJ5UG9pbnQuaCIKLQotI2luY2x1ZGUgIk5vZGUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1Cb3VuZGFyeVBvaW50OjpCb3VuZGFyeVBvaW50KGNvbnN0IEJvdW5kYXJ5UG9pbnQmIG90aGVy
KQotICAgIDogY29udGFpbmVyKG90aGVyLmNvbnRhaW5lci5jb3B5UmVmKCkpCi0gICAgLCBvZmZz
ZXQob3RoZXIub2Zmc2V0KQotewotfQotCi1Cb3VuZGFyeVBvaW50JiBCb3VuZGFyeVBvaW50Ojpv
cGVyYXRvcj0oY29uc3QgQm91bmRhcnlQb2ludCYgb3RoZXIpCi17Ci0gICAgY29udGFpbmVyID0g
b3RoZXIuY29udGFpbmVyLmNvcHlSZWYoKTsKLSAgICBvZmZzZXQgPSBvdGhlci5vZmZzZXQ7Ci0g
ICAgcmV0dXJuICp0aGlzOwotfQotCi1Cb3VuZGFyeVBvaW50JiBCb3VuZGFyeVBvaW50OjpvcGVy
YXRvcj0oQm91bmRhcnlQb2ludCYmKSA9IGRlZmF1bHQ7Ci0KLURvY3VtZW50JiBCb3VuZGFyeVBv
aW50Ojpkb2N1bWVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGNvbnRhaW5lci0+ZG9jdW1lbnQo
KTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmgKaW5kZXggNjkwZjZmOTYzYTAz
ZmQ2ZmM0NjZkZWRmZWFmZjY2OGNiYmIxNTVlNC4uYTVkOGUzZTAxMmVlZGFhOWNkZjcyOTMxMDhi
NDM5MjdiZTEyNGYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9p
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5oCkBAIC0yNywxMiAr
MjcsOCBAQAogCiAjaW5jbHVkZSAiTm9kZS5oIgogCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERvY3VtZW50OwotCiBzdHJ1Y3QgQm91bmRhcnlQ
b2ludCB7CiAgICAgUmVmPE5vZGU+IGNvbnRhaW5lcjsKICAgICB1bnNpZ25lZCBvZmZzZXQgeyAw
IH07CkBAIC00Myw3ICszOSw3IEBAIHN0cnVjdCBCb3VuZGFyeVBvaW50IHsKICAgICBCb3VuZGFy
eVBvaW50KGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKICAgICBCb3VuZGFyeVBvaW50KEJvdW5kYXJ5
UG9pbnQmJikgPSBkZWZhdWx0OwogICAgIEJvdW5kYXJ5UG9pbnQmIG9wZXJhdG9yPShjb25zdCBC
b3VuZGFyeVBvaW50Jik7Ci0gICAgQm91bmRhcnlQb2ludCYgb3BlcmF0b3I9KEJvdW5kYXJ5UG9p
bnQmJik7CisgICAgQm91bmRhcnlQb2ludCYgb3BlcmF0b3I9KEJvdW5kYXJ5UG9pbnQmJikgPSBk
ZWZhdWx0OwogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7CiB9OwpAQCAtNTYsNiAr
NTIsMjQgQEAgaW5saW5lIEJvdW5kYXJ5UG9pbnQ6OkJvdW5kYXJ5UG9pbnQoUmVmPE5vZGU+JiYg
Y29udGFpbmVyLCB1bnNpZ25lZCBvZmZzZXQpCiB7CiB9CiAKK2lubGluZSBCb3VuZGFyeVBvaW50
OjpCb3VuZGFyeVBvaW50KGNvbnN0IEJvdW5kYXJ5UG9pbnQmIG90aGVyKQorICAgIDogY29udGFp
bmVyKG90aGVyLmNvbnRhaW5lci5jb3B5UmVmKCkpCisgICAgLCBvZmZzZXQob3RoZXIub2Zmc2V0
KQoreworfQorCitpbmxpbmUgQm91bmRhcnlQb2ludCYgQm91bmRhcnlQb2ludDo6b3BlcmF0b3I9
KGNvbnN0IEJvdW5kYXJ5UG9pbnQmIG90aGVyKQoreworICAgIGNvbnRhaW5lciA9IG90aGVyLmNv
bnRhaW5lci5jb3B5UmVmKCk7CisgICAgb2Zmc2V0ID0gb3RoZXIub2Zmc2V0OworICAgIHJldHVy
biAqdGhpczsKK30KKworaW5saW5lIERvY3VtZW50JiBCb3VuZGFyeVBvaW50Ojpkb2N1bWVudCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnRhaW5lci0+ZG9jdW1lbnQoKTsKK30KKwogaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb3VuZGFyeVBvaW50JiBhLCBjb25zdCBCb3VuZGFyeVBv
aW50JiBiKQogewogICAgIHJldHVybiBhLmNvbnRhaW5lci5wdHIoKSA9PSBiLmNvbnRhaW5lci5w
dHIoKSAmJiBhLm9mZnNldCA9PSBiLm9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKaW5kZXggY2M3Mjg0NzVjNmMxNDkxZDhhMDVjYjJm
NGQyNGM1NzE3NDgwZDQ4Ny4uNTI2OTAyN2YyNTZjOTgwNjgzOGFhNDE5YjY3N2EwZjUxNTZkMThi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5j
cHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUg
IlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJlZERvY3VtZW50TWFya2VyLmgiCisjaW5j
bHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRl
IDxzdGRpby5oPgogCkBAIC02Myw3ICs2NCw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyOjpkZXRhY2goKQogVmVjdG9yPFJlZlB0cjxSYW5nZT4+IERvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6Y29sbGVjdFRleHRSYW5nZXMoY29uc3QgUmFuZ2UmIHJhbmdlKQogewogICAgIFZlY3Rv
cjxSZWZQdHI8UmFuZ2U+PiB0ZXh0UmFuZ2U7Ci0gICAgZm9yIChUZXh0SXRlcmF0b3IgdGV4dEl0
ZXJhdG9yKCZyYW5nZSk7ICF0ZXh0SXRlcmF0b3IuYXRFbmQoKTsgdGV4dEl0ZXJhdG9yLmFkdmFu
Y2UoKSkKKyAgICBmb3IgKFRleHRJdGVyYXRvciB0ZXh0SXRlcmF0b3IocmFuZ2UpOyAhdGV4dEl0
ZXJhdG9yLmF0RW5kKCk7IHRleHRJdGVyYXRvci5hZHZhbmNlKCkpCiAgICAgICAgIHRleHRSYW5n
ZS5hcHBlbmQoY3JlYXRlTGl2ZVJhbmdlKHRleHRJdGVyYXRvci5yYW5nZSgpKSk7CiAgICAgcmV0
dXJuIHRleHRSYW5nZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IGE4MjAwOTg4ZWNj
MjE2MjYyNzEwY2NiMzU1YmZhMWIxYTExNDM2OTguLmJmNTUyNzM5M2Y2ODkxOTYzMWQ5NzFmYzZi
YTdkNGQ1NjY1NmQ2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDksIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xMjUsNyArMTI1LDcgQEAgUG9zaXRpb246OlBvc2l0aW9uKE5vZGUqIGFuY2hvck5v
ZGUsIEFuY2hvclR5cGUgYW5jaG9yVHlwZSkKICAgICAgICAgJiYgKGlzPFRleHQ+KCptX2FuY2hv
ck5vZGUpIHx8IGVkaXRpbmdJZ25vcmVzQ29udGVudCgqbV9hbmNob3JOb2RlKSkpKTsKIH0KIAot
UG9zaXRpb246OlBvc2l0aW9uKE5vZGUqIGFuY2hvck5vZGUsIGludCBvZmZzZXQsIEFuY2hvclR5
cGUgYW5jaG9yVHlwZSkKK1Bvc2l0aW9uOjpQb3NpdGlvbihOb2RlKiBhbmNob3JOb2RlLCB1bnNp
Z25lZCBvZmZzZXQsIEFuY2hvclR5cGUgYW5jaG9yVHlwZSkKICAgICA6IG1fYW5jaG9yTm9kZShh
bmNob3JOb2RlKQogICAgICwgbV9vZmZzZXQob2Zmc2V0KQogICAgICwgbV9hbmNob3JUeXBlKGFu
Y2hvclR5cGUpCkBAIC0xNDUsNyArMTQ1LDcgQEAgUG9zaXRpb246OlBvc2l0aW9uKFRleHQqIHRl
eHROb2RlLCB1bnNpZ25lZCBvZmZzZXQpCiAgICAgQVNTRVJUKG1fYW5jaG9yTm9kZSk7CiB9CiAK
LXZvaWQgUG9zaXRpb246Om1vdmVUb1Bvc2l0aW9uKE5vZGUqIG5vZGUsIGludCBvZmZzZXQpCit2
b2lkIFBvc2l0aW9uOjptb3ZlVG9Qb3NpdGlvbihOb2RlKiBub2RlLCB1bnNpZ25lZCBvZmZzZXQp
CiB7CiAgICAgQVNTRVJUKCFlZGl0aW5nSWdub3Jlc0NvbnRlbnQoKm5vZGUpKTsKICAgICBBU1NF
UlQoYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciB8fCBtX2lzTGVnYWN5
RWRpdGluZ1Bvc2l0aW9uKTsKQEAgLTE1NCw3ICsxNTQsOCBAQCB2b2lkIFBvc2l0aW9uOjptb3Zl
VG9Qb3NpdGlvbihOb2RlKiBub2RlLCBpbnQgb2Zmc2V0KQogICAgIGlmIChtX2lzTGVnYWN5RWRp
dGluZ1Bvc2l0aW9uKQogICAgICAgICBtX2FuY2hvclR5cGUgPSBhbmNob3JUeXBlRm9yTGVnYWN5
RWRpdGluZ1Bvc2l0aW9uKG1fYW5jaG9yTm9kZS5nZXQoKSwgbV9vZmZzZXQpOwogfQotdm9pZCBQ
b3NpdGlvbjo6bW92ZVRvT2Zmc2V0KGludCBvZmZzZXQpCisKK3ZvaWQgUG9zaXRpb246Om1vdmVU
b09mZnNldCh1bnNpZ25lZCBvZmZzZXQpCiB7CiAgICAgQVNTRVJUKGFuY2hvclR5cGUoKSA9PSBQ
b3NpdGlvbklzT2Zmc2V0SW5BbmNob3IgfHwgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbik7CiAg
ICAgbV9vZmZzZXQgPSBvZmZzZXQ7CkBAIC0yNDcsNyArMjQ4LDcgQEAgUG9zaXRpb24gUG9zaXRp
b246OnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBwb3Np
dGlvbkluUGFyZW50QWZ0ZXJOb2RlKG1fYW5jaG9yTm9kZS5nZXQoKSk7CiAgICAgfQogCi0gICAg
cmV0dXJuIHsgY29udGFpbmVyTm9kZSgpLCBjb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCks
IFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciB9OworICAgIHJldHVybiB7IGNvbnRhaW5lck5vZGUo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSks
IFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciB9OwogfQogCiBSZWZQdHI8Tm9kZT4gUG9zaXRpb246
OmZpcnN0Tm9kZSgpIGNvbnN0CkBAIC0zMDYsNyArMzA3LDcgQEAgTm9kZSogUG9zaXRpb246OmNv
bXB1dGVOb2RlQWZ0ZXJQb3NpdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LVBvc2l0aW9uOjpBbmNob3JUeXBlIFBvc2l0aW9uOjphbmNob3JUeXBlRm9yTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uKE5vZGUqIGFuY2hvck5vZGUsIGludCBvZmZzZXQpCitQb3NpdGlvbjo6QW5jaG9y
VHlwZSBQb3NpdGlvbjo6YW5jaG9yVHlwZUZvckxlZ2FjeUVkaXRpbmdQb3NpdGlvbihOb2RlKiBh
bmNob3JOb2RlLCB1bnNpZ25lZCBvZmZzZXQpCiB7CiAgICAgaWYgKGFuY2hvck5vZGUgJiYgZWRp
dGluZ0lnbm9yZXNDb250ZW50KCphbmNob3JOb2RlKSkgewogICAgICAgICBpZiAob2Zmc2V0ID09
IDApCkBAIC0zMzEsOSArMzMyLDEwIEBAIFBvc2l0aW9uIFBvc2l0aW9uOjpwcmV2aW91cyhQb3Np
dGlvbk1vdmVUeXBlIG1vdmVUeXBlKSBjb25zdAogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0
dXJuICp0aGlzOwogCi0gICAgaW50IG9mZnNldCA9IGRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7
CiAgICAgLy8gRklYTUU6IE5lZ2F0aXZlIG9mZnNldHMgc2hvdWxkbid0IGJlIGFsbG93ZWQuIFdl
IHNob3VsZCBjYXRjaCB0aGlzIGVhcmxpZXIuCi0gICAgQVNTRVJUKG9mZnNldCA+PSAwKTsKKyAg
ICBBU1NFUlQoZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+PSAwKTsKKworICAgIHVuc2lnbmVk
IG9mZnNldCA9IGRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAKICAgICBpZiAoYW5jaG9yVHlw
ZSgpID09IFBvc2l0aW9uSXNCZWZvcmVBbmNob3IpIHsKICAgICAgICAgbm9kZSA9IGNvbnRhaW5l
ck5vZGUoKTsKQEAgLTM4NCw5ICszODYsMTAgQEAgUG9zaXRpb24gUG9zaXRpb246Om5leHQoUG9z
aXRpb25Nb3ZlVHlwZSBtb3ZlVHlwZSkgY29uc3QKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJl
dHVybiAqdGhpczsKIAotICAgIGludCBvZmZzZXQgPSBkZXByZWNhdGVkRWRpdGluZ09mZnNldCgp
OwogICAgIC8vIEZJWE1FOiBOZWdhdGl2ZSBvZmZzZXRzIHNob3VsZG4ndCBiZSBhbGxvd2VkLiBX
ZSBzaG91bGQgY2F0Y2ggdGhpcyBlYXJsaWVyLgotICAgIEFTU0VSVChvZmZzZXQgPj0gMCk7Cisg
ICAgQVNTRVJUKGRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPj0gMCk7CisKKyAgICB1bnNpZ25l
ZCBvZmZzZXQgPSBkZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogCiAgICAgaWYgKGFuY2hvclR5
cGUoKSA9PSBQb3NpdGlvbklzQWZ0ZXJBbmNob3IpIHsKICAgICAgICAgbm9kZSA9IGNvbnRhaW5l
ck5vZGUoKTsKQEAgLTM5Nyw3ICs0MDAsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6bmV4dChQb3Np
dGlvbk1vdmVUeXBlIG1vdmVUeXBlKSBjb25zdAogICAgIH0KIAogICAgIE5vZGUqIGNoaWxkID0g
bm9kZS0+dHJhdmVyc2VUb0NoaWxkQXQob2Zmc2V0KTsKLSAgICBpZiAoY2hpbGQgfHwgKCFub2Rl
LT5oYXNDaGlsZE5vZGVzKCkgJiYgb2Zmc2V0IDwgbGFzdE9mZnNldEZvckVkaXRpbmcoKm5vZGUp
KSkgeworICAgIGlmIChjaGlsZCB8fCAoIW5vZGUtPmhhc0NoaWxkTm9kZXMoKSAmJiBvZmZzZXQg
PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGFzdE9mZnNldEZvckVkaXRpbmcoKm5vZGUpKSkpIHsK
ICAgICAgICAgaWYgKGNoaWxkKQogICAgICAgICAgICAgcmV0dXJuIGZpcnN0UG9zaXRpb25Jbk9y
QmVmb3JlTm9kZShjaGlsZCk7CiAKQEAgLTQyMywxNyArNDI2LDE3IEBAIFBvc2l0aW9uIFBvc2l0
aW9uOjpuZXh0KFBvc2l0aW9uTW92ZVR5cGUgbW92ZVR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIGNy
ZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihwYXJlbnQsIG5vZGUtPmNvbXB1dGVOb2RlSW5kZXgo
KSArIDEpOwogfQogCi1pbnQgUG9zaXRpb246OnVuY2hlY2tlZFByZXZpb3VzT2Zmc2V0KGNvbnN0
IE5vZGUqIG4sIGludCBjdXJyZW50KQoraW50IFBvc2l0aW9uOjp1bmNoZWNrZWRQcmV2aW91c09m
ZnNldChjb25zdCBOb2RlKiBuLCB1bnNpZ25lZCBjdXJyZW50KQogewogICAgIHJldHVybiBuLT5y
ZW5kZXJlcigpID8gbi0+cmVuZGVyZXIoKS0+cHJldmlvdXNPZmZzZXQoY3VycmVudCkgOiBjdXJy
ZW50IC0gMTsKIH0KIAotaW50IFBvc2l0aW9uOjp1bmNoZWNrZWRQcmV2aW91c09mZnNldEZvckJh
Y2t3YXJkRGVsZXRpb24oY29uc3QgTm9kZSogbiwgaW50IGN1cnJlbnQpCitpbnQgUG9zaXRpb246
OnVuY2hlY2tlZFByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbihjb25zdCBOb2RlKiBu
LCB1bnNpZ25lZCBjdXJyZW50KQogewogICAgIHJldHVybiBuLT5yZW5kZXJlcigpID8gbi0+cmVu
ZGVyZXIoKS0+cHJldmlvdXNPZmZzZXRGb3JCYWNrd2FyZERlbGV0aW9uKGN1cnJlbnQpIDogY3Vy
cmVudCAtIDE7CiB9CiAKLWludCBQb3NpdGlvbjo6dW5jaGVja2VkTmV4dE9mZnNldChjb25zdCBO
b2RlKiBuLCBpbnQgY3VycmVudCkKK2ludCBQb3NpdGlvbjo6dW5jaGVja2VkTmV4dE9mZnNldChj
b25zdCBOb2RlKiBuLCB1bnNpZ25lZCBjdXJyZW50KQogewogICAgIHJldHVybiBuLT5yZW5kZXJl
cigpID8gbi0+cmVuZGVyZXIoKS0+bmV4dE9mZnNldChjdXJyZW50KSA6IGN1cnJlbnQgKyAxOwog
fQpAQCAtNDYyLDkgKzQ2NSw4IEBAIGJvb2wgUG9zaXRpb246OmF0TGFzdEVkaXRpbmdQb3NpdGlv
bkZvck5vZGUoKSBjb25zdAogewogICAgIGlmIChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgLy8gRklYTUU6IFBvc2l0aW9uIGFmdGVyIGFuY2hvciBzaG91bGRuJ3QgYmUgY29u
c2lkZXJlZCBhcyBhdCB0aGUgZmlyc3QgZWRpdGluZyBwb3NpdGlvbiBmb3Igbm9kZQotICAgIC8v
IHNpbmNlIHRoYXQgcG9zaXRpb24gcmVzaWRlcyBvdXRzaWRlIG9mIHRoZSBub2RlLgotICAgIHJl
dHVybiBtX2FuY2hvclR5cGUgPT0gUG9zaXRpb25Jc0FmdGVyQW5jaG9yIHx8IG1fYW5jaG9yVHlw
ZSA9PSBQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbiB8fCBtX29mZnNldCA+PSBsYXN0T2Zmc2V0Rm9y
RWRpdGluZygqZGVwcmVjYXRlZE5vZGUoKSk7CisgICAgLy8gRklYTUU6IFBvc2l0aW9uIGFmdGVy
IGFuY2hvciBzaG91bGRuJ3QgYmUgY29uc2lkZXJlZCBhcyBhdCB0aGUgZmlyc3QgZWRpdGluZyBw
b3NpdGlvbiBmb3Igbm9kZSBzaW5jZSB0aGF0IHBvc2l0aW9uIHJlc2lkZXMgb3V0c2lkZSBvZiB0
aGUgbm9kZS4KKyAgICByZXR1cm4gbV9hbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRlckFuY2hv
ciB8fCBtX2FuY2hvclR5cGUgPT0gUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4gfHwgbV9vZmZzZXQg
Pj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxhc3RPZmZzZXRGb3JFZGl0aW5nKCpkZXByZWNhdGVk
Tm9kZSgpKSk7CiB9CiAKIC8vIEEgcG9zaXRpb24gaXMgY29uc2lkZXJlZCBhdCBlZGl0aW5nIGJv
dW5kYXJ5IGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6CkBAIC01NDEsNyArNTQzLDcg
QEAgYm9vbCBQb3NpdGlvbjo6YXRFbmRPZlRyZWUoKSBjb25zdAogCiAgICAgc3dpdGNoIChtX2Fu
Y2hvclR5cGUpIHsKICAgICBjYXNlIFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcjoKLSAgICAgICAg
cmV0dXJuIG1fb2Zmc2V0ID49IGxhc3RPZmZzZXRGb3JFZGl0aW5nKCptX2FuY2hvck5vZGUpOwor
ICAgICAgICByZXR1cm4gbV9vZmZzZXQgPj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxhc3RPZmZz
ZXRGb3JFZGl0aW5nKCptX2FuY2hvck5vZGUpKTsKICAgICBjYXNlIFBvc2l0aW9uSXNCZWZvcmVB
bmNob3I6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIFBvc2l0aW9uSXNBZnRlckFu
Y2hvcjoKQEAgLTEwMzgsMTMgKzEwNDAsMTEgQEAgYm9vbCBQb3NpdGlvbjo6cmVuZGVyc0luRGlm
ZmVyZW50UG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdAogICAgICAgICBp
ZiAoaXM8SFRNTEJSRWxlbWVudD4oKmRlcHJlY2F0ZWROb2RlKCkpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgICAgIGlmIChtX29mZnNldCA9PSBwb3NpdGlvbi5kZXByZWNhdGVk
RWRpdGluZ09mZnNldCgpKQorICAgICAgICBpZiAobV9vZmZzZXQgPT0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICghaXM8VGV4dD4oKmRlcHJlY2F0ZWROb2RlKCkp
ICYmICFpczxUZXh0PigqcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKSkpIHsKLSAgICAgICAgICAg
IGlmIChtX29mZnNldCAhPSBwb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgICAgIGlmICghaXM8VGV4
dD4oKmRlcHJlY2F0ZWROb2RlKCkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
CiAgICAgaWYgKGlzPEhUTUxCUkVsZW1lbnQ+KCpkZXByZWNhdGVkTm9kZSgpKSAmJiBwb3NpdGlv
bi5pc0NhbmRpZGF0ZSgpKQpAQCAtMTA2Miw4ICsxMDYyLDggQEAgYm9vbCBQb3NpdGlvbjo6cmVu
ZGVyc0luRGlmZmVyZW50UG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdAog
ICAgIGlmIChpczxSZW5kZXJUZXh0PigqcG9zaXRpb25SZW5kZXJlcikgJiYgIWRvd25jYXN0PFJl
bmRlclRleHQ+KCpwb3NpdGlvblJlbmRlcmVyKS5jb250YWluc0NhcmV0T2Zmc2V0KHBvc2l0aW9u
Lm1fb2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW50IHRoaXNSZW5kZXJl
ZE9mZnNldCA9IGlzPFJlbmRlclRleHQ+KCpyZW5kZXJlcikgPyBkb3duY2FzdDxSZW5kZXJUZXh0
PigqcmVuZGVyZXIpLmNvdW50UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXRzVW50aWwobV9vZmZzZXQp
IDogbV9vZmZzZXQ7Ci0gICAgaW50IHBvc2l0aW9uUmVuZGVyZWRPZmZzZXQgPSBpczxSZW5kZXJU
ZXh0PigqcG9zaXRpb25SZW5kZXJlcikgPyBkb3duY2FzdDxSZW5kZXJUZXh0PigqcG9zaXRpb25S
ZW5kZXJlcikuY291bnRSZW5kZXJlZENoYXJhY3Rlck9mZnNldHNVbnRpbChwb3NpdGlvbi5tX29m
ZnNldCkgOiBwb3NpdGlvbi5tX29mZnNldDsKKyAgICB1bnNpZ25lZCB0aGlzUmVuZGVyZWRPZmZz
ZXQgPSBpczxSZW5kZXJUZXh0PigqcmVuZGVyZXIpID8gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnJl
bmRlcmVyKS5jb3VudFJlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0c1VudGlsKG1fb2Zmc2V0KSA6IG1f
b2Zmc2V0OworICAgIHVuc2lnbmVkIHBvc2l0aW9uUmVuZGVyZWRPZmZzZXQgPSBpczxSZW5kZXJU
ZXh0PigqcG9zaXRpb25SZW5kZXJlcikgPyBkb3duY2FzdDxSZW5kZXJUZXh0PigqcG9zaXRpb25S
ZW5kZXJlcikuY291bnRSZW5kZXJlZENoYXJhY3Rlck9mZnNldHNVbnRpbChwb3NpdGlvbi5tX29m
ZnNldCkgOiBwb3NpdGlvbi5tX29mZnNldDsKIAogICAgIGlmIChyZW5kZXJlciA9PSBwb3NpdGlv
blJlbmRlcmVyICYmIHRoaXNSZW5kZXJlZE9mZnNldCA9PSBwb3NpdGlvblJlbmRlcmVkT2Zmc2V0
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDkxLDEyICsxMDkxLDEyIEBAIGJvb2wgUG9z
aXRpb246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlv
bikgY29uc3QKICAgICB9CiAKICAgICBpZiAobmV4dFJlbmRlcmVkRWRpdGFibGUoZGVwcmVjYXRl
ZE5vZGUoKSkgPT0gcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKQotICAgICAgICAmJiB0aGlzUmVu
ZGVyZWRPZmZzZXQgPT0gY2FyZXRNYXhPZmZzZXQoKmRlcHJlY2F0ZWROb2RlKCkpICYmICFwb3Np
dGlvblJlbmRlcmVkT2Zmc2V0KSB7CisgICAgICAgICYmIHRoaXNSZW5kZXJlZE9mZnNldCA9PSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FyZXRNYXhPZmZzZXQoKmRlcHJlY2F0ZWROb2RlKCkpKSAm
JiAhcG9zaXRpb25SZW5kZXJlZE9mZnNldCkgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIAogICAgIGlmIChwcmV2aW91c1JlbmRlcmVkRWRpdGFibGUoZGVwcmVjYXRlZE5vZGUo
KSkgPT0gcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKQotICAgICAgICAmJiAhdGhpc1JlbmRlcmVk
T2Zmc2V0ICYmIHBvc2l0aW9uUmVuZGVyZWRPZmZzZXQgPT0gY2FyZXRNYXhPZmZzZXQoKnBvc2l0
aW9uLmRlcHJlY2F0ZWROb2RlKCkpKSB7CisgICAgICAgICYmICF0aGlzUmVuZGVyZWRPZmZzZXQg
JiYgcG9zaXRpb25SZW5kZXJlZE9mZnNldCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FyZXRN
YXhPZmZzZXQoKnBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCkpKSkgewogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCkBAIC0xMTY3LDkgKzExNjcsOSBAQCBzdGF0aWMgSW5saW5lVGV4dEJv
eCogc2VhcmNoQWhlYWRGb3JCZXR0ZXJNYXRjaChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0PigqbmV4
dCkpIHsKICAgICAgICAgICAgIElubGluZVRleHRCb3gqIG1hdGNoID0gbnVsbHB0cjsKLSAgICAg
ICAgICAgIGludCBtaW5PZmZzZXQgPSBJTlRfTUFYOworICAgICAgICAgICAgdW5zaWduZWQgbWlu
T2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOwogICAgICAgICAg
ICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqbmV4dCku
Zmlyc3RUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7Ci0gICAgICAg
ICAgICAgICAgaW50IGNhcmV0TWluT2Zmc2V0ID0gYm94LT5jYXJldE1pbk9mZnNldCgpOworICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGNhcmV0TWluT2Zmc2V0ID0gYm94LT5jYXJldE1pbk9mZnNl
dCgpOwogICAgICAgICAgICAgICAgIGlmIChjYXJldE1pbk9mZnNldCA8IG1pbk9mZnNldCkgewog
ICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IGJveDsKICAgICAgICAgICAgICAgICAgICAgbWlu
T2Zmc2V0ID0gY2FyZXRNaW5PZmZzZXQ7CkBAIC0xMjE5LDIwICsxMjE5LDIwIEBAIHZvaWQgUG9z
aXRpb246OmdldElubGluZUJveEFuZE9mZnNldChFQWZmaW5pdHkgYWZmaW5pdHksIFRleHREaXJl
Y3Rpb24gcHJpbWFyeURpCiAgICAgICAgIElubGluZVRleHRCb3gqIGNhbmRpZGF0ZSA9IG51bGxw
dHI7CiAKICAgICAgICAgZm9yIChib3ggPSB0ZXh0UmVuZGVyZXIuZmlyc3RUZXh0Qm94KCk7IGJv
eDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7Ci0gICAgICAgICAgICBpbnQgY2FyZXRNaW5P
ZmZzZXQgPSBib3gtPmNhcmV0TWluT2Zmc2V0KCk7Ci0gICAgICAgICAgICBpbnQgY2FyZXRNYXhP
ZmZzZXQgPSBib3gtPmNhcmV0TWF4T2Zmc2V0KCk7CisgICAgICAgICAgICB1bnNpZ25lZCBjYXJl
dE1pbk9mZnNldCA9IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGNhcmV0TWF4T2Zmc2V0ID0gYm94LT5jYXJldE1heE9mZnNldCgpOwogCi0gICAgICAgICAgICBp
ZiAoY2FyZXRPZmZzZXQgPCBjYXJldE1pbk9mZnNldCB8fCBjYXJldE9mZnNldCA+IGNhcmV0TWF4
T2Zmc2V0IHx8IChjYXJldE9mZnNldCA9PSBjYXJldE1heE9mZnNldCAmJiBib3gtPmlzTGluZUJy
ZWFrKCkpKQorICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYXJldE9mZnNl
dCkgPCBjYXJldE1pbk9mZnNldCB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FyZXRPZmZzZXQp
ID4gY2FyZXRNYXhPZmZzZXQgfHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYXJldE9mZnNldCkg
PT0gY2FyZXRNYXhPZmZzZXQgJiYgYm94LT5pc0xpbmVCcmVhaygpKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKGNhcmV0T2Zmc2V0ID4gY2FyZXRNaW5PZmZz
ZXQgJiYgY2FyZXRPZmZzZXQgPCBjYXJldE1heE9mZnNldCkgeworICAgICAgICAgICAgaWYgKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjYXJldE9mZnNldCkgPiBjYXJldE1pbk9mZnNldCAmJiBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oY2FyZXRPZmZzZXQpIDwgY2FyZXRNYXhPZmZzZXQpIHsKICAgICAg
ICAgICAgICAgICBpbmxpbmVCb3ggPSBib3g7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoKChjYXJldE9mZnNldCA9PSBjYXJldE1heE9m
ZnNldCkgXiAoYWZmaW5pdHkgPT0gRE9XTlNUUkVBTSkpCi0gICAgICAgICAgICAgICAgfHwgKChj
YXJldE9mZnNldCA9PSBjYXJldE1pbk9mZnNldCkgXiAoYWZmaW5pdHkgPT0gVVBTVFJFQU0pKQot
ICAgICAgICAgICAgICAgIHx8IChjYXJldE9mZnNldCA9PSBjYXJldE1heE9mZnNldCAmJiBib3gt
Pm5leHRMZWFmT25MaW5lKCkgJiYgYm94LT5uZXh0TGVhZk9uTGluZSgpLT5pc0xpbmVCcmVhaygp
KSkKKyAgICAgICAgICAgIGlmICgoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYXJldE9mZnNldCkg
PT0gY2FyZXRNYXhPZmZzZXQpIF4gKGFmZmluaXR5ID09IERPV05TVFJFQU0pKQorICAgICAgICAg
ICAgICAgIHx8ICgoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhcmV0T2Zmc2V0KSA9PSBjYXJldE1p
bk9mZnNldCkgXiAoYWZmaW5pdHkgPT0gVVBTVFJFQU0pKQorICAgICAgICAgICAgICAgIHx8IChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FyZXRPZmZzZXQpID09IGNhcmV0TWF4T2Zmc2V0ICYmIGJv
eC0+bmV4dExlYWZPbkxpbmUoKSAmJiBib3gtPm5leHRMZWFmT25MaW5lKCktPmlzTGluZUJyZWFr
KCkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYW5kaWRhdGUgPSBi
b3g7CkBAIC0xNDc4LDcgKzE0NzgsNyBAQCBib29sIFBvc2l0aW9uOjplcXVhbHMoY29uc3QgUG9z
aXRpb24mIG90aGVyKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIG1fYW5jaG9yTm9kZSA9PSBv
dGhlci5tX2FuY2hvck5vZGUgJiYgIW1fb2Zmc2V0OwogICAgICAgICBjYXNlIFBvc2l0aW9uSXNB
ZnRlckNoaWxkcmVuOgogICAgICAgICAgICAgQVNTRVJUKCFpczxUZXh0Pigqb3RoZXIubV9hbmNo
b3JOb2RlKSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9hbmNob3JOb2RlID09IG90aGVyLm1fYW5j
aG9yTm9kZSAmJiBtX29mZnNldCA9PSBzdGF0aWNfY2FzdDxpbnQ+KG90aGVyLm1fYW5jaG9yTm9k
ZS0+Y291bnRDaGlsZE5vZGVzKCkpOworICAgICAgICAgICAgcmV0dXJuIG1fYW5jaG9yTm9kZSA9
PSBvdGhlci5tX2FuY2hvck5vZGUgJiYgbV9vZmZzZXQgPT0gb3RoZXIubV9hbmNob3JOb2RlLT5j
b3VudENoaWxkTm9kZXMoKTsKICAgICAgICAgY2FzZSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3I6
CiAgICAgICAgICAgICByZXR1cm4gbV9hbmNob3JOb2RlID09IG90aGVyLm1fYW5jaG9yTm9kZSAm
JiBtX29mZnNldCA9PSBvdGhlci5tX29mZnNldDsKICAgICAgICAgY2FzZSBQb3NpdGlvbklzQmVm
b3JlQW5jaG9yOgpAQCAtMTU5OCw2ICsxNTk4LDEyIEBAIFBvc2l0aW9uIGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbihjb25zdCBCb3VuZGFyeVBvaW50JiBwb2ludCkKICAgICByZXR1cm4gY3Jl
YXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHBvaW50LmNvbnRhaW5lci5wdHIoKSwgcG9pbnQub2Zm
c2V0KTsKIH0KIAorQm91bmRhcnlQb2ludCBtYWtlQm91bmRhcnlQb2ludChjb25zdCBQb3NpdGlv
biYgcG9zaXRpb24pCit7CisgICAgQVNTRVJUKHBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSk7Cisg
ICAgcmV0dXJuIHsgKnBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHBvc2l0aW9uLm9mZnNldEluQ29udGFpbmVyTm9kZSgpKSB9OworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlv
bi5oCmluZGV4IDY0YzJkMThlMGUxY2M5MjRhYTNlMmMzOTA5OGEzYWI0NTQzZWZmYWEuLjQ3YzA1
YzcwOGQ3OTYwOGY2YTczNjdmYmQ0M2E4NDE4OTBkYjM1MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgLy8gRm9yIGNyZWF0aW5n
IG9mZnNldCBwb3NpdGlvbnM6CiAgICAgLy8gRklYTUU6IFRoaXMgY29uc3RydWN0b3Igc2hvdWxk
IGV2ZW50dWFsbHkgZ28gYXdheS4gU2VlIGJ1ZyA2MzA0MC4KLSAgICBXRUJDT1JFX0VYUE9SVCBQ
b3NpdGlvbihOb2RlKiBhbmNob3JOb2RlLCBpbnQgb2Zmc2V0LCBBbmNob3JUeXBlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBQb3NpdGlvbihOb2RlKiBhbmNob3JOb2RlLCB1bnNpZ25lZCBvZmZzZXQs
IEFuY2hvclR5cGUpOwogCiAgICAgQW5jaG9yVHlwZSBhbmNob3JUeXBlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8QW5jaG9yVHlwZT4obV9hbmNob3JUeXBlKTsgfQogCkBAIC0xMjEsOCAr
MTIxLDggQEAgcHVibGljOgogCiAgICAgLy8gVGhlc2Ugc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3Ig
UG9zaXRpb25Jc09mZnNldEluQW5jaG9yIHBvc2l0aW9ucywgdW5sZXNzCiAgICAgLy8gdGhlIHBv
c2l0aW9uIGlzIGEgbGVnYWN5IGVkaXRpbmcgcG9zaXRpb24uCi0gICAgdm9pZCBtb3ZlVG9Qb3Np
dGlvbihOb2RlKiBhbmNob3JOb2RlLCBpbnQgb2Zmc2V0KTsKLSAgICB2b2lkIG1vdmVUb09mZnNl
dChpbnQgb2Zmc2V0KTsKKyAgICB2b2lkIG1vdmVUb1Bvc2l0aW9uKE5vZGUqIGFuY2hvck5vZGUs
IHVuc2lnbmVkIG9mZnNldCk7CisgICAgdm9pZCBtb3ZlVG9PZmZzZXQodW5zaWduZWQgb2Zmc2V0
KTsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fYW5jaG9yTm9kZTsgfQog
ICAgIGJvb2wgaXNOb3ROdWxsKCkgY29uc3QgeyByZXR1cm4gbV9hbmNob3JOb2RlOyB9CkBAIC0x
MzUsOSArMTM1LDkgQEAgcHVibGljOgogICAgIC8vIHVzaW5nIGNvbXBvc2VkIGNoYXJhY3RlcnMs
IHRoZSByZXN1bHQgbWF5IGJlIGluc2lkZSBhIHNpbmdsZSB1c2VyLXZpc2libGUgY2hhcmFjdGVy
IGlmIGEgbGlnYXR1cmUgaXMgZm9ybWVkLgogICAgIFdFQkNPUkVfRVhQT1JUIFBvc2l0aW9uIHBy
ZXZpb3VzKFBvc2l0aW9uTW92ZVR5cGUgPSBDb2RlUG9pbnQpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIFBvc2l0aW9uIG5leHQoUG9zaXRpb25Nb3ZlVHlwZSA9IENvZGVQb2ludCkgY29uc3Q7
Ci0gICAgc3RhdGljIGludCB1bmNoZWNrZWRQcmV2aW91c09mZnNldChjb25zdCBOb2RlKiwgaW50
IGN1cnJlbnQpOwotICAgIHN0YXRpYyBpbnQgdW5jaGVja2VkUHJldmlvdXNPZmZzZXRGb3JCYWNr
d2FyZERlbGV0aW9uKGNvbnN0IE5vZGUqLCBpbnQgY3VycmVudCk7Ci0gICAgc3RhdGljIGludCB1
bmNoZWNrZWROZXh0T2Zmc2V0KGNvbnN0IE5vZGUqLCBpbnQgY3VycmVudCk7CisgICAgc3RhdGlj
IGludCB1bmNoZWNrZWRQcmV2aW91c09mZnNldChjb25zdCBOb2RlKiwgdW5zaWduZWQgY3VycmVu
dCk7CisgICAgc3RhdGljIGludCB1bmNoZWNrZWRQcmV2aW91c09mZnNldEZvckJhY2t3YXJkRGVs
ZXRpb24oY29uc3QgTm9kZSosIHVuc2lnbmVkIGN1cnJlbnQpOworICAgIHN0YXRpYyBpbnQgdW5j
aGVja2VkTmV4dE9mZnNldChjb25zdCBOb2RlKiwgdW5zaWduZWQgY3VycmVudCk7CiAKICAgICAv
LyBUaGVzZSBjYW4gYmUgZWl0aGVyIGluc2lkZSBvciBqdXN0IGJlZm9yZS9hZnRlciB0aGUgbm9k
ZSwgZGVwZW5kaW5nIG9uCiAgICAgLy8gaWYgdGhlIG5vZGUgaXMgaWdub3JlZCBieSBlZGl0aW5n
IG9yIG5vdC4KQEAgLTIwNiwxOSArMjA2LDUyIEBAIHByaXZhdGU6CiAgICAgUG9zaXRpb24gcHJl
dmlvdXNDaGFyYWN0ZXJQb3NpdGlvbihFQWZmaW5pdHkpIGNvbnN0OwogICAgIFBvc2l0aW9uIG5l
eHRDaGFyYWN0ZXJQb3NpdGlvbihFQWZmaW5pdHkpIGNvbnN0OwogCi0gICAgc3RhdGljIEFuY2hv
clR5cGUgYW5jaG9yVHlwZUZvckxlZ2FjeUVkaXRpbmdQb3NpdGlvbihOb2RlKiBhbmNob3JOb2Rl
LCBpbnQgb2Zmc2V0KTsKKyAgICBzdGF0aWMgQW5jaG9yVHlwZSBhbmNob3JUeXBlRm9yTGVnYWN5
RWRpdGluZ1Bvc2l0aW9uKE5vZGUqIGFuY2hvck5vZGUsIHVuc2lnbmVkIG9mZnNldCk7CiAKICAg
ICBSZWZQdHI8Tm9kZT4gbV9hbmNob3JOb2RlOwogICAgIC8vIG1fb2Zmc2V0IGNhbiBiZSB0aGUg
b2Zmc2V0IGluc2lkZSBtX2FuY2hvck5vZGUsIG9yIGlmIGVkaXRpbmdJZ25vcmVzQ29udGVudCht
X2FuY2hvck5vZGUpCiAgICAgLy8gcmV0dXJucyB0cnVlLCB0aGVuIG90aGVyIHBsYWNlcyBpbiBl
ZGl0aW5nIHdpbGwgdHJlYXQgbV9vZmZzZXQgPT0gMCBhcyAiYmVmb3JlIHRoZSBhbmNob3IiCiAg
ICAgLy8gYW5kIG1fb2Zmc2V0ID4gMCBhcyAiYWZ0ZXIgdGhlIGFuY2hvciBub2RlIi4gIFNlZSBw
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQgZm9yIG1vcmUgaW5mby4KLSAgICBpbnQgbV9vZmZzZXQg
eyAwIH07CisgICAgdW5zaWduZWQgbV9vZmZzZXQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9hbmNo
b3JUeXBlIDogMzsKICAgICBib29sIG1faXNMZWdhY3lFZGl0aW5nUG9zaXRpb24gOiAxOwogfTsK
IAorYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKK2Jv
b2wgb3BlcmF0b3IhPShjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7Citib29sIG9w
ZXJhdG9yPChjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7Citib29sIG9wZXJhdG9y
Pihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7Citib29sIG9wZXJhdG9yPj0oY29u
c3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOworYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFBv
c2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKKworLy8gRklYTUU6IENvbnNpZGVyIHJlbmFtaW5n
IHRoaXMgdG8gIm1ha2UiIGluc3RlYWQgb2YgImNyZWF0ZSIgc2luY2Ugd2Ugbm9ybWFsbHkgdXNl
ICJjcmVhdGUiIGZvciBmdW5jdGlvbnMgdGhhdCBhbGxvY2F0ZSBoZWFwIG9iamVjdHMuCitQb3Np
dGlvbiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oTm9kZSosIHVuc2lnbmVkIG9mZnNldCk7
CiBQb3NpdGlvbiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oY29uc3QgQm91bmRhcnlQb2lu
dCYpOwogCitXRUJDT1JFX0VYUE9SVCBCb3VuZGFyeVBvaW50IG1ha2VCb3VuZGFyeVBvaW50KGNv
bnN0IFBvc2l0aW9uJik7CisKK1Bvc2l0aW9uIHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKE5v
ZGUqKTsKK1Bvc2l0aW9uIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUoTm9kZSopOworCisvLyBw
b3NpdGlvbkJlZm9yZU5vZGUgYW5kIHBvc2l0aW9uQWZ0ZXJOb2RlIHJldHVybiBuZWlnaGJvci1h
bmNob3JlZCBwb3NpdGlvbnMsIGNvbnN0cnVjdGlvbiBpcyBPKDEpCitQb3NpdGlvbiBwb3NpdGlv
bkJlZm9yZU5vZGUoTm9kZSogYW5jaG9yTm9kZSk7CitQb3NpdGlvbiBwb3NpdGlvbkFmdGVyTm9k
ZShOb2RlKiBhbmNob3JOb2RlKTsKKworaW50IGxhc3RPZmZzZXRJbk5vZGUoTm9kZSopOworCisv
LyBmaXJzdFBvc2l0aW9uSW5Ob2RlIGFuZCBsYXN0UG9zaXRpb25Jbk5vZGUgcmV0dXJuIHBhcmVu
dC1hbmNob3JlZCBwb3NpdGlvbnMsIGxhc3RQb3NpdGlvbkluTm9kZSBjb25zdHJ1Y3Rpb24gaXMg
TyhuKSBkdWUgdG8gY291bnRDaGlsZE5vZGVzKCkKK1Bvc2l0aW9uIGZpcnN0UG9zaXRpb25Jbk5v
ZGUoTm9kZSogYW5jaG9yTm9kZSk7CitQb3NpdGlvbiBsYXN0UG9zaXRpb25Jbk5vZGUoTm9kZSog
YW5jaG9yTm9kZSk7CisKK2ludCBtaW5PZmZzZXRGb3JOb2RlKE5vZGUqIGFuY2hvck5vZGUsIHVu
c2lnbmVkIG9mZnNldCk7Citib29sIG9mZnNldElzQmVmb3JlTGFzdE5vZGVPZmZzZXQodW5zaWdu
ZWQgb2Zmc2V0LCBOb2RlKiBhbmNob3JOb2RlKTsKKworUmVmUHRyPE5vZGU+IGNvbW1vblNoYWRv
d0luY2x1ZGluZ0FuY2VzdG9yKGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKKwor
V1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFBvc2l0
aW9uJik7CisKKy8vIGlubGluZXMKKwogaW5saW5lIFBvc2l0aW9uIGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihOb2RlKiBub2RlLCB1bnNpZ25lZCBvZmZzZXQpCiB7CiAgICAgcmV0dXJuIHsg
bm9kZSwgb2Zmc2V0LCBQb3NpdGlvbjo6TGVnYWN5RWRpdGluZ1Bvc2l0aW9uRmxhZzo6T24gfTsK
QEAgLTI2MCw5ICsyOTMsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFBvc2l0aW9u
JiBhLCBjb25zdCBQb3NpdGlvbiYgYikKICAgICByZXR1cm4gIWEuaXNOdWxsKCkgJiYgIWIuaXNO
dWxsKCkgJiYgKGEgPT0gYiB8fCBhIDwgYik7CiB9CiAKLVBvc2l0aW9uIHBvc2l0aW9uSW5QYXJl
bnRCZWZvcmVOb2RlKE5vZGUqKTsKLVBvc2l0aW9uIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUo
Tm9kZSopOwotCiAvLyBwb3NpdGlvbkJlZm9yZU5vZGUgYW5kIHBvc2l0aW9uQWZ0ZXJOb2RlIHJl
dHVybiBuZWlnaGJvci1hbmNob3JlZCBwb3NpdGlvbnMsIGNvbnN0cnVjdGlvbiBpcyBPKDEpCiBp
bmxpbmUgUG9zaXRpb24gcG9zaXRpb25CZWZvcmVOb2RlKE5vZGUqIGFuY2hvck5vZGUpCiB7CkBA
IC0yNzgsNyArMzA4LDcgQEAgaW5saW5lIFBvc2l0aW9uIHBvc2l0aW9uQWZ0ZXJOb2RlKE5vZGUq
IGFuY2hvck5vZGUpCiAKIGlubGluZSBpbnQgbGFzdE9mZnNldEluTm9kZShOb2RlKiBub2RlKQog
ewotICAgIHJldHVybiBub2RlLT5pc0NoYXJhY3RlckRhdGFOb2RlKCkgPyBub2RlLT5tYXhDaGFy
YWN0ZXJPZmZzZXQoKSA6IHN0YXRpY19jYXN0PGludD4obm9kZS0+Y291bnRDaGlsZE5vZGVzKCkp
OworICAgIHJldHVybiBub2RlLT5pc0NoYXJhY3RlckRhdGFOb2RlKCkgPyBub2RlLT5tYXhDaGFy
YWN0ZXJPZmZzZXQoKSA6IG5vZGUtPmNvdW50Q2hpbGROb2RlcygpOwogfQogCiAvLyBmaXJzdFBv
c2l0aW9uSW5Ob2RlIGFuZCBsYXN0UG9zaXRpb25Jbk5vZGUgcmV0dXJuIHBhcmVudC1hbmNob3Jl
ZCBwb3NpdGlvbnMsIGxhc3RQb3NpdGlvbkluTm9kZSBjb25zdHJ1Y3Rpb24gaXMgTyhuKSBkdWUg
dG8gY291bnRDaGlsZE5vZGVzKCkKQEAgLTI5NiwyNCArMzI2LDI0IEBAIGlubGluZSBQb3NpdGlv
biBsYXN0UG9zaXRpb25Jbk5vZGUoTm9kZSogYW5jaG9yTm9kZSkKICAgICByZXR1cm4gUG9zaXRp
b24oYW5jaG9yTm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckNoaWxkcmVuKTsKIH0KIAot
aW5saW5lIGludCBtaW5PZmZzZXRGb3JOb2RlKE5vZGUqIGFuY2hvck5vZGUsIGludCBvZmZzZXQp
CitpbmxpbmUgaW50IG1pbk9mZnNldEZvck5vZGUoTm9kZSogYW5jaG9yTm9kZSwgdW5zaWduZWQg
b2Zmc2V0KQogewogICAgIGlmIChhbmNob3JOb2RlLT5pc0NoYXJhY3RlckRhdGFOb2RlKCkpCi0g
ICAgICAgIHJldHVybiBzdGQ6Om1pbihvZmZzZXQsIGFuY2hvck5vZGUtPm1heENoYXJhY3Rlck9m
ZnNldCgpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluPHVuc2lnbmVkPihvZmZzZXQsIGFuY2hv
ck5vZGUtPm1heENoYXJhY3Rlck9mZnNldCgpKTsKIAotICAgIGludCBuZXdPZmZzZXQgPSAwOwor
ICAgIHVuc2lnbmVkIG5ld09mZnNldCA9IDA7CiAgICAgZm9yIChOb2RlKiBub2RlID0gYW5jaG9y
Tm9kZS0+Zmlyc3RDaGlsZCgpOyBub2RlICYmIG5ld09mZnNldCA8IG9mZnNldDsgbm9kZSA9IG5v
ZGUtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIG5ld09mZnNldCsrOwogICAgIAogICAgIHJldHVy
biBuZXdPZmZzZXQ7CiB9CiAKLWlubGluZSBib29sIG9mZnNldElzQmVmb3JlTGFzdE5vZGVPZmZz
ZXQoaW50IG9mZnNldCwgTm9kZSogYW5jaG9yTm9kZSkKK2lubGluZSBib29sIG9mZnNldElzQmVm
b3JlTGFzdE5vZGVPZmZzZXQodW5zaWduZWQgb2Zmc2V0LCBOb2RlKiBhbmNob3JOb2RlKQogewog
ICAgIGlmIChhbmNob3JOb2RlLT5pc0NoYXJhY3RlckRhdGFOb2RlKCkpCi0gICAgICAgIHJldHVy
biBvZmZzZXQgPCBhbmNob3JOb2RlLT5tYXhDaGFyYWN0ZXJPZmZzZXQoKTsKKyAgICAgICAgcmV0
dXJuIG9mZnNldCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhbmNob3JOb2RlLT5tYXhDaGFyYWN0
ZXJPZmZzZXQoKSk7CiAKLSAgICBpbnQgY3VycmVudE9mZnNldCA9IDA7CisgICAgdW5zaWduZWQg
Y3VycmVudE9mZnNldCA9IDA7CiAgICAgZm9yIChOb2RlKiBub2RlID0gYW5jaG9yTm9kZS0+Zmly
c3RDaGlsZCgpOyBub2RlICYmIGN1cnJlbnRPZmZzZXQgPCBvZmZzZXQ7IG5vZGUgPSBub2RlLT5u
ZXh0U2libGluZygpKQogICAgICAgICBjdXJyZW50T2Zmc2V0Kys7CiAgICAgCkBAIC0zMjEsMTAg
KzM1MSw2IEBAIGlubGluZSBib29sIG9mZnNldElzQmVmb3JlTGFzdE5vZGVPZmZzZXQoaW50IG9m
ZnNldCwgTm9kZSogYW5jaG9yTm9kZSkKICAgICByZXR1cm4gb2Zmc2V0IDwgY3VycmVudE9mZnNl
dDsKIH0KIAotUmVmUHRyPE5vZGU+IGNvbW1vblNoYWRvd0luY2x1ZGluZ0FuY2VzdG9yKGNvbnN0
IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKLQotV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFBvc2l0aW9uJik7Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmlu
ZGV4IDljMTEzNDA1ZTI3NzVjZjdmMDVjN2Y4YWMzZmExODAwYjNkNDU5N2YuLmRiZDNlZWU1ODdk
NDUzYzJjMmZmMmIwN2I5ZjBjYmM3YTdhZjI4NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtNDUs
NiArNDUsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCiAjaW5jbHVkZSAiU2NvcGVkRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdl
LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9u
LmgiCiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCkBAIC0xODY5LDYgKzE4NzAsMTggQEAgRmxv
YXRSZWN0IFJhbmdlOjphYnNvbHV0ZUJvdW5kaW5nUmVjdChPcHRpb25TZXQ8Qm91bmRpbmdSZWN0
QmVoYXZpb3I+IHJlY3RPcHRpb24KICAgICByZXR1cm4gYm91bmRpbmdSZWN0KENvb3JkaW5hdGVT
cGFjZTo6QWJzb2x1dGUsIHJlY3RPcHRpb25zKTsKIH0KIAorUmVmPFJhbmdlPiBjcmVhdGVMaXZl
UmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBSYW5nZTo6Y3Jl
YXRlKHJhbmdlLnN0YXJ0LmRvY3VtZW50KCksIHJhbmdlLnN0YXJ0LmNvbnRhaW5lci5wdHIoKSwg
cmFuZ2Uuc3RhcnQub2Zmc2V0LCByYW5nZS5lbmQuY29udGFpbmVyLnB0cigpLCByYW5nZS5lbmQu
b2Zmc2V0KTsKK30KKworUmVmUHRyPFJhbmdlPiBjcmVhdGVMaXZlUmFuZ2UoY29uc3QgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3sKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKCpyYW5nZSk7Cit9CisKIFdU
Rjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mIHRzLCBjb25zdCBSYW5n
ZUJvdW5kYXJ5UG9pbnQmIHIpCiB7CiAgICAgcmV0dXJuIHRzIDw8IHIudG9Qb3NpdGlvbigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2UuaAppbmRleCBiNDkzYzdjZDQ2ZDU1MTk1OTBlZmQ5N2U1ZGVjN2I5YzQ5YzQyYjZm
Li42OWNmMmI5NzJlZGE4ZWY2MjNjNzQ0ZGU5MDMzY2JhNDZmYTNkN2I2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2Uu
aApAQCAtMyw3ICszLDcgQEAKICAqIChDKSAyMDAwIEd1bm5zdGVpbiBMeWUgKGd1bm5zdGVpbkBu
ZXRjb20ubm8pCiAgKiAoQykgMjAwMCBGcmVkZXJpayBIb2xsamVuIChmcmVkZXJpay5ob2xsamVu
QGhpZy5ubykKICAqIChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNywyNiArMjcs
MjMgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5j
bHVkZSAiUmFuZ2VCb3VuZGFyeVBvaW50LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29u
dGFpbmVyTm9kZTsKIGNsYXNzIERPTVJlY3Q7CiBjbGFzcyBET01SZWN0TGlzdDsKLWNsYXNzIERv
Y3VtZW50OwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEZsb2F0UXVhZDsKLWNsYXNz
IE5vZGU7CiBjbGFzcyBOb2RlV2l0aEluZGV4OwogY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNzIFNl
bGVjdGlvblJlY3Q7CiBjbGFzcyBUZXh0OwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogCitzdHJ1
Y3QgU2ltcGxlUmFuZ2U7CisKKy8vIEZJWE1FOiBSZW5hbWUgdG8gTGl2ZVJhbmdlLCB3aGlsZSBs
ZWF2aW5nIHRoZSBET00tZXhwb3NlZCBuYW1lIGFzIFJhbmdlLgogY2xhc3MgUmFuZ2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxSYW5nZT4gewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8UmFuZ2U+IGNyZWF0ZShEb2N1bWVudCYpOwpAQCAtMTg1LDE1ICsxODIsMjAgQEAgV0VC
Q09SRV9FWFBPUlQgUmVmPFJhbmdlPiByYW5nZU9mQ29udGVudHMoTm9kZSYpOwogV0VCQ09SRV9F
WFBPUlQgYm9vbCBhcmVSYW5nZXNFcXVhbChjb25zdCBSYW5nZSosIGNvbnN0IFJhbmdlKik7CiBX
RUJDT1JFX0VYUE9SVCBib29sIHJhbmdlc092ZXJsYXAoY29uc3QgUmFuZ2UqLCBjb25zdCBSYW5n
ZSopOwogCitXRUJDT1JFX0VYUE9SVCBSZWY8UmFuZ2U+IGNyZWF0ZUxpdmVSYW5nZShjb25zdCBT
aW1wbGVSYW5nZSYpOworV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFJhbmdlPiBjcmVhdGVMaXZlUmFu
Z2UoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jik7CisKK2Jvb2wgZG9jdW1lbnRPcmRlckNv
bXBhcmF0b3IoY29uc3QgTm9kZSosIGNvbnN0IE5vZGUqKTsKKworV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFJhbmdlQm91bmRhcnlQb2ludCYpOwor
V1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFJhbmdl
Jik7CisKIGlubGluZSBib29sIGRvY3VtZW50T3JkZXJDb21wYXJhdG9yKGNvbnN0IE5vZGUqIGEs
IGNvbnN0IE5vZGUqIGIpCiB7CiAgICAgcmV0dXJuIFJhbmdlOjpjb21wYXJlQm91bmRhcnlQb2lu
dHMoY29uc3RfY2FzdDxOb2RlKj4oYSksIDAsIGNvbnN0X2Nhc3Q8Tm9kZSo+KGIpLCAwKS5yZWxl
YXNlUmV0dXJuVmFsdWUoKSA8IDA7CiB9Ci0gICAgCi1XVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgUmFuZ2VCb3VuZGFyeVBvaW50Jik7Ci1XVEY6OlRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgUmFuZ2UmKTsKIAot
fSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2lmIEVOQUJMRShUUkVF
X0RFQlVHR0lORykKIC8vIE91dHNpZGUgdGhlIFdlYkNvcmUgbmFtZXNwYWNlIGZvciBlYXNlIG9m
IGludm9jYXRpb24gZnJvbSB0aGUgZGVidWdnZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2ltcGxlUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNw
cAppbmRleCAwOWRmOTljODViZjFlODU3MWRiZWFhNTlhY2RlODVhMDU1ZTM5NzY3Li5iNGZlMmI4
NWQzYWY4NWNiODMwNzhkN2E5ZTUxMjE3ZjE0MDUwMzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVS
YW5nZS5jcHAKQEAgLTUzLDE2ICs1Myw0IEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW1wbGVS
YW5nZSYgYSwgY29uc3QgU2ltcGxlUmFuZ2UmIGIpCiAgICAgcmV0dXJuIGEuc3RhcnQgPT0gYi5z
dGFydCAmJiBhLmVuZCA9PSBiLmVuZDsKIH0KIAotUmVmPFJhbmdlPiBjcmVhdGVMaXZlUmFuZ2Uo
Y29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQotewotICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKHJh
bmdlLnN0YXJ0LmRvY3VtZW50KCksIHJhbmdlLnN0YXJ0LmNvbnRhaW5lci5wdHIoKSwgcmFuZ2Uu
c3RhcnQub2Zmc2V0LCByYW5nZS5lbmQuY29udGFpbmVyLnB0cigpLCByYW5nZS5lbmQub2Zmc2V0
KTsKLX0KLQotUmVmUHRyPFJhbmdlPiBjcmVhdGVMaXZlUmFuZ2UoY29uc3QgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiByYW5nZSkKLXsKLSAgICBpZiAoIXJhbmdlKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKCpyYW5nZSk7Ci19Ci0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NpbXBsZVJhbmdlLmgKaW5kZXggNjY1YzliOGE0OTU3M2JmNWVkN2JkZmJhODkzOTcxMDky
MTM5M2E1OS4uMTI3ZjJmMTg5NDY0YzEwYzQ5YTU1NDQ4NjZlYWM0OTRkNGU4OGIyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NpbXBsZVJhbmdlLmgKQEAgLTQzLDI1ICs0MywxNiBAQCBzdHJ1Y3QgU2ltcGxlUmFu
Z2UgewogICAgIGJvb2wgY29sbGFwc2VkKCkgY29uc3QgeyByZXR1cm4gc3RhcnQgPT0gZW5kOyB9
CiAKICAgICBTaW1wbGVSYW5nZShjb25zdCBCb3VuZGFyeVBvaW50JiwgY29uc3QgQm91bmRhcnlQ
b2ludCYpOwotICAgIFNpbXBsZVJhbmdlKEJvdW5kYXJ5UG9pbnQmJiwgQm91bmRhcnlQb2ludCYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZShCb3VuZGFyeVBvaW50JiYsIEJvdW5k
YXJ5UG9pbnQmJik7CiAKKyAgICAvLyBDb252ZW5pZW5jZSBvdmVybG9hZHMgdG8gaGVscCB3aXRo
IHRyYW5zaXRpb24gZnJvbSB1c2luZyBhIGxvdCBvZiBsaXZlIHJhbmdlcy4KKyAgICAvLyBGSVhN
RTogTW92ZSB0byB0aGUgUmFuZ2UgY2xhc3MgaGVhZGVyIGFzIGVpdGhlciBtYWtlU2ltcGxlUmFu
Z2Ugb3IgUmFuZ2U6Om9wZXJhdG9yIFNpbXBsZVJhbmdlLgogICAgIFdFQkNPUkVfRVhQT1JUIFNp
bXBsZVJhbmdlKGNvbnN0IFJhbmdlJik7Ci0KLSAgICAvLyBDb252ZW5pZW5jZSBvdmVybG9hZHMg
dG8gaGVscCB3aXRoIHRyYW5zaXRpb24gZnJvbSB1c2luZyBhIGxvdCBvZiBsaXZlIHJhbmdlcy4g
Q29uc2lkZXIgcmVtb3ZpbmcgdGhlc2UgZXZlbnR1YWxseS4KLSAgICBTaW1wbGVSYW5nZShjb25z
dCBSYW5nZSopOyAvLyBDcmFzaGVzIGlmIHBhc3NlZCBhIG51bGxwdHIuCiAgICAgU2ltcGxlUmFu
Z2UoY29uc3QgUmVmPFJhbmdlPiYpOwogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNpbXBs
ZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAotV0VCQ09SRV9FWFBPUlQgUmVmPFJhbmdl
PiBjcmVhdGVMaXZlUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmKTsKLVdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxSYW5nZT4gY3JlYXRlTGl2ZVJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYp
OwotCi1pbmxpbmUgU2ltcGxlUmFuZ2U6OlNpbXBsZVJhbmdlKGNvbnN0IFJhbmdlKiByYW5nZSkK
LSAgICA6IFNpbXBsZVJhbmdlKCpyYW5nZSkKLXsKLX0KLQogaW5saW5lIFNpbXBsZVJhbmdlOjpT
aW1wbGVSYW5nZShjb25zdCBSZWY8UmFuZ2U+JiByYW5nZSkKICAgICA6IFNpbXBsZVJhbmdlKHJh
bmdlLmdldCgpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0
eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmNwcAppbmRleCA1MmU2ZTRlMGIxN2RkZjkwZGQxYmViNWVkZDkxYzAwMTVkYTMyOTc0Li5lYTZm
MjAxNTFkOWM5ZTIyMmZiODkxZjQxMTQxZjc1YjNjOWM5ODVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApAQCAtMTI2Niw4ICsxMjY2LDcgQEAgYm9v
bCBBcHBseVN0eWxlQ29tbWFuZDo6aXNWYWxpZENhcmV0UG9zaXRpb25JblRleHROb2RlKGNvbnN0
IFBvc2l0aW9uJiBwb3NpdGlvbikKIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6Om1lcmdlU3RhcnRX
aXRoUHJldmlvdXNJZklkZW50aWNhbChjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0
aW9uJiBlbmQpCiB7CiAgICAgYXV0byogc3RhcnROb2RlID0gc3RhcnQuY29udGFpbmVyTm9kZSgp
OwotICAgIGludCBzdGFydE9mZnNldCA9IHN0YXJ0LmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5v
ZGUoKTsKLSAgICBpZiAoc3RhcnRPZmZzZXQpCisgICAgaWYgKHN0YXJ0LmNvbXB1dGVPZmZzZXRJ
bkNvbnRhaW5lck5vZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGlzQXRv
bWljTm9kZShzdGFydE5vZGUpKSB7CkBAIC0xMjg5LDEwICsxMjg4LDExIEBAIGJvb2wgQXBwbHlT
dHlsZUNvbW1hbmQ6Om1lcmdlU3RhcnRXaXRoUHJldmlvdXNJZklkZW50aWNhbChjb25zdCBQb3Np
dGlvbiYgc3RhcnQsCiAgICAgQVNTRVJUKHN0YXJ0Q2hpbGQpOwogICAgIG1lcmdlSWRlbnRpY2Fs
RWxlbWVudHMocHJldmlvdXNFbGVtZW50LCBlbGVtZW50KTsKIAotICAgIGludCBzdGFydE9mZnNl
dEFkanVzdG1lbnQgPSBzdGFydENoaWxkLT5jb21wdXRlTm9kZUluZGV4KCk7Ci0gICAgaW50IGVu
ZE9mZnNldEFkanVzdG1lbnQgPSBzdGFydE5vZGUgPT0gZW5kLmRlcHJlY2F0ZWROb2RlKCkgPyBz
dGFydE9mZnNldEFkanVzdG1lbnQgOiAwOwotICAgIHVwZGF0ZVN0YXJ0RW5kKHsgc3RhcnROb2Rl
LCBzdGFydE9mZnNldEFkanVzdG1lbnQsIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNo
b3J9LAotICAgICAgICB7IGVuZC5kZXByZWNhdGVkTm9kZSgpLCBlbmQuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSArIGVuZE9mZnNldEFkanVzdG1lbnQsIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zm
c2V0SW5BbmNob3IgfSk7CisgICAgLy8gRklYTUU6IEluY29uc2lzdGVudCB0aGF0IHdlIHVzZSBj
b21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlIGZvciBzdGFydCwgYnV0IGRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0IGZvciBlbmQuCisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBzdGFydENoaWxk
LT5jb21wdXRlTm9kZUluZGV4KCk7CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0ID0gZW5kLmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCkgKyAoc3RhcnROb2RlID09IGVuZC5kZXByZWNhdGVkTm9kZSgp
ID8gc3RhcnRPZmZzZXQgOiAwKTsKKyAgICB1cGRhdGVTdGFydEVuZCh7IHN0YXJ0Tm9kZSwgc3Rh
cnRPZmZzZXQsIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IgfSwKKyAgICAgICAg
eyBlbmQuZGVwcmVjYXRlZE5vZGUoKSwgZW5kT2Zmc2V0LCBQb3NpdGlvbjo6UG9zaXRpb25Jc09m
ZnNldEluQW5jaG9yIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMzIyLDcgKzEzMjIs
NyBAQCBib29sIEFwcGx5U3R5bGVDb21tYW5kOjptZXJnZUVuZFdpdGhOZXh0SWZJZGVudGljYWwo
Y29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdAogICAgIG1lcmdlSWRlbnRpY2FsRWxlbWVudHMo
ZWxlbWVudCwgbmV4dEVsZW1lbnQpOwogCiAgICAgYm9vbCBzaG91bGRVcGRhdGVTdGFydCA9IHN0
YXJ0LmNvbnRhaW5lck5vZGUoKSA9PSBlbmROb2RlOwotICAgIGludCBlbmRPZmZzZXQgPSBuZXh0
Q2hpbGQgPyBuZXh0Q2hpbGQtPmNvbXB1dGVOb2RlSW5kZXgoKSA6IG5leHRFbGVtZW50LmNvdW50
Q2hpbGROb2RlcygpOworICAgIHVuc2lnbmVkIGVuZE9mZnNldCA9IG5leHRDaGlsZCA/IG5leHRD
aGlsZC0+Y29tcHV0ZU5vZGVJbmRleCgpIDogbmV4dEVsZW1lbnQuY291bnRDaGlsZE5vZGVzKCk7
CiAgICAgdXBkYXRlU3RhcnRFbmQoc2hvdWxkVXBkYXRlU3RhcnQgPyBQb3NpdGlvbigmbmV4dEVs
ZW1lbnQsIHN0YXJ0Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBQb3NpdGlvbjo6UG9zaXRpb25J
c09mZnNldEluQW5jaG9yKSA6IHN0YXJ0LAogICAgICAgICB7ICZuZXh0RWxlbWVudCwgZW5kT2Zm
c2V0LCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yIH0pOwogICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKaW5kZXggZmY5MWZlMDA4ZWZiOTQ1ZThk
NGE2YjVmYWYwYjE2YzAxMjUxM2JjMy4uOTg1MThlMjg2YjkzNGM4OGVkNzQzYjY0NjY5MDU5MGRm
ZDkzMzliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCkBAIC0xMzA4LDcgKzEzMDgs
NyBAQCBJbnRSZWN0IGFic29sdXRlQm91bmRzRm9yTG9jYWxDYXJldFJlY3QoUmVuZGVyQmxvY2sq
IHJlbmRlcmVyRm9yQ2FyZXRQYWludGluZywgYwogSGFzaFNldDxSZWZQdHI8SFRNTEltYWdlRWxl
bWVudD4+IHZpc2libGVJbWFnZUVsZW1lbnRzSW5SYW5nZVdpdGhOb25Mb2FkZWRJbWFnZXMoY29u
c3QgUmFuZ2UmIHJhbmdlKQogewogICAgIEhhc2hTZXQ8UmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+
PiByZXN1bHQ7Ci0gICAgZm9yIChUZXh0SXRlcmF0b3IgaXRlcmF0b3IoJnJhbmdlKTsgIWl0ZXJh
dG9yLmF0RW5kKCk7IGl0ZXJhdG9yLmFkdmFuY2UoKSkgeworICAgIGZvciAoVGV4dEl0ZXJhdG9y
IGl0ZXJhdG9yKHJhbmdlKTsgIWl0ZXJhdG9yLmF0RW5kKCk7IGl0ZXJhdG9yLmFkdmFuY2UoKSkg
ewogICAgICAgICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KGl0ZXJhdG9yLm5vZGUoKSkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaAppbmRleCA3NDVi
NzYzODFlZTIwNzM4MDVkZTdmZDQzMjFiOTQxNDE5MzkzZjk1Li5kZWQ2M2RkM2UyN2JiMWEwOWEx
MTlkZWI2NGM0YzdkNzkzMGFmYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaApAQCAtMzcs
NiArMzcsNyBAQCBjbGFzcyBIVE1MRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBj
bGFzcyBIVE1MU3BhbkVsZW1lbnQ7CiBjbGFzcyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDsK
K2NsYXNzIFJhbmdlOwogY2xhc3MgUmVuZGVyQmxvY2s7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247
CiBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IDdkZjRhYWFhNDBjODk2ZDgzNjQ3MjQ1MzIwYzYyNWJhMDdmNDBkNDEuLmZkOTIwYTk0NWViNjgy
NDM1MTRkMDYwOWYwMzdiMjBkNTBjNTkyMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTMzMTIsOCArMzMxMiwxMCBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3RlZFRleHRGb3JEYXRh
VHJhbnNmZXIoKSBjb25zdAogU3RyaW5nIEVkaXRvcjo6c2VsZWN0ZWRUZXh0KFRleHRJdGVyYXRv
ckJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAogewogICAgIC8vIFdlIHJlbW92ZSAnXDAnIGNoYXJh
Y3RlcnMgYmVjYXVzZSB0aGV5IGFyZSBub3QgdmlzaWJseSByZW5kZXJlZCB0byB0aGUgdXNlci4K
LSAgICBhdXRvJiBzZWxlY3Rpb24gPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwot
ICAgIHJldHVybiBwbGFpblRleHQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVjdGlvbi5lbmQoKSwg
YmVoYXZpb3IpLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXDAnLCAiIik7CisgICAgYXV0byByYW5nZSA9
IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpOworICAgIGlmICgh
cmFuZ2UpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIHJldHVybiBwbGFpblRl
eHQocmFuZ2UuZ2V0KCksIGJlaGF2aW9yKS5yZXBsYWNlV2l0aExpdGVyYWwoJ1wwJywgIiIpOwog
fQogCiBSZWZQdHI8VGV4dFBsYWNlaG9sZGVyRWxlbWVudD4gRWRpdG9yOjppbnNlcnRUZXh0UGxh
Y2Vob2xkZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcAppbmRleCBkYjI5YjliYjgwZWIxYTE1OTU1ZTIzNGE5YWRlOWU3OThkZDMwMGJj
Li5lODQ0MTJiMjc2ODM1NjZmMzAzYTZkMWI5MmU2N2YzMjEyZDhkMmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0zMjksNTEgKzMyOSwyOCBAQCB2b2lkIFRl
eHRJdGVyYXRvckNvcHlhYmxlVGV4dDo6YXBwZW5kVG9TdHJpbmdCdWlsZGVyKFN0cmluZ0J1aWxk
ZXImIGJ1aWxkZXIpIGNvbgogCiAvLyAtLS0tLS0tLQogCi0KLVRleHRJdGVyYXRvcjo6VGV4dEl0
ZXJhdG9yKFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2aW9y
IGJlaGF2aW9yKQotICAgIDogbV9iZWhhdmlvcihiZWhhdmlvcikKK3N0YXRpYyBOb2RlKiBmaXJz
dE5vZGUoY29uc3QgQm91bmRhcnlQb2ludCYgcG9pbnQpCiB7Ci0gICAgaWYgKHN0YXJ0LmlzTnVs
bCgpIHx8IGVuZC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVChjb21wYXJl
UG9zaXRpb25zKHN0YXJ0LCBlbmQpIDw9IDApOwotCi0gICAgUkVMRUFTRV9BU1NFUlQoYmVoYXZp
b3IgJiBUZXh0SXRlcmF0b3JUcmF2ZXJzZXNGbGF0VHJlZSB8fCBzdGFydC50cmVlU2NvcGUoKSA9
PSBlbmQudHJlZVNjb3BlKCkpOwotCi0gICAgc3RhcnQuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0
SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0KLSAgICAvLyBGSVhNRTogVXNlIFBvc2l0aW9u
IC8gUG9zaXRpb25JdGVyYXRvciBpbnN0ZWFkIHRvIGF2b2lkIG9mZnNldCBjb21wdXRhdGlvbi4K
LSAgICBtX3N0YXJ0Q29udGFpbmVyID0gc3RhcnQuY29udGFpbmVyTm9kZSgpOwotICAgIG1fc3Rh
cnRPZmZzZXQgPSBzdGFydC5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCk7Ci0KLSAgICBt
X2VuZENvbnRhaW5lciA9IGVuZC5jb250YWluZXJOb2RlKCk7Ci0gICAgbV9lbmRPZmZzZXQgPSBl
bmQuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpOwotCi0gICAgbV9ub2RlID0gc3RhcnQu
Zmlyc3ROb2RlKCkuZ2V0KCk7Ci0gICAgaWYgKCFtX25vZGUpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGluaXQoKTsKKyAgICBpZiAocG9pbnQuY29udGFpbmVyLT5pc0NoYXJhY3RlckRhdGFOb2Rl
KCkpCisgICAgICAgIHJldHVybiBwb2ludC5jb250YWluZXIucHRyKCk7CisgICAgaWYgKE5vZGUq
IGNoaWxkID0gcG9pbnQuY29udGFpbmVyLT50cmF2ZXJzZVRvQ2hpbGRBdChwb2ludC5vZmZzZXQp
KQorICAgICAgICByZXR1cm4gY2hpbGQ7CisgICAgaWYgKCFwb2ludC5vZmZzZXQpCisgICAgICAg
IHJldHVybiBwb2ludC5jb250YWluZXIucHRyKCk7CisgICAgcmV0dXJuIE5vZGVUcmF2ZXJzYWw6
Om5leHRTa2lwcGluZ0NoaWxkcmVuKHBvaW50LmNvbnRhaW5lcik7CiB9CiAKLVRleHRJdGVyYXRv
cjo6VGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3Ig
YmVoYXZpb3IpCitUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcihjb25zdCBTaW1wbGVSYW5nZSYg
cmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQogICAgIDogbV9iZWhhdmlvcihi
ZWhhdmlvcikKIHsKLSAgICBpZiAoIXJhbmdlKQotICAgICAgICByZXR1cm47CisgICAgcmFuZ2Uu
c3RhcnQuZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsK
IAotICAgIHJhbmdlLT5vd25lckRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKCk7CisgICAgbV9zdGFydENvbnRhaW5lciA9IHJhbmdlLnN0YXJ0LmNvbnRhaW5l
ci5wdHIoKTsKKyAgICBtX3N0YXJ0T2Zmc2V0ID0gcmFuZ2Uuc3RhcnQub2Zmc2V0OworICAgIG1f
ZW5kQ29udGFpbmVyID0gcmFuZ2UuZW5kLmNvbnRhaW5lci5wdHIoKTsKKyAgICBtX2VuZE9mZnNl
dCA9IHJhbmdlLmVuZC5vZmZzZXQ7CiAKLSAgICBtX3N0YXJ0Q29udGFpbmVyID0gJnJhbmdlLT5z
dGFydENvbnRhaW5lcigpOwotCi0gICAgLy8gQ2FsbGVycyBzaG91bGQgYmUgaGFuZGluZyB1cyB3
ZWxsLWZvcm1lZCByYW5nZXMuIElmIHdlIGRpc2NvdmVyIHRoYXQgdGhpcyBpc24ndAotICAgIC8v
IHRoZSBjYXNlLCB3ZSBjb3VsZCBjb25zaWRlciBjaGFuZ2luZyB0aGlzIGFzc2VydGlvbiB0byBh
biBlYXJseSByZXR1cm4uCi0gICAgQVNTRVJUKHJhbmdlLT5ib3VuZGFyeVBvaW50c1ZhbGlkKCkp
OwotCi0gICAgbV9zdGFydE9mZnNldCA9IHJhbmdlLT5zdGFydE9mZnNldCgpOwotICAgIG1fZW5k
Q29udGFpbmVyID0gJnJhbmdlLT5lbmRDb250YWluZXIoKTsKLSAgICBtX2VuZE9mZnNldCA9IHJh
bmdlLT5lbmRPZmZzZXQoKTsKLQotICAgIG1fbm9kZSA9IHJhbmdlLT5maXJzdE5vZGUoKTsKKyAg
ICBtX25vZGUgPSBmaXJzdE5vZGUocmFuZ2Uuc3RhcnQpOwogICAgIGlmICghbV9ub2RlKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTExNDAsMjMgKzExMTcsMjMgQEAgTm9kZSogVGV4dEl0ZXJhdG9y
Ojpub2RlKCkgY29uc3QKIAogLy8gLS0tLS0tLS0KIAotU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJ
dGVyYXRvcjo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSYgcmFu
Z2UpCitTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpTaW1wbGlmaWVkQmFja3dhcmRz
VGV4dEl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKLSAgICByYW5nZS5vd25l
ckRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAg
cmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMoKTsKIAotICAgIE5vZGUqIHN0YXJ0Tm9kZSA9ICZyYW5nZS5zdGFydENvbnRhaW5lcigpOwot
ICAgIE5vZGUqIGVuZE5vZGUgPSAmcmFuZ2UuZW5kQ29udGFpbmVyKCk7Ci0gICAgaW50IHN0YXJ0
T2Zmc2V0ID0gcmFuZ2Uuc3RhcnRPZmZzZXQoKTsKLSAgICBpbnQgZW5kT2Zmc2V0ID0gcmFuZ2Uu
ZW5kT2Zmc2V0KCk7CisgICAgTm9kZSogc3RhcnROb2RlID0gcmFuZ2Uuc3RhcnQuY29udGFpbmVy
LnB0cigpOworICAgIE5vZGUqIGVuZE5vZGUgPSByYW5nZS5lbmQuY29udGFpbmVyLnB0cigpOwor
ICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gcmFuZ2Uuc3RhcnQub2Zmc2V0OworICAgIHVuc2ln
bmVkIGVuZE9mZnNldCA9IHJhbmdlLmVuZC5vZmZzZXQ7CiAKICAgICBpZiAoIXN0YXJ0Tm9kZS0+
aXNDaGFyYWN0ZXJEYXRhTm9kZSgpKSB7Ci0gICAgICAgIGlmIChzdGFydE9mZnNldCA+PSAwICYm
IHN0YXJ0T2Zmc2V0IDwgc3RhdGljX2Nhc3Q8aW50PihzdGFydE5vZGUtPmNvdW50Q2hpbGROb2Rl
cygpKSkgeworICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPCBzdGFydE5vZGUtPmNvdW50Q2hpbGRO
b2RlcygpKSB7CiAgICAgICAgICAgICBzdGFydE5vZGUgPSBzdGFydE5vZGUtPnRyYXZlcnNlVG9D
aGlsZEF0KHN0YXJ0T2Zmc2V0KTsKICAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gMDsKICAgICAg
ICAgfQogICAgIH0KICAgICBpZiAoIWVuZE5vZGUtPmlzQ2hhcmFjdGVyRGF0YU5vZGUoKSkgewot
ICAgICAgICBpZiAoZW5kT2Zmc2V0ID4gMCAmJiBlbmRPZmZzZXQgPD0gc3RhdGljX2Nhc3Q8aW50
PihlbmROb2RlLT5jb3VudENoaWxkTm9kZXMoKSkpIHsKKyAgICAgICAgaWYgKGVuZE9mZnNldCA+
IDAgJiYgZW5kT2Zmc2V0IDw9IGVuZE5vZGUtPmNvdW50Q2hpbGROb2RlcygpKSB7CiAgICAgICAg
ICAgICBlbmROb2RlID0gZW5kTm9kZS0+dHJhdmVyc2VUb0NoaWxkQXQoZW5kT2Zmc2V0IC0gMSk7
CiAgICAgICAgICAgICBlbmRPZmZzZXQgPSBsYXN0T2Zmc2V0SW5Ob2RlKGVuZE5vZGUpOwogICAg
ICAgICB9CkBAIC0xMzkxLDE1ICsxMzY4LDggQEAgU2ltcGxlUmFuZ2UgU2ltcGxpZmllZEJhY2t3
YXJkc1RleHRJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAogCiAvLyAtLS0tLS0tLQogCi1DaGFyYWN0
ZXJJdGVyYXRvcjo6Q2hhcmFjdGVySXRlcmF0b3IoY29uc3QgUmFuZ2UmIHJhbmdlLCBUZXh0SXRl
cmF0b3JCZWhhdmlvciBiZWhhdmlvcikKLSAgICA6IG1fdW5kZXJseWluZ0l0ZXJhdG9yKCZyYW5n
ZSwgYmVoYXZpb3IpCi17Ci0gICAgd2hpbGUgKCFhdEVuZCgpICYmICFtX3VuZGVybHlpbmdJdGVy
YXRvci50ZXh0KCkubGVuZ3RoKCkpCi0gICAgICAgIG1fdW5kZXJseWluZ0l0ZXJhdG9yLmFkdmFu
Y2UoKTsKLX0KLQotQ2hhcmFjdGVySXRlcmF0b3I6OkNoYXJhY3Rlckl0ZXJhdG9yKFBvc2l0aW9u
IHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQotICAg
IDogbV91bmRlcmx5aW5nSXRlcmF0b3Ioc3RhcnQsIGVuZCwgYmVoYXZpb3IpCitDaGFyYWN0ZXJJ
dGVyYXRvcjo6Q2hhcmFjdGVySXRlcmF0b3IoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0
SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikKKyAgICA6IG1fdW5kZXJseWluZ0l0ZXJhdG9yKHJh
bmdlLCBiZWhhdmlvcikKIHsKICAgICB3aGlsZSAoIWF0RW5kKCkgJiYgIW1fdW5kZXJseWluZ0l0
ZXJhdG9yLnRleHQoKS5sZW5ndGgoKSkKICAgICAgICAgbV91bmRlcmx5aW5nSXRlcmF0b3IuYWR2
YW5jZSgpOwpAQCAtMTQ4Myw3ICsxNDUzLDcgQEAgc3RhdGljIFJlZjxSYW5nZT4gY2hhcmFjdGVy
U3VicmFuZ2UoRG9jdW1lbnQmIGRvY3VtZW50LCBDaGFyYWN0ZXJJdGVyYXRvciYgaXQsIGkKICAg
ICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKFNpbXBsZVJhbmdlIHsgc3RhcnQsIGVuZCB9KTsKIH0K
IAotQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3I6OkJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9y
KGNvbnN0IFJhbmdlJiByYW5nZSkKK0JhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjpCYWNrd2Fy
ZHNDaGFyYWN0ZXJJdGVyYXRvcihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCiAgICAgOiBtX3Vu
ZGVybHlpbmdJdGVyYXRvcihyYW5nZSkKIHsKICAgICB3aGlsZSAoIWF0RW5kKCkgJiYgIW1fdW5k
ZXJseWluZ0l0ZXJhdG9yLnRleHQoKS5sZW5ndGgoKSkKQEAgLTE1NDYsOCArMTUxNiw4IEBAIHZv
aWQgQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3I6OmFkdmFuY2UoaW50IGNvdW50KQogCiAvLyAt
LS0tLS0tLQogCi1Xb3JkQXdhcmVJdGVyYXRvcjo6V29yZEF3YXJlSXRlcmF0b3IoY29uc3QgUmFu
Z2UmIHJhbmdlKQotICAgIDogbV91bmRlcmx5aW5nSXRlcmF0b3IoJnJhbmdlKQorV29yZEF3YXJl
SXRlcmF0b3I6OldvcmRBd2FyZUl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKKyAg
ICA6IG1fdW5kZXJseWluZ0l0ZXJhdG9yKHJhbmdlKQogewogICAgIGFkdmFuY2UoKTsgLy8gZ2V0
IGluIHBvc2l0aW9uIG92ZXIgdGhlIGZpcnN0IGNodW5rIG9mIHRleHQKIH0KQEAgLTIzNzUsOCAr
MjM0NSwxMCBAQCBzaXplX3QgU2VhcmNoQnVmZmVyOjpsZW5ndGgoKSBjb25zdAogCiBpbnQgVGV4
dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChjb25zdCBSYW5nZSogcmFuZ2UsIGJvb2wgZm9yU2VsZWN0
aW9uUHJlc2VydmF0aW9uKQogeworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiAwOwog
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7Ci0gICAgZm9yIChUZXh0SXRlcmF0b3IgaXQocmFuZ2Us
IGZvclNlbGVjdGlvblByZXNlcnZhdGlvbiA/IFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0Jl
dHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zIDogVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsg
IWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdCgqcmFu
Z2UsIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbiA/IFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVy
c0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zIDogVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9y
KTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkKICAgICAgICAgbGVuZ3RoICs9IGl0LnRleHQo
KS5sZW5ndGgoKTsKICAgICByZXR1cm4gbGVuZ3RoOwogfQpAQCAtMjQwNSw3ICsyMzc3LDcgQEAg
UmVmUHRyPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKENv
bnRhaW5lck5vZGUqIHNjb3BlLCBpbnQKIAogICAgIFJlZjxSYW5nZT4gdGV4dFJ1blJhbmdlID0g
cmFuZ2VPZkNvbnRlbnRzKCpzY29wZSk7CiAKLSAgICBUZXh0SXRlcmF0b3IgaXQodGV4dFJ1blJh
bmdlLnB0cigpLCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24gPyBUZXh0SXRlcmF0b3JFbWl0c0No
YXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyA6IFRleHRJdGVyYXRvckRlZmF1bHRC
ZWhhdmlvcik7CisgICAgVGV4dEl0ZXJhdG9yIGl0KHRleHRSdW5SYW5nZSwgZm9yU2VsZWN0aW9u
UHJlc2VydmF0aW9uID8gVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2li
bGVQb3NpdGlvbnMgOiBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogICAgIAogICAgIC8v
IEZJWE1FOiB0aGUgYXRFbmQoKSBjaGVjayBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCB3b3JrYXJv
dW5kIGZvciA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI4OT4uCiAg
ICAgaWYgKCFyYW5nZUxvY2F0aW9uICYmICFyYW5nZUxlbmd0aCAmJiBpdC5hdEVuZCgpKSB7CkBA
IC0yNTA2LDIxICsyNDc4LDE5IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExl
bmd0aEZyb21SYW5nZShOb2RlKiBzY29wZSwgY29uc3QgUmFuZ2UqIHJhbmdlCiAKIGJvb2wgaGFz
QW55UGxhaW5UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZp
b3IgYmVoYXZpb3IpCiB7Ci0gICAgZm9yIChUZXh0SXRlcmF0b3IgaXRlcmF0b3IgeyBjcmVhdGVM
aXZlUmFuZ2UocmFuZ2UpLnB0cigpLCBiZWhhdmlvciB9OyAhaXRlcmF0b3IuYXRFbmQoKTsgaXRl
cmF0b3IuYWR2YW5jZSgpKSB7CisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXRlcmF0b3IgeyByYW5n
ZSwgYmVoYXZpb3IgfTsgIWl0ZXJhdG9yLmF0RW5kKCk7IGl0ZXJhdG9yLmFkdmFuY2UoKSkgewog
ICAgICAgICBpZiAoIWl0ZXJhdG9yLnRleHQoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJpbmcgcGxhaW5UZXh0
KFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2aW9yIGRlZmF1
bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcpCitTdHJpbmcgcGxhaW5UZXh0KGNvbnN0
IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgZGVmYXVsdEJlaGF2aW9y
LCBib29sIGlzRGlzcGxheVN0cmluZykKIHsKICAgICAvLyBUaGUgaW5pdGlhbCBidWZmZXIgc2l6
ZSBjYW4gYmUgY3JpdGljYWwgZm9yIHBlcmZvcm1hbmNlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODExOTIKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5pdGlh
bENhcGFjaXR5ID0gMSA8PCAxNTsKIAotICAgIGlmICghc3RhcnQuZG9jdW1lbnQoKSkKLSAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZigqc3RhcnQuZG9jdW1l
bnQoKSk7CisgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYocmFuZ2Uuc3RhcnQuZG9jdW1lbnQo
KSk7CiAKICAgICB1bnNpZ25lZCBidWZmZXJMZW5ndGggPSAwOwogICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKQEAgLTI1MjksNyArMjQ5OSw3IEBAIFN0cmluZyBwbGFpblRleHQoUG9zaXRpb24g
c3RhcnQsIFBvc2l0aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgZGVmYXVsdEJlaGF2CiAg
ICAgaWYgKCFpc0Rpc3BsYXlTdHJpbmcpCiAgICAgICAgIGJlaGF2aW9yID0gc3RhdGljX2Nhc3Q8
VGV4dEl0ZXJhdG9yQmVoYXZpb3I+KGJlaGF2aW9yIHwgVGV4dEl0ZXJhdG9yRW1pdHNUZXh0c1dp
dGhvdXRUcmFuc2NvZGluZyk7CiAKLSAgICBmb3IgKFRleHRJdGVyYXRvciBpdChzdGFydCwgZW5k
LCBiZWhhdmlvcik7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKKyAgICBmb3IgKFRleHRJ
dGVyYXRvciBpdChyYW5nZSwgYmVoYXZpb3IpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7
CiAgICAgICAgIGl0LmFwcGVuZFRleHRUb1N0cmluZ0J1aWxkZXIoYnVpbGRlcik7CiAgICAgICAg
IGJ1ZmZlckxlbmd0aCArPSBpdC50ZXh0KCkubGVuZ3RoKCk7CiAgICAgfQpAQCAtMjU0NSwxNiAr
MjUxNSwxMSBAQCBTdHJpbmcgcGxhaW5UZXh0KFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQs
IFRleHRJdGVyYXRvckJlaGF2aW9yIGRlZmF1bHRCZWhhdgogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLVN0cmluZyBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoUG9zaXRpb24gc3RhcnQs
IFBvc2l0aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgZGVmYXVsdEJlaGF2aW9yLCBib29s
IGlzRGlzcGxheVN0cmluZykKLXsKLSAgICByZXR1cm4gcGxhaW5UZXh0KHN0YXJ0LCBlbmQsIGRl
ZmF1bHRCZWhhdmlvciwgaXNEaXNwbGF5U3RyaW5nKS5yZXBsYWNlKG5vQnJlYWtTcGFjZSwgJyAn
KTsKLX0KLQogU3RyaW5nIHBsYWluVGV4dChjb25zdCBSYW5nZSogcmFuZ2UsIFRleHRJdGVyYXRv
ckJlaGF2aW9yIGRlZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcpCiB7CiAgICAg
aWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgcmV0dXJuIHBs
YWluVGV4dChyYW5nZS0+c3RhcnRQb3NpdGlvbigpLCByYW5nZS0+ZW5kUG9zaXRpb24oKSwgZGVm
YXVsdEJlaGF2aW9yLCBpc0Rpc3BsYXlTdHJpbmcpOworICAgIHJldHVybiBwbGFpblRleHQoKnJh
bmdlLCBkZWZhdWx0QmVoYXZpb3IsIGlzRGlzcGxheVN0cmluZyk7CiB9CiAKIFN0cmluZyBwbGFp
blRleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvckZvclRlc3RpbmcoY29uc3QgU2ltcGxlUmFu
Z2UmIHJhbmdlKQpAQCAtMjU2NSw3ICsyNTMwLDcgQEAgU3RyaW5nIHBsYWluVGV4dFVzaW5nQmFj
a3dhcmRzVGV4dEl0ZXJhdG9yRm9yVGVzdGluZyhjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotU3RyaW5nIHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtT
cGFjZShjb25zdCBSYW5nZSogcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGRlZmF1bHRCZWhh
dmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcpCitTdHJpbmcgcGxhaW5UZXh0UmVwbGFjaW5nTm9C
cmVha1NwYWNlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3Ig
ZGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZykKIHsKICAgICByZXR1cm4gcGxh
aW5UZXh0KHJhbmdlLCBkZWZhdWx0QmVoYXZpb3IsIGlzRGlzcGxheVN0cmluZykucmVwbGFjZShu
b0JyZWFrU3BhY2UsICcgJyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApp
bmRleCBhNWQwZWExMmFiYWZhMjI1ODRiOWE4ZWIwNzM0NDM0ZjI1Y2U0NGJjLi5hNzBjNGRiYjVm
ZDA1NjljODE1MGRlMzVkNjYwMTU3YTJhYmZhMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgi
CiAjaW5jbHVkZSAiTGluZUxheW91dFRyYXZlcnNhbC5oIgotI2luY2x1ZGUgIlNpbXBsZVJhbmdl
LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaCIKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgpAQCAtMzgsMTEgKzM3LDEx
IEBAIGNsYXNzIFJhbmdlOwogY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNzIFJlbmRlclRleHRGcmFn
bWVudDsKIAotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBsYWluVGV4dChQb3NpdGlvbiBzdGFydCwg
UG9zaXRpb24gZW5kLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRC
ZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcgPSBmYWxzZSk7Ci1XRUJDT1JFX0VYUE9SVCBT
dHJpbmcgcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKFBvc2l0aW9uIHN0YXJ0LCBQb3Np
dGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2
aW9yLCBib29sIGlzRGlzcGxheVN0cmluZyA9IGZhbHNlKTsKK3N0cnVjdCBTaW1wbGVSYW5nZTsK
IAogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBsYWluVGV4dChjb25zdCBSYW5nZSosIFRleHRJdGVy
YXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxh
eVN0cmluZyA9IGZhbHNlKTsKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBwbGFpblRleHRSZXBsYWNp
bmdOb0JyZWFrU3BhY2UoY29uc3QgUmFuZ2UqLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJ
dGVyYXRvckRlZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcgPSBmYWxzZSk7CitX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgcGxhaW5UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiwgVGV4dEl0
ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNw
bGF5U3RyaW5nID0gZmFsc2UpOworV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBsYWluVGV4dFJlcGxh
Y2luZ05vQnJlYWtTcGFjZShjb25zdCBTaW1wbGVSYW5nZSYsIFRleHRJdGVyYXRvckJlaGF2aW9y
ID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZyA9IGZh
bHNlKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwbGFpblRleHRVc2luZ0JhY2t3YXJkc1RleHRJ
dGVyYXRvckZvclRlc3RpbmcoY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAogU2ltcGxlUmFuZ2UgZmlu
ZFBsYWluVGV4dChjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25z
KTsKQEAgLTkxLDggKzkwLDcgQEAgcHJpdmF0ZToKIGNsYXNzIFRleHRJdGVyYXRvciB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgVGV4
dEl0ZXJhdG9yKFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2
aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9
IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgVGV4dEl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3Ig
PSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5UZXh0
SXRlcmF0b3IoKTsKIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9wb3NpdGlv
bk5vZGU7IH0KQEAgLTE3Nyw3ICsxNzUsNyBAQCBwcml2YXRlOgogLy8gY2h1bmtzIHNvIGFzIHRv
IG9wdGltaXplIGZvciBwZXJmb3JtYW5jZSBvZiB0aGUgaXRlcmF0aW9uLgogY2xhc3MgU2ltcGxp
ZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU2ltcGxp
ZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSYpOworICAgIGV4cGxpY2l0IFNp
bXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAogICAg
IGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9wb3NpdGlvbk5vZGU7IH0KICAgICB2b2lk
IGFkdmFuY2UoKTsKQEAgLTIzMiw4ICsyMzAsNyBAQCBwcml2YXRlOgogLy8gY2hhcmFjdGVyIGF0
IGEgdGltZSwgb3IgZmFzdGVyLCBhcyBuZWVkZWQuIFVzZWZ1bCBmb3Igc2VhcmNoaW5nLgogY2xh
c3MgQ2hhcmFjdGVySXRlcmF0b3IgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IENoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3Ig
PSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IENoYXJhY3Rlckl0ZXJhdG9yKFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJ
dGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBDaGFyYWN0ZXJJdGVyYXRvcihjb25zdCBTaW1wbGVSYW5nZSYs
IFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKICAg
ICAKICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5nSXRlcmF0b3Iu
YXRFbmQoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWR2YW5jZShpbnQgbnVtQ2hhcmFj
dGVycyk7CkBAIC0yNTQsNyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICAKIGNsYXNzIEJhY2t3YXJk
c0NoYXJhY3Rlckl0ZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBCYWNrd2FyZHNDaGFy
YWN0ZXJJdGVyYXRvcihjb25zdCBSYW5nZSYpOworICAgIGV4cGxpY2l0IEJhY2t3YXJkc0NoYXJh
Y3Rlckl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJik7CiAKICAgICBib29sIGF0RW5kKCkgY29u
c3QgeyByZXR1cm4gbV91bmRlcmx5aW5nSXRlcmF0b3IuYXRFbmQoKTsgfQogICAgIHZvaWQgYWR2
YW5jZShpbnQgbnVtQ2hhcmFjdGVycyk7CkBAIC0yNzMsNyArMjcwLDcgQEAgcHJpdmF0ZToKIC8v
IHRoZXkgbmV2ZXIgc3BsaXQgdXAgYSB3b3JkLiBUaGlzIGlzIHVzZWZ1bCBmb3Igc3BlbGwgY2hl
Y2tpbmcgYW5kIHBlcmhhcHMgb25lIGRheSBmb3Igc2VhcmNoaW5nIGFzIHdlbGwuCiBjbGFzcyBX
b3JkQXdhcmVJdGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV29yZEF3YXJlSXRlcmF0
b3IoY29uc3QgUmFuZ2UmKTsKKyAgICBleHBsaWNpdCBXb3JkQXdhcmVJdGVyYXRvcihjb25zdCBT
aW1wbGVSYW5nZSYpOwogCiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuICFtX2RpZExv
b2tBaGVhZCAmJiBtX3VuZGVybHlpbmdJdGVyYXRvci5hdEVuZCgpOyB9CiAgICAgdm9pZCBhZHZh
bmNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRp
b25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXIuY3BwCmluZGV4IGJiMzU4YTllM2JmZDQ0ZGRiNzkwMjE4MzU4OWZlNGQ5N2Ez
YTcyYzMuLjAwOWRhNDkxNzAzZGVjNTAyNjE0OWU5ZmFkOWE4ZTgzMTJlZThkMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIu
Y3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
c3RhcnRPYnNlcnZpbmdQYXJhZ3JhcGhzKE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmEKIGNsYXNzIFBh
cmFncmFwaENvbnRlbnRJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgUGFyYWdyYXBoQ29udGVudEl0
ZXJhdG9yKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKLSAgICAg
ICAgOiBtX2l0ZXJhdG9yKHN0YXJ0LCBlbmQpCisgICAgICAgIDogbV9pdGVyYXRvcih7IG1ha2VC
b3VuZGFyeVBvaW50KHN0YXJ0KSwgbWFrZUJvdW5kYXJ5UG9pbnQoZW5kKSB9KQogICAgICAgICAs
IG1faXRlcmF0b3JOb2RlKG1faXRlcmF0b3IuYXRFbmQoKSA/IG51bGxwdHIgOiBjcmVhdGVMaXZl
UmFuZ2UobV9pdGVyYXRvci5yYW5nZSgpKS0+Zmlyc3ROb2RlKCkpCiAgICAgICAgICwgbV9jdXJy
ZW50Tm9kZUZvckZpbmRpbmdJbnZpc2libGVDb250ZW50KHN0YXJ0LmZpcnN0Tm9kZSgpKQogICAg
ICAgICAsIG1fcGFzdEVuZE5vZGUoZW5kLmZpcnN0Tm9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4IDc1MjJiMTA5YjQwOWQyYmZkNTU3NzY2NzNmMGE5M2U4
NDM3NGZjOWUuLjkxMDlhYjk1NDkwNjlmMzYwNGYwOTg2YWM5OGU4Yjk5NDQ5YTE0YWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKQEAgLTQ4OSw3ICs0ODksNyBAQCBz
dGF0aWMgdm9pZCBhcHBlbmRSZXBlYXRlZENoYXJhY3RlcihWZWN0b3I8VUNoYXIsIDEwMjQ+JiBi
dWZmZXIsIFVDaGFyIGNoYXJhY3RlcgogdW5zaWduZWQgc3VmZml4TGVuZ3RoRm9yUmFuZ2UoY29u
c3QgUmFuZ2UmIGZvcndhcmRzU2NhblJhbmdlLCBWZWN0b3I8VUNoYXIsIDEwMjQ+JiBzdHJpbmcp
CiB7CiAgICAgdW5zaWduZWQgc3VmZml4TGVuZ3RoID0gMDsKLSAgICBUZXh0SXRlcmF0b3IgZm9y
d2FyZHNJdGVyYXRvcigmZm9yd2FyZHNTY2FuUmFuZ2UpOworICAgIFRleHRJdGVyYXRvciBmb3J3
YXJkc0l0ZXJhdG9yKGZvcndhcmRzU2NhblJhbmdlKTsKICAgICB3aGlsZSAoIWZvcndhcmRzSXRl
cmF0b3IuYXRFbmQoKSkgewogICAgICAgICBTdHJpbmdWaWV3IHRleHQgPSBmb3J3YXJkc0l0ZXJh
dG9yLnRleHQoKTsKICAgICAgICAgdW5zaWduZWQgaSA9IGVuZE9mRmlyc3RXb3JkQm91bmRhcnlD
b250ZXh0KHRleHQpOwpAQCAtNjA5LDcgKzYwOSw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24g
cHJldmlvdXNCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNo
CiAgICAgICAgIHJlc3VsdCA9IGZvcndhcmRzU2NhblJhbmdlLT5zZXRTdGFydChzdGFydCk7CiAg
ICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4geyB9
OwotICAgICAgICBmb3IgKFRleHRJdGVyYXRvciBmb3J3YXJkc0l0ZXJhdG9yKGZvcndhcmRzU2Nh
blJhbmdlLnB0cigpKTsgIWZvcndhcmRzSXRlcmF0b3IuYXRFbmQoKTsgZm9yd2FyZHNJdGVyYXRv
ci5hZHZhbmNlKCkpCisgICAgICAgIGZvciAoVGV4dEl0ZXJhdG9yIGZvcndhcmRzSXRlcmF0b3Io
Zm9yd2FyZHNTY2FuUmFuZ2UpOyAhZm9yd2FyZHNJdGVyYXRvci5hdEVuZCgpOyBmb3J3YXJkc0l0
ZXJhdG9yLmFkdmFuY2UoKSkKICAgICAgICAgICAgIGFwcGVuZChzdHJpbmcsIGZvcndhcmRzSXRl
cmF0b3IudGV4dCgpKTsKICAgICAgICAgc3VmZml4TGVuZ3RoID0gc3RyaW5nLnNpemUoKTsKICAg
ICB9IGVsc2UgaWYgKHJlcXVpcmVzQ29udGV4dEZvcldvcmRCb3VuZGFyeShjLmNoYXJhY3RlckJl
Zm9yZSgpKSkgewpAQCAtNjc0LDcgKzY3NCw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4
dEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgQm91bmRhcnlTZWFyY2hGdW5jCiAg
ICAgc2VhcmNoUmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cygqYm91bmRhcnkpOwogICAgIGlmIChz
dGFydC5kZXByZWNhdGVkTm9kZSgpKQogICAgICAgICBzZWFyY2hSYW5nZS0+c2V0U3RhcnQoKnN0
YXJ0LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwot
ICAgIFRleHRJdGVyYXRvciBpdChzZWFyY2hSYW5nZS5wdHIoKSwgVGV4dEl0ZXJhdG9yRW1pdHND
aGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpOworICAgIFRleHRJdGVyYXRvciBp
dChzZWFyY2hSYW5nZSwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2li
bGVQb3NpdGlvbnMpOwogICAgIHVuc2lnbmVkIG5leHQgPSBmb3J3YXJkU2VhcmNoRm9yQm91bmRh
cnlXaXRoVGV4dEl0ZXJhdG9yKGl0LCBzdHJpbmcsIHByZWZpeExlbmd0aCwgc2VhcmNoRnVuY3Rp
b24pOwogICAgIAogICAgIGlmIChpdC5hdEVuZCgpICYmIG5leHQgPT0gc3RyaW5nLnNpemUoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCBj
NjFlMzU2NTgyN2RiNGVlZWZmYTc2NzA4ZDZhMDk0MTk0M2U4MGVhLi4wZWY2Y2ZiNjJkNTI5ZjAw
ZTdlNjA3NzYwYzY0MTBkZTc4MTMxMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBAIC0xNjIsNiArMTYyLDcgQEAgUmV0YWluUHRyPEREQWN0
aW9uQ29udGV4dD4gRGF0YURldGVjdGlvbjo6ZGV0ZWN0SXRlbUFyb3VuZEhpdFRlc3RSZXN1bHQo
Y29uc3QgSGkKIAogICAgIHJldHVybiBkZXRlY3RJdGVtQXRQb3NpdGlvbldpdGhSYW5nZShwb3Np
dGlvbiwgY29udGV4dFJhbmdlLCBkZXRlY3RlZERhdGFCb3VuZGluZ0JveCwgZGV0ZWN0ZWREYXRh
UmFuZ2UpOwogfQorCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKQEAgLTM0NSw3ICszNDYsNyBAQCBzdGF0aWMgU3RyaW5nIGRhdGFEZXRlY3RvclN0
cmluZ0ZvclBhdGgoTlNJbmRleFBhdGggKnBhdGgpCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBi
dWlsZFF1ZXJ5KEREU2NhblF1ZXJ5UmVmIHNjYW5RdWVyeSwgUmFuZ2UqIGNvbnRleHRSYW5nZSkK
K3N0YXRpYyB2b2lkIGJ1aWxkUXVlcnkoRERTY2FuUXVlcnlSZWYgc2NhblF1ZXJ5LCBjb25zdCBT
aW1wbGVSYW5nZSYgY29udGV4dFJhbmdlKQogewogICAgIC8vIE9uY2Ugd2UncmUgb3ZlciB0aGlz
IG51bWJlciBvZiBmcmFnbWVudHMsIHN0b3AgYXQgdGhlIGZpcnN0IGhhcmQgYnJlYWsuCiAgICAg
Y29uc3QgQ0ZJbmRleCBtYXhGcmFnbWVudFdpdGhIYXJkQnJlYWsgPSAxMDAwOwpAQCAtNDQ0LDkg
KzQ0NSwxMiBAQCB2b2lkIERhdGFEZXRlY3Rpb246OnJlbW92ZURhdGFEZXRlY3RlZExpbmtzSW5E
b2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAKIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRl
dGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURldGVj
dG9yVHlwZXMgdHlwZXMsIE5TRGljdGlvbmFyeSAqY29udGV4dCkKIHsKKyAgICBpZiAoIWNvbnRl
eHRSYW5nZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogICAgIFJldGFpblB0cjxERFNjYW5uZXJS
ZWY+IHNjYW5uZXIgPSBhZG9wdENGKHNvZnRMaW5rX0RhdGFEZXRlY3RvcnNDb3JlX0REU2Nhbm5l
ckNyZWF0ZShERFNjYW5uZXJUeXBlU3RhbmRhcmQsIDAsIG51bGxwdHIpKTsKICAgICBSZXRhaW5Q
dHI8RERTY2FuUXVlcnlSZWY+IHNjYW5RdWVyeSA9IGFkb3B0Q0Yoc29mdExpbmtfRGF0YURldGVj
dG9yc0NvcmVfRERTY2FuUXVlcnlDcmVhdGUoTlVMTCkpOwotICAgIGJ1aWxkUXVlcnkoc2NhblF1
ZXJ5LmdldCgpLCBjb250ZXh0UmFuZ2UuZ2V0KCkpOworICAgIGJ1aWxkUXVlcnkoc2NhblF1ZXJ5
LmdldCgpLCAqY29udGV4dFJhbmdlKTsKICAgICAKICAgICBpZiAodHlwZXMgJiBEYXRhRGV0ZWN0
b3JUeXBlTG9va3VwU3VnZ2VzdGlvbikKICAgICAgICAgc29mdExpbmtfRGF0YURldGVjdG9yc0Nv
cmVfRERTY2FubmVyRW5hYmxlT3B0aW9uYWxTb3VyY2Uoc2Nhbm5lci5nZXQoKSwgRERTY2FubmVy
U291cmNlU3BvdGxpZ2h0LCB0cnVlKTsKQEAgLTQ4Nyw3ICs0OTEsNyBAQCBOU0FycmF5ICpEYXRh
RGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFu
Z2UsIERhdGFEZQogICAgIH0KIAogICAgIFZlY3RvcjxWZWN0b3I8UmVmUHRyPFJhbmdlPj4+IGFs
bFJlc3VsdFJhbmdlczsKLSAgICBUZXh0SXRlcmF0b3IgaXRlcmF0b3IoY29udGV4dFJhbmdlLmdl
dCgpKTsKKyAgICBUZXh0SXRlcmF0b3IgaXRlcmF0b3IoKmNvbnRleHRSYW5nZSk7CiAgICAgQ0ZJ
bmRleCBpdGVyYXRvckNvdW50ID0gMDsKIAogICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgYXJy
YXkgb2YgdGhlIGV4cGFuZGVkIHJlc3VsdHMgdG8gY3JlYXRlIGEgdmVjdG9yIG9mIFJhbmdlIG9i
amVjdHMgdGhhdCBpbmRpY2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9E
aWN0aW9uYXJ5TG9va3VwLm1tCmluZGV4IGQzNTUzOWE5ZGZkOGQ0N2VlNGUwMTE3MGQ1YjI4Y2Yx
NTEwM2VkNzIuLjg3OTcyMjAyODQ2OGYwM2UwMmVhZTU5YjU1YTI5YTIzZGVjZTkyZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0KQEAg
LTMzNyw3ICszMzcsOSBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAq
PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdAogICAgICAgICBhdXRvIHJh
bmdlVG9TZWxlY3Rpb25FbmQgPSBtYWtlUmFuZ2UocGFyYWdyYXBoU3RhcnQsIHNlbGVjdGlvbkVu
ZCk7CiAgICAgICAgIAogICAgICAgICBmdWxsQ2hhcmFjdGVyUmFuZ2UgPSBtYWtlUmFuZ2UocGFy
YWdyYXBoU3RhcnQsIHBhcmFncmFwaEVuZCk7Ci0gICAgICAgIAorICAgICAgICBpZiAoIWZ1bGxD
aGFyYWN0ZXJSYW5nZSkKKyAgICAgICAgICAgIHJldHVybiB7IG51bGxwdHIsIG5pbCB9OworCiAg
ICAgICAgIHNlbGVjdGlvblJhbmdlID0gTlNNYWtlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChyYW5nZVRvU2VsZWN0aW9uU3RhcnQuZ2V0KCkpLCBUZXh0SXRlcmF0b3I6OnJhbmdlTGVu
Z3RoKG1ha2VSYW5nZShzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKS5nZXQoKSkpOwogICAg
ICAgICAKICAgICAgICAgaGl0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1ha2VS
YW5nZShwYXJhZ3JhcGhTdGFydCwgcG9zaXRpb24pLmdldCgpKTsKQEAgLTM1Nyw3ICszNTksNyBA
QCBzdGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqPiBEaWN0aW9uYXJ5TG9v
a3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdAogICAgIAogICAgIE5TUmFuZ2Ugc2VsZWN0ZWRSYW5n
ZSA9IFtnZXRSVlNlbGVjdGlvbkNsYXNzKCkgcmV2ZWFsUmFuZ2VBdEluZGV4OmhpdEluZGV4IHNl
bGVjdGVkUmFuZ2VzOkBbW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6c2VsZWN0aW9uUmFuZ2VdXSBz
aG91bGRVcGRhdGVTZWxlY3Rpb246bmlsXTsKICAgICAKLSAgICBTdHJpbmcgaXRlbVN0cmluZyA9
IHBsYWluVGV4dChmdWxsQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpOworICAgIFN0cmluZyBpdGVtU3Ry
aW5nID0gcGxhaW5UZXh0KCpmdWxsQ2hhcmFjdGVyUmFuZ2UpOwogICAgIFJldGFpblB0cjxSVkl0
ZW0+IGl0ZW0gPSBhZG9wdE5TKFthbGxvY1JWSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0
ZW1TdHJpbmcgc2VsZWN0ZWRSYW5nZTpzZWxlY3RlZFJhbmdlXSk7CiAgICAgTlNSYW5nZSBoaWdo
bGlnaHRSYW5nZSA9IGl0ZW0uZ2V0KCkuaGlnaGxpZ2h0UmFuZ2U7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCA0ZjdmYWEwZTFjYTkxZDgz
MmRlZTU3OWQ5M2FlZTNhYjFhOWUwYzIzLi45ZmYwNGIxYzg5MjgxMzA4Y2IxZTQwOTExYjVhOTdm
YjRmMjA5YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tCkBAIC0yMzk2LDcgKzIzOTYsNyBAQCBOU0F0dHJpYnV0ZWRTdHJpbmcgKmVkaXRpbmdB
dHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlKFJhbmdlJiByYW5nZSwgSW5jbHVkZUltYWdlcwogICAg
IE5TVUludGVnZXIgc3RyaW5nTGVuZ3RoID0gMDsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGlj
dGlvbmFyeT4gYXR0cnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dF0pOwogCi0gICAgZm9yIChUZXh0SXRlcmF0b3IgaXQoJnJhbmdlKTsgIWl0LmF0RW5kKCk7IGl0
LmFkdmFuY2UoKSkgeworICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHJhbmdlKTsgIWl0LmF0RW5k
KCk7IGl0LmFkdmFuY2UoKSkgewogICAgICAgICBTaW1wbGVSYW5nZSBjdXJyZW50VGV4dFJhbmdl
ID0gaXQucmFuZ2UoKTsKICAgICAgICAgTm9kZSYgc3RhcnRDb250YWluZXIgPSBjdXJyZW50VGV4
dFJhbmdlLnN0YXJ0LmNvbnRhaW5lcjsKICAgICAgICAgTm9kZSYgZW5kQ29udGFpbmVyID0gY3Vy
cmVudFRleHRSYW5nZS5lbmQuY29udGFpbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9UZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRv
ci5jcHAKaW5kZXggMmQyMTEwNGIzMjFlNjNjYjhjODU5Nzk1MjkyZjAyYjFmY2FmZWYyNS4uMzE3
NTEyNWQzYzBhMWU3N2ExNWIwNjgzNGNhZmU0MDU3MTUwMmVhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1RleHRJbmRpY2F0b3IuY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgc3RhdGljIGJvb2wgc3R5bGVD
b250YWluc0NvbXBsZXhCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHN0YXRp
YyBIYXNoU2V0PENvbG9yPiBlc3RpbWF0ZWRUZXh0Q29sb3JzRm9yUmFuZ2UoY29uc3QgUmFuZ2Um
IHJhbmdlKQogewogICAgIEhhc2hTZXQ8Q29sb3I+IGNvbG9yczsKLSAgICBmb3IgKFRleHRJdGVy
YXRvciBpdGVyYXRvcigmcmFuZ2UpOyAhaXRlcmF0b3IuYXRFbmQoKTsgaXRlcmF0b3IuYWR2YW5j
ZSgpKSB7CisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXRlcmF0b3IocmFuZ2UpOyAhaXRlcmF0b3Iu
YXRFbmQoKTsgaXRlcmF0b3IuYWR2YW5jZSgpKSB7CiAgICAgICAgIGF1dG8qIG5vZGUgPSBpdGVy
YXRvci5ub2RlKCk7CiAgICAgICAgIGlmICghaXM8VGV4dD4obm9kZSkgfHwgIWlzPFJlbmRlclRl
eHQ+KG5vZGUtPnJlbmRlcmVyKCkpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yOTksNyAr
Mjk5LDcgQEAgc3RhdGljIGJvb2wgY29udGFpbnNPbmx5V2hpdGVTcGFjZVRleHQoY29uc3QgUmFu
Z2UmIHJhbmdlKQogICAgICAgICBpZiAoIWlzPFJlbmRlclRleHQ+KG5vZGUtPnJlbmRlcmVyKCkp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICByZXR1cm4gcGxhaW5UZXh0
UmVwbGFjaW5nTm9CcmVha1NwYWNlKCZyYW5nZSkuc3RyaXBXaGl0ZVNwYWNlKCkuaXNFbXB0eSgp
OworICAgIHJldHVybiBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UpLnN0cmlw
V2hpdGVTcGFjZSgpLmlzRW1wdHkoKTsKIH0KIAogc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUluZGlj
YXRvcihUZXh0SW5kaWNhdG9yRGF0YSYgZGF0YSwgRnJhbWUmIGZyYW1lLCBjb25zdCBSYW5nZSYg
cmFuZ2UsIEZsb2F0U2l6ZSBtYXJnaW4sIGJvb2wgaW5kaWNhdGVzQ3VycmVudFNlbGVjdGlvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KaW5kZXggMzAwOTEzOGYyZGMwMjRlYzc4Mjcy
OTIwYWUxZTQwMjlmMGU4NzMwNy4uZWVkYjVmODcyMTRlNDY3Y2Q3ODY1ZTVmNzE1NDE3NjNiZWY1
ZDM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KQEAgLTYxLDYgKzYxLDcgQEAK
ICNpbXBvcnQgIlJlbmRlclZpZXcuaCIKICNpbXBvcnQgIlJlbmRlcmVkRG9jdW1lbnRNYXJrZXIu
aCIKICNpbXBvcnQgIlNoYWRvd1Jvb3QuaCIKKyNpbXBvcnQgIlNpbXBsZVJhbmdlLmgiCiAjaW1w
b3J0ICJUZXh0Qm91bmRhcmllcy5oIgogI2ltcG9ydCAiVGV4dEl0ZXJhdG9yLmgiCiAjaW1wb3J0
ICJWaXNpYmxlUG9zaXRpb24uaCIKQEAgLTc2MCw3ICs3NjEsNyBAQCBOU0FycmF5ICpGcmFtZTo6
aW50ZXJwcmV0YXRpb25zRm9yQ3VycmVudFJvb3QoKSBjb25zdAogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBhdXRvIHJhbmdlRm9yTWFya2VyID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQo
KSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQo
KSksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPmVuZE9mZnNldCgp
KSk7Ci0gICAgICAgICAgICBTdHJpbmcgdmlzaWJsZVRleHRGb3JNYXJrZXIgPSBwbGFpblRleHQo
cmFuZ2VGb3JNYXJrZXIucHRyKCkpOworICAgICAgICAgICAgU3RyaW5nIHZpc2libGVUZXh0Rm9y
TWFya2VyID0gcGxhaW5UZXh0KHJhbmdlRm9yTWFya2VyKTsKICAgICAgICAgICAgIHNpemVfdCBp
bnRlcnByZXRhdGlvbnNDb3VudEZvckN1cnJlbnRNYXJrZXIgPSBtYXJrZXItPmFsdGVybmF0aXZl
cygpLnNpemUoKSArIDE7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGludGVy
cHJldGF0aW9uc0NvdW50OyArK2kpIHsKICAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGV4
dCBmb3IgdGhlIGl0aCBpbnRlcnByZXRhdGlvbi4gSXQgd2lsbCBlaXRoZXIgYmUgdGhlIHZpc2li
bGUgdGV4dCwgb3Igb25lIG9mIGl0cwpAQCAtNzgxLDcgKzc4Miw3IEBAIE5TQXJyYXkgKkZyYW1l
OjppbnRlcnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAKICAgICAvLyBGaW5hbGx5
LCBhZGQgYW55IHRleHQgYWZ0ZXIgdGhlIGxhc3QgbWFya2VyLgogICAgIGF1dG8gYWZ0ZXJMYXN0
TWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBwcmVjZWRpbmdUZXh0U3Rh
cnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJvb3QsIHJvb3RDaGlsZENv
dW50KSk7Ci0gICAgU3RyaW5nIHRleHRBZnRlckxhc3RNYXJrZXIgPSBwbGFpblRleHQoYWZ0ZXJM
YXN0TWFya2VyUmFuZ2UucHRyKCkpOworICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0TWFya2VyID0g
cGxhaW5UZXh0KGFmdGVyTGFzdE1hcmtlclJhbmdlKTsKICAgICBpZiAoIXRleHRBZnRlckxhc3RN
YXJrZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgaW50ZXJwcmV0YXRpb24gOiBp
bnRlcnByZXRhdGlvbnMpCiAgICAgICAgICAgICBhcHBlbmQoaW50ZXJwcmV0YXRpb24sIHRleHRB
ZnRlckxhc3RNYXJrZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
Y3BwCmluZGV4IGMxNWM3NGQxMmZlNGM2YjgxMDRhOGY5YzUyZmJiNzE5N2JmMWYwNjEuLjg5NTJi
OTQzOGIxYTA0OWIyMjQ3OTNlOTMxOWVkY2Y1MWE0ZDE0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJT
VkdJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCisjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0
b3IuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlZpc2li
bGVVbml0cy5oIgpAQCAtMjAyLDggKzIwMywxMiBAQCBTdHJpbmcgSGl0VGVzdFJlc3VsdDo6c2Vs
ZWN0ZWRUZXh0KCkgY29uc3QKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKIAorICAgIGF1dG8gcmFuZ2UgPSBmcmFtZS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxp
emVkUmFuZ2UoKTsKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKKwogICAgIC8vIExvb2sgZm9yIGEgY2hhcmFjdGVyIHRoYXQncyBub3QganVzdCBhIHNlcGFy
YXRvci4KLSAgICBmb3IgKFRleHRJdGVyYXRvciBpdChmcmFtZS0+c2VsZWN0aW9uKCkudG9Ob3Jt
YWxpemVkUmFuZ2UoKS5nZXQoKSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKKyAgICBm
b3IgKFRleHRJdGVyYXRvciBpdCgqcmFuZ2UpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7
CiAgICAgICAgIGludCBsZW5ndGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7CiAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGlmICghKFVfR0VUX0dD
X01BU0soaXQudGV4dCgpW2ldKSAmIFVfR0NfWl9NQVNLKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9y
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tE
T01UZXh0SXRlcmF0b3IubW0KaW5kZXggNzliMmU0ZjU3ZjdiMTViZTBjOTliM2IzMTg2NWVmOGRj
N2I0MTc5ZS4uMjk1MTRmNzA3NmY2NDgzMTFmMTU5ZmNkNGM0OTA5ZThiYWIyZGQzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tE
T01UZXh0SXRlcmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KQEAgLTQ2LDI5ICs0NiwzNSBAQCAt
IChpZClpbml0V2l0aFJhbmdlOihXS0RPTVJhbmdlICopcmFuZ2UKICAgICBpZiAoIXNlbGYpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfdGV4dEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpUZXh0SXRlcmF0b3I+KFdlYktpdDo6dG9XZWJDb3JlUmFuZ2UocmFuZ2UpKTsKKyAgICBp
ZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gc2VsZjsKKworICAgIF90ZXh0SXRlcmF0b3IgPSBt
YWtlVW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4oKldlYktpdDo6dG9XZWJDb3JlUmFuZ2Uo
cmFuZ2UpKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAodm9pZClhZHZhbmNlCiB7Ci0gICAg
X3RleHRJdGVyYXRvci0+YWR2YW5jZSgpOworICAgIGlmIChfdGV4dEl0ZXJhdG9yKQorICAgICAg
ICBfdGV4dEl0ZXJhdG9yLT5hZHZhbmNlKCk7CiAgICAgX3VwY29udmVydGVkVGV4dC5zaHJpbmso
MCk7CiB9CiAKIC0gKEJPT0wpYXRFbmQKIHsKLSAgICByZXR1cm4gX3RleHRJdGVyYXRvci0+YXRF
bmQoKTsKKyAgICByZXR1cm4gX3RleHRJdGVyYXRvciAmJiBfdGV4dEl0ZXJhdG9yLT5hdEVuZCgp
OwogfQogCiAtIChXS0RPTVJhbmdlICopY3VycmVudFJhbmdlCiB7Ci0gICAgcmV0dXJuIFdlYktp
dDo6dG9XS0RPTVJhbmdlKGNyZWF0ZUxpdmVSYW5nZShfdGV4dEl0ZXJhdG9yLT5yYW5nZSgpKS5w
dHIoKSk7CisgICAgcmV0dXJuIF90ZXh0SXRlcmF0b3IgPyBXZWJLaXQ6OnRvV0tET01SYW5nZShj
cmVhdGVMaXZlUmFuZ2UoX3RleHRJdGVyYXRvci0+cmFuZ2UoKSkucHRyKCkpIDogbmlsOwogfQog
CiAvLyBGSVhNRTogQ29uc2lkZXIgZGVwcmVjYXRpbmcgdGhpcyBtZXRob2QgYW5kIGNyZWF0aW5n
IG9uZSB0aGF0IGRvZXMgbm90IHJlcXVpcmUgY29weWluZyA4LWJpdCBjaGFyYWN0ZXJzLgogLSAo
Y29uc3QgdW5pY2hhciopY3VycmVudFRleHRQb2ludGVyCiB7CisgICAgaWYgKCFfdGV4dEl0ZXJh
dG9yKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBTdHJpbmdWaWV3IHRleHQgPSBfdGV4
dEl0ZXJhdG9yLT50ZXh0KCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsK
ICAgICBpZiAoIWxlbmd0aCkKQEAgLTgzLDcgKzg5LDcgQEAgLSAoY29uc3QgdW5pY2hhciopY3Vy
cmVudFRleHRQb2ludGVyCiAKIC0gKE5TVUludGVnZXIpY3VycmVudFRleHRMZW5ndGgKIHsKLSAg
ICByZXR1cm4gX3RleHRJdGVyYXRvci0+dGV4dCgpLmxlbmd0aCgpOworICAgIHJldHVybiBfdGV4
dEl0ZXJhdG9yID8gX3RleHRJdGVyYXRvci0+dGV4dCgpLmxlbmd0aCgpIDogMDsKIH0KIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcAppbmRleCA1ZmI1MzI5M2FhNzQ0YmY2
MGRkZTYzZjE3MzdmN2Q0ZTBkYWIwZGMxLi43ODgzZTE3MTQzODc5Yzc2NzJkNTBjMzFiOWNmYzFh
ZjFlMWVhZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcApAQCAtNDAsNiAr
NDAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSW1hZ2VEb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2ltcGxlUmFuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJ
dGVyYXRvci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE2MSw3ICsxNjIsNyBA
QCBPcHRpb25hbDxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBWaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yOjpjb21wdXRlVGV4dExlZwogICAgIHVuc2lnbmVkIG51bWJlck9mSXRlcmF0aW9u
cyA9IDA7CiAgICAgdW5zaWduZWQgdG90YWxTYW1wbGVkVGV4dExlbmd0aCA9IDA7CiAKLSAgICBm
b3IgKFRleHRJdGVyYXRvciBkb2N1bWVudFRleHRJdGVyYXRvciB7IGRvY3VtZW50UmFuZ2UucHRy
KCksIFRleHRJdGVyYXRvckVudGVyc1RleHRDb250cm9scyB9OyAhZG9jdW1lbnRUZXh0SXRlcmF0
b3IuYXRFbmQoKTsgZG9jdW1lbnRUZXh0SXRlcmF0b3IuYWR2YW5jZSgpKSB7CisgICAgZm9yIChU
ZXh0SXRlcmF0b3IgZG9jdW1lbnRUZXh0SXRlcmF0b3IgeyBkb2N1bWVudFJhbmdlLmdldCgpLCBU
ZXh0SXRlcmF0b3JFbnRlcnNUZXh0Q29udHJvbHMgfTsgIWRvY3VtZW50VGV4dEl0ZXJhdG9yLmF0
RW5kKCk7IGRvY3VtZW50VGV4dEl0ZXJhdG9yLmFkdmFuY2UoKSkgewogICAgICAgICBpZiAoKytu
dW1iZXJPZkl0ZXJhdGlvbnMgPj0gbWF4aW11bU51bWJlck9mVGV4dFJ1bnNUb0NvbnNpZGVyKQog
ICAgICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggZmVkNmMwNGJlYzhjNWRhMjZlNjUxOTM1NmM2
MjAwZTIzYmVlMDM1MC4uNmU3Y2E5YmExNzhhMDJlZmUzNmQ4NGViYzRhZjA5Mjk3MDVkNWZiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KQEAgLTE0Myw3ICsxNDMsMjIgQEAKICNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYoaXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFdlYlBhZ2U6OiIgZm10LCB0aGlzLCAj
I19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCisvLyBGSVhNRTogVW5jbGVhciBpZiBjYWxsZXJzIGluIHRoaXMgZmlsZSBhcmUgY29y
cmVjdGx5IGNob29zaW5nIHdoaWNoIG9mIHRoZXNlIHR3byBmdW5jdGlvbnMgdG8gdXNlLgorCitz
dGF0aWMgU3RyaW5nIHBsYWluVGV4dEZvckNvbnRleHQoY29uc3QgUmFuZ2UqIHJhbmdlKQorewor
ICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIHJldHVy
biBXZWJDb3JlOjpwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoKnJhbmdlKTsKK30KKwor
c3RhdGljIFN0cmluZyBwbGFpblRleHRGb3JEaXNwbGF5KGNvbnN0IFJhbmdlKiByYW5nZSkKK3sK
KyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6cGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKCpyYW5nZSwgVGV4dEl0
ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKK30KIAogdm9pZCBXZWJQYWdlOjpwbGF0Zm9y
bUluaXRpYWxpemUoKQogewpAQCAtMjI4LDcgKzI0Myw3IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZv
cm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQ
b3N0CiAgICAgICAgICAgICAgICAgcmVzdWx0Lmxhc3RNYXJrZWRSZWN0ID0gdmlldy0+Y29udGVu
dHNUb1Jvb3RWaWV3KGNvbXBvc2l0aW9uUmVjdHMubGFzdCgpLnJlY3QoKSk7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgcmVzdWx0Lmxhc3RNYXJrZWRSZWN0ID0gcmVzdWx0LmZp
cnN0TWFya2VkUmVjdDsKLSAgICAgICAgICAgIHJlc3VsdC5tYXJrZWRUZXh0ID0gcGxhaW5UZXh0
UmVwbGFjaW5nTm9CcmVha1NwYWNlKGNvbXBvc2l0aW9uUmFuZ2UuZ2V0KCkpOworICAgICAgICAg
ICAgcmVzdWx0Lm1hcmtlZFRleHQgPSBwbGFpblRleHRGb3JDb250ZXh0KGNvbXBvc2l0aW9uUmFu
Z2UuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNTgsNyArMjczLDcgQEAgdm9pZCBX
ZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJl
c3VsdCwgSW5jbHVkZVBvc3QKICAgICAgICAgcG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRFbmQg
PSBwb3N0TGF5b3V0RGF0YS5jYXJldFJlY3RBdFN0YXJ0OwogICAgICAgICAvLyBGSVhNRTogVGhl
IGZvbGxvd2luZyBjaGVjayBzaG91bGQgdGFrZSBpbnRvIGFjY291bnQgd3JpdGluZyBkaXJlY3Rp
b24uCiAgICAgICAgIHBvc3RMYXlvdXREYXRhLmlzUmVwbGFjZUFsbG93ZWQgPSByZXN1bHQuaXND
b250ZW50RWRpdGFibGUgJiYgYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoc2VsZWN0aW9uLnN0YXJ0
KCksIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7Ci0gICAgICAgIHBvc3RMYXlv
dXREYXRhLndvcmRBdFNlbGVjdGlvbiA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZSh3
b3JkUmFuZ2VGcm9tUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCkpLmdldCgpKTsKKyAgICAgICAg
cG9zdExheW91dERhdGEud29yZEF0U2VsZWN0aW9uID0gcGxhaW5UZXh0Rm9yQ29udGV4dCh3b3Jk
UmFuZ2VGcm9tUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCkpLmdldCgpKTsKICAgICAgICAgaWYg
KHNlbGVjdGlvbi5pc0NvbnRlbnRFZGl0YWJsZSgpKQogICAgICAgICAgICAgY2hhcmFjdGVyc0Fy
b3VuZFBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpLCBwb3N0TGF5b3V0RGF0YS5jaGFyYWN0ZXJB
ZnRlclNlbGVjdGlvbiwgcG9zdExheW91dERhdGEuY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uLCBw
b3N0TGF5b3V0RGF0YS50d29DaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24pOwogICAgIH0gZWxzZSBp
ZiAoc2VsZWN0aW9uLmlzUmFuZ2UoKSkgewpAQCAtMjY5LDcgKzI4NCw3IEBAIHZvaWQgV2ViUGFn
ZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQs
IEluY2x1ZGVQb3N0CiAgICAgICAgIGlmIChzZWxlY3RlZFJhbmdlKSB7CiAgICAgICAgICAgICBz
ZWxlY3RlZFJhbmdlLT5jb2xsZWN0U2VsZWN0aW9uUmVjdHMocG9zdExheW91dERhdGEuc2VsZWN0
aW9uUmVjdHMpOwogICAgICAgICAgICAgY29udmVydFNlbGVjdGlvblJlY3RzVG9Sb290Vmlldyh2
aWV3LCBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rpb25SZWN0cyk7Ci0gICAgICAgICAgICBzZWxlY3Rl
ZFRleHQgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2Uoc2VsZWN0ZWRSYW5nZS5nZXQo
KSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKKyAgICAgICAgICAgIHNlbGVj
dGVkVGV4dCA9IHBsYWluVGV4dEZvckRpc3BsYXkoc2VsZWN0ZWRSYW5nZS5nZXQoKSk7CiAgICAg
ICAgICAgICBwb3N0TGF5b3V0RGF0YS5zZWxlY3RlZFRleHRMZW5ndGggPSBzZWxlY3RlZFRleHQu
bGVuZ3RoKCk7CiAgICAgICAgICAgICBjb25zdCBpbnQgbWF4U2VsZWN0ZWRUZXh0TGVuZ3RoID0g
MjAwOwogICAgICAgICAgICAgcG9zdExheW91dERhdGEud29yZEF0U2VsZWN0aW9uID0gc2VsZWN0
ZWRUZXh0LmxlZnQobWF4U2VsZWN0ZWRUZXh0TGVuZ3RoKTsKQEAgLTUwMiw5ICs1MTcsOSBAQCB2
b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ICAgIH0KICAgICBjb25zdCBpbnQgc2VsZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoID0gMzUw
OwogICAgIAotICAgIFN0cmluZyBzZWxlY3RlZFRleHQgPSBwbGFpblRleHRSZXBsYWNpbmdOb0Jy
ZWFrU3BhY2UoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2Uo
KS5nZXQoKSk7Ci0gICAgU3RyaW5nIHRleHRCZWZvcmUgPSBwbGFpblRleHRSZXBsYWNpbmdOb0Jy
ZWFrU3BhY2UocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRh
cnkoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgc2VsZWN0aW9uRXh0ZW5k
ZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25CYWNrd2FyZCkuZ2V0KCksIFRleHRJdGVyYXRvckRl
ZmF1bHRCZWhhdmlvciwgdHJ1ZSk7Ci0gICAgU3RyaW5nIHRleHRBZnRlciA9IHBsYWluVGV4dFJl
cGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25B
dFdvcmRCb3VuZGFyeShmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKSwgc2VsZWN0
aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25Gb3J3YXJkKS5nZXQoKSwgVGV4dEl0
ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKKyAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0ID0g
cGxhaW5UZXh0Rm9yQ29udGV4dChmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1h
bGl6ZWRSYW5nZSgpLmdldCgpKTsKKyAgICBTdHJpbmcgdGV4dEJlZm9yZSA9IHBsYWluVGV4dEZv
ckRpc3BsYXkocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRh
cnkoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgc2VsZWN0aW9uRXh0ZW5k
ZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25CYWNrd2FyZCkuZ2V0KCkpOworICAgIFN0cmluZyB0
ZXh0QWZ0ZXIgPSBwbGFpblRleHRGb3JEaXNwbGF5KHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJ
bkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVu
ZCgpLCBzZWxlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVjdGlvbkZvcndhcmQpLmdl
dCgpKTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2VsZWN0aW9uQ29udGV4
dENhbGxiYWNrKHNlbGVjdGVkVGV4dCwgdGV4dEJlZm9yZSwgdGV4dEFmdGVyLCBjYWxsYmFja0lE
KSk7CiB9CkBAIC0yMDA2LDcgKzIwMjEsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFJlY3RzQXRTZWxl
Y3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgU3RyaW5nJiB0ZQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtT
cGFjZShyYW5nZS5wdHIoKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKSAhPSB0
ZXh0KSB7CisgICAgaWYgKHBsYWluVGV4dEZvckRpc3BsYXkocmFuZ2UucHRyKCkpICE9IHRleHQp
IHsKICAgICAgICAgLy8gVHJ5IHRvIHNlYXJjaCBmb3IgYSByYW5nZSB3aGljaCBpcyB0aGUgY2xv
c2VzdCB0byB0aGUgcG9zaXRpb24gd2l0aGluIHRoZSBzZWxlY3Rpb24gcmFuZ2UgdGhhdCBtYXRj
aGVzIHRoZSBwYXNzZWQgaW4gdGV4dC4KICAgICAgICAgaWYgKGF1dG8gd29yZFJhbmdlID0gcmFu
Z2VOZWFyUG9zaXRpb25NYXRjaGVzVGV4dChzdGFydFBvc2l0aW9uLCB0ZXh0LCBzZWxlY3Rpb24u
dG9Ob3JtYWxpemVkUmFuZ2UoKSkpIHsKICAgICAgICAgICAgIGlmICghd29yZFJhbmdlLT5jb2xs
YXBzZWQoKSkKQEAgLTIyMjYsNyArMjI0MSw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdERpY3Rh
dGlvbkNvbnRleHQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCiAgICAgU3RyaW5nIHNlbGVjdGVk
VGV4dDsKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNSYW5nZSgpKQotICAgICAgICBzZWxl
Y3RlZFRleHQgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CisgICAgICAgIHNlbGVj
dGVkVGV4dCA9IHBsYWluVGV4dEZvckNvbnRleHQoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiAKICAgICBTdHJpbmcgY29udGV4dEJlZm9y
ZTsKICAgICBpZiAoc3RhcnRQb3NpdGlvbiAhPSBzdGFydE9mRWRpdGFibGVDb250ZW50KHN0YXJ0
UG9zaXRpb24pKSB7CkBAIC0yMjM5LDcgKzIyNTQsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RE
aWN0YXRpb25Db250ZXh0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICAgICAgICAgIGxhc3RQ
b3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgfQogICAgICAgICBpZiAobGFzdFBv
c2l0aW9uLmlzTm90TnVsbCgpICYmIGxhc3RQb3NpdGlvbiAhPSBzdGFydFBvc2l0aW9uKQotICAg
ICAgICAgICAgY29udGV4dEJlZm9yZSA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShS
YW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBsYXN0UG9zaXRpb24sIHN0YXJ0UG9zaXRp
b24pLnB0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHRCZWZvcmUgPSBwbGFpblRleHRGb3JDb250
ZXh0KFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIGxhc3RQb3NpdGlvbiwgc3RhcnRQ
b3NpdGlvbikucHRyKCkpOwogICAgIH0KIAogICAgIFN0cmluZyBjb250ZXh0QWZ0ZXI7CkBAIC0y
MjUzLDcgKzIyNjgsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICAgICAgICAgIGxhc3RQb3NpdGlvbiA9IGN1cnJlbnRQ
b3NpdGlvbjsKICAgICAgICAgfQogICAgICAgICBpZiAobGFzdFBvc2l0aW9uLmlzTm90TnVsbCgp
ICYmIGxhc3RQb3NpdGlvbiAhPSBlbmRQb3NpdGlvbikKLSAgICAgICAgICAgIGNvbnRleHRBZnRl
ciA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShSYW5nZTo6Y3JlYXRlKCpmcmFtZS5k
b2N1bWVudCgpLCBlbmRQb3NpdGlvbiwgbGFzdFBvc2l0aW9uKS5wdHIoKSk7CisgICAgICAgICAg
ICBjb250ZXh0QWZ0ZXIgPSBwbGFpblRleHRGb3JDb250ZXh0KFJhbmdlOjpjcmVhdGUoKmZyYW1l
LmRvY3VtZW50KCksIGVuZFBvc2l0aW9uLCBsYXN0UG9zaXRpb24pLnB0cigpKTsKICAgICB9CiAK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNlbGVjdGlvbkNvbnRleHRDYWxsYmFj
ayhzZWxlY3RlZFRleHQsIGNvbnRleHRCZWZvcmUsIGNvbnRleHRBZnRlciwgY2FsbGJhY2tJRCkp
OwpAQCAtMjI2Myw3ICsyMjc4LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXBsYWNlU2VsZWN0ZWRUZXh0
KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KQogewogICAgIEZy
YW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCk7CiAgICAgUmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2UgPSBmcmFtZS5zZWxlY3Rpb24oKS5pc0Nh
cmV0KCkgPyB3b3JkUmFuZ2VGcm9tUG9zaXRpb24oZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCkuc3RhcnQoKSkgOiBmcmFtZS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAg
IGlmIChwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2Uod29yZFJhbmdlLmdldCgpKSAhPSBv
bGRUZXh0KQorICAgIGlmIChwbGFpblRleHRGb3JDb250ZXh0KHdvcmRSYW5nZS5nZXQoKSkgIT0g
b2xkVGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGZyYW1lLmVkaXRvcigpLnNldEln
bm9yZVNlbGVjdGlvbkNoYW5nZXModHJ1ZSk7CkBAIC0yMjg5LDcgKzIzMDQsNyBAQCB2b2lkIFdl
YlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBT
dHJpbmcmIG5ld1RleHQpCiAgICAgICAgIHBvc2l0aW9uID0gc3RhcnRPZkRvY3VtZW50KHN0YXRp
Y19jYXN0PE5vZGUqPihmcmFtZS5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkpOwogICAg
IGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwg
ZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSk7CiAKLSAgICBpZiAocGxhaW5U
ZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLnB0cigpKSAhPSBvbGRUZXh0KQorICAgIGlm
IChwbGFpblRleHRGb3JDb250ZXh0KHJhbmdlLnB0cigpKSAhPSBvbGRUZXh0KQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIG5vdGlmeSB0aGUgY2xpZW50IHRoYXQg
dGhlIHNlbGVjdGlvbiBoYXMgY2hhbmdlZCB1bnRpbCB3ZSBhcmUgZG9uZSBpbnNlcnRpbmcgdGhl
IG5ldyB0ZXh0LgpAQCAtMjMxNCw3ICsyMzI5LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0
b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBDb20K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gdGV4dEZvclJhbmdlID0gcGxhaW5U
ZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHRleHRGb3JS
YW5nZSA9IHBsYWluVGV4dEZvckNvbnRleHQocmFuZ2UuZ2V0KCkpOwogICAgIGNvbnN0IHVuc2ln
bmVkIG1heFNlYXJjaEF0dGVtcHRzID0gNTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgIGkgPCBt
YXhTZWFyY2hBdHRlbXB0cyAmJiB0ZXh0Rm9yUmFuZ2UgIT0gdGV4dEZvckF1dG9jb3JyZWN0aW9u
OyArK2kpCiAgICAgewpAQCAtMjMyMiw3ICsyMzM3LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0
QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBD
b20KICAgICAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpIHx8IHBvc2l0aW9uID09IHJhbmdlLT5z
dGFydFBvc2l0aW9uKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgcmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCB3b3JkUmFuZ2VGcm9tUG9zaXRpb24ocG9zaXRp
b24pLT5zdGFydFBvc2l0aW9uKCksIHJhbmdlLT5lbmRQb3NpdGlvbigpKTsKLSAgICAgICAgdGV4
dEZvclJhbmdlID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLmdldCgpKTsK
KyAgICAgICAgdGV4dEZvclJhbmdlID0gcGxhaW5UZXh0Rm9yQ29udGV4dChyYW5nZS5nZXQoKSk7
CiAgICAgfQogCiAgICAgVmVjdG9yPFNlbGVjdGlvblJlY3Q+IHNlbGVjdGlvblJlY3RzOwpAQCAt
MjM4NSw3ICsyNDAwLDcgQEAgYm9vbCBXZWJQYWdlOjphcHBseUF1dG9jb3JyZWN0aW9uSW50ZXJu
YWwoY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcKICAgICBpZiAoZnJhbWUu
c2VsZWN0aW9uKCkuaXNDYXJldCgpKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlv
biA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCk7CiAgICAgICAgIHJhbmdl
ID0gd29yZFJhbmdlRnJvbVBvc2l0aW9uKHBvc2l0aW9uKTsKLSAgICAgICAgdGV4dEZvclJhbmdl
ID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLmdldCgpKTsKKyAgICAgICAg
dGV4dEZvclJhbmdlID0gcGxhaW5UZXh0Rm9yQ29udGV4dChyYW5nZS5nZXQoKSk7CiAgICAgICAg
IAogICAgICAgICAvLyBJZiAnb3JpZ2luYWxUZXh0JyBpcyBub3QgdGhlIHNhbWUgYXMgJ3RleHRG
b3JSYW5nZScgd2UgbmVlZCB0byBtb3ZlICdyYW5nZScKICAgICAgICAgLy8gZm9yd2FyZCBzdWNo
IHRoYXQgaXQgbWF0Y2hlcyB0aGUgb3JpZ2luYWwgc2VsZWN0aW9uIGFzIG11Y2ggYXMgcG9zc2li
bGUuCkBAIC0yMzk2LDcgKzI0MTEsNyBAQCBib29sIFdlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rp
b25JbnRlcm5hbChjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZwogICAgICAg
ICAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHBvc2l0aW9uID0g
c3RhcnRPZkRvY3VtZW50KHN0YXRpY19jYXN0PE5vZGUqPihmcmFtZS5kb2N1bWVudCgpLT5kb2N1
bWVudEVsZW1lbnQoKSkpOwogICAgICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFt
ZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3Rh
cnQoKSk7Ci0gICAgICAgICAgICB0ZXh0Rm9yUmFuZ2UgPSBwbGFpblRleHRSZXBsYWNpbmdOb0Jy
ZWFrU3BhY2UocmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgdGV4dEZvclJhbmdlID0gcGxhaW5U
ZXh0Rm9yQ29udGV4dChyYW5nZS5nZXQoKSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBsb29wQ291
bnQgPSAwOwogICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbWF4UG9zaXRpb25zQXR0ZW1wdHMg
PSAxMDsKICAgICAgICAgICAgIHdoaWxlICh0ZXh0Rm9yUmFuZ2UubGVuZ3RoKCkgJiYgdGV4dEZv
clJhbmdlLmxlbmd0aCgpID4gb3JpZ2luYWxUZXh0Lmxlbmd0aCgpICYmIGxvb3BDb3VudCA8IG1h
eFBvc2l0aW9uc0F0dGVtcHRzKSB7CkBAIC0yNDA1LDcgKzI0MjAsNyBAQCBib29sIFdlYlBhZ2U6
OmFwcGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hbChjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNv
bnN0IFN0cmluZwogICAgICAgICAgICAgICAgICAgICByYW5nZSA9IG51bGxwdHI7CiAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
KmZyYW1lLmRvY3VtZW50KCksIHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5zdGFydCgpKTsKLSAgICAgICAgICAgICAgICB0ZXh0Rm9yUmFuZ2UgPSBwbGFpblRleHRSZXBs
YWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIHRleHRGb3JS
YW5nZSA9IHBsYWluVGV4dEZvckNvbnRleHQocmFuZ2UuZ2V0KCkpOwogICAgICAgICAgICAgICAg
IGxvb3BDb3VudCsrOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHRleHRGb3JS
YW5nZS5pc0VtcHR5KCkgJiYgcmFuZ2UgJiYgIXJhbmdlLT5jb2xsYXBzZWQoKSkgewpAQCAtMjQy
MSw3ICsyNDM2LDcgQEAgYm9vbCBXZWJQYWdlOjphcHBseUF1dG9jb3JyZWN0aW9uSW50ZXJuYWwo
Y29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcKICAgICAgICAgaWYgKCFyYW5n
ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICB0ZXh0Rm9yUmFuZ2UgPSBw
bGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UuZ2V0KCkpOworICAgICAgICB0ZXh0
Rm9yUmFuZ2UgPSBwbGFpblRleHRGb3JDb250ZXh0KHJhbmdlLmdldCgpKTsKICAgICB9CiAKICAg
ICBpZiAoZm9sZFF1b3RlTWFya3ModGV4dEZvclJhbmdlKSAhPSBvcmlnaW5hbFRleHRXaXRoRm9s
ZGVkUXVvdGVNYXJrcykKQEAgLTI0NTcsMTcgKzI0NzIsMTcgQEAgV2ViQXV0b2NvcnJlY3Rpb25D
b250ZXh0IFdlYlBhZ2U6OmF1dG9jb3JyZWN0aW9uQ29udGV4dCgpCiAgICAgY29uc3QgdW5zaWdu
ZWQgbWF4Q29udGV4dExlbmd0aCA9IDMwOwogCiAgICAgaWYgKGZyYW1lLnNlbGVjdGlvbigpLmlz
UmFuZ2UoKSkKLSAgICAgICAgc2VsZWN0ZWRUZXh0ID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVh
a1NwYWNlKGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCku
Z2V0KCkpOworICAgICAgICBzZWxlY3RlZFRleHQgPSBwbGFpblRleHRGb3JDb250ZXh0KGZyYW1l
LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogCiAg
ICAgaWYgKGF1dG8gY29tcG9zaXRpb25SYW5nZSA9IGZyYW1lLmVkaXRvcigpLmNvbXBvc2l0aW9u
UmFuZ2UoKSkgewogICAgICAgICByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50
KCksIGNvbXBvc2l0aW9uUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgc3RhcnRQb3NpdGlvbik7CiAg
ICAgICAgIFN0cmluZyBtYXJrZWRUZXh0QmVmb3JlOwogICAgICAgICBpZiAocmFuZ2UpCi0gICAg
ICAgICAgICBtYXJrZWRUZXh0QmVmb3JlID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNl
KHJhbmdlLmdldCgpKTsKKyAgICAgICAgICAgIG1hcmtlZFRleHRCZWZvcmUgPSBwbGFpblRleHRG
b3JDb250ZXh0KHJhbmdlLmdldCgpKTsKICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpm
cmFtZS5kb2N1bWVudCgpLCBlbmRQb3NpdGlvbiwgY29tcG9zaXRpb25SYW5nZS0+ZW5kUG9zaXRp
b24oKSk7CiAgICAgICAgIFN0cmluZyBtYXJrZWRUZXh0QWZ0ZXI7CiAgICAgICAgIGlmIChyYW5n
ZSkKLSAgICAgICAgICAgIG1hcmtlZFRleHRBZnRlciA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJl
YWtTcGFjZShyYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBtYXJrZWRUZXh0QWZ0ZXIgPSBwbGFp
blRleHRGb3JDb250ZXh0KHJhbmdlLmdldCgpKTsKICAgICAgICAgbWFya2VkVGV4dCA9IG1hcmtl
ZFRleHRCZWZvcmUgKyBzZWxlY3RlZFRleHQgKyBtYXJrZWRUZXh0QWZ0ZXI7CiAgICAgICAgIGlm
ICghbWFya2VkVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG1hcmtlZFRleHRSYW5nZS5s
b2NhdGlvbiA9IG1hcmtlZFRleHRCZWZvcmUubGVuZ3RoKCk7CkBAIC0yNDg0LDE0ICsyNDk5LDE0
IEBAIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCBXZWJQYWdlOjphdXRvY29ycmVjdGlvbkNvbnRl
eHQoKQogICAgICAgICAgICAgICAgIHByZXZpb3VzUG9zaXRpb24gPSBzdGFydE9mV29yZChwb3Np
dGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFdvcmRHcmFu
dWxhcml0eSwgRGlyZWN0aW9uQmFja3dhcmQpKTsKICAgICAgICAgICAgICAgICBpZiAocHJldmlv
dXNQb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1Nw
YWNlKFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHByZXZpb3VzUG9zaXRpb24sIGN1
cnJlbnRQb3NpdGlvbikucHRyKCkpOworICAgICAgICAgICAgICAgIFN0cmluZyBjdXJyZW50V29y
ZCA9IHBsYWluVGV4dEZvckNvbnRleHQoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwg
cHJldmlvdXNQb3NpdGlvbiwgY3VycmVudFBvc2l0aW9uKS5wdHIoKSk7CiAgICAgICAgICAgICAg
ICAgdG90YWxDb250ZXh0TGVuZ3RoICs9IGN1cnJlbnRXb3JkLmxlbmd0aCgpOwogICAgICAgICAg
ICAgICAgIGlmICh0b3RhbENvbnRleHRMZW5ndGggPj0gbWF4Q29udGV4dExlbmd0aCkKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uID0g
cHJldmlvdXNQb3NpdGlvbjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjdXJyZW50
UG9zaXRpb24uaXNOb3ROdWxsKCkgJiYgY3VycmVudFBvc2l0aW9uICE9IHN0YXJ0UG9zaXRpb24p
IHsKLSAgICAgICAgICAgICAgICBjb250ZXh0QmVmb3JlID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9C
cmVha1NwYWNlKFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIGN1cnJlbnRQb3NpdGlv
biwgc3RhcnRQb3NpdGlvbikucHRyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHRCZWZvcmUg
PSBwbGFpblRleHRGb3JDb250ZXh0KFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIGN1
cnJlbnRQb3NpdGlvbiwgc3RhcnRQb3NpdGlvbikucHRyKCkpOwogICAgICAgICAgICAgICAgIGlm
IChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFBhcmFncmFwaEdyYW51
bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRC
ZWZvcmUgPSBtYWtlU3RyaW5nKCJcbiAiX3MsIGNvbnRleHRCZWZvcmUpOwogICAgICAgICAgICAg
fQpAQCAtMjUwMiw3ICsyNTE3LDcgQEAgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IFdlYlBhZ2U6
OmF1dG9jb3JyZWN0aW9uQ29udGV4dCgpCiAgICAgICAgICAgICBpZiAoIWF0Qm91bmRhcnlPZkdy
YW51bGFyaXR5KGVuZFBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQp
ICYmIHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShlbmRQb3NpdGlvbiwgV29yZEdyYW51bGFy
aXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSkKICAgICAgICAgICAgICAgICBuZXh0UG9zaXRpb24gPSBw
b3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShlbmRQb3NpdGlvbiwgV29yZEdyYW51
bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKICAgICAgICAgICAgIGlmIChuZXh0UG9zaXRpb24u
aXNOb3ROdWxsKCkpCi0gICAgICAgICAgICAgICAgY29udGV4dEFmdGVyID0gcGxhaW5UZXh0UmVw
bGFjaW5nTm9CcmVha1NwYWNlKFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIGVuZFBv
c2l0aW9uLCBuZXh0UG9zaXRpb24pLnB0cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0QWZ0
ZXIgPSBwbGFpblRleHRGb3JDb250ZXh0KFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCks
IGVuZFBvc2l0aW9uLCBuZXh0UG9zaXRpb24pLnB0cigpKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMjYzMSwxMCArMjY0NiwxMCBAQCBzdGF0aWMgdm9pZCBkYXRhRGV0ZWN0b3JMaW5rUG9zaXRp
b25JbmZvcm1hdGlvbihFbGVtZW50JiBlbGVtZW50LCBJbnRlcmFjdGlvbkluZgogICAgIAogICAg
IGF1dG8gbGlua1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShlbGVtZW50LmRvY3VtZW50KCkpOwogICAg
IGxpbmtSYW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKGVsZW1lbnQpOwotICAgIGluZm8udGV4dEJl
Zm9yZSA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZUV4cGFuZGVkQnlDaGFy
YWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShsaW5rUmFuZ2UtPnN0YXJ0UG9zaXRpb24o
KSwKLSAgICAgICAgZGF0YURldGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0aW9u
QmFja3dhcmQpLmdldCgpLCBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIHRydWUpOwotICAg
IGluZm8udGV4dEFmdGVyID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlRXhw
YW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KGxpbmtSYW5nZS0+ZW5k
UG9zaXRpb24oKSwKLSAgICAgICAgZGF0YURldGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwg
RGlyZWN0aW9uRm9yd2FyZCkuZ2V0KCksIFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgdHJ1
ZSk7CisgICAgaW5mby50ZXh0QmVmb3JlID0gcGxhaW5UZXh0Rm9yRGlzcGxheShyYW5nZUV4cGFu
ZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShsaW5rUmFuZ2UtPnN0YXJ0
UG9zaXRpb24oKSwKKyAgICAgICAgZGF0YURldGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwg
RGlyZWN0aW9uQmFja3dhcmQpLmdldCgpKTsKKyAgICBpbmZvLnRleHRBZnRlciA9IHBsYWluVGV4
dEZvckRpc3BsYXkocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91
bmRhcnkobGlua1JhbmdlLT5lbmRQb3NpdGlvbigpLAorICAgICAgICBkYXRhRGV0ZWN0aW9uRXh0
ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25Gb3J3YXJkKS5nZXQoKSk7CiB9CiAjZW5kaWYK
IApAQCAtNDE4NiwyMCArNDIwMSwyMSBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3REb2N1bWVudEVk
aXRpbmdDb250ZXh0KERvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0IHJlcXVlcwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgYXV0byBtYWtlU3RyaW5nID0gWyZdKFZpc2libGVQb3NpdGlvbiYg
c3RhcnQsIFZpc2libGVQb3NpdGlvbiYgZW5kKSAtPiBOU0F0dHJpYnV0ZWRTdHJpbmcgKiB7Cisg
ICAgYXV0byBtYWtlU3RyaW5nID0gW10gKFZpc2libGVQb3NpdGlvbiYgc3RhcnQsIFZpc2libGVQ
b3NpdGlvbiYgZW5kKSAtPiBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiB7CiAgICAgICAg
IGlmIChzdGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxsKCkgfHwgc3RhcnQgPT0gZW5kKQogICAg
ICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgU2ltcGxlUmFuZ2UgcmFuZ2UgeyBtYWtlQm91
bmRhcnlQb2ludChzdGFydC5kZWVwRXF1aXZhbGVudCgpKSwgbWFrZUJvdW5kYXJ5UG9pbnQoZW5k
LmRlZXBFcXVpdmFsZW50KCkpIH07CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZXR1
cm4gZWRpdGluZy1vZmZzZXQtY29tcGF0aWJsZSBhdHRyaWJ1dGVkIHN0cmluZ3MgaWYgdGhhdCBv
cHRpb24gaXMgcmVxdWVzdGVkLgotICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6cGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1Nw
YWNlKHN0YXJ0LmRlZXBFcXVpdmFsZW50KCksIGVuZC5kZWVwRXF1aXZhbGVudCgpKV0pLmF1dG9y
ZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFN0cmluZzpXZWJDb3JlOjpwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3Bh
Y2UocmFuZ2UpXSk7CiAgICAgfTsKIAotICAgIGNvbnRleHQuY29udGV4dEJlZm9yZSA9IG1ha2VT
dHJpbmcoY29udGV4dEJlZm9yZVN0YXJ0LCBzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rp
b24pOwotICAgIGNvbnRleHQuc2VsZWN0ZWRUZXh0ID0gbWFrZVN0cmluZyhzdGFydE9mUmFuZ2VP
ZkludGVyZXN0SW5TZWxlY3Rpb24sIGVuZE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24pOwot
ICAgIGNvbnRleHQuY29udGV4dEFmdGVyID0gbWFrZVN0cmluZyhlbmRPZlJhbmdlT2ZJbnRlcmVz
dEluU2VsZWN0aW9uLCBjb250ZXh0QWZ0ZXJFbmQpOworICAgIGNvbnRleHQuY29udGV4dEJlZm9y
ZSA9IG1ha2VTdHJpbmcoY29udGV4dEJlZm9yZVN0YXJ0LCBzdGFydE9mUmFuZ2VPZkludGVyZXN0
SW5TZWxlY3Rpb24pLmdldCgpOworICAgIGNvbnRleHQuc2VsZWN0ZWRUZXh0ID0gbWFrZVN0cmlu
ZyhzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24sIGVuZE9mUmFuZ2VPZkludGVyZXN0
SW5TZWxlY3Rpb24pLmdldCgpOworICAgIGNvbnRleHQuY29udGV4dEFmdGVyID0gbWFrZVN0cmlu
ZyhlbmRPZlJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0aW9uLCBjb250ZXh0QWZ0ZXJFbmQpLmdldCgp
OwogICAgIGlmIChjb21wb3NpdGlvblJhbmdlICYmIHJhbmdlc092ZXJsYXAocmFuZ2VPZkludGVy
ZXN0LmdldCgpLCBjb21wb3NpdGlvblJhbmdlLmdldCgpKSkgewogICAgICAgICBWaXNpYmxlUG9z
aXRpb24gY29tcG9zaXRpb25TdGFydChjb21wb3NpdGlvblJhbmdlLT5zdGFydFBvc2l0aW9uKCkp
OwogICAgICAgICBWaXNpYmxlUG9zaXRpb24gY29tcG9zaXRpb25FbmQoY29tcG9zaXRpb25SYW5n
ZS0+ZW5kUG9zaXRpb24oKSk7Ci0gICAgICAgIGNvbnRleHQubWFya2VkVGV4dCA9IG1ha2VTdHJp
bmcoY29tcG9zaXRpb25TdGFydCwgY29tcG9zaXRpb25FbmQpOworICAgICAgICBjb250ZXh0Lm1h
cmtlZFRleHQgPSBtYWtlU3RyaW5nKGNvbXBvc2l0aW9uU3RhcnQsIGNvbXBvc2l0aW9uRW5kKS5n
ZXQoKTsKICAgICAgICAgY29udGV4dC5zZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0LmxvY2F0aW9u
ID0gZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKHN0YXJ0T2ZSYW5nZU9mSW50ZXJlc3RJblNlbGVj
dGlvbiwgY29tcG9zaXRpb25TdGFydCk7CiAgICAgICAgIGNvbnRleHQuc2VsZWN0ZWRSYW5nZUlu
TWFya2VkVGV4dC5sZW5ndGggPSBbY29udGV4dC5zZWxlY3RlZFRleHQuc3RyaW5nIGxlbmd0aF07
CiAgICAgfQpAQCAtNDIyNiw3ICs0MjQyLDggQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0RG9jdW1l
bnRFZGl0aW5nQ29udGV4dChEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCByZXF1ZXMKICAg
ICAgICAgaWYgKGF1dG8gY29udGV4dFJhbmdlID0gbWFrZVJhbmdlKGNvbnRleHRCZWZvcmVTdGFy
dCwgY29udGV4dEFmdGVyRW5kKSkKICAgICAgICAgICAgIGNvbnRleHQudGV4dFJlY3RzID0gY2hh
cmFjdGVyUmVjdHNGb3JSYW5nZSgqY29udGV4dFJhbmdlLCAwKTsKICAgICB9IGVsc2UgaWYgKHdh
bnRzTWFya2VkVGV4dFJlY3RzICYmIGNvbXBvc2l0aW9uUmFuZ2UpIHsKLSAgICAgICAgYXV0byBj
b21wb3NpdGlvblN0YXJ0T2Zmc2V0ID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGNv
bnRleHRCZWZvcmVTdGFydC5kZWVwRXF1aXZhbGVudCgpLCBjb21wb3NpdGlvblJhbmdlLT5zdGFy
dFBvc2l0aW9uKCkpLmxlbmd0aCgpOworICAgICAgICBTaW1wbGVSYW5nZSByYW5nZSB7IG1ha2VC
b3VuZGFyeVBvaW50KGNvbnRleHRCZWZvcmVTdGFydC5kZWVwRXF1aXZhbGVudCgpKSwgbWFrZUJv
dW5kYXJ5UG9pbnQoY29tcG9zaXRpb25SYW5nZS0+c3RhcnRQb3NpdGlvbigpKSB9OworICAgICAg
ICBhdXRvIGNvbXBvc2l0aW9uU3RhcnRPZmZzZXQgPSBXZWJDb3JlOjpwbGFpblRleHRSZXBsYWNp
bmdOb0JyZWFrU3BhY2UocmFuZ2UpLmxlbmd0aCgpOwogICAgICAgICBjb250ZXh0LnRleHRSZWN0
cyA9IGNoYXJhY3RlclJlY3RzRm9yUmFuZ2UoKmNvbXBvc2l0aW9uUmFuZ2UsIGNvbXBvc2l0aW9u
U3RhcnRPZmZzZXQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggZWVhZjBhMDllOGI5MDZkMTY1ZGFhMTQ4MTQ2YzRjODMy
Y2U2YmEyZS4uNWJhMmU3ODA0NmY0NjgwN2QxOGViNDE4NzczYWU4YjIxNDIxZmZlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC03MDIz
LDggKzcwMjMsOCBAQCAtIChOU0F0dHJpYnV0ZWRTdHJpbmcgKilfYXR0cmlidXRlZFN0cmluZ0Zy
b21ET01SYW5nZTooRE9NUmFuZ2UgKilyYW5nZQogLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopX2xl
Z2FjeUF0dHJpYnV0ZWRTdHJpbmdGcm9tOihET01Ob2RlKilzdGFydENvbnRhaW5lciBvZmZzZXQ6
KGludClzdGFydE9mZnNldCB0bzooRE9NTm9kZSopZW5kQ29udGFpbmVyIG9mZnNldDooaW50KWVu
ZE9mZnNldAogewogICAgIHJldHVybiBhdHRyaWJ1dGVkU3RyaW5nQmV0d2VlblN0YXJ0QW5kRW5k
KAotICAgICAgICBXZWJDb3JlOjpQb3NpdGlvbiB7IGNvcmUoc3RhcnRDb250YWluZXIpLCBzdGFy
dE9mZnNldCwgV2ViQ29yZTo6UG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciB9LAot
ICAgICAgICBXZWJDb3JlOjpQb3NpdGlvbiB7IGNvcmUoZW5kQ29udGFpbmVyKSwgZW5kT2Zmc2V0
LCBXZWJDb3JlOjpQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yIH0pOworICAgICAg
ICBXZWJDb3JlOjpQb3NpdGlvbiB7IGNvcmUoc3RhcnRDb250YWluZXIpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc3RhcnRPZmZzZXQpLCBXZWJDb3JlOjpQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNl
dEluQW5jaG9yIH0sCisgICAgICAgIFdlYkNvcmU6OlBvc2l0aW9uIHsgY29yZShlbmRDb250YWlu
ZXIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kT2Zmc2V0KSwgV2ViQ29yZTo6UG9zaXRpb246
OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciB9KTsKIH0KIAogLSAoTlNBdHRyaWJ1dGVkU3RyaW5n
ICopYXR0cmlidXRlZFN0cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlRleHRJdGVyYXRvci5tbQppbmRleCAzNTdjNTI4MjgzNmFhOGRiYWRhMjFlY2U0OTM4
ODVlNGZlOGJiMWIyLi4wYjEyYmNhMDdhYzViNWU5NTJjMjZmOWMzNTY3NjczNjdkYzI0MGQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRv
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRv
ci5tbQpAQCAtNzAsMzIgKzcwLDQwIEBAIC0gKGlkKWluaXRXaXRoUmFuZ2U6KERPTVJhbmdlICop
cmFuZ2UKICAgICAgICAgcmV0dXJuIHNlbGY7CiAgICAgCiAgICAgX3ByaXZhdGUgPSBbW1dlYlRl
eHRJdGVyYXRvclByaXZhdGUgYWxsb2NdIGluaXRdOwotICAgIF9wcml2YXRlLT5fdGV4dEl0ZXJh
dG9yID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+KGNvcmUocmFuZ2UpKTsKKyAg
ICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gc2VsZjsKKworICAgIF9wcml2YXRlLT5fdGV4
dEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+KCpjb3JlKHJhbmdl
KSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpYWR2YW5jZQogewotICAgIF9wcml2
YXRlLT5fdGV4dEl0ZXJhdG9yLT5hZHZhbmNlKCk7CisgICAgaWYgKF9wcml2YXRlLT5fdGV4dEl0
ZXJhdG9yKQorICAgICAgICBfcHJpdmF0ZS0+X3RleHRJdGVyYXRvci0+YWR2YW5jZSgpOwogICAg
IF9wcml2YXRlLT5fdXBjb252ZXJ0ZWRUZXh0LnNocmluaygwKTsKIH0KIAogLSAoQk9PTClhdEVu
ZAogewotICAgIHJldHVybiBfcHJpdmF0ZS0+X3RleHRJdGVyYXRvci0+YXRFbmQoKTsKKyAgICBy
ZXR1cm4gX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3IgJiYgX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3It
PmF0RW5kKCk7CiB9CiAKIC0gKERPTVJhbmdlICopY3VycmVudFJhbmdlCiB7CisgICAgaWYgKCFf
cHJpdmF0ZS0+X3RleHRJdGVyYXRvcikKKyAgICAgICAgcmV0dXJuIG5pbDsKICAgICBhdXRvJiB0
ZXh0SXRlcmF0b3IgPSAqX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3I7CiAgICAgaWYgKHRleHRJdGVy
YXRvci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG5p
bDsKICAgICByZXR1cm4ga2l0KGNyZWF0ZUxpdmVSYW5nZSh0ZXh0SXRlcmF0b3IucmFuZ2UoKSku
cHRyKCkpOwogfQogCiAvLyBGSVhNRTogQ29uc2lkZXIgZGVwcmVjYXRpbmcgdGhpcyBtZXRob2Qg
YW5kIGNyZWF0aW5nIG9uZSB0aGF0IGRvZXMgbm90IHJlcXVpcmUgY29weWluZyA4LWJpdCBjaGFy
YWN0ZXJzLgogLSAoY29uc3QgdW5pY2hhciopY3VycmVudFRleHRQb2ludGVyCiB7CisgICAgaWYg
KCFfcHJpdmF0ZS0+X3RleHRJdGVyYXRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
U3RyaW5nVmlldyB0ZXh0ID0gX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3ItPnRleHQoKTsKICAgICB1
bnNpZ25lZCBsZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoKQpAQCAtMTEw
LDcgKzExOCw3IEBAIC0gKGNvbnN0IHVuaWNoYXIqKWN1cnJlbnRUZXh0UG9pbnRlcgogCiAtIChO
U1VJbnRlZ2VyKWN1cnJlbnRUZXh0TGVuZ3RoCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5fdGV4
dEl0ZXJhdG9yLT50ZXh0KCkubGVuZ3RoKCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5fdGV4dEl0
ZXJhdG9yID8gX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3ItPnRleHQoKS5sZW5ndGgoKSA6IDA7CiB9
CiAKIEBlbmQKQEAgLTExOSwxMiArMTI3LDEyIEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJUZXh0SXRl
cmF0b3IgKFdlYlRleHRJdGVyYXRvckRlcHJlY2F0ZWQpCiAKIC0gKERPTU5vZGUgKiljdXJyZW50
Tm9kZQogewotICAgIHJldHVybiBraXQoX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3ItPm5vZGUoKSk7
CisgICAgcmV0dXJuIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yID8ga2l0KF9wcml2YXRlLT5fdGV4
dEl0ZXJhdG9yLT5ub2RlKCkpIDogbmlsOwogfQogCiAtIChOU1N0cmluZyAqKWN1cnJlbnRUZXh0
CiB7Ci0gICAgcmV0dXJuIFtbX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3ItPnRleHQoKS5jcmVhdGVO
U1N0cmluZygpLmdldCgpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBfcHJpdmF0
ZS0+X3RleHRJdGVyYXRvciA/IF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yLT50ZXh0KCkuY3JlYXRl
TlNTdHJpbmcoKS5hdXRvcmVsZWFzZSgpIDogQCIiOwogfQogCiBAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393633</attachid>
            <date>2020-03-15 22:35:38 -0700</date>
            <delta_ts>2020-03-16 00:13:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209129-20200315223536.patch</filename>
            <type>text/plain</type>
            <size>107242</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmZlNTVlOWI2MzI5OTE3
MWIxNmJiYzVjOGQwYTYwZjFkMGM5ZDY3NS4uMTJjMzU3ODEzZTlmOWVlYzRlYWQxYzA0NzAxYWY4
MzQyNWEzNzFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OSBAQAorMjAyMC0wMy0xNSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBtb3N0IG9mIFRleHRJ
dGVyYXRvciBvZmYgb2YgbGl2ZSByYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwOTEyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIC0gQ2hhbmdlIGFsbW9zdCBhbGwgYXJndW1lbnRzIGFuZCByZXR1
cm4gdmFsdWVzIG9mIGZ1bmN0aW9ucyBpbiBUZXh0SXRlcmF0b3IuaAorICAgICAgICAgIHRvIHVz
ZSBTaW1wbGVSYW5nZSBpbnN0ZWFkIG9mIGxpdmUgcmFuZ2VzLiBFeGNlcHRpb25zIGFyZSBhbiBv
dmVybG9hZCBvZiBwbGFpblRleHQKKyAgICAgICAgICBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
LCBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoLAorICAgICAgICAgIFRl
eHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UsIGFuZCBUZXh0SXRlcmF0
b3I6OnN1YnJhbmdlLiBUaG9zZQorICAgICAgICAgIGZpdmUgYXJlIGEgbGl0dGxlIHRyaWNraWVy
IHRvIGNvbnZlcnQsIHNvIEkgd2lsbCBkbyB0aGVtIGVhY2ggaW4gc2VwYXJhdGUgcGF0Y2hlcy4K
KworICAgICAgICAtIFJlLXJlbW92ZSB0aGUgaW5jbHVkZSBvZiBTaW1wbGVSYW5nZS5oIGZyb20g
VGV4dEl0ZXJhdG9yLmguIEluc3RlYWQsIGZpbGVzIHRoYXQKKyAgICAgICAgICB1c2UgVGV4dEl0
ZXJhdG9yLmggd2lsbCBpbmNsdWRlIFNpbXBsZVJhbmdlLmggYXMgbmVlZGVkLiBUaGlzIHByb2Jh
Ymx5IHJlLWJyZWFrcworICAgICAgICAgIHVuaWZpZWQgYnVpbGRzLCBidXQgdGhlIGZpeCB3aWxs
IGJlIHRvIGFkZCBpbmNsdWRlcyBvZiBTaW1wbGVSYW5nZS5oIGVsc2V3aGVyZSwKKyAgICAgICAg
ICBub3QgdG8gVGV4dEl0ZXJhdG9yLmggaXRzZWxmLgorCisgICAgICAgIC0gR28gd2l0aCB0aGUg
ZmxvdyBpbiBhZGRpbmcgYW4gaW5jbHVkZSBvZiBOb2RlLmggdG8gQm91bmRhcnlQb2ludC5oLiBJ
IGhhZCBhdm9pZGVkCisgICAgICAgICAgdGhpcyBpbiB0aGUgaW5pdGlhbCB2ZXJzaW9uLCBidXQg
bm93IGl0IHNlZW1zIHByYWN0aWNhbCB0byBqdXN0IGxlYXZlIGl0IHRoYXQgd2F5LgorICAgICAg
ICAgIFRoaXMgbGVkIHRvIHJlbW92aW5nIEJvdW5kYXJ5UG9pbnQuY3BwIGFuZCBtb3ZpbmcgYWxs
IGZ1bmN0aW9ucyB0byB0aGUgaGVhZGVyLgorCisgICAgICAgIC0gQ29udmVydGVkIG1hbnkgbWVt
YmVyIGZ1bmN0aW9ucyBvZiB0aGUgUG9zaXRpb24gY2xhc3MgZnJvbSB1c2luZyBpbnQgdG8gdW5z
aWduZWQKKyAgICAgICAgICBmb3Igb2Zmc2V0cy4gVGhlIERPTSBzcGVjaWZpZXMgdW5zaWduZWQg
Zm9yIG9mZnNldHMsIGJ1dCBmb3Igc29tZSByZWFzb24gd2UgdXNlZAorICAgICAgICAgIGludCBm
b3IgdGhlbSBhIGxvdCBoaXN0b3JpY2FsbHksIGV2ZW4gdGhvdWdoIG5lZ2F0aXZlIG51bWJlcnMg
ZG9uJ3QgbWFrZSBzZW5zZS4KKyAgICAgICAgICBOZXcgY2xhc3NlcyBsaWtlIFN0YXRpY1Jhbmdl
LCBTaW1wbGVSYW5nZSwgYW5kIEJvdW5kYXJ5UG9pbnQgYXJlIGFscmVhZHkgdXNpbmcKKyAgICAg
ICAgICB1bnNpZ25lZCBleGNsdXNpdmVseSBhbmQgd2UnbGwgZXZlbnR1YWxseSBjb252ZXJ0IGV2
ZXJ5dGhpbmcuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDogUmVtb3ZlZCBCb3VuZGFyeVBvaW50
LmNwcC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRv
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnRyYXZlcnNlVG9PZmZzZXRJblJhbmdlKTogVXBkYXRl
ZCB0byBwYXNzIGEgcmVmZXJlbmNlCisgICAgICAgIHRvIGEgcmFuZ2UgcmF0aGVyIHRoYW4gYSBw
b2ludGVyLCBhZnRlciBudWxsLWNoZWNraW5nIGl0LgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6bGVuZ3RoRm9yUmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6Om5leHRCb3VuZGFyeSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6cHJldmlvdXNCb3VuZGFyeSk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzdHJpbmdGb3JSYW5nZSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3RyaW5nRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omxlbmd0aEZvclZp
c2libGVQb3NpdGlvblJhbmdlIGNvbnN0KTogRGl0dG8uCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06CisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6YXR0
cmlidXRlZDpdKTogRGl0dG8uCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIGRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlOnNwZWxs
Q2hlY2s6XSk6IERpdHRvLgorCisgICAgICAgICogZG9tL0JvdW5kYXJ5UG9pbnQuY3BwOiBSZW1v
dmVkLgorCisgICAgICAgICogZG9tL0JvdW5kYXJ5UG9pbnQuaDogUmVtb3ZlZCByZWR1bmRhbnQg
aW5jbHVkZXMgYW5kIGZvcndhcmQgZGVjbGFyYXRpb25zCisgICAgICAgIHNpbmNlIHdlJ3JlIG5v
dyBjb21taXR0aW5nIHRvIGluY2x1ZGluZyAiTm9kZS5oIiBoZXJlLiBNb3ZlZCBmdW5jdGlvbnMK
KyAgICAgICAgYWxsIG91dCBvZiB0aGUgLmNwcCBmaWxlIGFuZCBtYWRlIHRoZW0gaW5saW5lcy4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4dFJhbmdlcyk6IFBh
c3MgYSByZWZlcmVuY2UgdG8KKyAgICAgICAgYSByYW5nZSBpbnN0ZWFkIG9mIGEgcG9pbnRlci4K
KworICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlv
bjo6UG9zaXRpb24pOiBUYWtlIHVuc2lnbmVkLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246
Om1vdmVUb1Bvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6bW92
ZVRvT2Zmc2V0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6cGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50IGNvbnN0KTogQ2FzdCB0byB1bnNpZ25lZC4KKyAgICAgICAgKFdlYkNv
cmU6OlBvc2l0aW9uOjphbmNob3JUeXBlRm9yTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKTogVGFrZSB1
bnNpZ25lZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpwcmV2aW91cyBjb25zdCk6IFVz
ZSB1bnNpZ25lZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpuZXh0IGNvbnN0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6dW5jaGVja2VkUHJldmlvdXNPZmZzZXQp
OiBUYWtlIHVuc2lnbmVkLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnVuY2hlY2tlZFBy
ZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UG9zaXRpb246OnVuY2hlY2tlZE5leHRPZmZzZXQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlBvc2l0aW9uOjphdExhc3RFZGl0aW5nUG9zaXRpb25Gb3JOb2RlIGNvbnN0KTogQ2FzdCB0
byB1bnNpZ25lZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjphdEVuZE9mVHJlZSBjb25z
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnJlbmRlcnNJbkRpZmZlcmVu
dFBvc2l0aW9uIGNvbnN0KTogQWRkZWQgY2FzdHMgdG8KKyAgICAgICAgdW5zaWduZWQgYW5kIGFs
c28gcmVtb3ZlZCB1bm5lZWRlZCByZWR1bmRhbnQgY2hlY2tzLiBJbiBhIHBsYWNlIHdoZXJlCisg
ICAgICAgIHdlIGhhZCBhbHJlYWR5IGNoZWNrZWQgdGhhdCBib3RoIG5vZGVzIHdlcmUgdGhlIHNh
bWUgYW5kIGJvdGggb2Zmc2V0cworICAgICAgICB3ZXJlIGRpZmZlcmVudCwgd2Ugd2VyZSBjaGVj
a2luZyB0aGUgdHlwZXMgb2YgYm90aCBub2RlcyAoYnV0IHRoZXkgYXJlCisgICAgICAgIHRoZSBz
YW1lIHNvIG9ubHkgbmVlZCB0byBjaGVjayBvbmUpIGFuZCB3ZSB3ZXJlIGNoZWNraW5nIHRoYXQg
Ym90aAorICAgICAgICBvZmZzZXRzIHdlcmUgZGlmZmVyZW50IChidXQgd2UgYWxyZWFkeSBrbmV3
IHRoZXkgd2VyZSBkaWZmZXJlbnQpLgorICAgICAgICAoV2ViQ29yZTo6c2VhcmNoQWhlYWRGb3JC
ZXR0ZXJNYXRjaCk6IFVzZSB1bnNpZ25lZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpn
ZXRJbmxpbmVCb3hBbmRPZmZzZXQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBv
c2l0aW9uOjplcXVhbHMgY29uc3QpOiBSZW1vdmVkIGEgY2FzdCB0byBpbnQuCisgICAgICAgIChX
ZWJDb3JlOjptYWtlQm91bmRhcnlQb2ludCk6IE1vdmVkIHRoaXMgZnVuY3Rpb24gaGVyZSBzbyBu
b3cgaXQgY2FuIGJlCisgICAgICAgIHVzZWQgaW4gbW9yZSBwbGFjZXMuCisKKyAgICAgICAgKiBk
b20vUG9zaXRpb24uaDogQ2hhbmdlZCBtYW55IGFyZ3VtZW50IHR5cGVzIHRvIHVuc2lnbmVkLiBN
b3ZlZCBkZWNsYXJhdGlvbnMKKyAgICAgICAgb2YgYWxsIHRoZSBmdW5jdGlvbnMgdXAgYWJvdmUg
YWxsIHRoZSBpbmxpbmUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBmdW5jdGlvbnMKKyAgICAgICAg
dG8gc2VwYXJhdGUgaW50ZXJmYWNlIGZyb20gaW1wbGVtZW50YXRpb24gYSBiaXQgYmV0dGVyLiBX
cm90ZSBhIEZJWE1FIGFib3V0CisgICAgICAgIHRoZSBuYW1lIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbi4gTW92ZWQgbWFrZUJvdW5kYXJ5UG9pbnQgaGVyZSBhbmQgZXhwb3J0ZWQKKyAgICAg
ICAgaXQgZnJvbSBXZWJDb3JlIHNvIHdlIGNhbiB1c2UgaXQgZnJvbSBtb3JlIHBsYWNlcy4KKwor
ICAgICAgICAqIGRvbS9SYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVMaXZlUmFu
Z2UpOiBNb3ZlZCB0aGVzZSBmdW5jdGlvbnMgaGVyZSBmcm9tIFNpbXBsZVJhbmdlLmNwcAorICAg
ICAgICBiZWNhdXNlIGEgbGl2ZSByYW5nZSBpcyBtb3JlIGFkdmFuY2VkIGNvbmNlcHQsIHNvIG1h
a2VzIG1vcmUgc2Vuc2UgZm9yIGxpdmUKKyAgICAgICAgcmFuZ2UgdG8ga25vdyBhYm91dCBzaW1w
bGUgcmFuZ2UgcmF0aGVyIHRoYW4gdmljZSB2ZXJzYS4KKworICAgICAgICAqIGRvbS9SYW5nZS5o
OiBSZW1vdmVkIHNvbWUgdW5uZWVkZWQgaW5jbHVkZXMgYW5kIGZvcndhcmQgZGVjbGFyYXRpb25z
LgorICAgICAgICBBZGRlZCBhIEZJWE1FIGFib3V0IHJlbmFtaW5nIHRvIExpdmVSYW5nZS4gTW92
ZWQgdGhlIGNyZWF0ZUxpdmVSYW5nZQorICAgICAgICBmdW5jdGlvbnMgaGVyZS4gTW92ZWQgZGVj
bGFyYXRpb25zIG9mIGZ1bmN0aW9ucyBhYm92ZSBpbmxpbmUgZnVuY3Rpb24gYm9kaWVzLgorCisg
ICAgICAgICogZG9tL1NpbXBsZVJhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUxp
dmVSYW5nZSk6IE1vdmVkIHRvIFJhbmdlLmNwcC4KKworICAgICAgICAqIGRvbS9TaW1wbGVSYW5n
ZS5oOiBFeHBvcnRlZCB0aGUgY29uc3RydWN0b3IuIFJlbW92ZWQgdW5uZWVkZWQgb3ZlcmxvYWQK
KyAgICAgICAgdGhhdCB0YWtlcyBhIFJhbmdlKi4KKworICAgICAgICAqIGVkaXRpbmcvQXBwbHlT
dHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6Om1l
cmdlU3RhcnRXaXRoUHJldmlvdXNJZklkZW50aWNhbCk6CisgICAgICAgIFJlZmFjdG9yZWQgY29k
ZSBhIGJpdCBhbmQgdXNlIHVuc2lnbmVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNv
bW1hbmQ6Om1lcmdlRW5kV2l0aE5leHRJZklkZW50aWNhbCk6IFVzZSB1bnNpZ25lZC4KKworICAg
ICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2aXNpYmxlSW1h
Z2VFbGVtZW50c0luUmFuZ2VXaXRoTm9uTG9hZGVkSW1hZ2VzKTogVXNlIGEgcmVmZXJlbmNlCisg
ICAgICAgIHRvIGEgcmFuZ2UgcmF0aGVyIHRoYW4gYSBwb2ludGVyLgorCisgICAgICAgICogZWRp
dGluZy9FZGl0aW5nLmg6IEFkZGVkIGEgZm9yd2FyZCBkZWNsYXJhdGlvbiBvZiBSYW5nZSB0aGF0
IG5vdyBzZWVtcyB0bworICAgICAgICBiZSBuZWVkZWQgdG8gY29tcGlsZS4KKworICAgICAgICAq
IGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0ZWRU
ZXh0IGNvbnN0KTogQ2FsbCBtYWtlQm91bmRhcnlQb2ludCB0d2ljZSBoZXJlIHRvCisgICAgICAg
IGNvbnZlcnQgdHdvIFBvc2l0aW9uIG9iamVjdHMgaW50byBhIFNpbXBsZVJhbmdlLgorCisgICAg
ICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RO
b2RlKTogQWRkZWQuIFdlIHVzZSB0aGlzIGluc3RlYWQgb2YgUmFuZ2U6OmZpcnN0Tm9kZS4KKyAg
ICAgICAgSWYgd2UgZmluZCB3ZSBuZWVkIGl0IG91dHNpZGUgVGV4dEl0ZXJhdG9yIHdlIGNhbiBm
aW5kIGEgaGVhZGVyIGZvciBpdC4KKyAgICAgICAgTm90IHN1cmUgaXQgd291bGQgYmUgZ3JlYXQg
dG8gYWRkIGl0IHRvIGluIEJvdW5kYXJ5UG9pbnQuaCwgbm9yIGlzIGl0CisgICAgICAgIG9idmlv
dXNseSBiZXR0ZXIgYXMgYSBCb3VuZGFyeVBvaW50IG1lbWJlciBmdW5jdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKTogQ3V0IGRvd24gb24gdGhlIGV4
dHJhIGNvbnN0cnVjdG9ycworICAgICAgICBhbmQgaGF2ZSB0aGUgc2luZ2xlIHJlbWFpbmluZyBv
bmUgdGFrZSBhIFNpbXBsZVJhbmdlLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3
YXJkc1RleHRJdGVyYXRvcjo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcik6CisgICAg
ICAgIERpdHRvLiBBbHNvIGNoYW5nZSBzb21lIGludCB0byB1bnNpZ25lZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNoYXJhY3Rlckl0ZXJhdG9yOjpDaGFyYWN0ZXJJdGVyYXRvcik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6QmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3I6OkJhY2t3YXJkc0NoYXJh
Y3Rlckl0ZXJhdG9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXb3JkQXdhcmVJdGVyYXRv
cjo6V29yZEF3YXJlSXRlcmF0b3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVy
YXRvcjo6cmFuZ2VMZW5ndGgpOiBTaW5jZSB0aGlzIGlzIG9uZSBvZiB0aGUgZnVuY3Rpb25zCisg
ICAgICAgIHRoYXQgc3RpbGwgdGFrZXMgYSBsaXZlIHJhbmdlIHBvaW50ZXIsIHVwZGF0ZWQgaXQg
dG8gY2hlY2sgZm9yIG51bGwgYW5kCisgICAgICAgIHBhc3MgYSByZWZlcmVuY2UgcmF0aGVyIHRo
YW4gYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21M
b2NhdGlvbkFuZExlbmd0aCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aGFzQW55UGxhaW5U
ZXh0KTogUmVtb3ZlZCBub3ctdW5uZWVkZWQgY2FsbCB0byBjcmVhdGVMaXZlUmFuZ2UuCisgICAg
ICAgIChXZWJDb3JlOjpwbGFpblRleHQpOiBVcGRhdGVkIHRoZSBtYWluIGltcGxlbWVudGF0aW9u
IHRvIHRha2UgYSBTaW1wbGVSYW5nZSwKKyAgICAgICAgZWxpbWluYXRpbmcgdGhlIHZlcnNpb24g
dGhhdCB0YWtlcyB0d28gUG9zaXRpb24gb2JqZWN0cywgYnV0IGtlZXBpbmcgdGhlCisgICAgICAg
IG9uZSB0aGF0IHRha2VzIGEgbGl2ZSByYW5nZSBwb2ludGVyIGZvciBub3cuCisgICAgICAgIChX
ZWJDb3JlOjpwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UpOiBSZW1vdmVkIGFsbCBidXQg
dGhlIG9uZSwgYW5kCisgICAgICAgIGhhdmUgdGhhdCBvbmUgdGFrZSBhIFNpbXBsZVJhbmdlLgor
CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDogUmVtb3ZlZCB0aGUgaW5jbHVkZSBv
ZiBTaW1wbGVSYW5nZS5oLiBBbHNvCisgICAgICAgIFVwZGF0ZWQgZm9yIHRoZSBjaGFuZ2VzIGFi
b3ZlLCBlbGltaW5hdGluZyBmaXZlIGRpZmZlcmVudCBjb25zdHJ1Y3RvcnMKKyAgICAgICAgdGhh
dCB0YWtlIGEgbGl2ZSByYW5nZSBhbmQgYWxzbyBvdmVybG9hZHMgdGhhdCB0YWtlIHR3byBQb3Np
dGlvbiBvYmplY3RzLgorCisgICAgICAgICogZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXJhZ3JhcGhDb250ZW50SXRlcmF0b3I6OlBh
cmFncmFwaENvbnRlbnRJdGVyYXRvcik6CisgICAgICAgIENhbGwgbWFrZUJvdW5kYXJ5UG9pbnQg
dHdpY2UgaGVyZSB0byBjb252ZXJ0IHR3byBQb3NpdGlvbiBvYmplY3RzIGludG8KKyAgICAgICAg
YSBTaW1wbGVSYW5nZS4KKworICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnN1ZmZpeExlbmd0aEZvclJhbmdlKTogUGFzcyBhIHJlZmVyZW5jZSB0
byBhIHJhbmdlIGtub3duIHRvCisgICAgICAgIG5vdCBiZSBudWxsLgorICAgICAgICAoV2ViQ29y
ZTo6cHJldmlvdXNCb3VuZGFyeSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJvdW5k
YXJ5KTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW06
CisgICAgICAgIChXZWJDb3JlOjpidWlsZFF1ZXJ5KTogVGFrZSBhIFNpbXBsZVJhbmdlLgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UpOiBBZGRl
ZCBhIG51bGwgY2hlY2sgb24KKyAgICAgICAgYSBsaXZlIHJhbmdlIGFuZCBwYXNzIGEgcmVmZXJl
bmNlIHRvIGl0LgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbToK
KyAgICAgICAgKFdlYkNPcmU6OkRpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0
KTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06Cisg
ICAgICAgIChXZWJDb3JlOjplZGl0aW5nQXR0cmlidXRlZFN0cmluZ0Zyb21SYW5nZSk6IFBhc3Mg
YSByZWZlcmVuY2UgdG8gYSByYW5nZQorICAgICAgICBrbm93biB0byBub3QgYmUgbnVsbC4KKyAg
ICAgICAgKiBwYWdlL1RleHRJbmRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXN0aW1h
dGVkVGV4dENvbG9yc0ZvclJhbmdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjb250YWlu
c09ubHlXaGl0ZVNwYWNlVGV4dCk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1lSU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludGVycHJldGF0aW9uc0ZvckN1cnJlbnRS
b290IGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpzZWxlY3RlZFRleHQgY29uc3Qp
OiBBZGRlZCBhIG51bGwgY2hlY2sgb24KKyAgICAgICAgYSBsaXZlIHJhbmdlIGFuZCBwYXNzIGEg
cmVmZXJlbmNlIHRvIGl0LgorCiAyMDIwLTAzLTE1ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3Jp
LkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIEtleWVkRGVjb2RlckdlbmVyaWMgZmFpbHMgdG8g
YWxsb2NhdGUgVmVjdG9yIHdoaWxlIGRlY29kaW5nIGJyb2tlbiBkYXRhCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRl
MmIzZTY1YjVjYmRmNWUyMzBmNzJmZDQ5Zjk2MjQwMGEyODEyNTcuLjhlNjIxMzlkNDhkNjhmNTUy
ODEyYmM0MWVlOTFmYmE2ZDY0ZjE4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjAt
MDMtMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgbW9z
dCBvZiBUZXh0SXRlcmF0b3Igb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkxMjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1bV0tET01UZXh0SXRlcmF0
b3IgaW5pdFdpdGhSYW5nZTpdKTogTGVhdmUgX3RleHRJdGVyYXRvciBhcyBhIG51bGxwdHIKKyAg
ICAgICAgaWYgdGhlIHBhc3NlZC1pbiByYW5nZSBpcyBuaWwgc2luY2Ugd2Ugbm8gbG9uZ2VyIG9m
ZmVyIGEgd2F5IHRvIGNyZWF0ZQorICAgICAgICBhbiBlbXB0eSBUZXh0SXRlcmF0b3I7IG90aGVy
IGNsaWVudHMgZG9uJ3Qgc2VlbSB0byBuZWVkIG9uZS4KKyAgICAgICAgKC1bV0tET01UZXh0SXRl
cmF0b3IgYWR2YW5jZV0pOiBBZGQgYSBudWxsIGNoZWNrLgorICAgICAgICAoLVtXS0RPTVRleHRJ
dGVyYXRvciBhdEVuZF0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tET01UZXh0SXRlcmF0b3IgY3Vy
cmVudFJhbmdlXSk6IERpdHRvLgorICAgICAgICAoLVtXS0RPTVRleHRJdGVyYXRvciBjdXJyZW50
VGV4dFBvaW50ZXJdKTogRGl0dG8uCisgICAgICAgICgtW1dLRE9NVGV4dEl0ZXJhdG9yIGN1cnJl
bnRUZXh0TGVuZ3RoXSk6IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb21wdXRlVGV4dExlZ2liaWxpdHlTY2FsZXMpOiBQYXNz
CisgICAgICAgIGEgcmVmZXJlbmNlIHRvIGEgcmFuZ2Uga25vd24gbm90IHRvIGJlIG51bGwuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06IFJlbW92ZWQg
YSAidXNpbmcgbmFlbXNhcGNlIFdlYkNvcmUiLgorICAgICAgICBBZGRlZCB0d28gbG9jYWwgZnVu
Y3Rpb25zCisgICAgICAgIChXZWJLaXQ6OnBsYWluVGV4dEZvckNvbnRleHQpOiBBZGRlZC4gSGVs
cGVyIGZvciBqdXN0IHRoaXMgZmlsZSB3aGVyZSBjYWxsaW5nCisgICAgICAgIHBsYWluVGV4dFJl
cGxhY2luZ05vQnJlYWtTcGFjZSBvbiBhIHBvc3NpYmx5IG51bGwgUmFuZ2UgaXMgY29tbW9uLgor
ICAgICAgICAoV2ViS2l0OjpwbGFpblRleHRGb3JEaXNwbGF5KTogRGl0dG8uIFRoaXMgb25lIHBh
c3NlcyB0cnVlIGZvciBpc0Rpc3BsYXlTdHJpbmcuCisgICAgICAgIE5vdCBlbnRpcmVseSBjbGVh
ciBob3cgY2FyZWZ1bGx5IHdlIGNob3NlIHdoaWNoIG9mIHRoZSB0d28gdG8gY2FsbCwgb3IgaWYg
dGhlcmUKKyAgICAgICAgaXMgc3VmZmljaWVudCB0ZXN0IGNvdmVyYWdlLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KTogVXNlIHBsYWluVGV4dEZv
ckNvbnRleHQKKyAgICAgICAgYW5kIHBsYWluVGV4dEZvckRpc3BsYXkuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmdldFNlbGVjdGlvbkNvbnRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6Z2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KTogVXNlIHBsYWlu
VGV4dEZvckRpc3BsYXkuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3REaWN0YXRp
b25Db250ZXh0KTogVXNlIHBsYWluVGV4dEZvckNvbnRleHQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlcGxhY2VTZWxlY3RlZFRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6cmVwbGFjZURpY3RhdGVkVGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjphdXRvY29ycmVjdGlvbkNvbnRleHQpOiBEaXR0by4KKyAgICAgICAg
KFdlYktpdDo6ZGF0YURldGVjdG9yTGlua1Bvc2l0aW9uSW5mb3JtYXRpb24pOiBVc2UgcGxhaW5U
ZXh0Rm9yRGlzcGxheS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdERvY3VtZW50
RWRpdGluZ0NvbnRleHQpOiBVc2UgUmV0YWluUHRyIGluc3RlYWQgb2YKKyAgICAgICAgYXV0b3Jl
bGVhc2UuIFVzZSBtYWtlQm91bmRhcnlQb2ludCB0byBjb252ZXJ0IFBvc2l0aW9uIG9iamVjdHMg
dG8gU2ltcGxlUmFuZ2UuCisKIDIwMjAtMDMtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBTaG91bGQgbm90IHVzZSB2YXJpYWJsZS1sZW5ndGgtYXJyYXkg
KFZMQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBmODAyNjdhNTkwZjNkYjAxM2U1
YjRlZjliNTUxNTg5ZGI3NzNlYmUxLi5lYTYzNzRjZDUwNzdiZmIxNGFlYzQ0MzM3Yzg5OGNmZTRk
NzAxZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIw
MjAtMDMtMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUg
bW9zdCBvZiBUZXh0SXRlcmF0b3Igb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkxMjkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06
CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9sZWdhY3lBdHRyaWJ1dGVkU3RyaW5nRnJvbTpvZmZz
ZXQ6dG86b2Zmc2V0Ol0pOgorICAgICAgICBBZGQgY2FzdHMgdG8gdW5zaWduZWQuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1bV2ViVGV4dEl0ZXJh
dG9yIGluaXRXaXRoUmFuZ2U6XSk6IExlYXZlIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yCisgICAg
ICAgIGFzIGEgbnVsbHB0ciBpZiB0aGUgcGFzc2VkLWluIHJhbmdlIGlzIG5pbCBzaW5jZSB3ZSBu
byBsb25nZXIgb2ZmZXIKKyAgICAgICAgYSB3YXkgdG8gY3JlYXRlIGFuIGVtcHR5IFRleHRJdGVy
YXRvcjsgb3RoZXIgY2xpZW50cyBkb24ndCBzZWVtIHRvCisgICAgICAgIG5lZWQgb25lLgorICAg
ICAgICAoLVtXZWJUZXh0SXRlcmF0b3IgYWR2YW5jZV0pOiBDaGVjayBfcHJpdmF0ZS0+X3RleHRJ
dGVyYXRvciBmb3IgbnVsbC4KKyAgICAgICAgKC1bV2ViVGV4dEl0ZXJhdG9yIGF0RW5kXSk6IERp
dHRvLgorICAgICAgICAoLVtXZWJUZXh0SXRlcmF0b3IgY3VycmVudFJhbmdlXSk6IERpdHRvLgor
ICAgICAgICAoLVtXZWJUZXh0SXRlcmF0b3IgY3VycmVudFRleHRQb2ludGVyXSk6IERpdHRvLgor
ICAgICAgICAoLVtXZWJUZXh0SXRlcmF0b3IgY3VycmVudFRleHRMZW5ndGhdKTogRGl0dG8uCisg
ICAgICAgICgtW1dlYlRleHRJdGVyYXRvciBjdXJyZW50Tm9kZV0pOiBEaXR0by4KKyAgICAgICAg
KC1bV2ViVGV4dEl0ZXJhdG9yIGN1cnJlbnRUZXh0XSk6IERpdHRvLgorCiAyMDIwLTAzLTE1ICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgU2hvdWxkIG5vdCB1
c2UgdmFyaWFibGUtbGVuZ3RoLWFycmF5IChWTEEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDc3ODI2M2U0
YTBiMzE3MzFlM2I1ZjY0ODEwODljMWQwZTMxODU0ODAuLjYxMjIyYTEwMTcxOWNkNDYxOWM2ZGEx
OWNmMDk0NzUxMzFkYTYwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC04MjUsNyArODI1LDYgQEAgZG9t
L0F0dHIuY3BwCiBkb20vQmVmb3JlTG9hZEV2ZW50LmNwcAogZG9tL0JlZm9yZVRleHRJbnNlcnRl
ZEV2ZW50LmNwcAogZG9tL0JlZm9yZVVubG9hZEV2ZW50LmNwcAotZG9tL0JvdW5kYXJ5UG9pbnQu
Y3BwCiBkb20vQ0RBVEFTZWN0aW9uLmNwcAogZG9tL0NoYXJhY3RlckRhdGEuY3BwCiBkb20vQ2hp
bGRMaXN0TXV0YXRpb25TY29wZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3M2YzYTlmOGI2NWUzZDE3ZDk4Y2RhMmZkZmQy
MDI2ZjVlMjA5MTE0Li45YWUwYTlkZTI4NWUxM2I4MjZhY2U4ZjU3M2FmODUwODQ2YjcxOTE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMDY1NCw3ICsxMDY1NCw2IEBACiAJCTkzMTUzQkUxMTQxOTVBNTcwMEZDRjVCRSAvKiBt
aXNzaW5nSW1hZ2UucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gbWlzc2luZ0ltYWdlLnBuZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTMxNkRERjgyNDBDNjRCMzAwOTM0MEFBIC8qIFNpbXBsZVJhbmdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXBsZVJhbmdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMTZEREZBMjQwQzY0QjMwMDkzNDBBQSAvKiBTaW1w
bGVSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW1wbGVS
YW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzMTZEREZEMjQwQzY0Rjgw
MDkzNDBBQSAvKiBCb3VuZGFyeVBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEJvdW5kYXJ5UG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5MzE2RERGRTI0MEM2NEY4MDA5MzQwQUEgLyogQm91bmRhcnlQb2ludC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCb3VuZGFyeVBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzMUFFM0I4MUZCODBFQUUwMEY1RUZCMiAvKiBKU1ZhbHVlSW5XcmFwcGVk
T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVJbldyYXBwZWRPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxQkNDNjAxMTI0REZDQjAwQkU3MEREIC8qIE1lZGlh
Q2FuU3RhcnRMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRp
YUNhblN0YXJ0TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MDc1
LDcgKzI4MDc0LDYgQEAKIAkJCQk4NTAzMUIyNjBBNDRFRkM3MDBGOTkyRTAgLyogQmVmb3JlVW5s
b2FkRXZlbnQuY3BwICovLAogCQkJCTg1MDMxQjI3MEE0NEVGQzcwMEY5OTJFMCAvKiBCZWZvcmVV
bmxvYWRFdmVudC5oICovLAogCQkJCTdDMUU4Q0ZGMUVEMEMyQkUwMEIxRDk4MyAvKiBCZWZvcmVV
bmxvYWRFdmVudC5pZGwgKi8sCi0JCQkJOTMxNkRERkQyNDBDNjRGODAwOTM0MEFBIC8qIEJvdW5k
YXJ5UG9pbnQuY3BwICovLAogCQkJCTkzMTZEREZFMjQwQzY0RjgwMDkzNDBBQSAvKiBCb3VuZGFy
eVBvaW50LmggKi8sCiAJCQkJN0MxRThEMDAxRUQwQzJCRTAwQjFEOTgzIC8qIENhbGxiYWNrUmVz
dWx0LmggKi8sCiAJCQkJNjU1MEI2OTMwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5j
cHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAppbmRleCAxZWI2MjZiNmM5Yjc1YmJiM2VkNmMxOWZmYmJhZGFhMGYzMjhhYTA4Li5mMzM1OTFl
MmY2ODNiYTdjMTlkYTEwNDgzMWQ1OTFkNmE5NDJiNWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTE3OTEsNyArMTc5MSw3IEBAIENo
YXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjp0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShSZWZQ
dHI8UmFuZ2U+cmFuZ2UsIGludCBvCiAgICAgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOwogICAgIGlu
dCBsYXN0U3RhcnRPZmZzZXQgPSAwOwogICAgIAotICAgIFRleHRJdGVyYXRvciBpdGVyYXRvcihy
YW5nZS5nZXQoKSwgZG9Ob3RFbnRlclRleHRDb250cm9scyA/IFRleHRJdGVyYXRvckRlZmF1bHRC
ZWhhdmlvciA6IFRleHRJdGVyYXRvckVudGVyc1RleHRDb250cm9scyk7CisgICAgVGV4dEl0ZXJh
dG9yIGl0ZXJhdG9yKCpyYW5nZSwgZG9Ob3RFbnRlclRleHRDb250cm9scyA/IFRleHRJdGVyYXRv
ckRlZmF1bHRCZWhhdmlvciA6IFRleHRJdGVyYXRvckVudGVyc1RleHRDb250cm9scyk7CiAgICAg
CiAgICAgLy8gV2hlbiB0aGUgcmFuZ2UgaGFzIHplcm8gbGVuZ3RoLCB0aGVyZSBtaWdodCBiZSBy
ZXBsYWNlZCBub2RlIG9yIGJyVGFnIHRoYXQgd2UgbmVlZCB0byBpbmNyZW1lbnQgdGhlIGNoYXJh
Y3Rlck9mZnNldC4KICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgewpAQCAtMTkwMiw3ICsxOTAy
LDcgQEAgaW50IEFYT2JqZWN0Q2FjaGU6Omxlbmd0aEZvclJhbmdlKFJhbmdlKiByYW5nZSkKICAg
ICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaW50IGxlbmd0aCA9IDA7Ci0g
ICAgZm9yIChUZXh0SXRlcmF0b3IgaXQocmFuZ2UpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgp
KSB7CisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXQoKnJhbmdlKTsgIWl0LmF0RW5kKCk7IGl0LmFk
dmFuY2UoKSkgewogICAgICAgICAvLyBub24temVybyBsZW5ndGggbWVhbnMgdGV4dHVhbCBub2Rl
LCB6ZXJvIGxlbmd0aCBtZWFucyByZXBsYWNlZCBub2RlIChBS0EgImF0dGFjaG1lbnRzIiBpbiBB
WCkKICAgICAgICAgaWYgKGl0LnRleHQoKS5sZW5ndGgoKSkKICAgICAgICAgICAgIGxlbmd0aCAr
PSBpdC50ZXh0KCkubGVuZ3RoKCk7CkBAIC0yNjAyLDcgKzI2MDIsNyBAQCBDaGFyYWN0ZXJPZmZz
ZXQgQVhPYmplY3RDYWNoZTo6bmV4dEJvdW5kYXJ5KGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hh
cmFjdGVyT2ZmcwogICAgICAgICByZXR1cm4geyB9OwogICAgIENoYXJhY3Rlck9mZnNldCBlbmQg
PSBzdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2Uoc2VhcmNoUmFuZ2UsIGZhbHNlKTsK
ICAgICAKLSAgICBUZXh0SXRlcmF0b3IgaXQoc2VhcmNoUmFuZ2UuZ2V0KCksIFRleHRJdGVyYXRv
ckVtaXRzT2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJzKTsKKyAgICBUZXh0SXRlcmF0b3IgaXQo
KnNlYXJjaFJhbmdlLCBUZXh0SXRlcmF0b3JFbWl0c09iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVy
cyk7CiAgICAgdW5zaWduZWQgbmV4dCA9IGZvcndhcmRTZWFyY2hGb3JCb3VuZGFyeVdpdGhUZXh0
SXRlcmF0b3IoaXQsIHN0cmluZywgcHJlZml4TGVuZ3RoLCBzZWFyY2hGdW5jdGlvbik7CiAgICAg
CiAgICAgaWYgKGl0LmF0RW5kKCkgJiYgbmV4dCA9PSBzdHJpbmcuc2l6ZSgpKQpAQCAtMjY0Myw3
ICsyNjQzLDcgQEAgQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OnByZXZpb3VzQm91bmRh
cnkoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXIKICAgICAgICAgICAgIHJldHVybiB7
IH07CiAgICAgICAgIGlmICghc2V0UmFuZ2VTdGFydE9yRW5kV2l0aENoYXJhY3Rlck9mZnNldChm
b3J3YXJkc1NjYW5SYW5nZSwgZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCBmYWxzZSkpCiAgICAgICAg
ICAgICByZXR1cm4geyB9OwotICAgICAgICBmb3IgKFRleHRJdGVyYXRvciBmb3J3YXJkc0l0ZXJh
dG9yKGZvcndhcmRzU2NhblJhbmdlLnB0cigpKTsgIWZvcndhcmRzSXRlcmF0b3IuYXRFbmQoKTsg
Zm9yd2FyZHNJdGVyYXRvci5hZHZhbmNlKCkpCisgICAgICAgIGZvciAoVGV4dEl0ZXJhdG9yIGZv
cndhcmRzSXRlcmF0b3IoZm9yd2FyZHNTY2FuUmFuZ2UpOyAhZm9yd2FyZHNJdGVyYXRvci5hdEVu
ZCgpOyBmb3J3YXJkc0l0ZXJhdG9yLmFkdmFuY2UoKSkKICAgICAgICAgICAgIGFwcGVuZChzdHJp
bmcsIGZvcndhcmRzSXRlcmF0b3IudGV4dCgpKTsKICAgICAgICAgc3VmZml4TGVuZ3RoID0gc3Ry
aW5nLnNpemUoKTsKICAgICB9IGVsc2UgaWYgKHJlcXVpcmVzQ29udGV4dEZvcldvcmRCb3VuZGFy
eShjaGFyYWN0ZXJCZWZvcmUoY2hhcmFjdGVyT2Zmc2V0KSkpIHsKQEAgLTI2NjYsNyArMjY2Niw3
IEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpwcmV2aW91c0JvdW5kYXJ5KGNvbnN0
IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyCiAgICAgICAgIHJldHVybiBpdC5hdEVuZCgpID8g
c3RhcnQgOiBjaGFyYWN0ZXJPZmZzZXQ7CiAgICAgCiAgICAgYXV0byYgbm9kZSA9IGl0LmF0RW5k
KCkgPyBzZWFyY2hSYW5nZS0+c3RhcnRDb250YWluZXIoKSA6IGl0LnJhbmdlKCkuc3RhcnQuY29u
dGFpbmVyLmdldCgpOwotICAgIAorCiAgICAgLy8gU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVy
YXRvciBpZ25vcmVzIHJlcGxhY2VkIGVsZW1lbnRzLgogICAgIGlmIChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpyZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3RlcihjaGFyYWN0ZXJPZmZzZXQubm9kZSkpCiAg
ICAgICAgIHJldHVybiBjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zmc2V0KCpjaGFyYWN0ZXJP
ZmZzZXQubm9kZSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA2MTkxMjFkNjYyNzEwNjI0ODkyMzU1MTAxNzJk
Y2Y5M2E1ZDQ5NjA5Li5hNWRmMGM3ZDNlMTZjODUxMzg5ZTY1ZWI1MjUwZDdlYjc1MzNkZWEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKQEAgLTc2LDYgKzc2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKICNp
bmNsdWRlICJSZW5kZXJlZFBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNs
dWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiVGV4dENoZWNraW5nSGVscGVyLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCkBA
IC0xMjY3LDcgKzEyNjgsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3RyaW5nRm9y
UmFuZ2UoUmVmUHRyPFJhbmdlPiByYW5nZSkgY29uc3QKICAgICBpZiAoIXJhbmdlKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAgICAgCi0gICAgVGV4dEl0ZXJhdG9yIGl0KHJhbmdlLmdldCgp
KTsKKyAgICBUZXh0SXRlcmF0b3IgaXQoKnJhbmdlKTsKICAgICBpZiAoaXQuYXRFbmQoKSkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIApAQCAtMTI5Niw3ICsxMjk3LDEwIEBAIFN0cmlu
ZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdHJpbmdGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25z
dCBWaXNpYmxlUG9zaXRpb25SCiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgUmVm
UHRyPFJhbmdlPiByYW5nZSA9IG1ha2VSYW5nZSh2aXNpYmxlUG9zaXRpb25SYW5nZS5zdGFydCwg
dmlzaWJsZVBvc2l0aW9uUmFuZ2UuZW5kKTsKLSAgICBmb3IgKFRleHRJdGVyYXRvciBpdChyYW5n
ZS5nZXQoKSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKKyAgICBpZiAoIXJhbmdlKQor
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdCgqcmFu
Z2UpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CiAgICAgICAgIC8vIG5vbi16ZXJvIGxl
bmd0aCBtZWFucyB0ZXh0dWFsIG5vZGUsIHplcm8gbGVuZ3RoIG1lYW5zIHJlcGxhY2VkIG5vZGUg
KEFLQSAiYXR0YWNobWVudHMiIGluIEFYKQogICAgICAgICBpZiAoaXQudGV4dCgpLmxlbmd0aCgp
KSB7CiAgICAgICAgICAgICAvLyBBZGQgYSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIGZvciBsaXN0
IG1hcmtlciB0ZXh0LgpAQCAtMTMxOCw5ICsxMzIyLDEyIEBAIGludCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpsZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25S
YW5nCiAgICAgaWYgKHZpc2libGVQb3NpdGlvblJhbmdlLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gLTE7CiAKLSAgICBpbnQgbGVuZ3RoID0gMDsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
bWFrZVJhbmdlKHZpc2libGVQb3NpdGlvblJhbmdlLnN0YXJ0LCB2aXNpYmxlUG9zaXRpb25SYW5n
ZS5lbmQpOwotICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHJhbmdlLmdldCgpKTsgIWl0LmF0RW5k
KCk7IGl0LmFkdmFuY2UoKSkgeworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiAtMTsK
KworICAgIGludCBsZW5ndGggPSAwOworICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KCpyYW5nZSk7
ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKICAgICAgICAgLy8gbm9uLXplcm8gbGVuZ3Ro
IG1lYW5zIHRleHR1YWwgbm9kZSwgemVybyBsZW5ndGggbWVhbnMgcmVwbGFjZWQgbm9kZSAoQUtB
ICJhdHRhY2htZW50cyIgaW4gQVgpCiAgICAgICAgIGlmIChpdC50ZXh0KCkubGVuZ3RoKCkpCiAg
ICAgICAgICAgICBsZW5ndGggKz0gaXQudGV4dCgpLmxlbmd0aCgpOwpAQCAtMTMyOSw3ICsxMzM2
LDYgQEAgaW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6Omxlbmd0aEZvclZpc2libGVQb3NpdGlvblJh
bmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmcKICAgICAgICAgICAgICAgICArK2xlbmd0aDsK
ICAgICAgICAgfQogICAgIH0KLQogICAgIHJldHVybiBsZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggYzMxMzA4ZTQwM2VhYzU5MDExYjJmMTNh
YjdkMjljYzhjNmMyYjI4OC4uMTM0ZmUyNmM5NjllMTgwMmNiMTgyODcyMzNjNmIxMmMzYjU4Mjlk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTIyNTMsMTAg
KzIyNTMsMTQgQEAgLSAoTlNBcnJheSAqKWFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6KE5TQXJy
YXkgKiltYXJrZXJzIGF0dHJpYnV0ZWQ6KEJPT0wpYXR0cmkKICAgICBWaXNpYmxlUG9zaXRpb24g
ZW5kVmlzaWJsZVBvc2l0aW9uID0gW2VuZE1hcmtlciB2aXNpYmxlUG9zaXRpb25dOwogICAgIGlm
IChlbmRWaXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAg
CisKKyAgICBhdXRvIHJhbmdlID0gbWFrZVJhbmdlKHN0YXJ0VmlzaWJsZVBvc2l0aW9uLCBlbmRW
aXNpYmxlUG9zaXRpb24pOworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiBuaWw7CisK
ICAgICAvLyBpdGVyYXRlIG92ZXIgdGhlIHJhbmdlIHRvIGJ1aWxkIHRoZSBBWCBhdHRyaWJ1dGVk
IHN0cmluZwogICAgIE5TTXV0YWJsZUFycmF5KiBhcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdOwotICAgIFRleHRJdGVyYXRvciBpdChtYWtlUmFuZ2Uoc3RhcnRWaXNpYmxlUG9z
aXRpb24sIGVuZFZpc2libGVQb3NpdGlvbikuZ2V0KCkpOworICAgIFRleHRJdGVyYXRvciBpdCgq
cmFuZ2UpOwogICAgIGZvciAoOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CiAgICAgICAg
IE5vZGUmIG5vZGUgPSBpdC5yYW5nZSgpLnN0YXJ0LmNvbnRhaW5lcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA4NTM1MWEyNzIwZGFmNjdmYzY1YTBhM2I3
MWMwNzUzMzc3NjE1MjBkLi42NmE4YjMxMDM0MjJmODllNmM2NWE2YjE2N2Y1Nzg3NjdhYjliNTU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMTI1NSw3ICsx
MjU1LDkgQEAgLSAoTlNBdHRyaWJ1dGVkU3RyaW5nKilkb0FYQXR0cmlidXRlZFN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZTooaWQpdGV4dE1hcmtlclJhbmcKIAogICAgICAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gW3Byb3RlY3RlZFNlbGYgcmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2U6dGV4dE1hcmtl
clJhbmdlXTsKICAgICAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZyA9
IFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF07Ci0gICAgICAgIFRleHRJ
dGVyYXRvciBpdChyYW5nZS5nZXQoKSk7CisgICAgICAgIGlmICghcmFuZ2UpCisgICAgICAgICAg
ICByZXR1cm4gbmlsOworICAgICAgICBUZXh0SXRlcmF0b3IgaXQoKnJhbmdlKTsKICAgICAgICAg
d2hpbGUgKCFpdC5hdEVuZCgpKSB7CiAgICAgICAgICAgICBOb2RlJiBub2RlID0gaXQucmFuZ2Uo
KS5zdGFydC5jb250YWluZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3Vu
ZGFyeVBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdlMGYzNjQwN2U3N2VlOGJjZDUwOTU5OGRiYWM0
MGQzNDhjYTQzNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkJvdW5kYXJ5UG9pbnQuaCIKLQotI2luY2x1ZGUgIk5vZGUuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1Cb3VuZGFyeVBvaW50OjpCb3VuZGFyeVBvaW50KGNvbnN0IEJvdW5kYXJ5UG9pbnQm
IG90aGVyKQotICAgIDogY29udGFpbmVyKG90aGVyLmNvbnRhaW5lci5jb3B5UmVmKCkpCi0gICAg
LCBvZmZzZXQob3RoZXIub2Zmc2V0KQotewotfQotCi1Cb3VuZGFyeVBvaW50JiBCb3VuZGFyeVBv
aW50OjpvcGVyYXRvcj0oY29uc3QgQm91bmRhcnlQb2ludCYgb3RoZXIpCi17Ci0gICAgY29udGFp
bmVyID0gb3RoZXIuY29udGFpbmVyLmNvcHlSZWYoKTsKLSAgICBvZmZzZXQgPSBvdGhlci5vZmZz
ZXQ7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1Cb3VuZGFyeVBvaW50JiBCb3VuZGFyeVBvaW50
OjpvcGVyYXRvcj0oQm91bmRhcnlQb2ludCYmKSA9IGRlZmF1bHQ7Ci0KLURvY3VtZW50JiBCb3Vu
ZGFyeVBvaW50Ojpkb2N1bWVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGNvbnRhaW5lci0+ZG9j
dW1lbnQoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5
UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmgKaW5kZXggNjkwZjZm
OTYzYTAzZmQ2ZmM0NjZkZWRmZWFmZjY2OGNiYmIxNTVlNC4uYTVkOGUzZTAxMmVlZGFhOWNkZjcy
OTMxMDhiNDM5MjdiZTEyNGYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5k
YXJ5UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5oCkBAIC0y
NywxMiArMjcsOCBAQAogCiAjaW5jbHVkZSAiTm9kZS5oIgogCi0jaW5jbHVkZSA8d3RmL1JlZi5o
PgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERvY3VtZW50OwotCiBzdHJ1Y3QgQm91
bmRhcnlQb2ludCB7CiAgICAgUmVmPE5vZGU+IGNvbnRhaW5lcjsKICAgICB1bnNpZ25lZCBvZmZz
ZXQgeyAwIH07CkBAIC00Myw3ICszOSw3IEBAIHN0cnVjdCBCb3VuZGFyeVBvaW50IHsKICAgICBC
b3VuZGFyeVBvaW50KGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKICAgICBCb3VuZGFyeVBvaW50KEJv
dW5kYXJ5UG9pbnQmJikgPSBkZWZhdWx0OwogICAgIEJvdW5kYXJ5UG9pbnQmIG9wZXJhdG9yPShj
b25zdCBCb3VuZGFyeVBvaW50Jik7Ci0gICAgQm91bmRhcnlQb2ludCYgb3BlcmF0b3I9KEJvdW5k
YXJ5UG9pbnQmJik7CisgICAgQm91bmRhcnlQb2ludCYgb3BlcmF0b3I9KEJvdW5kYXJ5UG9pbnQm
JikgPSBkZWZhdWx0OwogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7CiB9OwpAQCAt
NTYsNiArNTIsMjQgQEAgaW5saW5lIEJvdW5kYXJ5UG9pbnQ6OkJvdW5kYXJ5UG9pbnQoUmVmPE5v
ZGU+JiYgY29udGFpbmVyLCB1bnNpZ25lZCBvZmZzZXQpCiB7CiB9CiAKK2lubGluZSBCb3VuZGFy
eVBvaW50OjpCb3VuZGFyeVBvaW50KGNvbnN0IEJvdW5kYXJ5UG9pbnQmIG90aGVyKQorICAgIDog
Y29udGFpbmVyKG90aGVyLmNvbnRhaW5lci5jb3B5UmVmKCkpCisgICAgLCBvZmZzZXQob3RoZXIu
b2Zmc2V0KQoreworfQorCitpbmxpbmUgQm91bmRhcnlQb2ludCYgQm91bmRhcnlQb2ludDo6b3Bl
cmF0b3I9KGNvbnN0IEJvdW5kYXJ5UG9pbnQmIG90aGVyKQoreworICAgIGNvbnRhaW5lciA9IG90
aGVyLmNvbnRhaW5lci5jb3B5UmVmKCk7CisgICAgb2Zmc2V0ID0gb3RoZXIub2Zmc2V0OworICAg
IHJldHVybiAqdGhpczsKK30KKworaW5saW5lIERvY3VtZW50JiBCb3VuZGFyeVBvaW50Ojpkb2N1
bWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnRhaW5lci0+ZG9jdW1lbnQoKTsKK30KKwog
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb3VuZGFyeVBvaW50JiBhLCBjb25zdCBCb3Vu
ZGFyeVBvaW50JiBiKQogewogICAgIHJldHVybiBhLmNvbnRhaW5lci5wdHIoKSA9PSBiLmNvbnRh
aW5lci5wdHIoKSAmJiBhLm9mZnNldCA9PSBiLm9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKaW5kZXggY2M3Mjg0NzVjNmMxNDkxZDhh
MDVjYjJmNGQyNGM1NzE3NDgwZDQ4Ny4uNTI2OTAyN2YyNTZjOTgwNjgzOGFhNDE5YjY3N2EwZjUx
NTZkMThiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJv
bGxlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2lu
Y2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJlZERvY3VtZW50TWFya2VyLmgi
CisjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNp
bmNsdWRlIDxzdGRpby5oPgogCkBAIC02Myw3ICs2NCw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyOjpkZXRhY2goKQogVmVjdG9yPFJlZlB0cjxSYW5nZT4+IERvY3VtZW50TWFya2Vy
Q29udHJvbGxlcjo6Y29sbGVjdFRleHRSYW5nZXMoY29uc3QgUmFuZ2UmIHJhbmdlKQogewogICAg
IFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB0ZXh0UmFuZ2U7Ci0gICAgZm9yIChUZXh0SXRlcmF0b3Ig
dGV4dEl0ZXJhdG9yKCZyYW5nZSk7ICF0ZXh0SXRlcmF0b3IuYXRFbmQoKTsgdGV4dEl0ZXJhdG9y
LmFkdmFuY2UoKSkKKyAgICBmb3IgKFRleHRJdGVyYXRvciB0ZXh0SXRlcmF0b3IocmFuZ2UpOyAh
dGV4dEl0ZXJhdG9yLmF0RW5kKCk7IHRleHRJdGVyYXRvci5hZHZhbmNlKCkpCiAgICAgICAgIHRl
eHRSYW5nZS5hcHBlbmQoY3JlYXRlTGl2ZVJhbmdlKHRleHRJdGVyYXRvci5yYW5nZSgpKSk7CiAg
ICAgcmV0dXJuIHRleHRSYW5nZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IGE4MjAw
OTg4ZWNjMjE2MjYyNzEwY2NiMzU1YmZhMWIxYTExNDM2OTguLmE5MWI4MjI1YzM0OTExOGMyNmRm
ZjE0MjM3NDNiMjYzMjU1NDZiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDksIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMjUsNyArMTI1LDcgQEAgUG9zaXRpb246OlBvc2l0aW9uKE5vZGUqIGFu
Y2hvck5vZGUsIEFuY2hvclR5cGUgYW5jaG9yVHlwZSkKICAgICAgICAgJiYgKGlzPFRleHQ+KCpt
X2FuY2hvck5vZGUpIHx8IGVkaXRpbmdJZ25vcmVzQ29udGVudCgqbV9hbmNob3JOb2RlKSkpKTsK
IH0KIAotUG9zaXRpb246OlBvc2l0aW9uKE5vZGUqIGFuY2hvck5vZGUsIGludCBvZmZzZXQsIEFu
Y2hvclR5cGUgYW5jaG9yVHlwZSkKK1Bvc2l0aW9uOjpQb3NpdGlvbihOb2RlKiBhbmNob3JOb2Rl
LCB1bnNpZ25lZCBvZmZzZXQsIEFuY2hvclR5cGUgYW5jaG9yVHlwZSkKICAgICA6IG1fYW5jaG9y
Tm9kZShhbmNob3JOb2RlKQogICAgICwgbV9vZmZzZXQob2Zmc2V0KQogICAgICwgbV9hbmNob3JU
eXBlKGFuY2hvclR5cGUpCkBAIC0xNDUsNyArMTQ1LDcgQEAgUG9zaXRpb246OlBvc2l0aW9uKFRl
eHQqIHRleHROb2RlLCB1bnNpZ25lZCBvZmZzZXQpCiAgICAgQVNTRVJUKG1fYW5jaG9yTm9kZSk7
CiB9CiAKLXZvaWQgUG9zaXRpb246Om1vdmVUb1Bvc2l0aW9uKE5vZGUqIG5vZGUsIGludCBvZmZz
ZXQpCit2b2lkIFBvc2l0aW9uOjptb3ZlVG9Qb3NpdGlvbihOb2RlKiBub2RlLCB1bnNpZ25lZCBv
ZmZzZXQpCiB7CiAgICAgQVNTRVJUKCFlZGl0aW5nSWdub3Jlc0NvbnRlbnQoKm5vZGUpKTsKICAg
ICBBU1NFUlQoYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciB8fCBtX2lz
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKTsKQEAgLTE1NCw3ICsxNTQsOCBAQCB2b2lkIFBvc2l0aW9u
Ojptb3ZlVG9Qb3NpdGlvbihOb2RlKiBub2RlLCBpbnQgb2Zmc2V0KQogICAgIGlmIChtX2lzTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKQogICAgICAgICBtX2FuY2hvclR5cGUgPSBhbmNob3JUeXBlRm9y
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG1fYW5jaG9yTm9kZS5nZXQoKSwgbV9vZmZzZXQpOwogfQot
dm9pZCBQb3NpdGlvbjo6bW92ZVRvT2Zmc2V0KGludCBvZmZzZXQpCisKK3ZvaWQgUG9zaXRpb246
Om1vdmVUb09mZnNldCh1bnNpZ25lZCBvZmZzZXQpCiB7CiAgICAgQVNTRVJUKGFuY2hvclR5cGUo
KSA9PSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IgfHwgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlv
bik7CiAgICAgbV9vZmZzZXQgPSBvZmZzZXQ7CkBAIC0yNDcsNyArMjQ4LDcgQEAgUG9zaXRpb24g
UG9zaXRpb246OnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpIGNvbnN0CiAgICAgICAgIHJldHVy
biBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKG1fYW5jaG9yTm9kZS5nZXQoKSk7CiAgICAgfQog
Ci0gICAgcmV0dXJuIHsgY29udGFpbmVyTm9kZSgpLCBjb21wdXRlT2Zmc2V0SW5Db250YWluZXJO
b2RlKCksIFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciB9OworICAgIHJldHVybiB7IGNvbnRhaW5l
ck5vZGUoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5v
ZGUoKSksIFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciB9OwogfQogCiBSZWZQdHI8Tm9kZT4gUG9z
aXRpb246OmZpcnN0Tm9kZSgpIGNvbnN0CkBAIC0zMDYsNyArMzA3LDcgQEAgTm9kZSogUG9zaXRp
b246OmNvbXB1dGVOb2RlQWZ0ZXJQb3NpdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLVBvc2l0aW9uOjpBbmNob3JUeXBlIFBvc2l0aW9uOjphbmNob3JUeXBlRm9yTGVnYWN5
RWRpdGluZ1Bvc2l0aW9uKE5vZGUqIGFuY2hvck5vZGUsIGludCBvZmZzZXQpCitQb3NpdGlvbjo6
QW5jaG9yVHlwZSBQb3NpdGlvbjo6YW5jaG9yVHlwZUZvckxlZ2FjeUVkaXRpbmdQb3NpdGlvbihO
b2RlKiBhbmNob3JOb2RlLCB1bnNpZ25lZCBvZmZzZXQpCiB7CiAgICAgaWYgKGFuY2hvck5vZGUg
JiYgZWRpdGluZ0lnbm9yZXNDb250ZW50KCphbmNob3JOb2RlKSkgewogICAgICAgICBpZiAob2Zm
c2V0ID09IDApCkBAIC0zMzEsOSArMzMyLDEwIEBAIFBvc2l0aW9uIFBvc2l0aW9uOjpwcmV2aW91
cyhQb3NpdGlvbk1vdmVUeXBlIG1vdmVUeXBlKSBjb25zdAogICAgIGlmICghbm9kZSkKICAgICAg
ICAgcmV0dXJuICp0aGlzOwogCi0gICAgaW50IG9mZnNldCA9IGRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCk7CiAgICAgLy8gRklYTUU6IE5lZ2F0aXZlIG9mZnNldHMgc2hvdWxkbid0IGJlIGFsbG93
ZWQuIFdlIHNob3VsZCBjYXRjaCB0aGlzIGVhcmxpZXIuCi0gICAgQVNTRVJUKG9mZnNldCA+PSAw
KTsKKyAgICBBU1NFUlQoZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+PSAwKTsKKworICAgIHVu
c2lnbmVkIG9mZnNldCA9IGRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAKICAgICBpZiAoYW5j
aG9yVHlwZSgpID09IFBvc2l0aW9uSXNCZWZvcmVBbmNob3IpIHsKICAgICAgICAgbm9kZSA9IGNv
bnRhaW5lck5vZGUoKTsKQEAgLTM4NCw5ICszODYsMTAgQEAgUG9zaXRpb24gUG9zaXRpb246Om5l
eHQoUG9zaXRpb25Nb3ZlVHlwZSBtb3ZlVHlwZSkgY29uc3QKICAgICBpZiAoIW5vZGUpCiAgICAg
ICAgIHJldHVybiAqdGhpczsKIAotICAgIGludCBvZmZzZXQgPSBkZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpOwogICAgIC8vIEZJWE1FOiBOZWdhdGl2ZSBvZmZzZXRzIHNob3VsZG4ndCBiZSBhbGxv
d2VkLiBXZSBzaG91bGQgY2F0Y2ggdGhpcyBlYXJsaWVyLgotICAgIEFTU0VSVChvZmZzZXQgPj0g
MCk7CisgICAgQVNTRVJUKGRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPj0gMCk7CisKKyAgICB1
bnNpZ25lZCBvZmZzZXQgPSBkZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogCiAgICAgaWYgKGFu
Y2hvclR5cGUoKSA9PSBQb3NpdGlvbklzQWZ0ZXJBbmNob3IpIHsKICAgICAgICAgbm9kZSA9IGNv
bnRhaW5lck5vZGUoKTsKQEAgLTM5Nyw3ICs0MDAsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6bmV4
dChQb3NpdGlvbk1vdmVUeXBlIG1vdmVUeXBlKSBjb25zdAogICAgIH0KIAogICAgIE5vZGUqIGNo
aWxkID0gbm9kZS0+dHJhdmVyc2VUb0NoaWxkQXQob2Zmc2V0KTsKLSAgICBpZiAoY2hpbGQgfHwg
KCFub2RlLT5oYXNDaGlsZE5vZGVzKCkgJiYgb2Zmc2V0IDwgbGFzdE9mZnNldEZvckVkaXRpbmco
Km5vZGUpKSkgeworICAgIGlmIChjaGlsZCB8fCAoIW5vZGUtPmhhc0NoaWxkTm9kZXMoKSAmJiBv
ZmZzZXQgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGFzdE9mZnNldEZvckVkaXRpbmcoKm5vZGUp
KSkpIHsKICAgICAgICAgaWYgKGNoaWxkKQogICAgICAgICAgICAgcmV0dXJuIGZpcnN0UG9zaXRp
b25Jbk9yQmVmb3JlTm9kZShjaGlsZCk7CiAKQEAgLTQyMywxNyArNDI2LDE3IEBAIFBvc2l0aW9u
IFBvc2l0aW9uOjpuZXh0KFBvc2l0aW9uTW92ZVR5cGUgbW92ZVR5cGUpIGNvbnN0CiAgICAgcmV0
dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihwYXJlbnQsIG5vZGUtPmNvbXB1dGVOb2Rl
SW5kZXgoKSArIDEpOwogfQogCi1pbnQgUG9zaXRpb246OnVuY2hlY2tlZFByZXZpb3VzT2Zmc2V0
KGNvbnN0IE5vZGUqIG4sIGludCBjdXJyZW50KQoraW50IFBvc2l0aW9uOjp1bmNoZWNrZWRQcmV2
aW91c09mZnNldChjb25zdCBOb2RlKiBuLCB1bnNpZ25lZCBjdXJyZW50KQogewogICAgIHJldHVy
biBuLT5yZW5kZXJlcigpID8gbi0+cmVuZGVyZXIoKS0+cHJldmlvdXNPZmZzZXQoY3VycmVudCkg
OiBjdXJyZW50IC0gMTsKIH0KIAotaW50IFBvc2l0aW9uOjp1bmNoZWNrZWRQcmV2aW91c09mZnNl
dEZvckJhY2t3YXJkRGVsZXRpb24oY29uc3QgTm9kZSogbiwgaW50IGN1cnJlbnQpCitpbnQgUG9z
aXRpb246OnVuY2hlY2tlZFByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbihjb25zdCBO
b2RlKiBuLCB1bnNpZ25lZCBjdXJyZW50KQogewogICAgIHJldHVybiBuLT5yZW5kZXJlcigpID8g
bi0+cmVuZGVyZXIoKS0+cHJldmlvdXNPZmZzZXRGb3JCYWNrd2FyZERlbGV0aW9uKGN1cnJlbnQp
IDogY3VycmVudCAtIDE7CiB9CiAKLWludCBQb3NpdGlvbjo6dW5jaGVja2VkTmV4dE9mZnNldChj
b25zdCBOb2RlKiBuLCBpbnQgY3VycmVudCkKK2ludCBQb3NpdGlvbjo6dW5jaGVja2VkTmV4dE9m
ZnNldChjb25zdCBOb2RlKiBuLCB1bnNpZ25lZCBjdXJyZW50KQogewogICAgIHJldHVybiBuLT5y
ZW5kZXJlcigpID8gbi0+cmVuZGVyZXIoKS0+bmV4dE9mZnNldChjdXJyZW50KSA6IGN1cnJlbnQg
KyAxOwogfQpAQCAtNDYyLDkgKzQ2NSw4IEBAIGJvb2wgUG9zaXRpb246OmF0TGFzdEVkaXRpbmdQ
b3NpdGlvbkZvck5vZGUoKSBjb25zdAogewogICAgIGlmIChpc051bGwoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgLy8gRklYTUU6IFBvc2l0aW9uIGFmdGVyIGFuY2hvciBzaG91bGRuJ3Qg
YmUgY29uc2lkZXJlZCBhcyBhdCB0aGUgZmlyc3QgZWRpdGluZyBwb3NpdGlvbiBmb3Igbm9kZQot
ICAgIC8vIHNpbmNlIHRoYXQgcG9zaXRpb24gcmVzaWRlcyBvdXRzaWRlIG9mIHRoZSBub2RlLgot
ICAgIHJldHVybiBtX2FuY2hvclR5cGUgPT0gUG9zaXRpb25Jc0FmdGVyQW5jaG9yIHx8IG1fYW5j
aG9yVHlwZSA9PSBQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbiB8fCBtX29mZnNldCA+PSBsYXN0T2Zm
c2V0Rm9yRWRpdGluZygqZGVwcmVjYXRlZE5vZGUoKSk7CisgICAgLy8gRklYTUU6IFBvc2l0aW9u
IGFmdGVyIGFuY2hvciBzaG91bGRuJ3QgYmUgY29uc2lkZXJlZCBhcyBhdCB0aGUgZmlyc3QgZWRp
dGluZyBwb3NpdGlvbiBmb3Igbm9kZSBzaW5jZSB0aGF0IHBvc2l0aW9uIHJlc2lkZXMgb3V0c2lk
ZSBvZiB0aGUgbm9kZS4KKyAgICByZXR1cm4gbV9hbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRl
ckFuY2hvciB8fCBtX2FuY2hvclR5cGUgPT0gUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4gfHwgbV9v
ZmZzZXQgPj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxhc3RPZmZzZXRGb3JFZGl0aW5nKCpkZXBy
ZWNhdGVkTm9kZSgpKSk7CiB9CiAKIC8vIEEgcG9zaXRpb24gaXMgY29uc2lkZXJlZCBhdCBlZGl0
aW5nIGJvdW5kYXJ5IGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6CkBAIC01NDEsNyAr
NTQzLDcgQEAgYm9vbCBQb3NpdGlvbjo6YXRFbmRPZlRyZWUoKSBjb25zdAogCiAgICAgc3dpdGNo
IChtX2FuY2hvclR5cGUpIHsKICAgICBjYXNlIFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcjoKLSAg
ICAgICAgcmV0dXJuIG1fb2Zmc2V0ID49IGxhc3RPZmZzZXRGb3JFZGl0aW5nKCptX2FuY2hvck5v
ZGUpOworICAgICAgICByZXR1cm4gbV9vZmZzZXQgPj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxh
c3RPZmZzZXRGb3JFZGl0aW5nKCptX2FuY2hvck5vZGUpKTsKICAgICBjYXNlIFBvc2l0aW9uSXNC
ZWZvcmVBbmNob3I6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIFBvc2l0aW9uSXNB
ZnRlckFuY2hvcjoKQEAgLTEwMzgsMTMgKzEwNDAsMTEgQEAgYm9vbCBQb3NpdGlvbjo6cmVuZGVy
c0luRGlmZmVyZW50UG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdAogICAg
ICAgICBpZiAoaXM8SFRNTEJSRWxlbWVudD4oKmRlcHJlY2F0ZWROb2RlKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmIChtX29mZnNldCA9PSBwb3NpdGlvbi5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpKQorICAgICAgICBpZiAobV9vZmZzZXQgPT0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICghaXM8VGV4dD4oKmRlcHJlY2F0ZWRO
b2RlKCkpICYmICFpczxUZXh0PigqcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKSkpIHsKLSAgICAg
ICAgICAgIGlmIChtX29mZnNldCAhPSBwb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgp
KQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgICAgIGlmICgh
aXM8VGV4dD4oKmRlcHJlY2F0ZWROb2RlKCkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCiAgICAgaWYgKGlzPEhUTUxCUkVsZW1lbnQ+KCpkZXByZWNhdGVkTm9kZSgpKSAmJiBw
b3NpdGlvbi5pc0NhbmRpZGF0ZSgpKQpAQCAtMTA2Miw4ICsxMDYyLDggQEAgYm9vbCBQb3NpdGlv
bjo6cmVuZGVyc0luRGlmZmVyZW50UG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKSBj
b25zdAogICAgIGlmIChpczxSZW5kZXJUZXh0PigqcG9zaXRpb25SZW5kZXJlcikgJiYgIWRvd25j
YXN0PFJlbmRlclRleHQ+KCpwb3NpdGlvblJlbmRlcmVyKS5jb250YWluc0NhcmV0T2Zmc2V0KHBv
c2l0aW9uLm1fb2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW50IHRoaXNS
ZW5kZXJlZE9mZnNldCA9IGlzPFJlbmRlclRleHQ+KCpyZW5kZXJlcikgPyBkb3duY2FzdDxSZW5k
ZXJUZXh0PigqcmVuZGVyZXIpLmNvdW50UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXRzVW50aWwobV9v
ZmZzZXQpIDogbV9vZmZzZXQ7Ci0gICAgaW50IHBvc2l0aW9uUmVuZGVyZWRPZmZzZXQgPSBpczxS
ZW5kZXJUZXh0PigqcG9zaXRpb25SZW5kZXJlcikgPyBkb3duY2FzdDxSZW5kZXJUZXh0PigqcG9z
aXRpb25SZW5kZXJlcikuY291bnRSZW5kZXJlZENoYXJhY3Rlck9mZnNldHNVbnRpbChwb3NpdGlv
bi5tX29mZnNldCkgOiBwb3NpdGlvbi5tX29mZnNldDsKKyAgICB1bnNpZ25lZCB0aGlzUmVuZGVy
ZWRPZmZzZXQgPSBpczxSZW5kZXJUZXh0PigqcmVuZGVyZXIpID8gZG93bmNhc3Q8UmVuZGVyVGV4
dD4oKnJlbmRlcmVyKS5jb3VudFJlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0c1VudGlsKG1fb2Zmc2V0
KSA6IG1fb2Zmc2V0OworICAgIHVuc2lnbmVkIHBvc2l0aW9uUmVuZGVyZWRPZmZzZXQgPSBpczxS
ZW5kZXJUZXh0PigqcG9zaXRpb25SZW5kZXJlcikgPyBkb3duY2FzdDxSZW5kZXJUZXh0PigqcG9z
aXRpb25SZW5kZXJlcikuY291bnRSZW5kZXJlZENoYXJhY3Rlck9mZnNldHNVbnRpbChwb3NpdGlv
bi5tX29mZnNldCkgOiBwb3NpdGlvbi5tX29mZnNldDsKIAogICAgIGlmIChyZW5kZXJlciA9PSBw
b3NpdGlvblJlbmRlcmVyICYmIHRoaXNSZW5kZXJlZE9mZnNldCA9PSBwb3NpdGlvblJlbmRlcmVk
T2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDkxLDEyICsxMDkxLDEyIEBAIGJv
b2wgUG9zaXRpb246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBw
b3NpdGlvbikgY29uc3QKICAgICB9CiAKICAgICBpZiAobmV4dFJlbmRlcmVkRWRpdGFibGUoZGVw
cmVjYXRlZE5vZGUoKSkgPT0gcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKQotICAgICAgICAmJiB0
aGlzUmVuZGVyZWRPZmZzZXQgPT0gY2FyZXRNYXhPZmZzZXQoKmRlcHJlY2F0ZWROb2RlKCkpICYm
ICFwb3NpdGlvblJlbmRlcmVkT2Zmc2V0KSB7CisgICAgICAgICYmIHRoaXNSZW5kZXJlZE9mZnNl
dCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FyZXRNYXhPZmZzZXQoKmRlcHJlY2F0ZWROb2Rl
KCkpKSAmJiAhcG9zaXRpb25SZW5kZXJlZE9mZnNldCkgewogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIAogICAgIGlmIChwcmV2aW91c1JlbmRlcmVkRWRpdGFibGUoZGVwcmVjYXRl
ZE5vZGUoKSkgPT0gcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKQotICAgICAgICAmJiAhdGhpc1Jl
bmRlcmVkT2Zmc2V0ICYmIHBvc2l0aW9uUmVuZGVyZWRPZmZzZXQgPT0gY2FyZXRNYXhPZmZzZXQo
KnBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCkpKSB7CisgICAgICAgICYmICF0aGlzUmVuZGVyZWRP
ZmZzZXQgJiYgcG9zaXRpb25SZW5kZXJlZE9mZnNldCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Y2FyZXRNYXhPZmZzZXQoKnBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCkpKSkgewogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMTY3LDkgKzExNjcsOSBAQCBzdGF0aWMgSW5saW5l
VGV4dEJveCogc2VhcmNoQWhlYWRGb3JCZXR0ZXJNYXRjaChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0
PigqbmV4dCkpIHsKICAgICAgICAgICAgIElubGluZVRleHRCb3gqIG1hdGNoID0gbnVsbHB0cjsK
LSAgICAgICAgICAgIGludCBtaW5PZmZzZXQgPSBJTlRfTUFYOworICAgICAgICAgICAgdW5zaWdu
ZWQgbWluT2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOwogICAg
ICAgICAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSBkb3duY2FzdDxSZW5kZXJUZXh0Pigq
bmV4dCkuZmlyc3RUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7Ci0g
ICAgICAgICAgICAgICAgaW50IGNhcmV0TWluT2Zmc2V0ID0gYm94LT5jYXJldE1pbk9mZnNldCgp
OworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNhcmV0TWluT2Zmc2V0ID0gYm94LT5jYXJldE1p
bk9mZnNldCgpOwogICAgICAgICAgICAgICAgIGlmIChjYXJldE1pbk9mZnNldCA8IG1pbk9mZnNl
dCkgewogICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IGJveDsKICAgICAgICAgICAgICAgICAg
ICAgbWluT2Zmc2V0ID0gY2FyZXRNaW5PZmZzZXQ7CkBAIC0xMjE5LDIwICsxMjE5LDIwIEBAIHZv
aWQgUG9zaXRpb246OmdldElubGluZUJveEFuZE9mZnNldChFQWZmaW5pdHkgYWZmaW5pdHksIFRl
eHREaXJlY3Rpb24gcHJpbWFyeURpCiAgICAgICAgIElubGluZVRleHRCb3gqIGNhbmRpZGF0ZSA9
IG51bGxwdHI7CiAKICAgICAgICAgZm9yIChib3ggPSB0ZXh0UmVuZGVyZXIuZmlyc3RUZXh0Qm94
KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7Ci0gICAgICAgICAgICBpbnQgY2Fy
ZXRNaW5PZmZzZXQgPSBib3gtPmNhcmV0TWluT2Zmc2V0KCk7Ci0gICAgICAgICAgICBpbnQgY2Fy
ZXRNYXhPZmZzZXQgPSBib3gtPmNhcmV0TWF4T2Zmc2V0KCk7CisgICAgICAgICAgICB1bnNpZ25l
ZCBjYXJldE1pbk9mZnNldCA9IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKKyAgICAgICAgICAgIHVu
c2lnbmVkIGNhcmV0TWF4T2Zmc2V0ID0gYm94LT5jYXJldE1heE9mZnNldCgpOwogCi0gICAgICAg
ICAgICBpZiAoY2FyZXRPZmZzZXQgPCBjYXJldE1pbk9mZnNldCB8fCBjYXJldE9mZnNldCA+IGNh
cmV0TWF4T2Zmc2V0IHx8IChjYXJldE9mZnNldCA9PSBjYXJldE1heE9mZnNldCAmJiBib3gtPmlz
TGluZUJyZWFrKCkpKQorICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYXJl
dE9mZnNldCkgPCBjYXJldE1pbk9mZnNldCB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FyZXRP
ZmZzZXQpID4gY2FyZXRNYXhPZmZzZXQgfHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYXJldE9m
ZnNldCkgPT0gY2FyZXRNYXhPZmZzZXQgJiYgYm94LT5pc0xpbmVCcmVhaygpKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKGNhcmV0T2Zmc2V0ID4gY2FyZXRN
aW5PZmZzZXQgJiYgY2FyZXRPZmZzZXQgPCBjYXJldE1heE9mZnNldCkgeworICAgICAgICAgICAg
aWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYXJldE9mZnNldCkgPiBjYXJldE1pbk9mZnNldCAm
JiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FyZXRPZmZzZXQpIDwgY2FyZXRNYXhPZmZzZXQpIHsK
ICAgICAgICAgICAgICAgICBpbmxpbmVCb3ggPSBib3g7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoKChjYXJldE9mZnNldCA9PSBjYXJl
dE1heE9mZnNldCkgXiAoYWZmaW5pdHkgPT0gRE9XTlNUUkVBTSkpCi0gICAgICAgICAgICAgICAg
fHwgKChjYXJldE9mZnNldCA9PSBjYXJldE1pbk9mZnNldCkgXiAoYWZmaW5pdHkgPT0gVVBTVFJF
QU0pKQotICAgICAgICAgICAgICAgIHx8IChjYXJldE9mZnNldCA9PSBjYXJldE1heE9mZnNldCAm
JiBib3gtPm5leHRMZWFmT25MaW5lKCkgJiYgYm94LT5uZXh0TGVhZk9uTGluZSgpLT5pc0xpbmVC
cmVhaygpKSkKKyAgICAgICAgICAgIGlmICgoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYXJldE9m
ZnNldCkgPT0gY2FyZXRNYXhPZmZzZXQpIF4gKGFmZmluaXR5ID09IERPV05TVFJFQU0pKQorICAg
ICAgICAgICAgICAgIHx8ICgoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhcmV0T2Zmc2V0KSA9PSBj
YXJldE1pbk9mZnNldCkgXiAoYWZmaW5pdHkgPT0gVVBTVFJFQU0pKQorICAgICAgICAgICAgICAg
IHx8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FyZXRPZmZzZXQpID09IGNhcmV0TWF4T2Zmc2V0
ICYmIGJveC0+bmV4dExlYWZPbkxpbmUoKSAmJiBib3gtPm5leHRMZWFmT25MaW5lKCktPmlzTGlu
ZUJyZWFrKCkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYW5kaWRh
dGUgPSBib3g7CkBAIC0xNDc4LDcgKzE0NzgsNyBAQCBib29sIFBvc2l0aW9uOjplcXVhbHMoY29u
c3QgUG9zaXRpb24mIG90aGVyKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIG1fYW5jaG9yTm9k
ZSA9PSBvdGhlci5tX2FuY2hvck5vZGUgJiYgIW1fb2Zmc2V0OwogICAgICAgICBjYXNlIFBvc2l0
aW9uSXNBZnRlckNoaWxkcmVuOgogICAgICAgICAgICAgQVNTRVJUKCFpczxUZXh0Pigqb3RoZXIu
bV9hbmNob3JOb2RlKSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9hbmNob3JOb2RlID09IG90aGVy
Lm1fYW5jaG9yTm9kZSAmJiBtX29mZnNldCA9PSBzdGF0aWNfY2FzdDxpbnQ+KG90aGVyLm1fYW5j
aG9yTm9kZS0+Y291bnRDaGlsZE5vZGVzKCkpOworICAgICAgICAgICAgcmV0dXJuIG1fYW5jaG9y
Tm9kZSA9PSBvdGhlci5tX2FuY2hvck5vZGUgJiYgbV9vZmZzZXQgPT0gb3RoZXIubV9hbmNob3JO
b2RlLT5jb3VudENoaWxkTm9kZXMoKTsKICAgICAgICAgY2FzZSBQb3NpdGlvbklzT2Zmc2V0SW5B
bmNob3I6CiAgICAgICAgICAgICByZXR1cm4gbV9hbmNob3JOb2RlID09IG90aGVyLm1fYW5jaG9y
Tm9kZSAmJiBtX29mZnNldCA9PSBvdGhlci5tX29mZnNldDsKICAgICAgICAgY2FzZSBQb3NpdGlv
bklzQmVmb3JlQW5jaG9yOgpAQCAtMTU5OCw2ICsxNTk4LDEyIEBAIFBvc2l0aW9uIGNyZWF0ZUxl
Z2FjeUVkaXRpbmdQb3NpdGlvbihjb25zdCBCb3VuZGFyeVBvaW50JiBwb2ludCkKICAgICByZXR1
cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHBvaW50LmNvbnRhaW5lci5wdHIoKSwgcG9p
bnQub2Zmc2V0KTsKIH0KIAorQm91bmRhcnlQb2ludCBtYWtlQm91bmRhcnlQb2ludChjb25zdCBQ
b3NpdGlvbiYgcG9zaXRpb24pCit7CisgICAgQVNTRVJUKHBvc2l0aW9uLmNvbnRhaW5lck5vZGUo
KSk7CisgICAgcmV0dXJuIHsgKnBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHBvc2l0aW9uLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkgfTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUG9zaXRpb24uaAppbmRleCA2NGMyZDE4ZTBlMWNjOTI0YWEzZTJjMzkwOThhM2FiNDU0
M2VmZmFhLi40N2MwNWM3MDhkNzk2MDhmNmE3MzY3ZmJkNDNhODQxODkwZGIzNTI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9zaXRpb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIC8v
IEZvciBjcmVhdGluZyBvZmZzZXQgcG9zaXRpb25zOgogICAgIC8vIEZJWE1FOiBUaGlzIGNvbnN0
cnVjdG9yIHNob3VsZCBldmVudHVhbGx5IGdvIGF3YXkuIFNlZSBidWcgNjMwNDAuCi0gICAgV0VC
Q09SRV9FWFBPUlQgUG9zaXRpb24oTm9kZSogYW5jaG9yTm9kZSwgaW50IG9mZnNldCwgQW5jaG9y
VHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUG9zaXRpb24oTm9kZSogYW5jaG9yTm9kZSwgdW5z
aWduZWQgb2Zmc2V0LCBBbmNob3JUeXBlKTsKIAogICAgIEFuY2hvclR5cGUgYW5jaG9yVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFuY2hvclR5cGU+KG1fYW5jaG9yVHlwZSk7IH0K
IApAQCAtMTIxLDggKzEyMSw4IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIHNob3VsZCBvbmx5
IGJlIHVzZWQgZm9yIFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciBwb3NpdGlvbnMsIHVubGVzcwog
ICAgIC8vIHRoZSBwb3NpdGlvbiBpcyBhIGxlZ2FjeSBlZGl0aW5nIHBvc2l0aW9uLgotICAgIHZv
aWQgbW92ZVRvUG9zaXRpb24oTm9kZSogYW5jaG9yTm9kZSwgaW50IG9mZnNldCk7Ci0gICAgdm9p
ZCBtb3ZlVG9PZmZzZXQoaW50IG9mZnNldCk7CisgICAgdm9pZCBtb3ZlVG9Qb3NpdGlvbihOb2Rl
KiBhbmNob3JOb2RlLCB1bnNpZ25lZCBvZmZzZXQpOworICAgIHZvaWQgbW92ZVRvT2Zmc2V0KHVu
c2lnbmVkIG9mZnNldCk7CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2Fu
Y2hvck5vZGU7IH0KICAgICBib29sIGlzTm90TnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5jaG9y
Tm9kZTsgfQpAQCAtMTM1LDkgKzEzNSw5IEBAIHB1YmxpYzoKICAgICAvLyB1c2luZyBjb21wb3Nl
ZCBjaGFyYWN0ZXJzLCB0aGUgcmVzdWx0IG1heSBiZSBpbnNpZGUgYSBzaW5nbGUgdXNlci12aXNp
YmxlIGNoYXJhY3RlciBpZiBhIGxpZ2F0dXJlIGlzIGZvcm1lZC4KICAgICBXRUJDT1JFX0VYUE9S
VCBQb3NpdGlvbiBwcmV2aW91cyhQb3NpdGlvbk1vdmVUeXBlID0gQ29kZVBvaW50KSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBQb3NpdGlvbiBuZXh0KFBvc2l0aW9uTW92ZVR5cGUgPSBDb2Rl
UG9pbnQpIGNvbnN0OwotICAgIHN0YXRpYyBpbnQgdW5jaGVja2VkUHJldmlvdXNPZmZzZXQoY29u
c3QgTm9kZSosIGludCBjdXJyZW50KTsKLSAgICBzdGF0aWMgaW50IHVuY2hlY2tlZFByZXZpb3Vz
T2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbihjb25zdCBOb2RlKiwgaW50IGN1cnJlbnQpOwotICAg
IHN0YXRpYyBpbnQgdW5jaGVja2VkTmV4dE9mZnNldChjb25zdCBOb2RlKiwgaW50IGN1cnJlbnQp
OworICAgIHN0YXRpYyBpbnQgdW5jaGVja2VkUHJldmlvdXNPZmZzZXQoY29uc3QgTm9kZSosIHVu
c2lnbmVkIGN1cnJlbnQpOworICAgIHN0YXRpYyBpbnQgdW5jaGVja2VkUHJldmlvdXNPZmZzZXRG
b3JCYWNrd2FyZERlbGV0aW9uKGNvbnN0IE5vZGUqLCB1bnNpZ25lZCBjdXJyZW50KTsKKyAgICBz
dGF0aWMgaW50IHVuY2hlY2tlZE5leHRPZmZzZXQoY29uc3QgTm9kZSosIHVuc2lnbmVkIGN1cnJl
bnQpOwogCiAgICAgLy8gVGhlc2UgY2FuIGJlIGVpdGhlciBpbnNpZGUgb3IganVzdCBiZWZvcmUv
YWZ0ZXIgdGhlIG5vZGUsIGRlcGVuZGluZyBvbgogICAgIC8vIGlmIHRoZSBub2RlIGlzIGlnbm9y
ZWQgYnkgZWRpdGluZyBvciBub3QuCkBAIC0yMDYsMTkgKzIwNiw1MiBAQCBwcml2YXRlOgogICAg
IFBvc2l0aW9uIHByZXZpb3VzQ2hhcmFjdGVyUG9zaXRpb24oRUFmZmluaXR5KSBjb25zdDsKICAg
ICBQb3NpdGlvbiBuZXh0Q2hhcmFjdGVyUG9zaXRpb24oRUFmZmluaXR5KSBjb25zdDsKIAotICAg
IHN0YXRpYyBBbmNob3JUeXBlIGFuY2hvclR5cGVGb3JMZWdhY3lFZGl0aW5nUG9zaXRpb24oTm9k
ZSogYW5jaG9yTm9kZSwgaW50IG9mZnNldCk7CisgICAgc3RhdGljIEFuY2hvclR5cGUgYW5jaG9y
VHlwZUZvckxlZ2FjeUVkaXRpbmdQb3NpdGlvbihOb2RlKiBhbmNob3JOb2RlLCB1bnNpZ25lZCBv
ZmZzZXQpOwogCiAgICAgUmVmUHRyPE5vZGU+IG1fYW5jaG9yTm9kZTsKICAgICAvLyBtX29mZnNl
dCBjYW4gYmUgdGhlIG9mZnNldCBpbnNpZGUgbV9hbmNob3JOb2RlLCBvciBpZiBlZGl0aW5nSWdu
b3Jlc0NvbnRlbnQobV9hbmNob3JOb2RlKQogICAgIC8vIHJldHVybnMgdHJ1ZSwgdGhlbiBvdGhl
ciBwbGFjZXMgaW4gZWRpdGluZyB3aWxsIHRyZWF0IG1fb2Zmc2V0ID09IDAgYXMgImJlZm9yZSB0
aGUgYW5jaG9yIgogICAgIC8vIGFuZCBtX29mZnNldCA+IDAgYXMgImFmdGVyIHRoZSBhbmNob3Ig
bm9kZSIuICBTZWUgcGFyZW50QW5jaG9yZWRFcXVpdmFsZW50IGZvciBtb3JlIGluZm8uCi0gICAg
aW50IG1fb2Zmc2V0IHsgMCB9OworICAgIHVuc2lnbmVkIG1fb2Zmc2V0IHsgMCB9OwogICAgIHVu
c2lnbmVkIG1fYW5jaG9yVHlwZSA6IDM7CiAgICAgYm9vbCBtX2lzTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uIDogMTsKIH07CiAKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBv
c2l0aW9uJik7Citib29sIG9wZXJhdG9yIT0oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlv
biYpOworYm9vbCBvcGVyYXRvcjwoY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOwor
Ym9vbCBvcGVyYXRvcj4oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOworYm9vbCBv
cGVyYXRvcj49KGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKK2Jvb2wgb3BlcmF0
b3I8PShjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7CisKKy8vIEZJWE1FOiBDb25z
aWRlciByZW5hbWluZyB0aGlzIHRvICJtYWtlIiBpbnN0ZWFkIG9mICJjcmVhdGUiIHNpbmNlIHdl
IG5vcm1hbGx5IHVzZSAiY3JlYXRlIiBmb3IgZnVuY3Rpb25zIHRoYXQgYWxsb2NhdGUgaGVhcCBv
YmplY3RzLgorUG9zaXRpb24gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKE5vZGUqLCB1bnNp
Z25lZCBvZmZzZXQpOwogUG9zaXRpb24gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGNvbnN0
IEJvdW5kYXJ5UG9pbnQmKTsKIAorV0VCQ09SRV9FWFBPUlQgQm91bmRhcnlQb2ludCBtYWtlQm91
bmRhcnlQb2ludChjb25zdCBQb3NpdGlvbiYpOworCitQb3NpdGlvbiBwb3NpdGlvbkluUGFyZW50
QmVmb3JlTm9kZShOb2RlKik7CitQb3NpdGlvbiBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKE5v
ZGUqKTsKKworLy8gcG9zaXRpb25CZWZvcmVOb2RlIGFuZCBwb3NpdGlvbkFmdGVyTm9kZSByZXR1
cm4gbmVpZ2hib3ItYW5jaG9yZWQgcG9zaXRpb25zLCBjb25zdHJ1Y3Rpb24gaXMgTygxKQorUG9z
aXRpb24gcG9zaXRpb25CZWZvcmVOb2RlKE5vZGUqIGFuY2hvck5vZGUpOworUG9zaXRpb24gcG9z
aXRpb25BZnRlck5vZGUoTm9kZSogYW5jaG9yTm9kZSk7CisKK2ludCBsYXN0T2Zmc2V0SW5Ob2Rl
KE5vZGUqKTsKKworLy8gZmlyc3RQb3NpdGlvbkluTm9kZSBhbmQgbGFzdFBvc2l0aW9uSW5Ob2Rl
IHJldHVybiBwYXJlbnQtYW5jaG9yZWQgcG9zaXRpb25zLCBsYXN0UG9zaXRpb25Jbk5vZGUgY29u
c3RydWN0aW9uIGlzIE8obikgZHVlIHRvIGNvdW50Q2hpbGROb2RlcygpCitQb3NpdGlvbiBmaXJz
dFBvc2l0aW9uSW5Ob2RlKE5vZGUqIGFuY2hvck5vZGUpOworUG9zaXRpb24gbGFzdFBvc2l0aW9u
SW5Ob2RlKE5vZGUqIGFuY2hvck5vZGUpOworCitpbnQgbWluT2Zmc2V0Rm9yTm9kZShOb2RlKiBh
bmNob3JOb2RlLCB1bnNpZ25lZCBvZmZzZXQpOworYm9vbCBvZmZzZXRJc0JlZm9yZUxhc3ROb2Rl
T2Zmc2V0KHVuc2lnbmVkIG9mZnNldCwgTm9kZSogYW5jaG9yTm9kZSk7CisKK1JlZlB0cjxOb2Rl
PiBjb21tb25TaGFkb3dJbmNsdWRpbmdBbmNlc3Rvcihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBv
c2l0aW9uJik7CisKK1dURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBjb25zdCBQb3NpdGlvbiYpOworCisvLyBpbmxpbmVzCisKIGlubGluZSBQb3NpdGlvbiBjcmVh
dGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oTm9kZSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0KQogewog
ICAgIHJldHVybiB7IG5vZGUsIG9mZnNldCwgUG9zaXRpb246OkxlZ2FjeUVkaXRpbmdQb3NpdGlv
bkZsYWc6Ok9uIH07CkBAIC0yNjAsOSArMjkzLDYgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I8PShj
b25zdCBQb3NpdGlvbiYgYSwgY29uc3QgUG9zaXRpb24mIGIpCiAgICAgcmV0dXJuICFhLmlzTnVs
bCgpICYmICFiLmlzTnVsbCgpICYmIChhID09IGIgfHwgYSA8IGIpOwogfQogCi1Qb3NpdGlvbiBw
b3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShOb2RlKik7Ci1Qb3NpdGlvbiBwb3NpdGlvbkluUGFy
ZW50QWZ0ZXJOb2RlKE5vZGUqKTsKLQogLy8gcG9zaXRpb25CZWZvcmVOb2RlIGFuZCBwb3NpdGlv
bkFmdGVyTm9kZSByZXR1cm4gbmVpZ2hib3ItYW5jaG9yZWQgcG9zaXRpb25zLCBjb25zdHJ1Y3Rp
b24gaXMgTygxKQogaW5saW5lIFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTm9kZShOb2RlKiBhbmNo
b3JOb2RlKQogewpAQCAtMjc4LDcgKzMwOCw3IEBAIGlubGluZSBQb3NpdGlvbiBwb3NpdGlvbkFm
dGVyTm9kZShOb2RlKiBhbmNob3JOb2RlKQogCiBpbmxpbmUgaW50IGxhc3RPZmZzZXRJbk5vZGUo
Tm9kZSogbm9kZSkKIHsKLSAgICByZXR1cm4gbm9kZS0+aXNDaGFyYWN0ZXJEYXRhTm9kZSgpID8g
bm9kZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCkgOiBzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPmNvdW50
Q2hpbGROb2RlcygpKTsKKyAgICByZXR1cm4gbm9kZS0+aXNDaGFyYWN0ZXJEYXRhTm9kZSgpID8g
bm9kZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCkgOiBub2RlLT5jb3VudENoaWxkTm9kZXMoKTsKIH0K
IAogLy8gZmlyc3RQb3NpdGlvbkluTm9kZSBhbmQgbGFzdFBvc2l0aW9uSW5Ob2RlIHJldHVybiBw
YXJlbnQtYW5jaG9yZWQgcG9zaXRpb25zLCBsYXN0UG9zaXRpb25Jbk5vZGUgY29uc3RydWN0aW9u
IGlzIE8obikgZHVlIHRvIGNvdW50Q2hpbGROb2RlcygpCkBAIC0yOTYsMjQgKzMyNiwyNCBAQCBp
bmxpbmUgUG9zaXRpb24gbGFzdFBvc2l0aW9uSW5Ob2RlKE5vZGUqIGFuY2hvck5vZGUpCiAgICAg
cmV0dXJuIFBvc2l0aW9uKGFuY2hvck5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJDaGls
ZHJlbik7CiB9CiAKLWlubGluZSBpbnQgbWluT2Zmc2V0Rm9yTm9kZShOb2RlKiBhbmNob3JOb2Rl
LCBpbnQgb2Zmc2V0KQoraW5saW5lIGludCBtaW5PZmZzZXRGb3JOb2RlKE5vZGUqIGFuY2hvck5v
ZGUsIHVuc2lnbmVkIG9mZnNldCkKIHsKICAgICBpZiAoYW5jaG9yTm9kZS0+aXNDaGFyYWN0ZXJE
YXRhTm9kZSgpKQotICAgICAgICByZXR1cm4gc3RkOjptaW4ob2Zmc2V0LCBhbmNob3JOb2RlLT5t
YXhDaGFyYWN0ZXJPZmZzZXQoKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1pbjx1bnNpZ25lZD4o
b2Zmc2V0LCBhbmNob3JOb2RlLT5tYXhDaGFyYWN0ZXJPZmZzZXQoKSk7CiAKLSAgICBpbnQgbmV3
T2Zmc2V0ID0gMDsKKyAgICB1bnNpZ25lZCBuZXdPZmZzZXQgPSAwOwogICAgIGZvciAoTm9kZSog
bm9kZSA9IGFuY2hvck5vZGUtPmZpcnN0Q2hpbGQoKTsgbm9kZSAmJiBuZXdPZmZzZXQgPCBvZmZz
ZXQ7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQogICAgICAgICBuZXdPZmZzZXQrKzsKICAg
ICAKICAgICByZXR1cm4gbmV3T2Zmc2V0OwogfQogCi1pbmxpbmUgYm9vbCBvZmZzZXRJc0JlZm9y
ZUxhc3ROb2RlT2Zmc2V0KGludCBvZmZzZXQsIE5vZGUqIGFuY2hvck5vZGUpCitpbmxpbmUgYm9v
bCBvZmZzZXRJc0JlZm9yZUxhc3ROb2RlT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCwgTm9kZSogYW5j
aG9yTm9kZSkKIHsKICAgICBpZiAoYW5jaG9yTm9kZS0+aXNDaGFyYWN0ZXJEYXRhTm9kZSgpKQot
ICAgICAgICByZXR1cm4gb2Zmc2V0IDwgYW5jaG9yTm9kZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCk7
CisgICAgICAgIHJldHVybiBvZmZzZXQgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYW5jaG9yTm9k
ZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCkpOwogCi0gICAgaW50IGN1cnJlbnRPZmZzZXQgPSAwOwor
ICAgIHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQgPSAwOwogICAgIGZvciAoTm9kZSogbm9kZSA9IGFu
Y2hvck5vZGUtPmZpcnN0Q2hpbGQoKTsgbm9kZSAmJiBjdXJyZW50T2Zmc2V0IDwgb2Zmc2V0OyBu
b2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgY3VycmVudE9mZnNldCsrOwogICAg
IApAQCAtMzIxLDEwICszNTEsNiBAQCBpbmxpbmUgYm9vbCBvZmZzZXRJc0JlZm9yZUxhc3ROb2Rl
T2Zmc2V0KGludCBvZmZzZXQsIE5vZGUqIGFuY2hvck5vZGUpCiAgICAgcmV0dXJuIG9mZnNldCA8
IGN1cnJlbnRPZmZzZXQ7CiB9CiAKLVJlZlB0cjxOb2RlPiBjb21tb25TaGFkb3dJbmNsdWRpbmdB
bmNlc3Rvcihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7Ci0KLVdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBQb3NpdGlvbiYpOwotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1JhbmdlLmNwcAppbmRleCA5YzExMzQwNWUyNzc1Y2Y3ZjA1YzdmOGFjM2ZhMTgwMGIzZDQ1OTdm
Li5kYmQzZWVlNTg3ZDQ1M2MyYzJmZjJiMDdiOWYwY2JjN2E3YWYyODQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5n
ZS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIKKyNpbmNsdWRl
ICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlZp
c2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgpAQCAtMTg2OSw2ICsx
ODcwLDE4IEBAIEZsb2F0UmVjdCBSYW5nZTo6YWJzb2x1dGVCb3VuZGluZ1JlY3QoT3B0aW9uU2V0
PEJvdW5kaW5nUmVjdEJlaGF2aW9yPiByZWN0T3B0aW9uCiAgICAgcmV0dXJuIGJvdW5kaW5nUmVj
dChDb29yZGluYXRlU3BhY2U6OkFic29sdXRlLCByZWN0T3B0aW9ucyk7CiB9CiAKK1JlZjxSYW5n
ZT4gY3JlYXRlTGl2ZVJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1
cm4gUmFuZ2U6OmNyZWF0ZShyYW5nZS5zdGFydC5kb2N1bWVudCgpLCByYW5nZS5zdGFydC5jb250
YWluZXIucHRyKCksIHJhbmdlLnN0YXJ0Lm9mZnNldCwgcmFuZ2UuZW5kLmNvbnRhaW5lci5wdHIo
KSwgcmFuZ2UuZW5kLm9mZnNldCk7Cit9CisKK1JlZlB0cjxSYW5nZT4gY3JlYXRlTGl2ZVJhbmdl
KGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UpCit7CisgICAgaWYgKCFyYW5nZSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZSgqcmFu
Z2UpOworfQorCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiB0
cywgY29uc3QgUmFuZ2VCb3VuZGFyeVBvaW50JiByKQogewogICAgIHJldHVybiB0cyA8PCByLnRv
UG9zaXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKaW5kZXggYjQ5M2M3Y2Q0NmQ1NTE5NTkwZWZkOTdlNWRl
YzdiOWM0OWM0MmI2Zi4uNjljZjJiOTcyZWRhOGVmNjIzYzc0NGRlOTAzM2NiYTQ2ZmEzZDdiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1JhbmdlLmgKQEAgLTMsNyArMyw3IEBACiAgKiAoQykgMjAwMCBHdW5uc3RlaW4gTHll
IChndW5uc3RlaW5AbmV0Y29tLm5vKQogICogKEMpIDIwMDAgRnJlZGVyaWsgSG9sbGplbiAoZnJl
ZGVyaWsuaG9sbGplbkBoaWcubm8pCiAgKiAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3Qu
Y29tKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtMjcsMjYgKzI3LDIzIEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSW50
UmVjdC5oIgogI2luY2x1ZGUgIlJhbmdlQm91bmRhcnlQb2ludC5oIgotI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFzcyBET01SZWN0OwogY2xhc3MgRE9NUmVjdExp
c3Q7Ci1jbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBGbG9h
dFF1YWQ7Ci1jbGFzcyBOb2RlOwogY2xhc3MgTm9kZVdpdGhJbmRleDsKIGNsYXNzIFJlbmRlclRl
eHQ7CiBjbGFzcyBTZWxlY3Rpb25SZWN0OwogY2xhc3MgVGV4dDsKIGNsYXNzIFZpc2libGVQb3Np
dGlvbjsKIAorc3RydWN0IFNpbXBsZVJhbmdlOworCisvLyBGSVhNRTogUmVuYW1lIHRvIExpdmVS
YW5nZSwgd2hpbGUgbGVhdmluZyB0aGUgRE9NLWV4cG9zZWQgbmFtZSBhcyBSYW5nZS4KIGNsYXNz
IFJhbmdlIDogcHVibGljIFJlZkNvdW50ZWQ8UmFuZ2U+IHsKIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPFJhbmdlPiBjcmVhdGUoRG9jdW1lbnQmKTsKQEAgLTE4NSwxNSAr
MTgyLDIwIEBAIFdFQkNPUkVfRVhQT1JUIFJlZjxSYW5nZT4gcmFuZ2VPZkNvbnRlbnRzKE5vZGUm
KTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgYXJlUmFuZ2VzRXF1YWwoY29uc3QgUmFuZ2UqLCBjb25z
dCBSYW5nZSopOwogV0VCQ09SRV9FWFBPUlQgYm9vbCByYW5nZXNPdmVybGFwKGNvbnN0IFJhbmdl
KiwgY29uc3QgUmFuZ2UqKTsKIAorV0VCQ09SRV9FWFBPUlQgUmVmPFJhbmdlPiBjcmVhdGVMaXZl
UmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmKTsKK1dFQkNPUkVfRVhQT1JUIFJlZlB0cjxSYW5nZT4g
Y3JlYXRlTGl2ZVJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpOworCitib29sIGRv
Y3VtZW50T3JkZXJDb21wYXJhdG9yKGNvbnN0IE5vZGUqLCBjb25zdCBOb2RlKik7CisKK1dURjo6
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBSYW5nZUJvdW5k
YXJ5UG9pbnQmKTsKK1dURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBjb25zdCBSYW5nZSYpOworCiBpbmxpbmUgYm9vbCBkb2N1bWVudE9yZGVyQ29tcGFyYXRvcihj
b25zdCBOb2RlKiBhLCBjb25zdCBOb2RlKiBiKQogewogICAgIHJldHVybiBSYW5nZTo6Y29tcGFy
ZUJvdW5kYXJ5UG9pbnRzKGNvbnN0X2Nhc3Q8Tm9kZSo+KGEpLCAwLCBjb25zdF9jYXN0PE5vZGUq
PihiKSwgMCkucmVsZWFzZVJldHVyblZhbHVlKCkgPCAwOwogfQotICAgIAotV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFJhbmdlQm91bmRhcnlQb2lu
dCYpOwotV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0
IFJhbmdlJik7CiAKLX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNp
ZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCiAvLyBPdXRzaWRlIHRoZSBXZWJDb3JlIG5hbWVzcGFj
ZSBmb3IgZWFzZSBvZiBpbnZvY2F0aW9uIGZyb20gdGhlIGRlYnVnZ2VyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aW1wbGVSYW5nZS5jcHAKaW5kZXggMDlkZjk5Yzg1YmYxZTg1NzFkYmVhYTU5YWNkZTg1YTA1NWUz
OTc2Ny4uYjRmZTJiODVkM2FmODVjYjgzMDc4ZDdhOWU1MTIxN2YxNDA1MDM2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2ltcGxlUmFuZ2UuY3BwCkBAIC01MywxNiArNTMsNCBAQCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU2ltcGxlUmFuZ2UmIGEsIGNvbnN0IFNpbXBsZVJhbmdlJiBiKQogICAgIHJldHVybiBh
LnN0YXJ0ID09IGIuc3RhcnQgJiYgYS5lbmQgPT0gYi5lbmQ7CiB9CiAKLVJlZjxSYW5nZT4gY3Jl
YXRlTGl2ZVJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKLXsKLSAgICByZXR1cm4gUmFu
Z2U6OmNyZWF0ZShyYW5nZS5zdGFydC5kb2N1bWVudCgpLCByYW5nZS5zdGFydC5jb250YWluZXIu
cHRyKCksIHJhbmdlLnN0YXJ0Lm9mZnNldCwgcmFuZ2UuZW5kLmNvbnRhaW5lci5wdHIoKSwgcmFu
Z2UuZW5kLm9mZnNldCk7Ci19Ci0KLVJlZlB0cjxSYW5nZT4gY3JlYXRlTGl2ZVJhbmdlKGNvbnN0
IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UpCi17Ci0gICAgaWYgKCFyYW5nZSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZSgqcmFuZ2UpOwot
fQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCmluZGV4IDY2NWM5YjhhNDk1NzNiZjVlZDdi
ZGZiYTg5Mzk3MTA5MjEzOTNhNTkuLjEyN2YyZjE4OTQ2NGMxMGM0OWE1NTQ0ODY2ZWFjNDk0ZDRl
ODhiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCkBAIC00MywyNSArNDMsMTYgQEAgc3Ry
dWN0IFNpbXBsZVJhbmdlIHsKICAgICBib29sIGNvbGxhcHNlZCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXJ0ID09IGVuZDsgfQogCiAgICAgU2ltcGxlUmFuZ2UoY29uc3QgQm91bmRhcnlQb2ludCYsIGNv
bnN0IEJvdW5kYXJ5UG9pbnQmKTsKLSAgICBTaW1wbGVSYW5nZShCb3VuZGFyeVBvaW50JiYsIEJv
dW5kYXJ5UG9pbnQmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UoQm91bmRhcnlQ
b2ludCYmLCBCb3VuZGFyeVBvaW50JiYpOwogCisgICAgLy8gQ29udmVuaWVuY2Ugb3ZlcmxvYWRz
IHRvIGhlbHAgd2l0aCB0cmFuc2l0aW9uIGZyb20gdXNpbmcgYSBsb3Qgb2YgbGl2ZSByYW5nZXMu
CisgICAgLy8gRklYTUU6IE1vdmUgdG8gdGhlIFJhbmdlIGNsYXNzIGhlYWRlciBhcyBlaXRoZXIg
bWFrZVNpbXBsZVJhbmdlIG9yIFJhbmdlOjpvcGVyYXRvciBTaW1wbGVSYW5nZS4KICAgICBXRUJD
T1JFX0VYUE9SVCBTaW1wbGVSYW5nZShjb25zdCBSYW5nZSYpOwotCi0gICAgLy8gQ29udmVuaWVu
Y2Ugb3ZlcmxvYWRzIHRvIGhlbHAgd2l0aCB0cmFuc2l0aW9uIGZyb20gdXNpbmcgYSBsb3Qgb2Yg
bGl2ZSByYW5nZXMuIENvbnNpZGVyIHJlbW92aW5nIHRoZXNlIGV2ZW50dWFsbHkuCi0gICAgU2lt
cGxlUmFuZ2UoY29uc3QgUmFuZ2UqKTsgLy8gQ3Jhc2hlcyBpZiBwYXNzZWQgYSBudWxscHRyLgog
ICAgIFNpbXBsZVJhbmdlKGNvbnN0IFJlZjxSYW5nZT4mKTsKIH07CiAKIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJik7CiAKLVdFQkNPUkVfRVhQ
T1JUIFJlZjxSYW5nZT4gY3JlYXRlTGl2ZVJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJik7Ci1XRUJD
T1JFX0VYUE9SVCBSZWZQdHI8UmFuZ2U+IGNyZWF0ZUxpdmVSYW5nZShjb25zdCBPcHRpb25hbDxT
aW1wbGVSYW5nZT4mKTsKLQotaW5saW5lIFNpbXBsZVJhbmdlOjpTaW1wbGVSYW5nZShjb25zdCBS
YW5nZSogcmFuZ2UpCi0gICAgOiBTaW1wbGVSYW5nZSgqcmFuZ2UpCi17Ci19Ci0KIGlubGluZSBT
aW1wbGVSYW5nZTo6U2ltcGxlUmFuZ2UoY29uc3QgUmVmPFJhbmdlPiYgcmFuZ2UpCiAgICAgOiBT
aW1wbGVSYW5nZShyYW5nZS5nZXQoKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggNTJlNmU0ZTBiMTdkZGY5MGRkMWJlYjVlZGQ5MWMwMDE1
ZGEzMjk3NC4uZWE2ZjIwMTUxZDljOWUyMjJmYjg5MWY0MTE0MWY3NWIzYzljOTg1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTEyNjYsOCAr
MTI2Niw3IEBAIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OmlzVmFsaWRDYXJldFBvc2l0aW9uSW5U
ZXh0Tm9kZShjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiBib29sIEFwcGx5U3R5bGVDb21tYW5k
OjptZXJnZVN0YXJ0V2l0aFByZXZpb3VzSWZJZGVudGljYWwoY29uc3QgUG9zaXRpb24mIHN0YXJ0
LCBjb25zdCBQb3NpdGlvbiYgZW5kKQogewogICAgIGF1dG8qIHN0YXJ0Tm9kZSA9IHN0YXJ0LmNv
bnRhaW5lck5vZGUoKTsKLSAgICBpbnQgc3RhcnRPZmZzZXQgPSBzdGFydC5jb21wdXRlT2Zmc2V0
SW5Db250YWluZXJOb2RlKCk7Ci0gICAgaWYgKHN0YXJ0T2Zmc2V0KQorICAgIGlmIChzdGFydC5j
b21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGlmIChpc0F0b21pY05vZGUoc3RhcnROb2RlKSkgewpAQCAtMTI4OSwxMCArMTI4OCwxMSBA
QCBib29sIEFwcGx5U3R5bGVDb21tYW5kOjptZXJnZVN0YXJ0V2l0aFByZXZpb3VzSWZJZGVudGlj
YWwoY29uc3QgUG9zaXRpb24mIHN0YXJ0LAogICAgIEFTU0VSVChzdGFydENoaWxkKTsKICAgICBt
ZXJnZUlkZW50aWNhbEVsZW1lbnRzKHByZXZpb3VzRWxlbWVudCwgZWxlbWVudCk7CiAKLSAgICBp
bnQgc3RhcnRPZmZzZXRBZGp1c3RtZW50ID0gc3RhcnRDaGlsZC0+Y29tcHV0ZU5vZGVJbmRleCgp
OwotICAgIGludCBlbmRPZmZzZXRBZGp1c3RtZW50ID0gc3RhcnROb2RlID09IGVuZC5kZXByZWNh
dGVkTm9kZSgpID8gc3RhcnRPZmZzZXRBZGp1c3RtZW50IDogMDsKLSAgICB1cGRhdGVTdGFydEVu
ZCh7IHN0YXJ0Tm9kZSwgc3RhcnRPZmZzZXRBZGp1c3RtZW50LCBQb3NpdGlvbjo6UG9zaXRpb25J
c09mZnNldEluQW5jaG9yfSwKLSAgICAgICAgeyBlbmQuZGVwcmVjYXRlZE5vZGUoKSwgZW5kLmRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgKyBlbmRPZmZzZXRBZGp1c3RtZW50LCBQb3NpdGlvbjo6
UG9zaXRpb25Jc09mZnNldEluQW5jaG9yIH0pOworICAgIC8vIEZJWE1FOiBJbmNvbnNpc3RlbnQg
dGhhdCB3ZSB1c2UgY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSBmb3Igc3RhcnQsIGJ1dCBk
ZXByZWNhdGVkRWRpdGluZ09mZnNldCBmb3IgZW5kLgorICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
ID0gc3RhcnRDaGlsZC0+Y29tcHV0ZU5vZGVJbmRleCgpOworICAgIHVuc2lnbmVkIGVuZE9mZnNl
dCA9IGVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpICsgKHN0YXJ0Tm9kZSA9PSBlbmQuZGVw
cmVjYXRlZE5vZGUoKSA/IHN0YXJ0T2Zmc2V0IDogMCk7CisgICAgdXBkYXRlU3RhcnRFbmQoeyBz
dGFydE5vZGUsIHN0YXJ0T2Zmc2V0LCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9y
IH0sCisgICAgICAgIHsgZW5kLmRlcHJlY2F0ZWROb2RlKCksIGVuZE9mZnNldCwgUG9zaXRpb246
OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MTMyMiw3ICsxMzIyLDcgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6bWVyZ2VFbmRXaXRoTmV4
dElmSWRlbnRpY2FsKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QKICAgICBtZXJnZUlkZW50
aWNhbEVsZW1lbnRzKGVsZW1lbnQsIG5leHRFbGVtZW50KTsKIAogICAgIGJvb2wgc2hvdWxkVXBk
YXRlU3RhcnQgPSBzdGFydC5jb250YWluZXJOb2RlKCkgPT0gZW5kTm9kZTsKLSAgICBpbnQgZW5k
T2Zmc2V0ID0gbmV4dENoaWxkID8gbmV4dENoaWxkLT5jb21wdXRlTm9kZUluZGV4KCkgOiBuZXh0
RWxlbWVudC5jb3VudENoaWxkTm9kZXMoKTsKKyAgICB1bnNpZ25lZCBlbmRPZmZzZXQgPSBuZXh0
Q2hpbGQgPyBuZXh0Q2hpbGQtPmNvbXB1dGVOb2RlSW5kZXgoKSA6IG5leHRFbGVtZW50LmNvdW50
Q2hpbGROb2RlcygpOwogICAgIHVwZGF0ZVN0YXJ0RW5kKHNob3VsZFVwZGF0ZVN0YXJ0ID8gUG9z
aXRpb24oJm5leHRFbGVtZW50LCBzdGFydC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSwgUG9zaXRp
b246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcikgOiBzdGFydCwKICAgICAgICAgeyAmbmV4dEVs
ZW1lbnQsIGVuZE9mZnNldCwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciB9KTsK
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCmluZGV4IGZmOTFm
ZTAwOGVmYjk0NWU4ZDRhNmI1ZmFmMGIxNmMwMTI1MTNiYzMuLjk4NTE4ZTI4NmI5MzRjODhlZDc0
M2I2NDY2OTA1OTBkZmQ5MzM5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApAQCAt
MTMwOCw3ICsxMzA4LDcgQEAgSW50UmVjdCBhYnNvbHV0ZUJvdW5kc0ZvckxvY2FsQ2FyZXRSZWN0
KFJlbmRlckJsb2NrKiByZW5kZXJlckZvckNhcmV0UGFpbnRpbmcsIGMKIEhhc2hTZXQ8UmVmUHRy
PEhUTUxJbWFnZUVsZW1lbnQ+PiB2aXNpYmxlSW1hZ2VFbGVtZW50c0luUmFuZ2VXaXRoTm9uTG9h
ZGVkSW1hZ2VzKGNvbnN0IFJhbmdlJiByYW5nZSkKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxIVE1M
SW1hZ2VFbGVtZW50Pj4gcmVzdWx0OwotICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0ZXJhdG9yKCZy
YW5nZSk7ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkpIHsKKyAgICBmb3Ig
KFRleHRJdGVyYXRvciBpdGVyYXRvcihyYW5nZSk7ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRv
ci5hZHZhbmNlKCkpIHsKICAgICAgICAgaWYgKCFpczxIVE1MSW1hZ2VFbGVtZW50PihpdGVyYXRv
ci5ub2RlKCkpKQogICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
LmgKaW5kZXggNzQ1Yjc2MzgxZWUyMDczODA1ZGU3ZmQ0MzIxYjk0MTQxOTM5M2Y5NS4uZGVkNjNk
ZDNlMjdiYjFhMDlhMTE5ZGViNjRjNGM3ZDc5MzBhZmI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBIVE1MSW1h
Z2VFbGVtZW50OwogY2xhc3MgSFRNTFNwYW5FbGVtZW50OwogY2xhc3MgSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ7CitjbGFzcyBSYW5nZTsKIGNsYXNzIFJlbmRlckJsb2NrOwogY2xhc3MgVmlz
aWJsZVBvc2l0aW9uOwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAppbmRleCA3ZGY0YWFhYTQwYzg5NmQ4MzY0NzI0NTMyMGM2MjViYTA3ZjQwZDQxLi5l
YzQ2MzYyMzI3MTA5YzAzZmYzMDI5MDdkYjg4NGRiZTg2ODU3ZTcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCkBAIC0zMzEzLDcgKzMzMTMsNyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rl
ZFRleHQoVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgLy8gV2Ug
cmVtb3ZlICdcMCcgY2hhcmFjdGVycyBiZWNhdXNlIHRoZXkgYXJlIG5vdCB2aXNpYmx5IHJlbmRl
cmVkIHRvIHRoZSB1c2VyLgogICAgIGF1dG8mIHNlbGVjdGlvbiA9IG1fZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCk7Ci0gICAgcmV0dXJuIHBsYWluVGV4dChzZWxlY3Rpb24uc3RhcnQoKSwg
c2VsZWN0aW9uLmVuZCgpLCBiZWhhdmlvcikucmVwbGFjZVdpdGhMaXRlcmFsKCdcMCcsICIiKTsK
KyAgICByZXR1cm4gcGxhaW5UZXh0KFNpbXBsZVJhbmdlIHsgbWFrZUJvdW5kYXJ5UG9pbnQoc2Vs
ZWN0aW9uLnN0YXJ0KCkpLCBtYWtlQm91bmRhcnlQb2ludChzZWxlY3Rpb24uZW5kKCkpIH0sIGJl
aGF2aW9yKS5yZXBsYWNlV2l0aExpdGVyYWwoJ1wwJywgIiIpOwogfQogCiBSZWZQdHI8VGV4dFBs
YWNlaG9sZGVyRWxlbWVudD4gRWRpdG9yOjppbnNlcnRUZXh0UGxhY2Vob2xkZXIoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBk
YjI5YjliYjgwZWIxYTE1OTU1ZTIzNGE5YWRlOWU3OThkZDMwMGJjLi5lODQ0MTJiMjc2ODM1NjZm
MzAzYTZkMWI5MmU2N2YzMjEyZDhkMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwCkBAIC0zMjksNTEgKzMyOSwyOCBAQCB2b2lkIFRleHRJdGVyYXRvckNvcHlhYmxl
VGV4dDo6YXBwZW5kVG9TdHJpbmdCdWlsZGVyKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbgog
CiAvLyAtLS0tLS0tLQogCi0KLVRleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKFBvc2l0aW9uIHN0
YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQotICAgIDog
bV9iZWhhdmlvcihiZWhhdmlvcikKK3N0YXRpYyBOb2RlKiBmaXJzdE5vZGUoY29uc3QgQm91bmRh
cnlQb2ludCYgcG9pbnQpCiB7Ci0gICAgaWYgKHN0YXJ0LmlzTnVsbCgpIHx8IGVuZC5pc051bGwo
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVChjb21wYXJlUG9zaXRpb25zKHN0YXJ0LCBl
bmQpIDw9IDApOwotCi0gICAgUkVMRUFTRV9BU1NFUlQoYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JU
cmF2ZXJzZXNGbGF0VHJlZSB8fCBzdGFydC50cmVlU2NvcGUoKSA9PSBlbmQudHJlZVNjb3BlKCkp
OwotCi0gICAgc3RhcnQuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxl
c2hlZXRzKCk7Ci0KLSAgICAvLyBGSVhNRTogVXNlIFBvc2l0aW9uIC8gUG9zaXRpb25JdGVyYXRv
ciBpbnN0ZWFkIHRvIGF2b2lkIG9mZnNldCBjb21wdXRhdGlvbi4KLSAgICBtX3N0YXJ0Q29udGFp
bmVyID0gc3RhcnQuY29udGFpbmVyTm9kZSgpOwotICAgIG1fc3RhcnRPZmZzZXQgPSBzdGFydC5j
b21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCk7Ci0KLSAgICBtX2VuZENvbnRhaW5lciA9IGVu
ZC5jb250YWluZXJOb2RlKCk7Ci0gICAgbV9lbmRPZmZzZXQgPSBlbmQuY29tcHV0ZU9mZnNldElu
Q29udGFpbmVyTm9kZSgpOwotCi0gICAgbV9ub2RlID0gc3RhcnQuZmlyc3ROb2RlKCkuZ2V0KCk7
Ci0gICAgaWYgKCFtX25vZGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGluaXQoKTsKKyAgICBp
ZiAocG9pbnQuY29udGFpbmVyLT5pc0NoYXJhY3RlckRhdGFOb2RlKCkpCisgICAgICAgIHJldHVy
biBwb2ludC5jb250YWluZXIucHRyKCk7CisgICAgaWYgKE5vZGUqIGNoaWxkID0gcG9pbnQuY29u
dGFpbmVyLT50cmF2ZXJzZVRvQ2hpbGRBdChwb2ludC5vZmZzZXQpKQorICAgICAgICByZXR1cm4g
Y2hpbGQ7CisgICAgaWYgKCFwb2ludC5vZmZzZXQpCisgICAgICAgIHJldHVybiBwb2ludC5jb250
YWluZXIucHRyKCk7CisgICAgcmV0dXJuIE5vZGVUcmF2ZXJzYWw6Om5leHRTa2lwcGluZ0NoaWxk
cmVuKHBvaW50LmNvbnRhaW5lcik7CiB9CiAKLVRleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKGNv
bnN0IFJhbmdlKiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCitUZXh0SXRl
cmF0b3I6OlRleHRJdGVyYXRvcihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRleHRJdGVyYXRv
ckJlaGF2aW9yIGJlaGF2aW9yKQogICAgIDogbV9iZWhhdmlvcihiZWhhdmlvcikKIHsKLSAgICBp
ZiAoIXJhbmdlKQotICAgICAgICByZXR1cm47CisgICAgcmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKS51
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAotICAgIHJhbmdlLT5vd25l
ckRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAg
bV9zdGFydENvbnRhaW5lciA9IHJhbmdlLnN0YXJ0LmNvbnRhaW5lci5wdHIoKTsKKyAgICBtX3N0
YXJ0T2Zmc2V0ID0gcmFuZ2Uuc3RhcnQub2Zmc2V0OworICAgIG1fZW5kQ29udGFpbmVyID0gcmFu
Z2UuZW5kLmNvbnRhaW5lci5wdHIoKTsKKyAgICBtX2VuZE9mZnNldCA9IHJhbmdlLmVuZC5vZmZz
ZXQ7CiAKLSAgICBtX3N0YXJ0Q29udGFpbmVyID0gJnJhbmdlLT5zdGFydENvbnRhaW5lcigpOwot
Ci0gICAgLy8gQ2FsbGVycyBzaG91bGQgYmUgaGFuZGluZyB1cyB3ZWxsLWZvcm1lZCByYW5nZXMu
IElmIHdlIGRpc2NvdmVyIHRoYXQgdGhpcyBpc24ndAotICAgIC8vIHRoZSBjYXNlLCB3ZSBjb3Vs
ZCBjb25zaWRlciBjaGFuZ2luZyB0aGlzIGFzc2VydGlvbiB0byBhbiBlYXJseSByZXR1cm4uCi0g
ICAgQVNTRVJUKHJhbmdlLT5ib3VuZGFyeVBvaW50c1ZhbGlkKCkpOwotCi0gICAgbV9zdGFydE9m
ZnNldCA9IHJhbmdlLT5zdGFydE9mZnNldCgpOwotICAgIG1fZW5kQ29udGFpbmVyID0gJnJhbmdl
LT5lbmRDb250YWluZXIoKTsKLSAgICBtX2VuZE9mZnNldCA9IHJhbmdlLT5lbmRPZmZzZXQoKTsK
LQotICAgIG1fbm9kZSA9IHJhbmdlLT5maXJzdE5vZGUoKTsKKyAgICBtX25vZGUgPSBmaXJzdE5v
ZGUocmFuZ2Uuc3RhcnQpOwogICAgIGlmICghbV9ub2RlKQogICAgICAgICByZXR1cm47CiAKQEAg
LTExNDAsMjMgKzExMTcsMjMgQEAgTm9kZSogVGV4dEl0ZXJhdG9yOjpub2RlKCkgY29uc3QKIAog
Ly8gLS0tLS0tLS0KIAotU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6U2ltcGxpZmll
ZEJhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSYgcmFuZ2UpCitTaW1wbGlmaWVkQmFj
a3dhcmRzVGV4dEl0ZXJhdG9yOjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0
IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKLSAgICByYW5nZS5vd25lckRvY3VtZW50KCkudXBkYXRl
TGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgcmFuZ2Uuc3RhcnQuZG9jdW1l
bnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAotICAgIE5vZGUq
IHN0YXJ0Tm9kZSA9ICZyYW5nZS5zdGFydENvbnRhaW5lcigpOwotICAgIE5vZGUqIGVuZE5vZGUg
PSAmcmFuZ2UuZW5kQ29udGFpbmVyKCk7Ci0gICAgaW50IHN0YXJ0T2Zmc2V0ID0gcmFuZ2Uuc3Rh
cnRPZmZzZXQoKTsKLSAgICBpbnQgZW5kT2Zmc2V0ID0gcmFuZ2UuZW5kT2Zmc2V0KCk7CisgICAg
Tm9kZSogc3RhcnROb2RlID0gcmFuZ2Uuc3RhcnQuY29udGFpbmVyLnB0cigpOworICAgIE5vZGUq
IGVuZE5vZGUgPSByYW5nZS5lbmQuY29udGFpbmVyLnB0cigpOworICAgIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0ID0gcmFuZ2Uuc3RhcnQub2Zmc2V0OworICAgIHVuc2lnbmVkIGVuZE9mZnNldCA9IHJh
bmdlLmVuZC5vZmZzZXQ7CiAKICAgICBpZiAoIXN0YXJ0Tm9kZS0+aXNDaGFyYWN0ZXJEYXRhTm9k
ZSgpKSB7Ci0gICAgICAgIGlmIChzdGFydE9mZnNldCA+PSAwICYmIHN0YXJ0T2Zmc2V0IDwgc3Rh
dGljX2Nhc3Q8aW50PihzdGFydE5vZGUtPmNvdW50Q2hpbGROb2RlcygpKSkgeworICAgICAgICBp
ZiAoc3RhcnRPZmZzZXQgPCBzdGFydE5vZGUtPmNvdW50Q2hpbGROb2RlcygpKSB7CiAgICAgICAg
ICAgICBzdGFydE5vZGUgPSBzdGFydE5vZGUtPnRyYXZlcnNlVG9DaGlsZEF0KHN0YXJ0T2Zmc2V0
KTsKICAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gMDsKICAgICAgICAgfQogICAgIH0KICAgICBp
ZiAoIWVuZE5vZGUtPmlzQ2hhcmFjdGVyRGF0YU5vZGUoKSkgewotICAgICAgICBpZiAoZW5kT2Zm
c2V0ID4gMCAmJiBlbmRPZmZzZXQgPD0gc3RhdGljX2Nhc3Q8aW50PihlbmROb2RlLT5jb3VudENo
aWxkTm9kZXMoKSkpIHsKKyAgICAgICAgaWYgKGVuZE9mZnNldCA+IDAgJiYgZW5kT2Zmc2V0IDw9
IGVuZE5vZGUtPmNvdW50Q2hpbGROb2RlcygpKSB7CiAgICAgICAgICAgICBlbmROb2RlID0gZW5k
Tm9kZS0+dHJhdmVyc2VUb0NoaWxkQXQoZW5kT2Zmc2V0IC0gMSk7CiAgICAgICAgICAgICBlbmRP
ZmZzZXQgPSBsYXN0T2Zmc2V0SW5Ob2RlKGVuZE5vZGUpOwogICAgICAgICB9CkBAIC0xMzkxLDE1
ICsxMzY4LDggQEAgU2ltcGxlUmFuZ2UgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6
cmFuZ2UoKSBjb25zdAogCiAvLyAtLS0tLS0tLQogCi1DaGFyYWN0ZXJJdGVyYXRvcjo6Q2hhcmFj
dGVySXRlcmF0b3IoY29uc3QgUmFuZ2UmIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhh
dmlvcikKLSAgICA6IG1fdW5kZXJseWluZ0l0ZXJhdG9yKCZyYW5nZSwgYmVoYXZpb3IpCi17Ci0g
ICAgd2hpbGUgKCFhdEVuZCgpICYmICFtX3VuZGVybHlpbmdJdGVyYXRvci50ZXh0KCkubGVuZ3Ro
KCkpCi0gICAgICAgIG1fdW5kZXJseWluZ0l0ZXJhdG9yLmFkdmFuY2UoKTsKLX0KLQotQ2hhcmFj
dGVySXRlcmF0b3I6OkNoYXJhY3Rlckl0ZXJhdG9yKFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBl
bmQsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQotICAgIDogbV91bmRlcmx5aW5nSXRl
cmF0b3Ioc3RhcnQsIGVuZCwgYmVoYXZpb3IpCitDaGFyYWN0ZXJJdGVyYXRvcjo6Q2hhcmFjdGVy
SXRlcmF0b3IoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBi
ZWhhdmlvcikKKyAgICA6IG1fdW5kZXJseWluZ0l0ZXJhdG9yKHJhbmdlLCBiZWhhdmlvcikKIHsK
ICAgICB3aGlsZSAoIWF0RW5kKCkgJiYgIW1fdW5kZXJseWluZ0l0ZXJhdG9yLnRleHQoKS5sZW5n
dGgoKSkKICAgICAgICAgbV91bmRlcmx5aW5nSXRlcmF0b3IuYWR2YW5jZSgpOwpAQCAtMTQ4Myw3
ICsxNDUzLDcgQEAgc3RhdGljIFJlZjxSYW5nZT4gY2hhcmFjdGVyU3VicmFuZ2UoRG9jdW1lbnQm
IGRvY3VtZW50LCBDaGFyYWN0ZXJJdGVyYXRvciYgaXQsIGkKICAgICByZXR1cm4gY3JlYXRlTGl2
ZVJhbmdlKFNpbXBsZVJhbmdlIHsgc3RhcnQsIGVuZCB9KTsKIH0KIAotQmFja3dhcmRzQ2hhcmFj
dGVySXRlcmF0b3I6OkJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFJhbmdlJiByYW5n
ZSkKK0JhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjpCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRv
cihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCiAgICAgOiBtX3VuZGVybHlpbmdJdGVyYXRvcihy
YW5nZSkKIHsKICAgICB3aGlsZSAoIWF0RW5kKCkgJiYgIW1fdW5kZXJseWluZ0l0ZXJhdG9yLnRl
eHQoKS5sZW5ndGgoKSkKQEAgLTE1NDYsOCArMTUxNiw4IEBAIHZvaWQgQmFja3dhcmRzQ2hhcmFj
dGVySXRlcmF0b3I6OmFkdmFuY2UoaW50IGNvdW50KQogCiAvLyAtLS0tLS0tLQogCi1Xb3JkQXdh
cmVJdGVyYXRvcjo6V29yZEF3YXJlSXRlcmF0b3IoY29uc3QgUmFuZ2UmIHJhbmdlKQotICAgIDog
bV91bmRlcmx5aW5nSXRlcmF0b3IoJnJhbmdlKQorV29yZEF3YXJlSXRlcmF0b3I6OldvcmRBd2Fy
ZUl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKKyAgICA6IG1fdW5kZXJseWluZ0l0
ZXJhdG9yKHJhbmdlKQogewogICAgIGFkdmFuY2UoKTsgLy8gZ2V0IGluIHBvc2l0aW9uIG92ZXIg
dGhlIGZpcnN0IGNodW5rIG9mIHRleHQKIH0KQEAgLTIzNzUsOCArMjM0NSwxMCBAQCBzaXplX3Qg
U2VhcmNoQnVmZmVyOjpsZW5ndGgoKSBjb25zdAogCiBpbnQgVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChjb25zdCBSYW5nZSogcmFuZ2UsIGJvb2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKQog
eworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiAwOwogICAgIHVuc2lnbmVkIGxlbmd0
aCA9IDA7Ci0gICAgZm9yIChUZXh0SXRlcmF0b3IgaXQocmFuZ2UsIGZvclNlbGVjdGlvblByZXNl
cnZhdGlvbiA/IFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9z
aXRpb25zIDogVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsgIWl0LmF0RW5kKCk7IGl0LmFk
dmFuY2UoKSkKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdCgqcmFuZ2UsIGZvclNlbGVjdGlvblBy
ZXNlcnZhdGlvbiA/IFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxl
UG9zaXRpb25zIDogVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsgIWl0LmF0RW5kKCk7IGl0
LmFkdmFuY2UoKSkKICAgICAgICAgbGVuZ3RoICs9IGl0LnRleHQoKS5sZW5ndGgoKTsKICAgICBy
ZXR1cm4gbGVuZ3RoOwogfQpAQCAtMjQwNSw3ICsyMzc3LDcgQEAgUmVmUHRyPFJhbmdlPiBUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKENvbnRhaW5lck5vZGUqIHNjb3Bl
LCBpbnQKIAogICAgIFJlZjxSYW5nZT4gdGV4dFJ1blJhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpz
Y29wZSk7CiAKLSAgICBUZXh0SXRlcmF0b3IgaXQodGV4dFJ1blJhbmdlLnB0cigpLCBmb3JTZWxl
Y3Rpb25QcmVzZXJ2YXRpb24gPyBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxs
VmlzaWJsZVBvc2l0aW9ucyA6IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CisgICAgVGV4
dEl0ZXJhdG9yIGl0KHRleHRSdW5SYW5nZSwgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uID8gVGV4
dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgOiBUZXh0
SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogICAgIAogICAgIC8vIEZJWE1FOiB0aGUgYXRFbmQo
KSBjaGVjayBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCB3b3JrYXJvdW5kIGZvciA8aHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI4OT4uCiAgICAgaWYgKCFyYW5nZUxvY2F0
aW9uICYmICFyYW5nZUxlbmd0aCAmJiBpdC5hdEVuZCgpKSB7CkBAIC0yNTA2LDIxICsyNDc4LDE5
IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShOb2Rl
KiBzY29wZSwgY29uc3QgUmFuZ2UqIHJhbmdlCiAKIGJvb2wgaGFzQW55UGxhaW5UZXh0KGNvbnN0
IFNpbXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCiB7Ci0g
ICAgZm9yIChUZXh0SXRlcmF0b3IgaXRlcmF0b3IgeyBjcmVhdGVMaXZlUmFuZ2UocmFuZ2UpLnB0
cigpLCBiZWhhdmlvciB9OyAhaXRlcmF0b3IuYXRFbmQoKTsgaXRlcmF0b3IuYWR2YW5jZSgpKSB7
CisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXRlcmF0b3IgeyByYW5nZSwgYmVoYXZpb3IgfTsgIWl0
ZXJhdG9yLmF0RW5kKCk7IGl0ZXJhdG9yLmFkdmFuY2UoKSkgewogICAgICAgICBpZiAoIWl0ZXJh
dG9yLnRleHQoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJpbmcgcGxhaW5UZXh0KFBvc2l0aW9uIHN0YXJ0LCBQ
b3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2aW9yIGRlZmF1bHRCZWhhdmlvciwgYm9vbCBp
c0Rpc3BsYXlTdHJpbmcpCitTdHJpbmcgcGxhaW5UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5n
ZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgZGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0
cmluZykKIHsKICAgICAvLyBUaGUgaW5pdGlhbCBidWZmZXIgc2l6ZSBjYW4gYmUgY3JpdGljYWwg
Zm9yIHBlcmZvcm1hbmNlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODExOTIKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5ID0gMSA8PCAx
NTsKIAotICAgIGlmICghc3RhcnQuZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZigqc3RhcnQuZG9jdW1lbnQoKSk7CisgICAgYXV0byBk
b2N1bWVudCA9IG1ha2VSZWYocmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKSk7CiAKICAgICB1bnNpZ25l
ZCBidWZmZXJMZW5ndGggPSAwOwogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKQEAgLTI1Mjks
NyArMjQ5OSw3IEBAIFN0cmluZyBwbGFpblRleHQoUG9zaXRpb24gc3RhcnQsIFBvc2l0aW9uIGVu
ZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgZGVmYXVsdEJlaGF2CiAgICAgaWYgKCFpc0Rpc3BsYXlT
dHJpbmcpCiAgICAgICAgIGJlaGF2aW9yID0gc3RhdGljX2Nhc3Q8VGV4dEl0ZXJhdG9yQmVoYXZp
b3I+KGJlaGF2aW9yIHwgVGV4dEl0ZXJhdG9yRW1pdHNUZXh0c1dpdGhvdXRUcmFuc2NvZGluZyk7
CiAKLSAgICBmb3IgKFRleHRJdGVyYXRvciBpdChzdGFydCwgZW5kLCBiZWhhdmlvcik7ICFpdC5h
dEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdChyYW5nZSwg
YmVoYXZpb3IpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CiAgICAgICAgIGl0LmFwcGVu
ZFRleHRUb1N0cmluZ0J1aWxkZXIoYnVpbGRlcik7CiAgICAgICAgIGJ1ZmZlckxlbmd0aCArPSBp
dC50ZXh0KCkubGVuZ3RoKCk7CiAgICAgfQpAQCAtMjU0NSwxNiArMjUxNSwxMSBAQCBTdHJpbmcg
cGxhaW5UZXh0KFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2
aW9yIGRlZmF1bHRCZWhhdgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBwbGFpblRl
eHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoUG9zaXRpb24gc3RhcnQsIFBvc2l0aW9uIGVuZCwgVGV4
dEl0ZXJhdG9yQmVoYXZpb3IgZGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZykK
LXsKLSAgICByZXR1cm4gcGxhaW5UZXh0KHN0YXJ0LCBlbmQsIGRlZmF1bHRCZWhhdmlvciwgaXNE
aXNwbGF5U3RyaW5nKS5yZXBsYWNlKG5vQnJlYWtTcGFjZSwgJyAnKTsKLX0KLQogU3RyaW5nIHBs
YWluVGV4dChjb25zdCBSYW5nZSogcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGRlZmF1bHRC
ZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcpCiB7CiAgICAgaWYgKCFyYW5nZSkKICAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgcmV0dXJuIHBsYWluVGV4dChyYW5nZS0+c3Rh
cnRQb3NpdGlvbigpLCByYW5nZS0+ZW5kUG9zaXRpb24oKSwgZGVmYXVsdEJlaGF2aW9yLCBpc0Rp
c3BsYXlTdHJpbmcpOworICAgIHJldHVybiBwbGFpblRleHQoKnJhbmdlLCBkZWZhdWx0QmVoYXZp
b3IsIGlzRGlzcGxheVN0cmluZyk7CiB9CiAKIFN0cmluZyBwbGFpblRleHRVc2luZ0JhY2t3YXJk
c1RleHRJdGVyYXRvckZvclRlc3RpbmcoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQpAQCAtMjU2
NSw3ICsyNTMwLDcgQEAgU3RyaW5nIHBsYWluVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9y
Rm9yVGVzdGluZyhjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotU3RyaW5nIHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShjb25zdCBSYW5nZSog
cmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGRlZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3Bs
YXlTdHJpbmcpCitTdHJpbmcgcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGNvbnN0IFNp
bXBsZVJhbmdlJiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgZGVmYXVsdEJlaGF2aW9yLCBi
b29sIGlzRGlzcGxheVN0cmluZykKIHsKICAgICByZXR1cm4gcGxhaW5UZXh0KHJhbmdlLCBkZWZh
dWx0QmVoYXZpb3IsIGlzRGlzcGxheVN0cmluZykucmVwbGFjZShub0JyZWFrU3BhY2UsICcgJyk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCBhNWQwZWExMmFiYWZh
MjI1ODRiOWE4ZWIwNzM0NDM0ZjI1Y2U0NGJjLi5hNzBjNGRiYjVmZDA1NjljODE1MGRlMzVkNjYw
MTU3YTJhYmZhMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTI3
LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgiCiAjaW5jbHVkZSAiTGluZUxh
eW91dFRyYXZlcnNhbC5oIgotI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yQmVoYXZpb3IuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nVmlldy5oPgpAQCAtMzgsMTEgKzM3LDExIEBAIGNsYXNzIFJhbmdlOwog
Y2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNzIFJlbmRlclRleHRGcmFnbWVudDsKIAotV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHBsYWluVGV4dChQb3NpdGlvbiBzdGFydCwgUG9zaXRpb24gZW5kLCBUZXh0
SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rp
c3BsYXlTdHJpbmcgPSBmYWxzZSk7Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGxhaW5UZXh0UmVw
bGFjaW5nTm9CcmVha1NwYWNlKFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVy
YXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxh
eVN0cmluZyA9IGZhbHNlKTsKK3N0cnVjdCBTaW1wbGVSYW5nZTsKIAogV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHBsYWluVGV4dChjb25zdCBSYW5nZSosIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4
dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZyA9IGZhbHNlKTsK
LVdFQkNPUkVfRVhQT1JUIFN0cmluZyBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoY29u
c3QgUmFuZ2UqLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhh
dmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcgPSBmYWxzZSk7CitXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgcGxhaW5UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBU
ZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nID0gZmFsc2Up
OworV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShj
b25zdCBTaW1wbGVSYW5nZSYsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVm
YXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZyA9IGZhbHNlKTsKIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBwbGFpblRleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvckZvclRlc3Rpbmco
Y29uc3QgU2ltcGxlUmFuZ2UmKTsKIAogU2ltcGxlUmFuZ2UgZmluZFBsYWluVGV4dChjb25zdCBT
aW1wbGVSYW5nZSYsIGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zKTsKQEAgLTkxLDggKzkwLDcg
QEAgcHJpdmF0ZToKIGNsYXNzIFRleHRJdGVyYXRvciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgVGV4dEl0ZXJhdG9yKFBvc2l0aW9u
IHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9y
RGVmYXVsdEJlaGF2aW9yKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBUZXh0SXRlcmF0
b3IoY29uc3QgUmFuZ2UqLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1
bHRCZWhhdmlvcik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgVGV4dEl0ZXJhdG9yKGNv
bnN0IFNpbXBsZVJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZh
dWx0QmVoYXZpb3IpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5UZXh0SXRlcmF0b3IoKTsKIAogICAg
IGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9wb3NpdGlvbk5vZGU7IH0KQEAgLTE3Nyw3
ICsxNzUsNyBAQCBwcml2YXRlOgogLy8gY2h1bmtzIHNvIGFzIHRvIG9wdGltaXplIGZvciBwZXJm
b3JtYW5jZSBvZiB0aGUgaXRlcmF0aW9uLgogY2xhc3MgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJ
dGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJ
dGVyYXRvcihjb25zdCBSYW5nZSYpOworICAgIGV4cGxpY2l0IFNpbXBsaWZpZWRCYWNrd2FyZHNU
ZXh0SXRlcmF0b3IoY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAogICAgIGJvb2wgYXRFbmQoKSBjb25z
dCB7IHJldHVybiAhbV9wb3NpdGlvbk5vZGU7IH0KICAgICB2b2lkIGFkdmFuY2UoKTsKQEAgLTIz
Miw4ICsyMzAsNyBAQCBwcml2YXRlOgogLy8gY2hhcmFjdGVyIGF0IGEgdGltZSwgb3IgZmFzdGVy
LCBhcyBuZWVkZWQuIFVzZWZ1bCBmb3Igc2VhcmNoaW5nLgogY2xhc3MgQ2hhcmFjdGVySXRlcmF0
b3IgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENoYXJhY3Rlckl0ZXJh
dG9yKGNvbnN0IFJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZh
dWx0QmVoYXZpb3IpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENoYXJhY3Rlckl0ZXJh
dG9yKFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2aW9yID0g
VGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBDaGFyYWN0ZXJJdGVyYXRvcihjb25zdCBTaW1wbGVSYW5nZSYsIFRleHRJdGVyYXRvckJlaGF2
aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKICAgICAKICAgICBib29sIGF0RW5k
KCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmx5aW5nSXRlcmF0b3IuYXRFbmQoKTsgfQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWR2YW5jZShpbnQgbnVtQ2hhcmFjdGVycyk7CkBAIC0yNTQsNyAr
MjUxLDcgQEAgcHJpdmF0ZToKICAgICAKIGNsYXNzIEJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9y
IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcihjb25z
dCBSYW5nZSYpOworICAgIGV4cGxpY2l0IEJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0
IFNpbXBsZVJhbmdlJik7CiAKICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gbV91bmRl
cmx5aW5nSXRlcmF0b3IuYXRFbmQoKTsgfQogICAgIHZvaWQgYWR2YW5jZShpbnQgbnVtQ2hhcmFj
dGVycyk7CkBAIC0yNzMsNyArMjcwLDcgQEAgcHJpdmF0ZToKIC8vIHRoZXkgbmV2ZXIgc3BsaXQg
dXAgYSB3b3JkLiBUaGlzIGlzIHVzZWZ1bCBmb3Igc3BlbGwgY2hlY2tpbmcgYW5kIHBlcmhhcHMg
b25lIGRheSBmb3Igc2VhcmNoaW5nIGFzIHdlbGwuCiBjbGFzcyBXb3JkQXdhcmVJdGVyYXRvciB7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV29yZEF3YXJlSXRlcmF0b3IoY29uc3QgUmFuZ2UmKTsK
KyAgICBleHBsaWNpdCBXb3JkQXdhcmVJdGVyYXRvcihjb25zdCBTaW1wbGVSYW5nZSYpOwogCiAg
ICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuICFtX2RpZExvb2tBaGVhZCAmJiBtX3VuZGVy
bHlpbmdJdGVyYXRvci5hdEVuZCgpOyB9CiAgICAgdm9pZCBhZHZhbmNlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCmlu
ZGV4IGJiMzU4YTllM2JmZDQ0ZGRiNzkwMjE4MzU4OWZlNGQ5N2EzYTcyYzMuLjAwOWRhNDkxNzAz
ZGVjNTAyNjE0OWU5ZmFkOWE4ZTgzMTJlZThkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xNDEsNyArMTQx
LDcgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6c3RhcnRPYnNlcnZpbmdQYXJh
Z3JhcGhzKE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmEKIGNsYXNzIFBhcmFncmFwaENvbnRlbnRJdGVy
YXRvciB7CiBwdWJsaWM6CiAgICAgUGFyYWdyYXBoQ29udGVudEl0ZXJhdG9yKGNvbnN0IFBvc2l0
aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKLSAgICAgICAgOiBtX2l0ZXJhdG9yKHN0
YXJ0LCBlbmQpCisgICAgICAgIDogbV9pdGVyYXRvcih7IG1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0
KSwgbWFrZUJvdW5kYXJ5UG9pbnQoZW5kKSB9KQogICAgICAgICAsIG1faXRlcmF0b3JOb2RlKG1f
aXRlcmF0b3IuYXRFbmQoKSA/IG51bGxwdHIgOiBjcmVhdGVMaXZlUmFuZ2UobV9pdGVyYXRvci5y
YW5nZSgpKS0+Zmlyc3ROb2RlKCkpCiAgICAgICAgICwgbV9jdXJyZW50Tm9kZUZvckZpbmRpbmdJ
bnZpc2libGVDb250ZW50KHN0YXJ0LmZpcnN0Tm9kZSgpKQogICAgICAgICAsIG1fcGFzdEVuZE5v
ZGUoZW5kLmZpcnN0Tm9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3Bw
CmluZGV4IDc1MjJiMTA5YjQwOWQyYmZkNTU3NzY2NzNmMGE5M2U4NDM3NGZjOWUuLjkxMDlhYjk1
NDkwNjlmMzYwNGYwOTg2YWM5OGU4Yjk5NDQ5YTE0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVVbml0cy5jcHAKQEAgLTQ4OSw3ICs0ODksNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRS
ZXBlYXRlZENoYXJhY3RlcihWZWN0b3I8VUNoYXIsIDEwMjQ+JiBidWZmZXIsIFVDaGFyIGNoYXJh
Y3RlcgogdW5zaWduZWQgc3VmZml4TGVuZ3RoRm9yUmFuZ2UoY29uc3QgUmFuZ2UmIGZvcndhcmRz
U2NhblJhbmdlLCBWZWN0b3I8VUNoYXIsIDEwMjQ+JiBzdHJpbmcpCiB7CiAgICAgdW5zaWduZWQg
c3VmZml4TGVuZ3RoID0gMDsKLSAgICBUZXh0SXRlcmF0b3IgZm9yd2FyZHNJdGVyYXRvcigmZm9y
d2FyZHNTY2FuUmFuZ2UpOworICAgIFRleHRJdGVyYXRvciBmb3J3YXJkc0l0ZXJhdG9yKGZvcndh
cmRzU2NhblJhbmdlKTsKICAgICB3aGlsZSAoIWZvcndhcmRzSXRlcmF0b3IuYXRFbmQoKSkgewog
ICAgICAgICBTdHJpbmdWaWV3IHRleHQgPSBmb3J3YXJkc0l0ZXJhdG9yLnRleHQoKTsKICAgICAg
ICAgdW5zaWduZWQgaSA9IGVuZE9mRmlyc3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQpOwpAQCAt
NjA5LDcgKzYwOSw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNCb3VuZGFyeShj
b25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNoCiAgICAgICAgIHJlc3VsdCA9
IGZvcndhcmRzU2NhblJhbmdlLT5zZXRTdGFydChzdGFydCk7CiAgICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBmb3IgKFRl
eHRJdGVyYXRvciBmb3J3YXJkc0l0ZXJhdG9yKGZvcndhcmRzU2NhblJhbmdlLnB0cigpKTsgIWZv
cndhcmRzSXRlcmF0b3IuYXRFbmQoKTsgZm9yd2FyZHNJdGVyYXRvci5hZHZhbmNlKCkpCisgICAg
ICAgIGZvciAoVGV4dEl0ZXJhdG9yIGZvcndhcmRzSXRlcmF0b3IoZm9yd2FyZHNTY2FuUmFuZ2Up
OyAhZm9yd2FyZHNJdGVyYXRvci5hdEVuZCgpOyBmb3J3YXJkc0l0ZXJhdG9yLmFkdmFuY2UoKSkK
ICAgICAgICAgICAgIGFwcGVuZChzdHJpbmcsIGZvcndhcmRzSXRlcmF0b3IudGV4dCgpKTsKICAg
ICAgICAgc3VmZml4TGVuZ3RoID0gc3RyaW5nLnNpemUoKTsKICAgICB9IGVsc2UgaWYgKHJlcXVp
cmVzQ29udGV4dEZvcldvcmRCb3VuZGFyeShjLmNoYXJhY3RlckJlZm9yZSgpKSkgewpAQCAtNjc0
LDcgKzY3NCw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dEJvdW5kYXJ5KGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgYywgQm91bmRhcnlTZWFyY2hGdW5jCiAgICAgc2VhcmNoUmFuZ2UtPnNl
bGVjdE5vZGVDb250ZW50cygqYm91bmRhcnkpOwogICAgIGlmIChzdGFydC5kZXByZWNhdGVkTm9k
ZSgpKQogICAgICAgICBzZWFyY2hSYW5nZS0+c2V0U3RhcnQoKnN0YXJ0LmRlcHJlY2F0ZWROb2Rl
KCksIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwotICAgIFRleHRJdGVyYXRvciBp
dChzZWFyY2hSYW5nZS5wdHIoKSwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFs
bFZpc2libGVQb3NpdGlvbnMpOworICAgIFRleHRJdGVyYXRvciBpdChzZWFyY2hSYW5nZSwgVGV4
dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpOwogICAg
IHVuc2lnbmVkIG5leHQgPSBmb3J3YXJkU2VhcmNoRm9yQm91bmRhcnlXaXRoVGV4dEl0ZXJhdG9y
KGl0LCBzdHJpbmcsIHByZWZpeExlbmd0aCwgc2VhcmNoRnVuY3Rpb24pOwogICAgIAogICAgIGlm
IChpdC5hdEVuZCgpICYmIG5leHQgPT0gc3RyaW5nLnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCBjNjFlMzU2NTgyN2RiNGVlZWZm
YTc2NzA4ZDZhMDk0MTk0M2U4MGVhLi4wZWY2Y2ZiNjJkNTI5ZjAwZTdlNjA3NzYwYzY0MTBkZTc4
MTMxMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRl
Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9u
Lm1tCkBAIC0xNjIsNiArMTYyLDcgQEAgUmV0YWluUHRyPEREQWN0aW9uQ29udGV4dD4gRGF0YURl
dGVjdGlvbjo6ZGV0ZWN0SXRlbUFyb3VuZEhpdFRlc3RSZXN1bHQoY29uc3QgSGkKIAogICAgIHJl
dHVybiBkZXRlY3RJdGVtQXRQb3NpdGlvbldpdGhSYW5nZShwb3NpdGlvbiwgY29udGV4dFJhbmdl
LCBkZXRlY3RlZERhdGFCb3VuZGluZ0JveCwgZGV0ZWN0ZWREYXRhUmFuZ2UpOwogfQorCiAjZW5k
aWYgLy8gUExBVEZPUk0oTUFDKQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTM0NSw3
ICszNDYsNyBAQCBzdGF0aWMgU3RyaW5nIGRhdGFEZXRlY3RvclN0cmluZ0ZvclBhdGgoTlNJbmRl
eFBhdGggKnBhdGgpCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBidWlsZFF1ZXJ5KEREU2NhblF1
ZXJ5UmVmIHNjYW5RdWVyeSwgUmFuZ2UqIGNvbnRleHRSYW5nZSkKK3N0YXRpYyB2b2lkIGJ1aWxk
UXVlcnkoRERTY2FuUXVlcnlSZWYgc2NhblF1ZXJ5LCBjb25zdCBTaW1wbGVSYW5nZSYgY29udGV4
dFJhbmdlKQogewogICAgIC8vIE9uY2Ugd2UncmUgb3ZlciB0aGlzIG51bWJlciBvZiBmcmFnbWVu
dHMsIHN0b3AgYXQgdGhlIGZpcnN0IGhhcmQgYnJlYWsuCiAgICAgY29uc3QgQ0ZJbmRleCBtYXhG
cmFnbWVudFdpdGhIYXJkQnJlYWsgPSAxMDAwOwpAQCAtNDQ0LDkgKzQ0NSwxMiBAQCB2b2lkIERh
dGFEZXRlY3Rpb246OnJlbW92ZURhdGFEZXRlY3RlZExpbmtzSW5Eb2N1bWVudChEb2N1bWVudCYg
ZG9jdW1lbnQpCiAKIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdl
KFJlZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURldGVjdG9yVHlwZXMgdHlwZXMsIE5T
RGljdGlvbmFyeSAqY29udGV4dCkKIHsKKyAgICBpZiAoIWNvbnRleHRSYW5nZSkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKwogICAgIFJldGFpblB0cjxERFNjYW5uZXJSZWY+IHNjYW5uZXIgPSBhZG9w
dENGKHNvZnRMaW5rX0RhdGFEZXRlY3RvcnNDb3JlX0REU2Nhbm5lckNyZWF0ZShERFNjYW5uZXJU
eXBlU3RhbmRhcmQsIDAsIG51bGxwdHIpKTsKICAgICBSZXRhaW5QdHI8RERTY2FuUXVlcnlSZWY+
IHNjYW5RdWVyeSA9IGFkb3B0Q0Yoc29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTY2FuUXVl
cnlDcmVhdGUoTlVMTCkpOwotICAgIGJ1aWxkUXVlcnkoc2NhblF1ZXJ5LmdldCgpLCBjb250ZXh0
UmFuZ2UuZ2V0KCkpOworICAgIGJ1aWxkUXVlcnkoc2NhblF1ZXJ5LmdldCgpLCAqY29udGV4dFJh
bmdlKTsKICAgICAKICAgICBpZiAodHlwZXMgJiBEYXRhRGV0ZWN0b3JUeXBlTG9va3VwU3VnZ2Vz
dGlvbikKICAgICAgICAgc29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTY2FubmVyRW5hYmxl
T3B0aW9uYWxTb3VyY2Uoc2Nhbm5lci5nZXQoKSwgRERTY2FubmVyU291cmNlU3BvdGxpZ2h0LCB0
cnVlKTsKQEAgLTQ4Nyw3ICs0OTEsNyBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RD
b250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQogICAgIH0K
IAogICAgIFZlY3RvcjxWZWN0b3I8UmVmUHRyPFJhbmdlPj4+IGFsbFJlc3VsdFJhbmdlczsKLSAg
ICBUZXh0SXRlcmF0b3IgaXRlcmF0b3IoY29udGV4dFJhbmdlLmdldCgpKTsKKyAgICBUZXh0SXRl
cmF0b3IgaXRlcmF0b3IoKmNvbnRleHRSYW5nZSk7CiAgICAgQ0ZJbmRleCBpdGVyYXRvckNvdW50
ID0gMDsKIAogICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgYXJyYXkgb2YgdGhlIGV4cGFuZGVk
IHJlc3VsdHMgdG8gY3JlYXRlIGEgdmVjdG9yIG9mIFJhbmdlIG9iamVjdHMgdGhhdCBpbmRpY2F0
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9v
a3VwLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1t
CmluZGV4IGQzNTUzOWE5ZGZkOGQ0N2VlNGUwMTE3MGQ1YjI4Y2YxNTEwM2VkNzIuLjg3OTcyMjAy
ODQ2OGYwM2UwMmVhZTU5YjU1YTI5YTIzZGVjZTkyZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0KQEAgLTMzNyw3ICszMzcsOSBAQCBz
dGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqPiBEaWN0aW9uYXJ5TG9va3Vw
OjpyYW5nZUF0SGl0VGVzdFJlc3VsdAogICAgICAgICBhdXRvIHJhbmdlVG9TZWxlY3Rpb25FbmQg
PSBtYWtlUmFuZ2UocGFyYWdyYXBoU3RhcnQsIHNlbGVjdGlvbkVuZCk7CiAgICAgICAgIAogICAg
ICAgICBmdWxsQ2hhcmFjdGVyUmFuZ2UgPSBtYWtlUmFuZ2UocGFyYWdyYXBoU3RhcnQsIHBhcmFn
cmFwaEVuZCk7Ci0gICAgICAgIAorICAgICAgICBpZiAoIWZ1bGxDaGFyYWN0ZXJSYW5nZSkKKyAg
ICAgICAgICAgIHJldHVybiB7IG51bGxwdHIsIG5pbCB9OworCiAgICAgICAgIHNlbGVjdGlvblJh
bmdlID0gTlNNYWtlUmFuZ2UoVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZVRvU2VsZWN0
aW9uU3RhcnQuZ2V0KCkpLCBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1ha2VSYW5nZShzZWxl
Y3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKS5nZXQoKSkpOwogICAgICAgICAKICAgICAgICAgaGl0
SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1ha2VSYW5nZShwYXJhZ3JhcGhTdGFy
dCwgcG9zaXRpb24pLmdldCgpKTsKQEAgLTM1Nyw3ICszNTksNyBAQCBzdGQ6OnR1cGxlPFJlZlB0
cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVz
dFJlc3VsdAogICAgIAogICAgIE5TUmFuZ2Ugc2VsZWN0ZWRSYW5nZSA9IFtnZXRSVlNlbGVjdGlv
bkNsYXNzKCkgcmV2ZWFsUmFuZ2VBdEluZGV4OmhpdEluZGV4IHNlbGVjdGVkUmFuZ2VzOkBbW05T
VmFsdWUgdmFsdWVXaXRoUmFuZ2U6c2VsZWN0aW9uUmFuZ2VdXSBzaG91bGRVcGRhdGVTZWxlY3Rp
b246bmlsXTsKICAgICAKLSAgICBTdHJpbmcgaXRlbVN0cmluZyA9IHBsYWluVGV4dChmdWxsQ2hh
cmFjdGVyUmFuZ2UuZ2V0KCkpOworICAgIFN0cmluZyBpdGVtU3RyaW5nID0gcGxhaW5UZXh0KCpm
dWxsQ2hhcmFjdGVyUmFuZ2UpOwogICAgIFJldGFpblB0cjxSVkl0ZW0+IGl0ZW0gPSBhZG9wdE5T
KFthbGxvY1JWSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0ZWRS
YW5nZTpzZWxlY3RlZFJhbmdlXSk7CiAgICAgTlNSYW5nZSBoaWdobGlnaHRSYW5nZSA9IGl0ZW0u
Z2V0KCkuaGlnaGxpZ2h0UmFuZ2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQppbmRleCA0ZjdmYWEwZTFjYTkxZDgzMmRlZTU3OWQ5M2FlZTNhYjFh
OWUwYzIzLi45ZmYwNGIxYzg5MjgxMzA4Y2IxZTQwOTExYjVhOTdmYjRmMjA5YmNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0yMzk2LDcg
KzIzOTYsNyBAQCBOU0F0dHJpYnV0ZWRTdHJpbmcgKmVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nRnJv
bVJhbmdlKFJhbmdlJiByYW5nZSwgSW5jbHVkZUltYWdlcwogICAgIE5TVUludGVnZXIgc3RyaW5n
TGVuZ3RoID0gMDsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gYXR0cnMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogCi0gICAgZm9yIChU
ZXh0SXRlcmF0b3IgaXQoJnJhbmdlKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgeworICAg
IGZvciAoVGV4dEl0ZXJhdG9yIGl0KHJhbmdlKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkg
ewogICAgICAgICBTaW1wbGVSYW5nZSBjdXJyZW50VGV4dFJhbmdlID0gaXQucmFuZ2UoKTsKICAg
ICAgICAgTm9kZSYgc3RhcnRDb250YWluZXIgPSBjdXJyZW50VGV4dFJhbmdlLnN0YXJ0LmNvbnRh
aW5lcjsKICAgICAgICAgTm9kZSYgZW5kQ29udGFpbmVyID0gY3VycmVudFRleHRSYW5nZS5lbmQu
Y29udGFpbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKaW5kZXggMmQyMTEw
NGIzMjFlNjNjYjhjODU5Nzk1MjkyZjAyYjFmY2FmZWYyNS4uMzE3NTEyNWQzYzBhMWU3N2ExNWIw
NjgzNGNhZmU0MDU3MTUwMmVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0
SW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3Bw
CkBAIC0yMTMsNyArMjEzLDcgQEAgc3RhdGljIGJvb2wgc3R5bGVDb250YWluc0NvbXBsZXhCYWNr
Z3JvdW5kKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHN0YXRpYyBIYXNoU2V0PENvbG9yPiBl
c3RpbWF0ZWRUZXh0Q29sb3JzRm9yUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlKQogewogICAgIEhh
c2hTZXQ8Q29sb3I+IGNvbG9yczsKLSAgICBmb3IgKFRleHRJdGVyYXRvciBpdGVyYXRvcigmcmFu
Z2UpOyAhaXRlcmF0b3IuYXRFbmQoKTsgaXRlcmF0b3IuYWR2YW5jZSgpKSB7CisgICAgZm9yIChU
ZXh0SXRlcmF0b3IgaXRlcmF0b3IocmFuZ2UpOyAhaXRlcmF0b3IuYXRFbmQoKTsgaXRlcmF0b3Iu
YWR2YW5jZSgpKSB7CiAgICAgICAgIGF1dG8qIG5vZGUgPSBpdGVyYXRvci5ub2RlKCk7CiAgICAg
ICAgIGlmICghaXM8VGV4dD4obm9kZSkgfHwgIWlzPFJlbmRlclRleHQ+KG5vZGUtPnJlbmRlcmVy
KCkpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yOTksNyArMjk5LDcgQEAgc3RhdGljIGJv
b2wgY29udGFpbnNPbmx5V2hpdGVTcGFjZVRleHQoY29uc3QgUmFuZ2UmIHJhbmdlKQogICAgICAg
ICBpZiAoIWlzPFJlbmRlclRleHQ+KG5vZGUtPnJlbmRlcmVyKCkpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KLSAgICByZXR1cm4gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1Nw
YWNlKCZyYW5nZSkuc3RyaXBXaGl0ZVNwYWNlKCkuaXNFbXB0eSgpOworICAgIHJldHVybiBwbGFp
blRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UpLnN0cmlwV2hpdGVTcGFjZSgpLmlzRW1w
dHkoKTsKIH0KIAogc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUluZGljYXRvcihUZXh0SW5kaWNhdG9y
RGF0YSYgZGF0YSwgRnJhbWUmIGZyYW1lLCBjb25zdCBSYW5nZSYgcmFuZ2UsIEZsb2F0U2l6ZSBt
YXJnaW4sIGJvb2wgaW5kaWNhdGVzQ3VycmVudFNlbGVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3Mv
RnJhbWVJT1MubW0KaW5kZXggMzAwOTEzOGYyZGMwMjRlYzc4MjcyOTIwYWUxZTQwMjlmMGU4NzMw
Ny4uZWVkYjVmODcyMTRlNDY3Y2Q3ODY1ZTVmNzE1NDE3NjNiZWY1ZDM0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9pb3MvRnJhbWVJT1MubW0KQEAgLTYxLDYgKzYxLDcgQEAKICNpbXBvcnQgIlJlbmRlclZp
ZXcuaCIKICNpbXBvcnQgIlJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCIKICNpbXBvcnQgIlNoYWRv
d1Jvb3QuaCIKKyNpbXBvcnQgIlNpbXBsZVJhbmdlLmgiCiAjaW1wb3J0ICJUZXh0Qm91bmRhcmll
cy5oIgogI2ltcG9ydCAiVGV4dEl0ZXJhdG9yLmgiCiAjaW1wb3J0ICJWaXNpYmxlUG9zaXRpb24u
aCIKQEAgLTc2MCw3ICs3NjEsNyBAQCBOU0FycmF5ICpGcmFtZTo6aW50ZXJwcmV0YXRpb25zRm9y
Q3VycmVudFJvb3QoKSBjb25zdAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBhdXRvIHJh
bmdlRm9yTWFya2VyID0gUmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRp
dGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSksIGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPmVuZE9mZnNldCgpKSk7Ci0gICAgICAgICAgICBT
dHJpbmcgdmlzaWJsZVRleHRGb3JNYXJrZXIgPSBwbGFpblRleHQocmFuZ2VGb3JNYXJrZXIucHRy
KCkpOworICAgICAgICAgICAgU3RyaW5nIHZpc2libGVUZXh0Rm9yTWFya2VyID0gcGxhaW5UZXh0
KHJhbmdlRm9yTWFya2VyKTsKICAgICAgICAgICAgIHNpemVfdCBpbnRlcnByZXRhdGlvbnNDb3Vu
dEZvckN1cnJlbnRNYXJrZXIgPSBtYXJrZXItPmFsdGVybmF0aXZlcygpLnNpemUoKSArIDE7CiAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGludGVycHJldGF0aW9uc0NvdW50OyAr
K2kpIHsKICAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGV4dCBmb3IgdGhlIGl0aCBpbnRl
cnByZXRhdGlvbi4gSXQgd2lsbCBlaXRoZXIgYmUgdGhlIHZpc2libGUgdGV4dCwgb3Igb25lIG9m
IGl0cwpAQCAtNzgxLDcgKzc4Miw3IEBAIE5TQXJyYXkgKkZyYW1lOjppbnRlcnByZXRhdGlvbnNG
b3JDdXJyZW50Um9vdCgpIGNvbnN0CiAKICAgICAvLyBGaW5hbGx5LCBhZGQgYW55IHRleHQgYWZ0
ZXIgdGhlIGxhc3QgbWFya2VyLgogICAgIGF1dG8gYWZ0ZXJMYXN0TWFya2VyUmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBwcmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRl
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHJvb3QsIHJvb3RDaGlsZENvdW50KSk7Ci0gICAgU3RyaW5n
IHRleHRBZnRlckxhc3RNYXJrZXIgPSBwbGFpblRleHQoYWZ0ZXJMYXN0TWFya2VyUmFuZ2UucHRy
KCkpOworICAgIFN0cmluZyB0ZXh0QWZ0ZXJMYXN0TWFya2VyID0gcGxhaW5UZXh0KGFmdGVyTGFz
dE1hcmtlclJhbmdlKTsKICAgICBpZiAoIXRleHRBZnRlckxhc3RNYXJrZXIuaXNFbXB0eSgpKSB7
CiAgICAgICAgIGZvciAoYXV0byYgaW50ZXJwcmV0YXRpb24gOiBpbnRlcnByZXRhdGlvbnMpCiAg
ICAgICAgICAgICBhcHBlbmQoaW50ZXJwcmV0YXRpb24sIHRleHRBZnRlckxhc3RNYXJrZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IGMxNWM3NGQx
MmZlNGM2YjgxMDRhOGY5YzUyZmJiNzE5N2JmMWYwNjEuLjg5NTJiOTQzOGIxYTA0OWIyMjQ3OTNl
OTMxOWVkY2Y1MWE0ZDE0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9I
aXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJl
c3VsdC5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJTVkdJbWFnZUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVk
ZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJV
c2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgpAQCAtMjAy
LDggKzIwMywxMiBAQCBTdHJpbmcgSGl0VGVzdFJlc3VsdDo6c2VsZWN0ZWRUZXh0KCkgY29uc3QK
ICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAorICAgIGF1
dG8gcmFuZ2UgPSBmcmFtZS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKKyAgICBp
ZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKwogICAgIC8vIExvb2sg
Zm9yIGEgY2hhcmFjdGVyIHRoYXQncyBub3QganVzdCBhIHNlcGFyYXRvci4KLSAgICBmb3IgKFRl
eHRJdGVyYXRvciBpdChmcmFtZS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQo
KSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKKyAgICBmb3IgKFRleHRJdGVyYXRvciBp
dCgqcmFuZ2UpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CiAgICAgICAgIGludCBsZW5n
dGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKICAgICAgICAgICAgIGlmICghKFVfR0VUX0dDX01BU0soaXQudGV4dCgpW2ld
KSAmIFVfR0NfWl9NQVNLKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0K
aW5kZXggNzliMmU0ZjU3ZjdiMTViZTBjOTliM2IzMTg2NWVmOGRjN2I0MTc5ZS4uMjk1MTRmNzA3
NmY2NDgzMTFmMTU5ZmNkNGM0OTA5ZThiYWIyZGQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tE
T01UZXh0SXRlcmF0b3IubW0KQEAgLTQ2LDI5ICs0NiwzNSBAQCAtIChpZClpbml0V2l0aFJhbmdl
OihXS0RPTVJhbmdlICopcmFuZ2UKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKLSAgICBfdGV4dEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+
KFdlYktpdDo6dG9XZWJDb3JlUmFuZ2UocmFuZ2UpKTsKKyAgICBpZiAoIXJhbmdlKQorICAgICAg
ICByZXR1cm4gc2VsZjsKKworICAgIF90ZXh0SXRlcmF0b3IgPSBtYWtlVW5pcXVlPFdlYkNvcmU6
OlRleHRJdGVyYXRvcj4oKldlYktpdDo6dG9XZWJDb3JlUmFuZ2UocmFuZ2UpKTsKICAgICByZXR1
cm4gc2VsZjsKIH0KIAogLSAodm9pZClhZHZhbmNlCiB7Ci0gICAgX3RleHRJdGVyYXRvci0+YWR2
YW5jZSgpOworICAgIGlmIChfdGV4dEl0ZXJhdG9yKQorICAgICAgICBfdGV4dEl0ZXJhdG9yLT5h
ZHZhbmNlKCk7CiAgICAgX3VwY29udmVydGVkVGV4dC5zaHJpbmsoMCk7CiB9CiAKIC0gKEJPT0wp
YXRFbmQKIHsKLSAgICByZXR1cm4gX3RleHRJdGVyYXRvci0+YXRFbmQoKTsKKyAgICByZXR1cm4g
X3RleHRJdGVyYXRvciAmJiBfdGV4dEl0ZXJhdG9yLT5hdEVuZCgpOwogfQogCiAtIChXS0RPTVJh
bmdlICopY3VycmVudFJhbmdlCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9XS0RPTVJhbmdlKGNy
ZWF0ZUxpdmVSYW5nZShfdGV4dEl0ZXJhdG9yLT5yYW5nZSgpKS5wdHIoKSk7CisgICAgcmV0dXJu
IF90ZXh0SXRlcmF0b3IgPyBXZWJLaXQ6OnRvV0tET01SYW5nZShjcmVhdGVMaXZlUmFuZ2UoX3Rl
eHRJdGVyYXRvci0+cmFuZ2UoKSkucHRyKCkpIDogbmlsOwogfQogCiAvLyBGSVhNRTogQ29uc2lk
ZXIgZGVwcmVjYXRpbmcgdGhpcyBtZXRob2QgYW5kIGNyZWF0aW5nIG9uZSB0aGF0IGRvZXMgbm90
IHJlcXVpcmUgY29weWluZyA4LWJpdCBjaGFyYWN0ZXJzLgogLSAoY29uc3QgdW5pY2hhciopY3Vy
cmVudFRleHRQb2ludGVyCiB7CisgICAgaWYgKCFfdGV4dEl0ZXJhdG9yKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBTdHJpbmdWaWV3IHRleHQgPSBfdGV4dEl0ZXJhdG9yLT50ZXh0KCk7
CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aCkK
QEAgLTgzLDcgKzg5LDcgQEAgLSAoY29uc3QgdW5pY2hhciopY3VycmVudFRleHRQb2ludGVyCiAK
IC0gKE5TVUludGVnZXIpY3VycmVudFRleHRMZW5ndGgKIHsKLSAgICByZXR1cm4gX3RleHRJdGVy
YXRvci0+dGV4dCgpLmxlbmd0aCgpOworICAgIHJldHVybiBfdGV4dEl0ZXJhdG9yID8gX3RleHRJ
dGVyYXRvci0+dGV4dCgpLmxlbmd0aCgpIDogMDsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yLmNwcAppbmRleCA1ZmI1MzI5M2FhNzQ0YmY2MGRkZTYzZjE3MzdmN2Q0ZTBk
YWIwZGMxLi43ODgzZTE3MTQzODc5Yzc2NzJkNTBjMzFiOWNmYzFhZjFlMWVhZTc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VEb2N1bWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2ltcGxlUmFuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE2MSw3ICsxNjIsNyBAQCBPcHRpb25hbDxzdGQ6OnBh
aXI8ZG91YmxlLCBkb3VibGU+PiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb21wdXRl
VGV4dExlZwogICAgIHVuc2lnbmVkIG51bWJlck9mSXRlcmF0aW9ucyA9IDA7CiAgICAgdW5zaWdu
ZWQgdG90YWxTYW1wbGVkVGV4dExlbmd0aCA9IDA7CiAKLSAgICBmb3IgKFRleHRJdGVyYXRvciBk
b2N1bWVudFRleHRJdGVyYXRvciB7IGRvY3VtZW50UmFuZ2UucHRyKCksIFRleHRJdGVyYXRvckVu
dGVyc1RleHRDb250cm9scyB9OyAhZG9jdW1lbnRUZXh0SXRlcmF0b3IuYXRFbmQoKTsgZG9jdW1l
bnRUZXh0SXRlcmF0b3IuYWR2YW5jZSgpKSB7CisgICAgZm9yIChUZXh0SXRlcmF0b3IgZG9jdW1l
bnRUZXh0SXRlcmF0b3IgeyBkb2N1bWVudFJhbmdlLmdldCgpLCBUZXh0SXRlcmF0b3JFbnRlcnNU
ZXh0Q29udHJvbHMgfTsgIWRvY3VtZW50VGV4dEl0ZXJhdG9yLmF0RW5kKCk7IGRvY3VtZW50VGV4
dEl0ZXJhdG9yLmFkdmFuY2UoKSkgewogICAgICAgICBpZiAoKytudW1iZXJPZkl0ZXJhdGlvbnMg
Pj0gbWF4aW11bU51bWJlck9mVGV4dFJ1bnNUb0NvbnNpZGVyKQogICAgICAgICAgICAgYnJlYWs7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KaW5kZXggZmVkNmMwNGJlYzhjNWRhMjZlNjUxOTM1NmM2MjAwZTIzYmVlMDM1MC4uNmU3
Y2E5YmExNzhhMDJlZmUzNmQ4NGViYzRhZjA5Mjk3MDVkNWZiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTE0Myw3ICsx
NDMsMjIgQEAKICNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBm
bXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCks
IGNoYW5uZWwsICIlcCAtIFdlYlBhZ2U6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisvLyBGSVhNRTog
VW5jbGVhciBpZiBjYWxsZXJzIGluIHRoaXMgZmlsZSBhcmUgY29ycmVjdGx5IGNob29zaW5nIHdo
aWNoIG9mIHRoZXNlIHR3byBmdW5jdGlvbnMgdG8gdXNlLgorCitzdGF0aWMgU3RyaW5nIHBsYWlu
VGV4dEZvckNvbnRleHQoY29uc3QgUmFuZ2UqIHJhbmdlKQoreworICAgIGlmICghcmFuZ2UpCisg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIHJldHVybiBXZWJDb3JlOjpwbGFpblRl
eHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoKnJhbmdlKTsKK30KKworc3RhdGljIFN0cmluZyBwbGFp
blRleHRGb3JEaXNwbGF5KGNvbnN0IFJhbmdlKiByYW5nZSkKK3sKKyAgICBpZiAoIXJhbmdlKQor
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6cGxhaW5U
ZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKCpyYW5nZSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2
aW9yLCB0cnVlKTsKK30KIAogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewpA
QCAtMjI4LDcgKzI0Myw3IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFt
ZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0CiAgICAgICAgICAgICAg
ICAgcmVzdWx0Lmxhc3RNYXJrZWRSZWN0ID0gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KGNvbXBv
c2l0aW9uUmVjdHMubGFzdCgpLnJlY3QoKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgcmVzdWx0Lmxhc3RNYXJrZWRSZWN0ID0gcmVzdWx0LmZpcnN0TWFya2VkUmVjdDsKLSAg
ICAgICAgICAgIHJlc3VsdC5tYXJrZWRUZXh0ID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1Nw
YWNlKGNvbXBvc2l0aW9uUmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgcmVzdWx0Lm1hcmtlZFRl
eHQgPSBwbGFpblRleHRGb3JDb250ZXh0KGNvbXBvc2l0aW9uUmFuZ2UuZ2V0KCkpOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC0yNTgsNyArMjczLDcgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVk
aXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3QK
ICAgICAgICAgcG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRFbmQgPSBwb3N0TGF5b3V0RGF0YS5j
YXJldFJlY3RBdFN0YXJ0OwogICAgICAgICAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyBjaGVjayBz
aG91bGQgdGFrZSBpbnRvIGFjY291bnQgd3JpdGluZyBkaXJlY3Rpb24uCiAgICAgICAgIHBvc3RM
YXlvdXREYXRhLmlzUmVwbGFjZUFsbG93ZWQgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgJiYg
YXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoc2VsZWN0aW9uLnN0YXJ0KCksIFdvcmRHcmFudWxhcml0
eSwgRGlyZWN0aW9uRm9yd2FyZCk7Ci0gICAgICAgIHBvc3RMYXlvdXREYXRhLndvcmRBdFNlbGVj
dGlvbiA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZSh3b3JkUmFuZ2VGcm9tUG9zaXRp
b24oc2VsZWN0aW9uLnN0YXJ0KCkpLmdldCgpKTsKKyAgICAgICAgcG9zdExheW91dERhdGEud29y
ZEF0U2VsZWN0aW9uID0gcGxhaW5UZXh0Rm9yQ29udGV4dCh3b3JkUmFuZ2VGcm9tUG9zaXRpb24o
c2VsZWN0aW9uLnN0YXJ0KCkpLmdldCgpKTsKICAgICAgICAgaWYgKHNlbGVjdGlvbi5pc0NvbnRl
bnRFZGl0YWJsZSgpKQogICAgICAgICAgICAgY2hhcmFjdGVyc0Fyb3VuZFBvc2l0aW9uKHNlbGVj
dGlvbi5zdGFydCgpLCBwb3N0TGF5b3V0RGF0YS5jaGFyYWN0ZXJBZnRlclNlbGVjdGlvbiwgcG9z
dExheW91dERhdGEuY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uLCBwb3N0TGF5b3V0RGF0YS50d29D
aGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24pOwogICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uLmlzUmFu
Z2UoKSkgewpAQCAtMjY5LDcgKzI4NCw3IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JT
dGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0CiAgICAg
ICAgIGlmIChzZWxlY3RlZFJhbmdlKSB7CiAgICAgICAgICAgICBzZWxlY3RlZFJhbmdlLT5jb2xs
ZWN0U2VsZWN0aW9uUmVjdHMocG9zdExheW91dERhdGEuc2VsZWN0aW9uUmVjdHMpOwogICAgICAg
ICAgICAgY29udmVydFNlbGVjdGlvblJlY3RzVG9Sb290Vmlldyh2aWV3LCBwb3N0TGF5b3V0RGF0
YS5zZWxlY3Rpb25SZWN0cyk7Ci0gICAgICAgICAgICBzZWxlY3RlZFRleHQgPSBwbGFpblRleHRS
ZXBsYWNpbmdOb0JyZWFrU3BhY2Uoc2VsZWN0ZWRSYW5nZS5nZXQoKSwgVGV4dEl0ZXJhdG9yRGVm
YXVsdEJlaGF2aW9yLCB0cnVlKTsKKyAgICAgICAgICAgIHNlbGVjdGVkVGV4dCA9IHBsYWluVGV4
dEZvckRpc3BsYXkoc2VsZWN0ZWRSYW5nZS5nZXQoKSk7CiAgICAgICAgICAgICBwb3N0TGF5b3V0
RGF0YS5zZWxlY3RlZFRleHRMZW5ndGggPSBzZWxlY3RlZFRleHQubGVuZ3RoKCk7CiAgICAgICAg
ICAgICBjb25zdCBpbnQgbWF4U2VsZWN0ZWRUZXh0TGVuZ3RoID0gMjAwOwogICAgICAgICAgICAg
cG9zdExheW91dERhdGEud29yZEF0U2VsZWN0aW9uID0gc2VsZWN0ZWRUZXh0LmxlZnQobWF4U2Vs
ZWN0ZWRUZXh0TGVuZ3RoKTsKQEAgLTUwMiw5ICs1MTcsOSBAQCB2b2lkIFdlYlBhZ2U6OmdldFNl
bGVjdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIH0KICAgICBjb25zdCBp
bnQgc2VsZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoID0gMzUwOwogICAgIAotICAgIFN0cmlu
ZyBzZWxlY3RlZFRleHQgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoZnJhbWUuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7Ci0gICAgU3Ry
aW5nIHRleHRCZWZvcmUgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2VFeHBh
bmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkoZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgc2VsZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBE
aXJlY3Rpb25CYWNrd2FyZCkuZ2V0KCksIFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgdHJ1
ZSk7Ci0gICAgU3RyaW5nIHRleHRBZnRlciA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFj
ZShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShmcmFt
ZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKSwgc2VsZWN0aW9uRXh0ZW5kZWRDb250ZXh0
TGVuZ3RoLCBEaXJlY3Rpb25Gb3J3YXJkKS5nZXQoKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2
aW9yLCB0cnVlKTsKKyAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0ID0gcGxhaW5UZXh0Rm9yQ29udGV4
dChmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgp
KTsKKyAgICBTdHJpbmcgdGV4dEJlZm9yZSA9IHBsYWluVGV4dEZvckRpc3BsYXkocmFuZ2VFeHBh
bmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkoZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgc2VsZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBE
aXJlY3Rpb25CYWNrd2FyZCkuZ2V0KCkpOworICAgIFN0cmluZyB0ZXh0QWZ0ZXIgPSBwbGFpblRl
eHRGb3JEaXNwbGF5KHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJv
dW5kYXJ5KGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpLCBzZWxlY3Rpb25FeHRl
bmRlZENvbnRleHRMZW5ndGgsIERpcmVjdGlvbkZvcndhcmQpLmdldCgpKTsKIAogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKHNlbGVjdGVk
VGV4dCwgdGV4dEJlZm9yZSwgdGV4dEFmdGVyLCBjYWxsYmFja0lEKSk7CiB9CkBAIC0yMDA2LDcg
KzIwMjEsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4
dChpbnQzMl90IG9mZnNldCwgY29uc3QgU3RyaW5nJiB0ZQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZS5wdHIoKSwg
VGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKSAhPSB0ZXh0KSB7CisgICAgaWYgKHBs
YWluVGV4dEZvckRpc3BsYXkocmFuZ2UucHRyKCkpICE9IHRleHQpIHsKICAgICAgICAgLy8gVHJ5
IHRvIHNlYXJjaCBmb3IgYSByYW5nZSB3aGljaCBpcyB0aGUgY2xvc2VzdCB0byB0aGUgcG9zaXRp
b24gd2l0aGluIHRoZSBzZWxlY3Rpb24gcmFuZ2UgdGhhdCBtYXRjaGVzIHRoZSBwYXNzZWQgaW4g
dGV4dC4KICAgICAgICAgaWYgKGF1dG8gd29yZFJhbmdlID0gcmFuZ2VOZWFyUG9zaXRpb25NYXRj
aGVzVGV4dChzdGFydFBvc2l0aW9uLCB0ZXh0LCBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2Uo
KSkpIHsKICAgICAgICAgICAgIGlmICghd29yZFJhbmdlLT5jb2xsYXBzZWQoKSkKQEAgLTIyMjYs
NyArMjI0MSw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQoQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogCiAgICAgU3RyaW5nIHNlbGVjdGVkVGV4dDsKICAgICBpZiAoZnJh
bWUuc2VsZWN0aW9uKCkuaXNSYW5nZSgpKQotICAgICAgICBzZWxlY3RlZFRleHQgPSBwbGFpblRl
eHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9O
b3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CisgICAgICAgIHNlbGVjdGVkVGV4dCA9IHBsYWluVGV4
dEZvckNvbnRleHQoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFu
Z2UoKS5nZXQoKSk7CiAKICAgICBTdHJpbmcgY29udGV4dEJlZm9yZTsKICAgICBpZiAoc3RhcnRQ
b3NpdGlvbiAhPSBzdGFydE9mRWRpdGFibGVDb250ZW50KHN0YXJ0UG9zaXRpb24pKSB7CkBAIC0y
MjM5LDcgKzIyNTQsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICAgICAgICAgIGxhc3RQb3NpdGlvbiA9IGN1cnJlbnRQ
b3NpdGlvbjsKICAgICAgICAgfQogICAgICAgICBpZiAobGFzdFBvc2l0aW9uLmlzTm90TnVsbCgp
ICYmIGxhc3RQb3NpdGlvbiAhPSBzdGFydFBvc2l0aW9uKQotICAgICAgICAgICAgY29udGV4dEJl
Zm9yZSA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShSYW5nZTo6Y3JlYXRlKCpmcmFt
ZS5kb2N1bWVudCgpLCBsYXN0UG9zaXRpb24sIHN0YXJ0UG9zaXRpb24pLnB0cigpKTsKKyAgICAg
ICAgICAgIGNvbnRleHRCZWZvcmUgPSBwbGFpblRleHRGb3JDb250ZXh0KFJhbmdlOjpjcmVhdGUo
KmZyYW1lLmRvY3VtZW50KCksIGxhc3RQb3NpdGlvbiwgc3RhcnRQb3NpdGlvbikucHRyKCkpOwog
ICAgIH0KIAogICAgIFN0cmluZyBjb250ZXh0QWZ0ZXI7CkBAIC0yMjUzLDcgKzIyNjgsNyBAQCB2
b2lkIFdlYlBhZ2U6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKICAgICAgICAgICAgIGxhc3RQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAg
fQogICAgICAgICBpZiAobGFzdFBvc2l0aW9uLmlzTm90TnVsbCgpICYmIGxhc3RQb3NpdGlvbiAh
PSBlbmRQb3NpdGlvbikKLSAgICAgICAgICAgIGNvbnRleHRBZnRlciA9IHBsYWluVGV4dFJlcGxh
Y2luZ05vQnJlYWtTcGFjZShSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBlbmRQb3Np
dGlvbiwgbGFzdFBvc2l0aW9uKS5wdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0QWZ0ZXIgPSBw
bGFpblRleHRGb3JDb250ZXh0KFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIGVuZFBv
c2l0aW9uLCBsYXN0UG9zaXRpb24pLnB0cigpKTsKICAgICB9CiAKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhzZWxlY3RlZFRleHQsIGNv
bnRleHRCZWZvcmUsIGNvbnRleHRBZnRlciwgY2FsbGJhY2tJRCkpOwpAQCAtMjI2Myw3ICsyMjc4
LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXBsYWNlU2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xk
VGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgUmVmUHRyPFJh
bmdlPiB3b3JkUmFuZ2UgPSBmcmFtZS5zZWxlY3Rpb24oKS5pc0NhcmV0KCkgPyB3b3JkUmFuZ2VG
cm9tUG9zaXRpb24oZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSkgOiBmcmFt
ZS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAgIGlmIChwbGFpblRleHRSZXBs
YWNpbmdOb0JyZWFrU3BhY2Uod29yZFJhbmdlLmdldCgpKSAhPSBvbGRUZXh0KQorICAgIGlmIChw
bGFpblRleHRGb3JDb250ZXh0KHdvcmRSYW5nZS5nZXQoKSkgIT0gb2xkVGV4dCkKICAgICAgICAg
cmV0dXJuOwogICAgIAogICAgIGZyYW1lLmVkaXRvcigpLnNldElnbm9yZVNlbGVjdGlvbkNoYW5n
ZXModHJ1ZSk7CkBAIC0yMjg5LDcgKzIzMDQsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VEaWN0
YXRlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpCiAg
ICAgICAgIHBvc2l0aW9uID0gc3RhcnRPZkRvY3VtZW50KHN0YXRpY19jYXN0PE5vZGUqPihmcmFt
ZS5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkpOwogICAgIGF1dG8gcmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgZnJhbWUuc2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkuc3RhcnQoKSk7CiAKLSAgICBpZiAocGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVh
a1NwYWNlKHJhbmdlLnB0cigpKSAhPSBvbGRUZXh0KQorICAgIGlmIChwbGFpblRleHRGb3JDb250
ZXh0KHJhbmdlLnB0cigpKSAhPSBvbGRUZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBX
ZSBkb24ndCB3YW50IHRvIG5vdGlmeSB0aGUgY2xpZW50IHRoYXQgdGhlIHNlbGVjdGlvbiBoYXMg
Y2hhbmdlZCB1bnRpbCB3ZSBhcmUgZG9uZSBpbnNlcnRpbmcgdGhlIG5ldyB0ZXh0LgpAQCAtMjMx
NCw3ICsyMzI5LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNv
bnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBDb20KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGF1dG8gdGV4dEZvclJhbmdlID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVh
a1NwYWNlKHJhbmdlLmdldCgpKTsKKyAgICBhdXRvIHRleHRGb3JSYW5nZSA9IHBsYWluVGV4dEZv
ckNvbnRleHQocmFuZ2UuZ2V0KCkpOwogICAgIGNvbnN0IHVuc2lnbmVkIG1heFNlYXJjaEF0dGVt
cHRzID0gNTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgIGkgPCBtYXhTZWFyY2hBdHRlbXB0cyAm
JiB0ZXh0Rm9yUmFuZ2UgIT0gdGV4dEZvckF1dG9jb3JyZWN0aW9uOyArK2kpCiAgICAgewpAQCAt
MjMyMiw3ICsyMzM3LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRh
KGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBDb20KICAgICAgICAgaWYgKHBv
c2l0aW9uLmlzTnVsbCgpIHx8IHBvc2l0aW9uID09IHJhbmdlLT5zdGFydFBvc2l0aW9uKCkpCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFtZS5k
b2N1bWVudCgpLCB3b3JkUmFuZ2VGcm9tUG9zaXRpb24ocG9zaXRpb24pLT5zdGFydFBvc2l0aW9u
KCksIHJhbmdlLT5lbmRQb3NpdGlvbigpKTsKLSAgICAgICAgdGV4dEZvclJhbmdlID0gcGxhaW5U
ZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLmdldCgpKTsKKyAgICAgICAgdGV4dEZvclJh
bmdlID0gcGxhaW5UZXh0Rm9yQ29udGV4dChyYW5nZS5nZXQoKSk7CiAgICAgfQogCiAgICAgVmVj
dG9yPFNlbGVjdGlvblJlY3Q+IHNlbGVjdGlvblJlY3RzOwpAQCAtMjM4NSw3ICsyNDAwLDcgQEAg
Ym9vbCBXZWJQYWdlOjphcHBseUF1dG9jb3JyZWN0aW9uSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBj
b3JyZWN0aW9uLCBjb25zdCBTdHJpbmcKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNDYXJl
dCgpKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IGZyYW1lLnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLnN0YXJ0KCk7CiAgICAgICAgIHJhbmdlID0gd29yZFJhbmdlRnJvbVBv
c2l0aW9uKHBvc2l0aW9uKTsKLSAgICAgICAgdGV4dEZvclJhbmdlID0gcGxhaW5UZXh0UmVwbGFj
aW5nTm9CcmVha1NwYWNlKHJhbmdlLmdldCgpKTsKKyAgICAgICAgdGV4dEZvclJhbmdlID0gcGxh
aW5UZXh0Rm9yQ29udGV4dChyYW5nZS5nZXQoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBJZiAn
b3JpZ2luYWxUZXh0JyBpcyBub3QgdGhlIHNhbWUgYXMgJ3RleHRGb3JSYW5nZScgd2UgbmVlZCB0
byBtb3ZlICdyYW5nZScKICAgICAgICAgLy8gZm9yd2FyZCBzdWNoIHRoYXQgaXQgbWF0Y2hlcyB0
aGUgb3JpZ2luYWwgc2VsZWN0aW9uIGFzIG11Y2ggYXMgcG9zc2libGUuCkBAIC0yMzk2LDcgKzI0
MTEsNyBAQCBib29sIFdlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hbChjb25zdCBT
dHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZwogICAgICAgICAgICAgaWYgKHBvc2l0aW9u
LmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gc3RhcnRPZkRvY3VtZW50KHN0
YXRpY19jYXN0PE5vZGUqPihmcmFtZS5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkpOwog
ICAgICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwb3Np
dGlvbiwgZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSk7Ci0gICAgICAgICAg
ICB0ZXh0Rm9yUmFuZ2UgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UuZ2V0
KCkpOworICAgICAgICAgICAgdGV4dEZvclJhbmdlID0gcGxhaW5UZXh0Rm9yQ29udGV4dChyYW5n
ZS5nZXQoKSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBsb29wQ291bnQgPSAwOwogICAgICAgICAg
ICAgY29uc3QgdW5zaWduZWQgbWF4UG9zaXRpb25zQXR0ZW1wdHMgPSAxMDsKICAgICAgICAgICAg
IHdoaWxlICh0ZXh0Rm9yUmFuZ2UubGVuZ3RoKCkgJiYgdGV4dEZvclJhbmdlLmxlbmd0aCgpID4g
b3JpZ2luYWxUZXh0Lmxlbmd0aCgpICYmIGxvb3BDb3VudCA8IG1heFBvc2l0aW9uc0F0dGVtcHRz
KSB7CkBAIC0yNDA1LDcgKzI0MjAsNyBAQCBib29sIFdlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rp
b25JbnRlcm5hbChjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZwogICAgICAg
ICAgICAgICAgICAgICByYW5nZSA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgICAgICByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCks
IHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKTsKLSAgICAg
ICAgICAgICAgICB0ZXh0Rm9yUmFuZ2UgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2Uo
cmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIHRleHRGb3JSYW5nZSA9IHBsYWluVGV4dEZv
ckNvbnRleHQocmFuZ2UuZ2V0KCkpOwogICAgICAgICAgICAgICAgIGxvb3BDb3VudCsrOwogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHRleHRGb3JSYW5nZS5pc0VtcHR5KCkgJiYg
cmFuZ2UgJiYgIXJhbmdlLT5jb2xsYXBzZWQoKSkgewpAQCAtMjQyMSw3ICsyNDM2LDcgQEAgYm9v
bCBXZWJQYWdlOjphcHBseUF1dG9jb3JyZWN0aW9uSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBjb3Jy
ZWN0aW9uLCBjb25zdCBTdHJpbmcKICAgICAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgICAgICB0ZXh0Rm9yUmFuZ2UgPSBwbGFpblRleHRSZXBsYWNpbmdO
b0JyZWFrU3BhY2UocmFuZ2UuZ2V0KCkpOworICAgICAgICB0ZXh0Rm9yUmFuZ2UgPSBwbGFpblRl
eHRGb3JDb250ZXh0KHJhbmdlLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAoZm9sZFF1b3RlTWFy
a3ModGV4dEZvclJhbmdlKSAhPSBvcmlnaW5hbFRleHRXaXRoRm9sZGVkUXVvdGVNYXJrcykKQEAg
LTI0NTcsMTcgKzI0NzIsMTcgQEAgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IFdlYlBhZ2U6OmF1
dG9jb3JyZWN0aW9uQ29udGV4dCgpCiAgICAgY29uc3QgdW5zaWduZWQgbWF4Q29udGV4dExlbmd0
aCA9IDMwOwogCiAgICAgaWYgKGZyYW1lLnNlbGVjdGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAg
c2VsZWN0ZWRUZXh0ID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGZyYW1lLnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgICAgICBz
ZWxlY3RlZFRleHQgPSBwbGFpblRleHRGb3JDb250ZXh0KGZyYW1lLnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogCiAgICAgaWYgKGF1dG8gY29tcG9z
aXRpb25SYW5nZSA9IGZyYW1lLmVkaXRvcigpLmNvbXBvc2l0aW9uUmFuZ2UoKSkgewogICAgICAg
ICByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIGNvbXBvc2l0aW9uUmFu
Z2UtPnN0YXJ0UG9zaXRpb24oKSwgc3RhcnRQb3NpdGlvbik7CiAgICAgICAgIFN0cmluZyBtYXJr
ZWRUZXh0QmVmb3JlOwogICAgICAgICBpZiAocmFuZ2UpCi0gICAgICAgICAgICBtYXJrZWRUZXh0
QmVmb3JlID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLmdldCgpKTsKKyAg
ICAgICAgICAgIG1hcmtlZFRleHRCZWZvcmUgPSBwbGFpblRleHRGb3JDb250ZXh0KHJhbmdlLmdl
dCgpKTsKICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBl
bmRQb3NpdGlvbiwgY29tcG9zaXRpb25SYW5nZS0+ZW5kUG9zaXRpb24oKSk7CiAgICAgICAgIFN0
cmluZyBtYXJrZWRUZXh0QWZ0ZXI7CiAgICAgICAgIGlmIChyYW5nZSkKLSAgICAgICAgICAgIG1h
cmtlZFRleHRBZnRlciA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZS5nZXQo
KSk7CisgICAgICAgICAgICBtYXJrZWRUZXh0QWZ0ZXIgPSBwbGFpblRleHRGb3JDb250ZXh0KHJh
bmdlLmdldCgpKTsKICAgICAgICAgbWFya2VkVGV4dCA9IG1hcmtlZFRleHRCZWZvcmUgKyBzZWxl
Y3RlZFRleHQgKyBtYXJrZWRUZXh0QWZ0ZXI7CiAgICAgICAgIGlmICghbWFya2VkVGV4dC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIG1hcmtlZFRleHRSYW5nZS5sb2NhdGlvbiA9IG1hcmtlZFRl
eHRCZWZvcmUubGVuZ3RoKCk7CkBAIC0yNDg0LDE0ICsyNDk5LDE0IEBAIFdlYkF1dG9jb3JyZWN0
aW9uQ29udGV4dCBXZWJQYWdlOjphdXRvY29ycmVjdGlvbkNvbnRleHQoKQogICAgICAgICAgICAg
ICAgIHByZXZpb3VzUG9zaXRpb24gPSBzdGFydE9mV29yZChwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5
T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9u
QmFja3dhcmQpKTsKICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNQb3NpdGlvbi5pc051bGwo
KSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGN1
cnJlbnRXb3JkID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKFJhbmdlOjpjcmVhdGUo
KmZyYW1lLmRvY3VtZW50KCksIHByZXZpb3VzUG9zaXRpb24sIGN1cnJlbnRQb3NpdGlvbikucHRy
KCkpOworICAgICAgICAgICAgICAgIFN0cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dEZvckNv
bnRleHQoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcHJldmlvdXNQb3NpdGlvbiwg
Y3VycmVudFBvc2l0aW9uKS5wdHIoKSk7CiAgICAgICAgICAgICAgICAgdG90YWxDb250ZXh0TGVu
Z3RoICs9IGN1cnJlbnRXb3JkLmxlbmd0aCgpOwogICAgICAgICAgICAgICAgIGlmICh0b3RhbENv
bnRleHRMZW5ndGggPj0gbWF4Q29udGV4dExlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcHJldmlvdXNQb3NpdGlvbjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24uaXNOb3ROdWxs
KCkgJiYgY3VycmVudFBvc2l0aW9uICE9IHN0YXJ0UG9zaXRpb24pIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0QmVmb3JlID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKFJhbmdlOjpj
cmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIGN1cnJlbnRQb3NpdGlvbiwgc3RhcnRQb3NpdGlvbiku
cHRyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHRCZWZvcmUgPSBwbGFpblRleHRGb3JDb250
ZXh0KFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIGN1cnJlbnRQb3NpdGlvbiwgc3Rh
cnRQb3NpdGlvbikucHRyKCkpOwogICAgICAgICAgICAgICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFu
dWxhcml0eShjdXJyZW50UG9zaXRpb24sIFBhcmFncmFwaEdyYW51bGFyaXR5LCBEaXJlY3Rpb25C
YWNrd2FyZCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRCZWZvcmUgPSBtYWtlU3RyaW5n
KCJcbiAiX3MsIGNvbnRleHRCZWZvcmUpOwogICAgICAgICAgICAgfQpAQCAtMjUwMiw3ICsyNTE3
LDcgQEAgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IFdlYlBhZ2U6OmF1dG9jb3JyZWN0aW9uQ29u
dGV4dCgpCiAgICAgICAgICAgICBpZiAoIWF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGVuZFBvc2l0
aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpICYmIHdpdGhpblRleHRVbml0
T2ZHcmFudWxhcml0eShlbmRQb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3
YXJkKSkKICAgICAgICAgICAgICAgICBuZXh0UG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJvdW5k
YXJ5T2ZHcmFudWxhcml0eShlbmRQb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25G
b3J3YXJkKTsKICAgICAgICAgICAgIGlmIChuZXh0UG9zaXRpb24uaXNOb3ROdWxsKCkpCi0gICAg
ICAgICAgICAgICAgY29udGV4dEFmdGVyID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNl
KFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIGVuZFBvc2l0aW9uLCBuZXh0UG9zaXRp
b24pLnB0cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0QWZ0ZXIgPSBwbGFpblRleHRGb3JD
b250ZXh0KFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIGVuZFBvc2l0aW9uLCBuZXh0
UG9zaXRpb24pLnB0cigpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjYzMSwxMCArMjY0Niwx
MCBAQCBzdGF0aWMgdm9pZCBkYXRhRGV0ZWN0b3JMaW5rUG9zaXRpb25JbmZvcm1hdGlvbihFbGVt
ZW50JiBlbGVtZW50LCBJbnRlcmFjdGlvbkluZgogICAgIAogICAgIGF1dG8gbGlua1JhbmdlID0g
UmFuZ2U6OmNyZWF0ZShlbGVtZW50LmRvY3VtZW50KCkpOwogICAgIGxpbmtSYW5nZS0+c2VsZWN0
Tm9kZUNvbnRlbnRzKGVsZW1lbnQpOwotICAgIGluZm8udGV4dEJlZm9yZSA9IHBsYWluVGV4dFJl
cGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25B
dFdvcmRCb3VuZGFyeShsaW5rUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwKLSAgICAgICAgZGF0YURl
dGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0aW9uQmFja3dhcmQpLmdldCgpLCBU
ZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIHRydWUpOwotICAgIGluZm8udGV4dEFmdGVyID0g
cGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJ
bkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KGxpbmtSYW5nZS0+ZW5kUG9zaXRpb24oKSwKLSAgICAg
ICAgZGF0YURldGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0aW9uRm9yd2FyZCku
Z2V0KCksIFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgdHJ1ZSk7CisgICAgaW5mby50ZXh0
QmVmb3JlID0gcGxhaW5UZXh0Rm9yRGlzcGxheShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5E
aXJlY3Rpb25BdFdvcmRCb3VuZGFyeShsaW5rUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwKKyAgICAg
ICAgZGF0YURldGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0aW9uQmFja3dhcmQp
LmdldCgpKTsKKyAgICBpbmZvLnRleHRBZnRlciA9IHBsYWluVGV4dEZvckRpc3BsYXkocmFuZ2VF
eHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1JhbmdlLT5l
bmRQb3NpdGlvbigpLAorICAgICAgICBkYXRhRGV0ZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3Ro
LCBEaXJlY3Rpb25Gb3J3YXJkKS5nZXQoKSk7CiB9CiAjZW5kaWYKIApAQCAtNDE4NiwyMCArNDIw
MSwyMSBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KERvY3Vt
ZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0IHJlcXVlcwogICAgICAgICB9CiAgICAgfQogCi0gICAg
YXV0byBtYWtlU3RyaW5nID0gWyZdKFZpc2libGVQb3NpdGlvbiYgc3RhcnQsIFZpc2libGVQb3Np
dGlvbiYgZW5kKSAtPiBOU0F0dHJpYnV0ZWRTdHJpbmcgKiB7CisgICAgYXV0byBtYWtlU3RyaW5n
ID0gW10gKFZpc2libGVQb3NpdGlvbiYgc3RhcnQsIFZpc2libGVQb3NpdGlvbiYgZW5kKSAtPiBS
ZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiB7CiAgICAgICAgIGlmIChzdGFydC5pc051bGwo
KSB8fCBlbmQuaXNOdWxsKCkgfHwgc3RhcnQgPT0gZW5kKQogICAgICAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICAgICAgU2ltcGxlUmFuZ2UgcmFuZ2UgeyBtYWtlQm91bmRhcnlQb2ludChzdGFydC5k
ZWVwRXF1aXZhbGVudCgpKSwgbWFrZUJvdW5kYXJ5UG9pbnQoZW5kLmRlZXBFcXVpdmFsZW50KCkp
IH07CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZXR1cm4gZWRpdGluZy1vZmZzZXQt
Y29tcGF0aWJsZSBhdHRyaWJ1dGVkIHN0cmluZ3MgaWYgdGhhdCBvcHRpb24gaXMgcmVxdWVzdGVk
LgotICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhTdHJpbmc6cGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHN0YXJ0LmRlZXBFcXVp
dmFsZW50KCksIGVuZC5kZWVwRXF1aXZhbGVudCgpKV0pLmF1dG9yZWxlYXNlKCk7CisgICAgICAg
IHJldHVybiBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmlu
ZzpXZWJDb3JlOjpwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UpXSk7CiAgICAg
fTsKIAotICAgIGNvbnRleHQuY29udGV4dEJlZm9yZSA9IG1ha2VTdHJpbmcoY29udGV4dEJlZm9y
ZVN0YXJ0LCBzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24pOwotICAgIGNvbnRleHQu
c2VsZWN0ZWRUZXh0ID0gbWFrZVN0cmluZyhzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rp
b24sIGVuZE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24pOwotICAgIGNvbnRleHQuY29udGV4
dEFmdGVyID0gbWFrZVN0cmluZyhlbmRPZlJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0aW9uLCBjb250
ZXh0QWZ0ZXJFbmQpOworICAgIGNvbnRleHQuY29udGV4dEJlZm9yZSA9IG1ha2VTdHJpbmcoY29u
dGV4dEJlZm9yZVN0YXJ0LCBzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24pLmdldCgp
OworICAgIGNvbnRleHQuc2VsZWN0ZWRUZXh0ID0gbWFrZVN0cmluZyhzdGFydE9mUmFuZ2VPZklu
dGVyZXN0SW5TZWxlY3Rpb24sIGVuZE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24pLmdldCgp
OworICAgIGNvbnRleHQuY29udGV4dEFmdGVyID0gbWFrZVN0cmluZyhlbmRPZlJhbmdlT2ZJbnRl
cmVzdEluU2VsZWN0aW9uLCBjb250ZXh0QWZ0ZXJFbmQpLmdldCgpOwogICAgIGlmIChjb21wb3Np
dGlvblJhbmdlICYmIHJhbmdlc092ZXJsYXAocmFuZ2VPZkludGVyZXN0LmdldCgpLCBjb21wb3Np
dGlvblJhbmdlLmdldCgpKSkgewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gY29tcG9zaXRpb25T
dGFydChjb21wb3NpdGlvblJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwogICAgICAgICBWaXNpYmxl
UG9zaXRpb24gY29tcG9zaXRpb25FbmQoY29tcG9zaXRpb25SYW5nZS0+ZW5kUG9zaXRpb24oKSk7
Ci0gICAgICAgIGNvbnRleHQubWFya2VkVGV4dCA9IG1ha2VTdHJpbmcoY29tcG9zaXRpb25TdGFy
dCwgY29tcG9zaXRpb25FbmQpOworICAgICAgICBjb250ZXh0Lm1hcmtlZFRleHQgPSBtYWtlU3Ry
aW5nKGNvbXBvc2l0aW9uU3RhcnQsIGNvbXBvc2l0aW9uRW5kKS5nZXQoKTsKICAgICAgICAgY29u
dGV4dC5zZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0LmxvY2F0aW9uID0gZGlzdGFuY2VCZXR3ZWVu
UG9zaXRpb25zKHN0YXJ0T2ZSYW5nZU9mSW50ZXJlc3RJblNlbGVjdGlvbiwgY29tcG9zaXRpb25T
dGFydCk7CiAgICAgICAgIGNvbnRleHQuc2VsZWN0ZWRSYW5nZUluTWFya2VkVGV4dC5sZW5ndGgg
PSBbY29udGV4dC5zZWxlY3RlZFRleHQuc3RyaW5nIGxlbmd0aF07CiAgICAgfQpAQCAtNDIyNiw3
ICs0MjQyLDggQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChE
b2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCByZXF1ZXMKICAgICAgICAgaWYgKGF1dG8gY29u
dGV4dFJhbmdlID0gbWFrZVJhbmdlKGNvbnRleHRCZWZvcmVTdGFydCwgY29udGV4dEFmdGVyRW5k
KSkKICAgICAgICAgICAgIGNvbnRleHQudGV4dFJlY3RzID0gY2hhcmFjdGVyUmVjdHNGb3JSYW5n
ZSgqY29udGV4dFJhbmdlLCAwKTsKICAgICB9IGVsc2UgaWYgKHdhbnRzTWFya2VkVGV4dFJlY3Rz
ICYmIGNvbXBvc2l0aW9uUmFuZ2UpIHsKLSAgICAgICAgYXV0byBjb21wb3NpdGlvblN0YXJ0T2Zm
c2V0ID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGNvbnRleHRCZWZvcmVTdGFydC5k
ZWVwRXF1aXZhbGVudCgpLCBjb21wb3NpdGlvblJhbmdlLT5zdGFydFBvc2l0aW9uKCkpLmxlbmd0
aCgpOworICAgICAgICBTaW1wbGVSYW5nZSByYW5nZSB7IG1ha2VCb3VuZGFyeVBvaW50KGNvbnRl
eHRCZWZvcmVTdGFydC5kZWVwRXF1aXZhbGVudCgpKSwgbWFrZUJvdW5kYXJ5UG9pbnQoY29tcG9z
aXRpb25SYW5nZS0+c3RhcnRQb3NpdGlvbigpKSB9OworICAgICAgICBhdXRvIGNvbXBvc2l0aW9u
U3RhcnRPZmZzZXQgPSBXZWJDb3JlOjpwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFu
Z2UpLmxlbmd0aCgpOwogICAgICAgICBjb250ZXh0LnRleHRSZWN0cyA9IGNoYXJhY3RlclJlY3Rz
Rm9yUmFuZ2UoKmNvbXBvc2l0aW9uUmFuZ2UsIGNvbXBvc2l0aW9uU3RhcnRPZmZzZXQpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
aW5kZXggZWVhZjBhMDllOGI5MDZkMTY1ZGFhMTQ4MTQ2YzRjODMyY2U2YmEyZS4uNWJhMmU3ODA0
NmY0NjgwN2QxOGViNDE4NzczYWU4YjIxNDIxZmZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC03MDIzLDggKzcwMjMsOCBAQCAtIChO
U0F0dHJpYnV0ZWRTdHJpbmcgKilfYXR0cmlidXRlZFN0cmluZ0Zyb21ET01SYW5nZTooRE9NUmFu
Z2UgKilyYW5nZQogLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopX2xlZ2FjeUF0dHJpYnV0ZWRTdHJp
bmdGcm9tOihET01Ob2RlKilzdGFydENvbnRhaW5lciBvZmZzZXQ6KGludClzdGFydE9mZnNldCB0
bzooRE9NTm9kZSopZW5kQ29udGFpbmVyIG9mZnNldDooaW50KWVuZE9mZnNldAogewogICAgIHJl
dHVybiBhdHRyaWJ1dGVkU3RyaW5nQmV0d2VlblN0YXJ0QW5kRW5kKAotICAgICAgICBXZWJDb3Jl
OjpQb3NpdGlvbiB7IGNvcmUoc3RhcnRDb250YWluZXIpLCBzdGFydE9mZnNldCwgV2ViQ29yZTo6
UG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciB9LAotICAgICAgICBXZWJDb3JlOjpQ
b3NpdGlvbiB7IGNvcmUoZW5kQ29udGFpbmVyKSwgZW5kT2Zmc2V0LCBXZWJDb3JlOjpQb3NpdGlv
bjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yIH0pOworICAgICAgICBXZWJDb3JlOjpQb3NpdGlv
biB7IGNvcmUoc3RhcnRDb250YWluZXIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnRPZmZz
ZXQpLCBXZWJDb3JlOjpQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yIH0sCisgICAg
ICAgIFdlYkNvcmU6OlBvc2l0aW9uIHsgY29yZShlbmRDb250YWluZXIpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZW5kT2Zmc2V0KSwgV2ViQ29yZTo6UG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJ
bkFuY2hvciB9KTsKIH0KIAogLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFN0cmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRl
cmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRv
ci5tbQppbmRleCAzNTdjNTI4MjgzNmFhOGRiYWRhMjFlY2U0OTM4ODVlNGZlOGJiMWIyLi4wYjEy
YmNhMDdhYzViNWU5NTJjMjZmOWMzNTY3NjczNjdkYzI0MGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQpAQCAtNzAsMzIgKzcw
LDQwIEBAIC0gKGlkKWluaXRXaXRoUmFuZ2U6KERPTVJhbmdlICopcmFuZ2UKICAgICAgICAgcmV0
dXJuIHNlbGY7CiAgICAgCiAgICAgX3ByaXZhdGUgPSBbW1dlYlRleHRJdGVyYXRvclByaXZhdGUg
YWxsb2NdIGluaXRdOwotICAgIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpUZXh0SXRlcmF0b3I+KGNvcmUocmFuZ2UpKTsKKyAgICBpZiAoIXJhbmdlKQorICAg
ICAgICByZXR1cm4gc2VsZjsKKworICAgIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yID0gbWFrZVVu
aXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+KCpjb3JlKHJhbmdlKSk7CiAgICAgcmV0dXJuIHNl
bGY7CiB9CiAKIC0gKHZvaWQpYWR2YW5jZQogewotICAgIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9y
LT5hZHZhbmNlKCk7CisgICAgaWYgKF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yKQorICAgICAgICBf
cHJpdmF0ZS0+X3RleHRJdGVyYXRvci0+YWR2YW5jZSgpOwogICAgIF9wcml2YXRlLT5fdXBjb252
ZXJ0ZWRUZXh0LnNocmluaygwKTsKIH0KIAogLSAoQk9PTClhdEVuZAogewotICAgIHJldHVybiBf
cHJpdmF0ZS0+X3RleHRJdGVyYXRvci0+YXRFbmQoKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPl90
ZXh0SXRlcmF0b3IgJiYgX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3ItPmF0RW5kKCk7CiB9CiAKIC0g
KERPTVJhbmdlICopY3VycmVudFJhbmdlCiB7CisgICAgaWYgKCFfcHJpdmF0ZS0+X3RleHRJdGVy
YXRvcikKKyAgICAgICAgcmV0dXJuIG5pbDsKICAgICBhdXRvJiB0ZXh0SXRlcmF0b3IgPSAqX3By
aXZhdGUtPl90ZXh0SXRlcmF0b3I7CiAgICAgaWYgKHRleHRJdGVyYXRvci5hdEVuZCgpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4ga2l0
KGNyZWF0ZUxpdmVSYW5nZSh0ZXh0SXRlcmF0b3IucmFuZ2UoKSkucHRyKCkpOwogfQogCiAvLyBG
SVhNRTogQ29uc2lkZXIgZGVwcmVjYXRpbmcgdGhpcyBtZXRob2QgYW5kIGNyZWF0aW5nIG9uZSB0
aGF0IGRvZXMgbm90IHJlcXVpcmUgY29weWluZyA4LWJpdCBjaGFyYWN0ZXJzLgogLSAoY29uc3Qg
dW5pY2hhciopY3VycmVudFRleHRQb2ludGVyCiB7CisgICAgaWYgKCFfcHJpdmF0ZS0+X3RleHRJ
dGVyYXRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgU3RyaW5nVmlldyB0ZXh0ID0g
X3ByaXZhdGUtPl90ZXh0SXRlcmF0b3ItPnRleHQoKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSB0
ZXh0Lmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoKQpAQCAtMTEwLDcgKzExOCw3IEBAIC0gKGNv
bnN0IHVuaWNoYXIqKWN1cnJlbnRUZXh0UG9pbnRlcgogCiAtIChOU1VJbnRlZ2VyKWN1cnJlbnRU
ZXh0TGVuZ3RoCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yLT50ZXh0KCku
bGVuZ3RoKCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yID8gX3ByaXZhdGUt
Pl90ZXh0SXRlcmF0b3ItPnRleHQoKS5sZW5ndGgoKSA6IDA7CiB9CiAKIEBlbmQKQEAgLTExOSwx
MiArMTI3LDEyIEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJUZXh0SXRlcmF0b3IgKFdlYlRleHRJdGVy
YXRvckRlcHJlY2F0ZWQpCiAKIC0gKERPTU5vZGUgKiljdXJyZW50Tm9kZQogewotICAgIHJldHVy
biBraXQoX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3ItPm5vZGUoKSk7CisgICAgcmV0dXJuIF9wcml2
YXRlLT5fdGV4dEl0ZXJhdG9yID8ga2l0KF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yLT5ub2RlKCkp
IDogbmlsOwogfQogCiAtIChOU1N0cmluZyAqKWN1cnJlbnRUZXh0CiB7Ci0gICAgcmV0dXJuIFtb
X3ByaXZhdGUtPl90ZXh0SXRlcmF0b3ItPnRleHQoKS5jcmVhdGVOU1N0cmluZygpLmdldCgpIHJl
dGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBfcHJpdmF0ZS0+X3RleHRJdGVyYXRvciA/
IF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yLT50ZXh0KCkuY3JlYXRlTlNTdHJpbmcoKS5hdXRvcmVs
ZWFzZSgpIDogQCIiOwogfQogCiBAZW5kCg==
</data>
<flag name="review"
          id="409016"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393658</attachid>
            <date>2020-03-16 10:24:49 -0700</date>
            <delta_ts>2020-03-16 10:24:49 -0700</delta_ts>
            <desc>Crash Log from ews122</desc>
            <filename>com.apple.WebKit.WebContent.Development_2020-03-16-095902_ews122.crash</filename>
            <type>text/plain</type>
            <size>116844</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">UHJvY2VzczogICAgICAgICAgICAgICBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuRGV2ZWxv
cG1lbnQgWzI1NjNdClBhdGg6ICAgICAgICAgICAgICAgICAgL1ZvbHVtZXMvVk9MVU1FLyovY29t
LmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50CklkZW50aWZpZXI6ICAgICAgICAg
ICAgY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50ClZlcnNpb246ICAgICAg
ICAgICAgICAgNjEwKyAoNjEwLjEuOCspCkNvZGUgVHlwZTogICAgICAgICAgICAgWDg2LTY0IChO
YXRpdmUpClBhcmVudCBQcm9jZXNzOiAgICAgICAgbGF1bmNoZF9zaW0gWzgwM10KUmVzcG9uc2li
bGU6ICAgICAgICAgICBTaW11bGF0b3JUcmFtcG9saW5lIFs2MTFdClVzZXIgSUQ6ICAgICAgICAg
ICAgICAgNTAxCgpEYXRlL1RpbWU6ICAgICAgICAgICAgIDIwMjAtMDMtMTYgMDk6NTA6MjcuMDM4
IC0wNzAwCk9TIFZlcnNpb246ICAgICAgICAgICAgTWFjIE9TIFggMTAuMTUuMyAoMTlENzYpClJl
cG9ydCBWZXJzaW9uOiAgICAgICAgMTIKQW5vbnltb3VzIFVVSUQ6ICAgICAgICA4QjdFQTVBMy05
MDZBLTlCMDYtQzk5MC02ODc1REY0RjE1MzgKCgpUaW1lIEF3YWtlIFNpbmNlIEJvb3Q6IDQwMCBz
ZWNvbmRzCgpTeXN0ZW0gSW50ZWdyaXR5IFByb3RlY3Rpb246IGRpc2FibGVkCgpDcmFzaGVkIFRo
cmVhZDogICAgICAgIDAgIERpc3BhdGNoIHF1ZXVlOiBjb20uYXBwbGUubWFpbi10aHJlYWQKCkV4
Y2VwdGlvbiBUeXBlOiAgICAgICAgRVhDX0JBRF9BQ0NFU1MgKFNJR1NFR1YpCkV4Y2VwdGlvbiBD
b2RlczogICAgICAgS0VSTl9JTlZBTElEX0FERFJFU1MgYXQgMHgwMDAwMDAwMDAwMDAwMDEwCkV4
Y2VwdGlvbiBOb3RlOiAgICAgICAgRVhDX0NPUlBTRV9OT1RJRlkKClRlcm1pbmF0aW9uIFNpZ25h
bDogICAgU2VnbWVudGF0aW9uIGZhdWx0OiAxMQpUZXJtaW5hdGlvbiBSZWFzb246ICAgIE5hbWVz
cGFjZSBTSUdOQUwsIENvZGUgMHhiClRlcm1pbmF0aW5nIFByb2Nlc3M6ICAgZXhjIGhhbmRsZXIg
WzI1NjNdCgpWTSBSZWdpb25zIE5lYXIgMHgxMDoKLS0+IAogICAgX19URVhUICAgICAgICAgICAg
ICAgICAwMDAwMDAwMTA4NTAwMDAwLTAwMDAwMDAxMDg1MDEwMDAgWyAgICA0S10gci14L3IteCBT
TT1DT1cgIC9Wb2x1bWVzL1ZPTFVNRS8qLyouRGV2ZWxvcG1lbnQKCkFwcGxpY2F0aW9uIFNwZWNp
ZmljIEluZm9ybWF0aW9uOgpDb3JlU2ltdWxhdG9yIDY4MS4xNy4yIC0gRGV2aWNlOiBNYW5hZ2Vk
IDEgKEI1NDExMTU2LTQwRUEtNEJDMy1CMjMwLUY1M0FDOTFFMjQzMCkgLSBSdW50aW1lOiBpT1Mg
MTMuMyAoMTdDNDUpIC0gRGV2aWNlVHlwZTogaVBob25lIFNFCkNSQVNISU5HIFRFU1Q6IGFjY2Vz
c2liaWxpdHkvaW9zLXNpbXVsYXRvci9zcGVhay1zZWxlY3Rpb24tY29udGVudC5odG1sCgpUaHJl
YWQgMCBDcmFzaGVkOjogRGlzcGF0Y2ggcXVldWU6IGNvbS5hcHBsZS5tYWluLXRocmVhZAowICAg
Y29tLmFwcGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4MDAwMDAwMDEwY2Y3NTBhMCBXZWJDb3Jl
OjptYWtlQm91bmRhcnlQb2ludChXZWJDb3JlOjpQb3NpdGlvbiBjb25zdCYpICsgNDgKMSAgIGNv
bS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAwMDAwMDAxMGQwMTY5MjkgV2ViQ29yZTo6
RWRpdG9yOjpzZWxlY3RlZFRleHQodW5zaWduZWQgc2hvcnQpIGNvbnN0ICsgNzMKMiAgIGNvbS5h
cHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAwMDAwMDAxMGQwMTIxNTAgV2ViQ29yZTo6RWRp
dG9yOjpzZWxlY3RlZFRleHQoKSBjb25zdCArIDQ4CjMgICBjb20uYXBwbGUuV2ViS2l0ICAgICAg
ICAgICAgICAJMHgwMDAwMDAwMTA4OWQ2MzNmIFdlYktpdDo6V2ViRnJhbWU6OnNlbGVjdGlvbkFz
U3RyaW5nKCkgY29uc3QgKyA0MQo0ICAgY29tLmFwcGxlLldlYktpdCAgICAgICAgICAgICAgCTB4
MDAwMDAwMDEwOGE0ZGQ2MCBXZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGlvbk9yQ29udGVudHNB
c1N0cmluZyhXZWJLaXQ6OkNhbGxiYWNrSUQpICsgNjIKNSAgIGNvbS5hcHBsZS5XZWJLaXQgICAg
ICAgICAgICAgIAkweDAwMDAwMDAxMDhhNmJjMWIgdm9pZCBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZywgV2ViS2l0OjpX
ZWJQYWdlLCB2b2lkIChXZWJLaXQ6OldlYlBhZ2U6OiopKFdlYktpdDo6Q2FsbGJhY2tJRCk+KElQ
Qzo6RGVjb2RlciYsIFdlYktpdDo6V2ViUGFnZSosIHZvaWQgKFdlYktpdDo6V2ViUGFnZTo6Kiko
V2ViS2l0OjpDYWxsYmFja0lEKSkgKyA5Mwo2ICAgY29tLmFwcGxlLldlYktpdCAgICAgICAgICAg
ICAgCTB4MDAwMDAwMDEwOGE2Njg5ZiBXZWJLaXQ6OldlYlBhZ2U6OmRpZFJlY2VpdmVXZWJQYWdl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSArIDE2MDg5CjcgICBjb20u
YXBwbGUuV2ViS2l0ICAgICAgICAgICAgICAJMHgwMDAwMDAwMTA4NTM5Njc2IElQQzo6TWVzc2Fn
ZVJlY2VpdmVyTWFwOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgKyAxMTQKOCAgIGNvbS5hcHBsZS5XZWJLaXQgICAgICAgICAgICAgIAkweDAwMDAwMDAx
MDg5MmYzYmEgV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSArIDI4CjkgICBjb20uYXBwbGUuV2ViS2l0ICAgICAgICAg
ICAgICAJMHgwMDAwMDAwMTA4NTIyN2VjIElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdl
KHN0ZDo6X18xOjp1bmlxdWVfcHRyPElQQzo6RGVjb2Rlciwgc3RkOjpfXzE6OmRlZmF1bHRfZGVs
ZXRlPElQQzo6RGVjb2Rlcj4gPikgKyAxNTgKMTAgIGNvbS5hcHBsZS5XZWJLaXQgICAgICAgICAg
ICAgIAkweDAwMDAwMDAxMDg1MjI5ZDAgSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE9uZUluY29t
aW5nTWVzc2FnZSgpICsgMTkwCjExICBjb20uYXBwbGUuSmF2YVNjcmlwdENvcmUgICAgICAJMHgw
MDAwMDAwMTBhZGYyODVhIFdURjo6UnVuTG9vcDo6cGVyZm9ybVdvcmsoKSArIDkwCjEyICBjb20u
YXBwbGUuSmF2YVNjcmlwdENvcmUgICAgICAJMHgwMDAwMDAwMTBhZGYyYjAyIFdURjo6UnVuTG9v
cDo6cGVyZm9ybVdvcmsodm9pZCopICsgMzQKMTMgIGNvbS5hcHBsZS5Db3JlRm91bmRhdGlvbiAg
ICAgIAkweDAwMDA3ZmZmMjNiZDQ0NzEgX19DRlJVTkxPT1BfSVNfQ0FMTElOR19PVVRfVE9fQV9T
T1VSQ0UwX1BFUkZPUk1fRlVOQ1RJT05fXyArIDE3CjE0ICBjb20uYXBwbGUuQ29yZUZvdW5kYXRp
b24gICAgICAJMHgwMDAwN2ZmZjIzYmQ0MzljIF9fQ0ZSdW5Mb29wRG9Tb3VyY2UwICsgNzYKMTUg
IGNvbS5hcHBsZS5Db3JlRm91bmRhdGlvbiAgICAgIAkweDAwMDA3ZmZmMjNiZDNiNzQgX19DRlJ1
bkxvb3BEb1NvdXJjZXMwICsgMTgwCjE2ICBjb20uYXBwbGUuQ29yZUZvdW5kYXRpb24gICAgICAJ
MHgwMDAwN2ZmZjIzYmNlODdmIF9fQ0ZSdW5Mb29wUnVuICsgMTI2MwoxNyAgY29tLmFwcGxlLkNv
cmVGb3VuZGF0aW9uICAgICAgCTB4MDAwMDdmZmYyM2JjZTA2NiBDRlJ1bkxvb3BSdW5TcGVjaWZp
YyArIDQzOAoxOCAgY29tLmFwcGxlLkZvdW5kYXRpb24gICAgICAgICAgCTB4MDAwMDdmZmYyNTc2
Yjg2ZiAtW05TUnVuTG9vcChOU1J1bkxvb3ApIHJ1bk1vZGU6YmVmb3JlRGF0ZTpdICsgMjExCjE5
ICBjb20uYXBwbGUuRm91bmRhdGlvbiAgICAgICAgICAJMHgwMDAwN2ZmZjI1NzZiYTg3IC1bTlNS
dW5Mb29wKE5TUnVuTG9vcCkgcnVuXSArIDc2CjIwICBsaWJ4cGMuZHlsaWIgICAgICAgICAgICAg
ICAgICAJMHgwMDAwN2ZmZjUyNGE3M2VlIF94cGNfb2JqY19tYWluICsgMjk3CjIxICBsaWJ4cGMu
ZHlsaWIgICAgICAgICAgICAgICAgICAJMHgwMDAwN2ZmZjUyNGE5YThmIHhwY19tYWluICsgMTMy
CjIyICBjb20uYXBwbGUuV2ViS2l0ICAgICAgICAgICAgICAJMHgwMDAwMDAwMTA4Njc5Y2JiIFdl
YktpdDo6WFBDU2VydmljZU1haW4oaW50LCBjaGFyIGNvbnN0KiopICsgMzg5CjIzICBsaWJkeWxk
LmR5bGliICAgICAgICAgICAgICAgICAJMHgwMDAwN2ZmZjUyMjdlYzI1IHN0YXJ0ICsgMQoKVGhy
ZWFkIDE6CjAgICBsaWJzeXN0ZW1fcHRocmVhZC5keWxpYiAgICAgICAJMHgwMDAwN2ZmZjUyNDYy
ODE4IHN0YXJ0X3dxdGhyZWFkICsgMAoKVGhyZWFkIDI6CjAgICBsaWJzeXN0ZW1fcHRocmVhZC5k
eWxpYiAgICAgICAJMHgwMDAwN2ZmZjUyNDYyODE4IHN0YXJ0X3dxdGhyZWFkICsgMAoKVGhyZWFk
IDM6OiBKYXZhU2NyaXB0Q29yZSBibWFsbG9jIHNjYXZlbmdlcgowICAgbGlic3lzdGVtX2tlcm5l
bC5keWxpYiAgICAgICAgCTB4MDAwMDdmZmY1MjNiOGNlNiBfX3BzeW5jaF9jdndhaXQgKyAxMAox
ICAgbGlic3lzdGVtX3B0aHJlYWQuZHlsaWIgICAgICAgCTB4MDAwMDdmZmY1MjQ2NzE4NSBfcHRo
cmVhZF9jb25kX3dhaXQgKyA3MDEKMiAgIGxpYmMrKy4xLmR5bGliICAgICAgICAgICAgICAgIAkw
eDAwMDA3ZmZmNTAyMDJmNzEgc3RkOjpfXzE6OmNvbmRpdGlvbl92YXJpYWJsZTo6X19kb190aW1l
ZF93YWl0KHN0ZDo6X18xOjp1bmlxdWVfbG9jazxzdGQ6Ol9fMTo6bXV0ZXg+Jiwgc3RkOjpfXzE6
OmNocm9ubzo6dGltZV9wb2ludDxzdGQ6Ol9fMTo6Y2hyb25vOjpzeXN0ZW1fY2xvY2ssIHN0ZDo6
X18xOjpjaHJvbm86OmR1cmF0aW9uPGxvbmcgbG9uZywgc3RkOjpfXzE6OnJhdGlvPDFsLCAxMDAw
MDAwMDAwbD4gPiA+KSArIDkzCjMgICBjb20uYXBwbGUuSmF2YVNjcmlwdENvcmUgICAgICAJMHgw
MDAwMDAwMTBhZTUzYjMyIHN0ZDo6X18xOjpjdl9zdGF0dXMgc3RkOjpfXzE6OmNvbmRpdGlvbl92
YXJpYWJsZV9hbnk6OndhaXRfdW50aWw8c3RkOjpfXzE6OnVuaXF1ZV9sb2NrPGJtYWxsb2M6Ok11
dGV4Piwgc3RkOjpfXzE6OmNocm9ubzo6c3RlYWR5X2Nsb2NrLCBzdGQ6Ol9fMTo6Y2hyb25vOjpk
dXJhdGlvbjxsb25nIGxvbmcsIHN0ZDo6X18xOjpyYXRpbzwxbCwgMTAwMDAwMDAwMGw+ID4gPihz
dGQ6Ol9fMTo6dW5pcXVlX2xvY2s8Ym1hbGxvYzo6TXV0ZXg+Jiwgc3RkOjpfXzE6OmNocm9ubzo6
dGltZV9wb2ludDxzdGQ6Ol9fMTo6Y2hyb25vOjpzdGVhZHlfY2xvY2ssIHN0ZDo6X18xOjpjaHJv
bm86OmR1cmF0aW9uPGxvbmcgbG9uZywgc3RkOjpfXzE6OnJhdGlvPDFsLCAxMDAwMDAwMDAwbD4g
PiA+IGNvbnN0JikgKyAxNzgKNCAgIGNvbS5hcHBsZS5KYXZhU2NyaXB0Q29yZSAgICAgIAkweDAw
MDAwMDAxMGFlNTI5NzUgYm1hbGxvYzo6U2NhdmVuZ2VyOjp0aHJlYWRSdW5Mb29wKCkgKyAyNjEK
NSAgIGNvbS5hcHBsZS5KYXZhU2NyaXB0Q29yZSAgICAgIAkweDAwMDAwMDAxMGFlNTI2NzkgYm1h
bGxvYzo6U2NhdmVuZ2VyOjp0aHJlYWRFbnRyeVBvaW50KGJtYWxsb2M6OlNjYXZlbmdlciopICsg
OQo2ICAgY29tLmFwcGxlLkphdmFTY3JpcHRDb3JlICAgICAgCTB4MDAwMDAwMDEwYWU1MzhjNyB2
b2lkKiBzdGQ6Ol9fMTo6X190aHJlYWRfcHJveHk8c3RkOjpfXzE6OnR1cGxlPHN0ZDo6X18xOjp1
bmlxdWVfcHRyPHN0ZDo6X18xOjpfX3RocmVhZF9zdHJ1Y3QsIHN0ZDo6X18xOjpkZWZhdWx0X2Rl
bGV0ZTxzdGQ6Ol9fMTo6X190aHJlYWRfc3RydWN0PiA+LCB2b2lkICgqKShibWFsbG9jOjpTY2F2
ZW5nZXIqKSwgYm1hbGxvYzo6U2NhdmVuZ2VyKj4gPih2b2lkKikgKyAzOQo3ICAgbGlic3lzdGVt
X3B0aHJlYWQuZHlsaWIgICAgICAgCTB4MDAwMDdmZmY1MjQ2NmU2NSBfcHRocmVhZF9zdGFydCAr
IDE0OAo4ICAgbGlic3lzdGVtX3B0aHJlYWQuZHlsaWIgICAgICAgCTB4MDAwMDdmZmY1MjQ2Mjgz
YiB0aHJlYWRfc3RhcnQgKyAxNQoKVGhyZWFkIDQ6CjAgICBsaWJzeXN0ZW1fcHRocmVhZC5keWxp
YiAgICAgICAJMHgwMDAwN2ZmZjUyNDYyODE4IHN0YXJ0X3dxdGhyZWFkICsgMAoKVGhyZWFkIDU6
OiBBVkF1ZGlvU2Vzc2lvbiBOb3RpZnkgVGhyZWFkCjAgICBsaWJzeXN0ZW1fa2VybmVsLmR5bGli
ICAgICAgICAJMHgwMDAwN2ZmZjUyM2I2MjVhIG1hY2hfbXNnX3RyYXAgKyAxMAoxICAgbGlic3lz
dGVtX2tlcm5lbC5keWxpYiAgICAgICAgCTB4MDAwMDdmZmY1MjNiNjVkMCBtYWNoX21zZyArIDYw
CjIgICBjb20uYXBwbGUuQ29yZUZvdW5kYXRpb24gICAgICAJMHgwMDAwN2ZmZjIzYmQzY2Y1IF9f
Q0ZSdW5Mb29wU2VydmljZU1hY2hQb3J0ICsgMTk3CjMgICBjb20uYXBwbGUuQ29yZUZvdW5kYXRp
b24gICAgICAJMHgwMDAwN2ZmZjIzYmNlYTE3IF9fQ0ZSdW5Mb29wUnVuICsgMTY3MQo0ICAgY29t
LmFwcGxlLkNvcmVGb3VuZGF0aW9uICAgICAgCTB4MDAwMDdmZmYyM2JjZTA2NiBDRlJ1bkxvb3BS
dW5TcGVjaWZpYyArIDQzOAo1ICAgY29tLmFwcGxlLmF1ZGlvLkFWRkF1ZGlvICAgICAgCTB4MDAw
MDdmZmYyMGFlNmFjYSBHZW5lcmljUnVuTG9vcFRocmVhZDo6RW50cnkodm9pZCopICsgMTU4CjYg
ICBjb20uYXBwbGUuYXVkaW8uQVZGQXVkaW8gICAgICAJMHgwMDAwN2ZmZjIwYjIyMmY1IENBUFRo
cmVhZDo6RW50cnkoQ0FQVGhyZWFkKikgKyAxOTEKNyAgIGxpYnN5c3RlbV9wdGhyZWFkLmR5bGli
ICAgICAgIAkweDAwMDA3ZmZmNTI0NjZlNjUgX3B0aHJlYWRfc3RhcnQgKyAxNDgKOCAgIGxpYnN5
c3RlbV9wdGhyZWFkLmR5bGliICAgICAgIAkweDAwMDA3ZmZmNTI0NjI4M2IgdGhyZWFkX3N0YXJ0
ICsgMTUKClRocmVhZCA2OjogQU1DUCBMb2dnaW5nIFNwb29sCjAgICBsaWJzeXN0ZW1fa2VybmVs
LmR5bGliICAgICAgICAJMHgwMDAwN2ZmZjUyM2I2Mjk2IHNlbWFwaG9yZV93YWl0X3RyYXAgKyAx
MAoxICAgY29tLmFwcGxlLmF1ZGlvLmNhdWxrICAgICAgICAgCTB4MDAwMDdmZmY0Y2ExMWQyOCBj
YXVsazo6bWFjaDo6c2VtYXBob3JlOjp3YWl0KCkgKyAxNgoyICAgY29tLmFwcGxlLmF1ZGlvLmNh
dWxrICAgICAgICAgCTB4MDAwMDdmZmY0Y2EwZDI1MiBjYXVsazo6c2VtYXBob3JlOjp0aW1lZF93
YWl0KGRvdWJsZSkgKyAxMDYKMyAgIGNvbS5hcHBsZS5hdWRpby5jYXVsayAgICAgICAgIAkweDAw
MDA3ZmZmNGNhMTA4NjQgY2F1bGs6OmNvbmN1cnJlbnQ6OmRldGFpbHM6Ondvcmtlcl90aHJlYWQ6
OnJ1bigpICsgMzAKNCAgIGNvbS5hcHBsZS5hdWRpby5jYXVsayAgICAgICAgIAkweDAwMDA3ZmZm
NGNhMTA5YjQgdm9pZCogY2F1bGs6OnRocmVhZF9wcm94eTxzdGQ6Ol9fMTo6dHVwbGU8Y2F1bGs6
OnRocmVhZDo6YXR0cmlidXRlcywgdm9pZCAoY2F1bGs6OmNvbmN1cnJlbnQ6OmRldGFpbHM6Ondv
cmtlcl90aHJlYWQ6OiopKCksIHN0ZDo6X18xOjp0dXBsZTxjYXVsazo6Y29uY3VycmVudDo6ZGV0
YWlsczo6d29ya2VyX3RocmVhZCo+ID4gPih2b2lkKikgKyA0NQo1ICAgbGlic3lzdGVtX3B0aHJl
YWQuZHlsaWIgICAgICAgCTB4MDAwMDdmZmY1MjQ2NmU2NSBfcHRocmVhZF9zdGFydCArIDE0OAo2
ICAgbGlic3lzdGVtX3B0aHJlYWQuZHlsaWIgICAgICAgCTB4MDAwMDdmZmY1MjQ2MjgzYiB0aHJl
YWRfc3RhcnQgKyAxNQoKVGhyZWFkIDc6CjAgICBsaWJzeXN0ZW1fa2VybmVsLmR5bGliICAgICAg
ICAJMHgwMDAwN2ZmZjUyM2I2Mjk2IHNlbWFwaG9yZV93YWl0X3RyYXAgKyAxMAoxICAgY29tLmFw
cGxlLmF1ZGlvLmNhdWxrICAgICAgICAgCTB4MDAwMDdmZmY0Y2ExMWQyOCBjYXVsazo6bWFjaDo6
c2VtYXBob3JlOjp3YWl0KCkgKyAxNgoyICAgY29tLmFwcGxlLmF1ZGlvLmNhdWxrICAgICAgICAg
CTB4MDAwMDdmZmY0Y2EwZDI1MiBjYXVsazo6c2VtYXBob3JlOjp0aW1lZF93YWl0KGRvdWJsZSkg
KyAxMDYKMyAgIGNvbS5hcHBsZS5hdWRpby5jYXVsayAgICAgICAgIAkweDAwMDA3ZmZmNGNhMTA4
NjQgY2F1bGs6OmNvbmN1cnJlbnQ6OmRldGFpbHM6Ondvcmtlcl90aHJlYWQ6OnJ1bigpICsgMzAK
NCAgIGNvbS5hcHBsZS5hdWRpby5jYXVsayAgICAgICAgIAkweDAwMDA3ZmZmNGNhMTA5YjQgdm9p
ZCogY2F1bGs6OnRocmVhZF9wcm94eTxzdGQ6Ol9fMTo6dHVwbGU8Y2F1bGs6OnRocmVhZDo6YXR0
cmlidXRlcywgdm9pZCAoY2F1bGs6OmNvbmN1cnJlbnQ6OmRldGFpbHM6Ondvcmtlcl90aHJlYWQ6
OiopKCksIHN0ZDo6X18xOjp0dXBsZTxjYXVsazo6Y29uY3VycmVudDo6ZGV0YWlsczo6d29ya2Vy
X3RocmVhZCo+ID4gPih2b2lkKikgKyA0NQo1ICAgbGlic3lzdGVtX3B0aHJlYWQuZHlsaWIgICAg
ICAgCTB4MDAwMDdmZmY1MjQ2NmU2NSBfcHRocmVhZF9zdGFydCArIDE0OAo2ICAgbGlic3lzdGVt
X3B0aHJlYWQuZHlsaWIgICAgICAgCTB4MDAwMDdmZmY1MjQ2MjgzYiB0aHJlYWRfc3RhcnQgKyAx
NQoKVGhyZWFkIDg6CjAgICBsaWJzeXN0ZW1fa2VybmVsLmR5bGliICAgICAgICAJMHgwMDAwN2Zm
ZjUyM2I2MmFlIHNlbWFwaG9yZV90aW1lZHdhaXRfdHJhcCArIDEwCjEgICBsaWJkaXNwYXRjaC5k
eWxpYiAgICAgICAgICAgICAJMHgwMDAwN2ZmZjUyMjNmY2M5IF9kaXNwYXRjaF9zZW1hNF90aW1l
ZHdhaXQgKyA3NgoyICAgbGliZGlzcGF0Y2guZHlsaWIgICAgICAgICAgICAgCTB4MDAwMDdmZmY1
MjI0MDEyMCBfZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXRfc2xvdyArIDU4CjMgICBsaWJkaXNwYXRj
aC5keWxpYiAgICAgICAgICAgICAJMHgwMDAwN2ZmZjUyMjRlYTQxIF9kaXNwYXRjaF93b3JrZXJf
dGhyZWFkICsgMzI4CjQgICBsaWJzeXN0ZW1fcHRocmVhZC5keWxpYiAgICAgICAJMHgwMDAwN2Zm
ZjUyNDY2ZTY1IF9wdGhyZWFkX3N0YXJ0ICsgMTQ4CjUgICBsaWJzeXN0ZW1fcHRocmVhZC5keWxp
YiAgICAgICAJMHgwMDAwN2ZmZjUyNDYyODNiIHRocmVhZF9zdGFydCArIDE1CgpUaHJlYWQgMCBj
cmFzaGVkIHdpdGggWDg2IFRocmVhZCBTdGF0ZSAoNjQtYml0KToKICByYXg6IDB4MDAwMDAwMDAw
MDAwMDAwMCAgcmJ4OiAweDAwMDAwMDAwMDAwMDAwMDAgIHJjeDogMHgwMDAwMDAwMDAwMDAwMDAw
ICByZHg6IDB4MDAwMDAwMDAwMDAwMDIwMAogIHJkaTogMHgwMDAwN2ZmZWU3NmZkMjcwICByc2k6
IDB4MDAwMDdmZmVlNzZmZDI4MCAgcmJwOiAweDAwMDA3ZmZlZTc2ZmQyMzAgIHJzcDogMHgwMDAw
N2ZmZWU3NmZkMjIwCiAgIHI4OiAweDAwMDAwMDAwMDAwMDAwNjcgICByOTogMHgwMDAwMDAwMDAw
MDAwMDBmICByMTA6IDB4MDAwMDdmZjljMzQwMDE4MCAgcjExOiAweDAwMDA3ZmY5YzM0MDAxNzgK
ICByMTI6IDB4MDAwMDdmZjlhMzgwMTYwOCAgcjEzOiAweDAwMDAwMDA0ODAxNjQ5YzAgIHIxNDog
MHgwMDAwN2ZmZWU3NmZkMjcwICByMTU6IDB4MDAwMDAwMDAwMDAwMDIwMAogIHJpcDogMHgwMDAw
MDAwMTBjZjc1MGEwICByZmw6IDB4MDAwMDAwMDAwMDAxMDI0NiAgY3IyOiAweDAwMDAwMDAwMDAw
MDAwMTAKICAKTG9naWNhbCBDUFU6ICAgICAxNApFcnJvciBDb2RlOiAgICAgIDB4MDAwMDAwMDYg
KG5vIG1hcHBpbmcgZm9yIHVzZXIgZGF0YSByZWFkKQpUcmFwIE51bWJlcjogICAgIDE0CgoKQmlu
YXJ5IEltYWdlczoKICAgICAgIDB4MTA4NTAwMDAwIC0gICAgICAgIDB4MTA4NTAwZmZmICBjb20u
YXBwbGUuV2ViS2l0LldlYkNvbnRlbnQgKDYxMCsgLSA2MTAuMS44KykgPDkxMkE0QjdGLTkyMTQt
MzIxQy04REY0LUNCQkUyQjU4NDUxNT4gL1ZvbHVtZXMvVk9MVU1FLyovY29tLmFwcGxlLldlYktp
dC5XZWJDb250ZW50LkRldmVsb3BtZW50CiAgICAgICAweDEwODUwYTAwMCAtICAgICAgICAweDEw
OGM4OWZmYiAgY29tLmFwcGxlLldlYktpdCAoNjEwKyAtIDYxMC4xLjgrKSA8QTY4NTdGNDctNzIx
OC0zMjMxLUE2RkUtM0NGMzNDMTFDMDg3PiAvVm9sdW1lcy9WT0xVTUUvKi9XZWJLaXQuZnJhbWV3
b3JrL1dlYktpdAogICAgICAgMHgxMDlkZjAwMDAgLSAgICAgICAgMHgxMDlmODdmZjAgIGNvbS5h
cHBsZS5XZWJLaXRMZWdhY3kgKDYxMCsgLSA2MTAuMS44KykgPEYwMUFBNzlELUJEOEItM0JDRS1C
OERDLTdBNjc4OEQ0NTUwMT4gL1ZvbHVtZXMvVk9MVU1FLyovV2ViS2l0TGVnYWN5LmZyYW1ld29y
ay9XZWJLaXRMZWdhY3kKICAgICAgIDB4MTBhMjE1MDAwIC0gICAgICAgIDB4MTBhOGIwZmUzICts
aWJ3ZWJydGMuZHlsaWIgKDApIDwzNjE1Qzg4MC0xRTMwLTM1RjgtQTYwQy0yMDFBQkIxMEJBNzY+
IC9Wb2x1bWVzL1ZPTFVNRS8qL2xpYndlYnJ0Yy5keWxpYgogICAgICAgMHgxMGFkYmEwMDAgLSAg
ICAgICAgMHgxMGI5ZjNmZTggIGNvbS5hcHBsZS5KYXZhU2NyaXB0Q29yZSAoNjEwKyAtIDYxMC4x
LjgrKSA8M0M4MkVDQTUtMkY4MC0zOEIwLUFDMzctMEYyMDdBMUFFQUYzPiAvVm9sdW1lcy9WT0xV
TUUvKi9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvSmF2YVNjcmlwdENvcmUKICAgICAgIDB4MTBj
MDZjMDAwIC0gICAgICAgIDB4MTBlMDhmZmZkICBjb20uYXBwbGUuV2ViQ29yZSAoNjEwKyAtIDYx
MC4xLjgrKSA8MTA0QUFGQUItRDJCRS0zRjA0LUIyRjAtRjYwQTI1RkM5QTAxPiAvVm9sdW1lcy9W
T0xVTUUvKi9XZWJDb3JlLmZyYW1ld29yay9XZWJDb3JlCiAgICAgICAweDExNjczZjAwMCAtICAg
ICAgICAweDExNjdjZmNiNyAgZHlsZCAoNzMzLjgpIDxFQkMwN0NCNi04NzBBLTNBOEUtQjQ4QS02
N0Y2MkVBMTYxRjM+IC91c3IvbGliL2R5bGQKICAgICAgIDB4NDgwMDAwMDAwIC0gICAgICAgIDB4
NDgwMDUzNjM3ICtkeWxkX3NpbSAoNzMzLjMuMSkgPDc1MzY5RjMxLTcwMkQtMzY0QS05NUMzLThB
RkE5REQ0QjNBMj4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1Bs
YXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9y
L1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50
aW1lUm9vdC91c3IvbGliL2R5bGRfc2ltCiAgICAgICAweDQ4MDIzNjAwMCAtICAgICAgICAweDQ4
MDI2ZWZmYiAgY29tLmFwcGxlLldlYktpdFRlc3RSdW5uZXIuSW5qZWN0ZWRCdW5kbGUgKDEuMCAt
IDEpIDxEODVBMTNDMC0zNzM3LTMzMkMtODM1Ni0wMUNBQzIyOUFGMzc+IC9Vc2Vycy9VU0VSL0xp
YnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvRGV2aWNlcy9CNTQxMTE1Ni00MEVBLTRCQzMt
QjIzMC1GNTNBQzkxRTI0MzAvZGF0YS9Db250YWluZXJzL0J1bmRsZS9BcHBsaWNhdGlvbi9CMjRG
NUJBNy04NjVCLTQxRUMtODY5Qy01Q0IxQTBCMTYyRjgvV2ViS2l0VGVzdFJ1bm5lckFwcC5hcHAv
UGx1Z0lucy9XZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGUuYnVuZGxlL1dlYktpdFRlc3RS
dW5uZXJJbmplY3RlZEJ1bmRsZQogICAgICAgMHg0ODA2MDAwMDAgLSAgICAgICAgMHg0ODA2ZGRm
ZjMgK2xpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAoMCkgPEEwQzI0RjAwLTY1RTQtM0Q3NS1B
QTg2LUQxMjJFOUNDNDY2MT4gL1ZvbHVtZXMvVk9MVU1FLyovbGliV2ViQ29yZVRlc3RTdXBwb3J0
LmR5bGliCiAgICAweDdmZmYyMDhhYjAwMCAtICAgICAweDdmZmYyMGFiYWZmNiAgY29tLmFwcGxl
LmF2Zm91bmRhdGlvbiAoMi4wIC0gMTc0MC40KSA8NDdBRTRDQjctMUE0MS0zQkNDLTlCQzMtNDAx
QjQwRkE4MTZCPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxh
dGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3Iv
UHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRp
bWVSb290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQVZGb3VuZGF0aW9uLmZyYW1ld29yay9B
VkZvdW5kYXRpb24KICAgIDB4N2ZmZjIwYTdlMDAwIC0gICAgIDB4N2ZmZjIwYjYxZmY1ICBjb20u
YXBwbGUuYXVkaW8uQVZGQXVkaW8gKDEuMCAtIDQxNS4xNykgPEY2MDM4MjFGLTM5QzQtMzQ0NS04
NDU1LUM0MjI2NjI0RDRFOT4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxv
cGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2lt
dWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNl
cy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FWRm91bmRhdGlvbi5mcmFt
ZXdvcmsvRnJhbWV3b3Jrcy9BVkZBdWRpby5mcmFtZXdvcmsvQVZGQXVkaW8KICAgIDB4N2ZmZjIw
YjU3MDAwIC0gICAgIDB4N2ZmZjIwYzRlZmY4ICBjb20uYXBwbGUuQVZLaXQgKDEuMCAtIDYyMS4x
LjEpIDwyNTkzRTU1NC0zMUU3LTNCRkQtQTAyRi01N0FEMDhFNzRDOUY+IC9BcHBsaWNhdGlvbnMv
WGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0v
TGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2lt
cnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BVktpdC5mcmFtZXdvcmsvQVZLaXQKICAgIDB4N2ZmZjIwYzJmMDAwIC0gICAgIDB4
N2ZmZjIwYzJmZmZmICBjb20uYXBwbGUuQWNjZWxlcmF0ZSAoMS4xMSAtIEFjY2VsZXJhdGUgMS4x
MSkgPDY1MkFDMUQwLTg1RjktM0NBOC04Q0NELTRGMzFGNzQ5QTc5MT4gL0FwcGxpY2F0aW9ucy9Y
Y29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9M
aWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1y
dW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FjY2VsZXJhdGUuZnJhbWV3b3JrL0FjY2VsZXJhdGUKICAgIDB4N2ZmZjIwYzQ3MDAw
IC0gICAgIDB4N2ZmZjIxNGYzZmU3ICBjb20uYXBwbGUudkltYWdlICg4LjEgLSA1MjQuMikgPDkw
M0VFRDczLTY3MzYtMzI1Ni1BRUU2LTk0MzYzRUNDQjE5OT4gL0FwcGxpY2F0aW9ucy9YY29kZS5h
cHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5
L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1l
L0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FjY2VsZXJhdGUuZnJhbWV3b3JrL0ZyYW1ld29ya3MvdkltYWdlLmZyYW1ld29yay92SW1hZ2UK
ICAgIDB4N2ZmZjIxNGY0MDAwIC0gICAgIDB4N2ZmZjIxNjhkZmQ3ICtsaWJCTEFTLmR5bGliICgx
MzAzLjYwLjEpIDxBRERCOEI4NC0xNjk5LTNDQkMtQTFEQi02MzNDNzIyNDI0ODU+IC9BcHBsaWNh
dGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxh
dGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9p
T1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BY2NlbGVyYXRlLmZyYW1ld29yay9GcmFtZXdvcmtzL3ZlY0xpYi5mcmFt
ZXdvcmsvbGliQkxBUy5keWxpYgogICAgMHg3ZmZmMjE2OGUwMDAgLSAgICAgMHg3ZmZmMjE4YWZm
ZmYgK2xpYkJOTlMuZHlsaWIgKDE0NC40MC4zKSA8MjZGMDE4ODUtM0ZDMC0zOEFBLTk4MjQtQzc1
QUM1ODE2MEFEPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxh
dGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3Iv
UHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRp
bWVSb290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQWNjZWxlcmF0ZS5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy92ZWNMaWIuZnJhbWV3b3JrL2xpYkJOTlMuZHlsaWIKICAgIDB4N2ZmZjIxOGIxMDAw
IC0gICAgIDB4N2ZmZjIxYzY2ZmZmICtsaWJMQVBBQ0suZHlsaWIgKDEzMDMuNjAuMSkgPDhDMkU4
MjU3LTI3OUUtMzQ2OC04RkI0LTQ5RThBOTQwRTg0MD4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAv
Q29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0Rl
dmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0Nv
bnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fj
Y2VsZXJhdGUuZnJhbWV3b3JrL0ZyYW1ld29ya3MvdmVjTGliLmZyYW1ld29yay9saWJMQVBBQ0su
ZHlsaWIKICAgIDB4N2ZmZjIxYzY3MDAwIC0gICAgIDB4N2ZmZjIxYzdjZmY4ICtsaWJMaW5lYXJB
bGdlYnJhLmR5bGliICgxMzAzLjYwLjEpIDxFREM1RERDMS02QjJGLTNFQzUtQjkxNS1FOEM2NUNG
MDRBQzA+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9y
bXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9m
aWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJv
b3QvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BY2NlbGVyYXRlLmZyYW1ld29yay9GcmFtZXdv
cmtzL3ZlY0xpYi5mcmFtZXdvcmsvbGliTGluZWFyQWxnZWJyYS5keWxpYgogICAgMHg3ZmZmMjFj
N2QwMDAgLSAgICAgMHg3ZmZmMjFjODJmZjMgK2xpYlF1YWRyYXR1cmUuZHlsaWIgKDcpIDw2N0FD
QTc3NC05NDcxLTNDMTMtQkE0NC0zMTRFRjk1ODE0MEU+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBw
L0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9E
ZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9D
b250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
Y2NlbGVyYXRlLmZyYW1ld29yay9GcmFtZXdvcmtzL3ZlY0xpYi5mcmFtZXdvcmsvbGliUXVhZHJh
dHVyZS5keWxpYgogICAgMHg3ZmZmMjFjODMwMDAgLSAgICAgMHg3ZmZmMjFjZjNmZjcgK2xpYlNw
YXJzZS5keWxpYiAoMTAzKSA8NTJDRDEwOEItNzc0My0zQjdCLUE1NzYtQjc5MzEyQUZBNDQ5PiAv
QXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9u
ZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVu
dGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQWNjZWxlcmF0ZS5mcmFtZXdvcmsvRnJhbWV3b3Jrcy92ZWNM
aWIuZnJhbWV3b3JrL2xpYlNwYXJzZS5keWxpYgogICAgMHg3ZmZmMjFjZjQwMDAgLSAgICAgMHg3
ZmZmMjFkMDZmZjcgK2xpYlNwYXJzZUJMQVMuZHlsaWIgKDEzMDMuNjAuMSkgPDBGMEJDQjE3LTY4
MUEtMzBDQy04RTU4LTVDRjkxNzdFNkRCND4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVu
dHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Bl
ci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRz
L1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FjY2VsZXJh
dGUuZnJhbWV3b3JrL0ZyYW1ld29ya3MvdmVjTGliLmZyYW1ld29yay9saWJTcGFyc2VCTEFTLmR5
bGliCiAgICAweDdmZmYyMWQwNzAwMCAtICAgICAweDdmZmYyMWU4N2ZjNyArbGlidkRTUC5keWxp
YiAoNzM1LjQwLjEpIDxDNzEzNTQzMi1FM0E5LTM4MjQtQTM3Mi1BMTIzOUU1OTc3QjI+IC9BcHBs
aWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1Mu
cGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1l
cy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BY2NlbGVyYXRlLmZyYW1ld29yay9GcmFtZXdvcmtzL3ZlY0xpYi5m
cmFtZXdvcmsvbGlidkRTUC5keWxpYgogICAgMHg3ZmZmMjFlODgwMDAgLSAgICAgMHg3ZmZmMjFm
ZDVmZDMgK2xpYnZNaXNjLmR5bGliICg3MzUuNDAuMSkgPEM2MkYyM0Y5LTUzMDMtMzA0Qy04REY2
LUUxNkY0NTg4QzY0MD4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVy
L1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxh
dG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9S
dW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FjY2VsZXJhdGUuZnJhbWV3b3Jr
L0ZyYW1ld29ya3MvdmVjTGliLmZyYW1ld29yay9saWJ2TWlzYy5keWxpYgogICAgMHg3ZmZmMjFm
ZDYwMDAgLSAgICAgMHg3ZmZmMjFmZDZmZmYgIGNvbS5hcHBsZS5BY2NlbGVyYXRlLnZlY0xpYiAo
My4xMSAtIHZlY0xpYiAzLjExKSA8QUVCM0FBMDgtMzUxMC0zQzJCLUI2NzktQkYzQkRGNDM0N0E1
PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQ
aG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMv
UnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQWNjZWxlcmF0ZS5mcmFtZXdvcmsvRnJhbWV3b3Jrcy92
ZWNMaWIuZnJhbWV3b3JrL3ZlY0xpYgogICAgMHg3ZmZmMjFmZDcwMDAgLSAgICAgMHg3ZmZmMjIw
MzFmZmMgIGNvbS5hcHBsZS5BY2NvdW50cyAoMTEzIC0gMTEzKSA8OUI2QUFFN0ItNTk0OC0zQzIw
LThENUItQTMxODVFODNGNkE5PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZl
bG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVT
aW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3Vy
Y2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQWNjb3VudHMuZnJhbWV3
b3JrL0FjY291bnRzCiAgICAweDdmZmYyMjVhMzAwMCAtICAgICAweDdmZmYyMjZjMmZmNSAgY29t
LmFwcGxlLmF1ZGlvLnRvb2xib3guQXVkaW9Ub29sYm94ICgxLjggLSAxLjgpIDw4RkM2ODg2NS0w
Q0FCLTM4RDctOEFEQi04QjYyODE1Q0UzOTY+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRl
bnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9w
ZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50
cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BdWRpb1Rv
b2xib3guZnJhbWV3b3JrL0F1ZGlvVG9vbGJveAogICAgMHg3ZmZmMjJkOTEwMDAgLSAgICAgMHg3
ZmZmMjMwZmVmZmEgIGNvbS5hcHBsZS5DRk5ldHdvcmsgKDExMjEuMi4xIC0gMTEyMS4yLjEpIDw3
QjBFOERFNS0xQUI3LTM0QzAtQUE0RS0wRTkxMzI0MjczOEI+IC9BcHBsaWNhdGlvbnMvWGNvZGUu
YXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFy
eS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGlt
ZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DRk5ldHdvcmsuZnJhbWV3b3JrL0NGTmV0d29yawogICAgMHg3ZmZmMjMxNTUwMDAgLSAgICAg
MHg3ZmZmMjMxYWJmZjAgIGNvbS5hcHBsZS5DbGFzc0tpdCAoMS4yIC0gMTQ1LjEuMjIpIDw1RkRF
QUVDQS1GOEJBLTNFRDMtQkE5RC0yRjYyRDAyRTMzMEM+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBw
L0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9E
ZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9D
b250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
bGFzc0tpdC5mcmFtZXdvcmsvQ2xhc3NLaXQKICAgIDB4N2ZmZjIzMWE0MDAwIC0gICAgIDB4N2Zm
ZjIzMzM4ZmYwICBjb20uYXBwbGUuY2xvdWRraXQuQ2xvdWRLaXQgKDg2MCAtIDg2MCkgPDJGNzRB
OEQzLTY0QUEtMzA5OS04NjQyLTZFOEQ1NkYxMURFMD4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAv
Q29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0Rl
dmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0Nv
bnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Ns
b3VkS2l0LmZyYW1ld29yay9DbG91ZEtpdAogICAgMHg3ZmZmMjM0MTQwMDAgLSAgICAgMHg3ZmZm
MjM1NjRmZjQgIGNvbS5hcHBsZS5jb250YWN0cyAoMS4wIC0gMzQ1Ny40KSA8QTIyRjcyQUUtRTFD
RS0zQTFFLUFFQzEtMUM2QUUwMjM5RDkyPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50
cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVy
L0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMv
UmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29udGFjdHMu
ZnJhbWV3b3JrL0NvbnRhY3RzCiAgICAweDdmZmYyMzZmZjAwMCAtICAgICAweDdmZmYyMzc5YWZm
NiAgY29tLmFwcGxlLmF1ZGlvLkNvcmVBdWRpbyAoNS4wIC0gNS4wKSA8NkZDQUZFRDEtNDRBNS0z
NUI5LTlENzktMTlGQ0Y1OTUzNDU4PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9E
ZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0Nv
cmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVz
b3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUF1ZGlvLmZy
YW1ld29yay9Db3JlQXVkaW8KICAgIDB4N2ZmZjIzN2FjMDAwIC0gICAgIDB4N2ZmZjIzN2U4ZmY4
ICBjb20uYXBwbGUuQ29yZUJsdWV0b290aCAoMS4wIC0gMSkgPDFBNjY1NTU2LTkxQjYtMzUxRS04
NEM1LTI5NDMzRDU4QThBNT4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxv
cGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2lt
dWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNl
cy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVCbHVldG9vdGguZnJh
bWV3b3JrL0NvcmVCbHVldG9vdGgKICAgIDB4N2ZmZjIzN2UyMDAwIC0gICAgIDB4N2ZmZjIzYjZm
ZmYyICtDb3JlRGF0YSAoOTc3KSA8NTQwMUNBOEQtQjM4MS0zMzEyLTkwRDUtOUM1RThBQkIxMTAx
PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQ
aG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMv
UnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJhbWV3b3JrL0NvcmVEYXRhCiAgICAw
eDdmZmYyM2IzNDAwMCAtICAgICAweDdmZmYyM2VmOGZmMSAgY29tLmFwcGxlLkNvcmVGb3VuZGF0
aW9uICg2LjkgLSAxNjc0LjEwMikgPEY4REVCRjgzLUQzQjktMzFCQi1CNTIzLUEwNDI4MjAzNUNC
ND4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9p
UGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVz
L1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1ld29yay9Db3JlRm91
bmRhdGlvbgogICAgMHg3ZmZmMjNlZWMwMDAgLSAgICAgMHg3ZmZmMjQ1MjlmZjMgIGNvbS5hcHBs
ZS5Db3JlR3JhcGhpY3MgKDIuMCAtIDEzNDguMTUpIDxFNzY1QkM2OS1DRkQ3LTNGM0UtQUMzQi04
OEQxQTIwMjUwREY+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9Q
bGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRv
ci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVu
dGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3Jr
L0NvcmVHcmFwaGljcwogICAgMHg3ZmZmMjQ1MmYwMDAgLSAgICAgMHg3ZmZmMjQ4NmJmZmYgIGNv
bS5hcHBsZS5Db3JlSW1hZ2UgKDEzLjAuMCAtIDkyMC44KSA8MkE5QUU4RjctMDAxRC0zRkYyLUEz
MjgtQzA3MzgwMzA3OUU4PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9w
ZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11
bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2Vz
L1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUltYWdlLmZyYW1ld29y
ay9Db3JlSW1hZ2UKICAgIDB4N2ZmZjI0ODRhMDAwIC0gICAgIDB4N2ZmZjI0OGI4ZmZkICBjb20u
YXBwbGUuY29yZWxvY2F0aW9uICgyMzg5LjAuOCAtIDIzODkuMC44KSA8Nzg4NkEwNTAtMDU2Qi0z
NjhCLThCMkItOUY5NTVCMEE4RjI4PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9E
ZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0Nv
cmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVz
b3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUxvY2F0aW9u
LmZyYW1ld29yay9Db3JlTG9jYXRpb24KICAgIDB4N2ZmZjI0OGZlMDAwIC0gICAgIDB4N2ZmZjI0
YmZjZmY3ICBjb20uYXBwbGUuQ29yZU1MICgxLjAgLSAxKSA8MTgyQkZBNzItRDgwRi0zMjJELUI4
RUMtMDZFOTJCMTZFQzNBPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9w
ZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11
bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2Vz
L1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZU1MLmZyYW1ld29yay9D
b3JlTUwKICAgIDB4N2ZmZjI0YmRhMDAwIC0gICAgIDB4N2ZmZjI0YzhlZmY1ICBjb20uYXBwbGUu
Q29yZU1lZGlhICgxLjAgLSAyNTIwLjkuMS40KSA8RTU3MDc1OUEtMzNCMy0zRDA2LTgzNDQtQjAx
NjI0Qzg3QTE3PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxh
dGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3Iv
UHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRp
bWVSb290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZU1lZGlhLmZyYW1ld29yay9Db3Jl
TWVkaWEKICAgIDB4N2ZmZjI0ZGJkMDAwIC0gICAgIDB4N2ZmZjI0ZjRiZmZlICBjb20uYXBwbGUu
Q29yZVNlcnZpY2VzICg4MzkgLSA4MzkpIDwxRDc2OERBNS1DNkMzLTNCMjctQUZFQS00OTE1ODFD
MUMzODY+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9y
bXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9m
aWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJv
b3QvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0NvcmVT
ZXJ2aWNlcwogICAgMHg3ZmZmMjRmM2EwMDAgLSAgICAgMHg3ZmZmMjRmYTVmZjkgIGNvbS5hcHBs
ZS5Db3JlU3BvdGxpZ2h0ICgxLjAgLSAyMDc1LjQpIDxBMTM0NzczNS1FMDE4LTMzMDItQjZFMC01
MDk3NzhBN0MxRkY+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9Q
bGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRv
ci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVu
dGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU3BvdGxpZ2h0LmZyYW1ld29y
ay9Db3JlU3BvdGxpZ2h0CiAgICAweDdmZmYyNGY5YzAwMCAtICAgICAweDdmZmYyNTA3OWZmZCAg
Y29tLmFwcGxlLkNvcmVUZWxlcGhvbnkgKDExMyAtIDcyOTYuMSkgPEM1RTM5Q0E0LUQ2RkItMzI0
Qy1BOTZFLTFDODEyNEQ0QjkyRT4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2
ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3Jl
U2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291
cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVUZWxlcGhvbnku
ZnJhbWV3b3JrL0NvcmVUZWxlcGhvbnkKICAgIDB4N2ZmZjI1MDZjMDAwIC0gICAgIDB4N2ZmZjI1
MjFjZmY3ICBjb20uYXBwbGUuQ29yZVRleHQgKDY0My4xLjIuMiAtIDY0My4xLjIuMikgPDQ3NDQ2
QzZGLUQ5QUEtM0RCRC1CODdDLTQ4OUFBMzk0N0I3Nz4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAv
Q29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0Rl
dmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0Nv
bnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Nv
cmVUZXh0LmZyYW1ld29yay9Db3JlVGV4dAogICAgMHg3ZmZmMjUyMTgwMDAgLSAgICAgMHg3ZmZm
MjUyNDZmZjUgIGNvbS5hcHBsZS5Db3JlVmlkZW8gKDEuOCAtIDMzNC4wKSA8MUMxNThDODktQUEz
Ni0zMDU3LTg1NzMtQzA4RERERkY3OTU2PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50
cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVy
L0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMv
UmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVZpZGVv
LmZyYW1ld29yay9Db3JlVmlkZW8KICAgIDB4N2ZmZjI1MmJhMDAwIC0gICAgIDB4N2ZmZjI1M2Qz
ZmY2ICBjb20uYXBwbGUuZXZlbnRraXQgKDEuMC4wIC0gMS4wKSA8NzQ5M0UxODYtRTYwNC0zRjI1
LUJFQUItMDk4RkRCMUY5NEJBPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZl
bG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVT
aW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3Vy
Y2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRXZlbnRLaXQuZnJhbWV3
b3JrL0V2ZW50S2l0CiAgICAweDdmZmYyNTVhMzAwMCAtICAgICAweDdmZmYyNTZiZGZmMiAgY29t
LmFwcGxlLkZpbGVQcm92aWRlciAoMjY1IC0gMjY1KSA8QTdBMDYzNUQtQjQzRS0zOTM5LTkwREYt
MDNGMkU5QUY4QUREPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIv
UGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0
b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1
bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRmlsZVByb3ZpZGVyLmZyYW1ld29y
ay9GaWxlUHJvdmlkZXIKICAgIDB4N2ZmZjI1NmI4MDAwIC0gICAgIDB4N2ZmZjI1OWJjZmY0ICBj
b20uYXBwbGUuRm91bmRhdGlvbiAoNi45IC0gMTY3NC4xMDIpIDw1NkU0NzgwMC0yQ0NCLTNCN0Qt
Qjk0Qi1DQ0Y1RjEzRDZCQ0Y+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVs
b3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNp
bXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJj
ZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1l
d29yay9Gb3VuZGF0aW9uCiAgICAweDdmZmYyNTlhNzAwMCAtICAgICAweDdmZmYyNTlkNGZmYiAg
Y29tLmFwcGxlLkdTUyAoNC4wIC0gMi4wKSA8Mzc1NTQ3NDQtMDY4RC0zOThGLTkzMjAtMkUyMjY3
QzcwRTRDPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZv
cm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJv
ZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVS
b290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvR1NTLmZyYW1ld29yay9HU1MKICAgIDB4N2Zm
ZjI1ZTY0MDAwIC0gICAgIDB4N2ZmZjI1ZWU1ZmYxICBjb20uYXBwbGUuZnJhbWV3b3JrLklPS2l0
ICgyLjAuMiAtIDE3MjYuNjAuMikgPEY1MUVFRDc1LUIyRkUtMzg5Qi1BQjA5LTQ4N0U1NTVGRTk5
OT4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9p
UGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVz
L1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL0lPS2l0
CiAgICAweDdmZmYyNWVlNTAwMCAtICAgICAweDdmZmYyNWVmMGZmMCAgY29tLmFwcGxlLklPU3Vy
ZmFjZSAoMjY5LjkgLSAyNjkuOSkgPDcxREIzNzE0LUFEQzYtMzdBNi1BRTI2LTNBRTNFNEIwQzVC
Nz4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9p
UGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVz
L1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPU3VyZmFjZS5mcmFtZXdvcmsvSU9TdXJmYWNlCiAg
ICAweDdmZmYyNWYyMTAwMCAtICAgICAweDdmZmYyNjQzOWZmZSAgY29tLmFwcGxlLkltYWdlSU8u
ZnJhbWV3b3JrICgzLjMuMCAtIDE5NzIuMTUpIDwzMTkzNzc3RS01QkU2LTNCQkQtODkwQy00NUMy
NTU1MkEzNjM+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0
Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Q
cm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGlt
ZVJvb3QvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JbWFnZUlPLmZyYW1ld29yay9JbWFnZUlP
CiAgICAweDdmZmYyNjQzYTAwMCAtICAgICAweDdmZmYyNjg5YWZmNiAgY29tLmFwcGxlLkludGVu
dHMgKDEuMCAtIDEpIDxCOUFFRjQ5MC0wMENDLTM4N0EtOEI3OC01NkE3RjExNUM2MTI+IC9BcHBs
aWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1Mu
cGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1l
cy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9JbnRlbnRzLmZyYW1ld29yay9JbnRlbnRzCiAgICAweDdmZmYyNzNm
ZjAwMCAtICAgICAweDdmZmYyNzRkMmZmYiAgY29tLmFwcGxlLkxpbmtQcmVzZW50YXRpb24gKDEx
OSAtIDExOS4xNSkgPEJBQTJBNUU5LTJCQzAtM0QwMy05MUYxLTg3Qzk5MkM2ODBERD4gL0FwcGxp
Y2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5w
bGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVz
L2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0xpbmtQcmVzZW50YXRpb24uZnJhbWV3b3JrL0xpbmtQcmVzZW50YXRp
b24KICAgIDB4N2ZmZjI3NGMwMDAwIC0gICAgIDB4N2ZmZjI3NGQ0ZmYxICBjb20uYXBwbGUuTG9j
YWxBdXRoZW50aWNhdGlvbiAoMS4wIC0gNjkzLjYyLjEpIDxDRjVBRjAwQy1GMTk1LTM3MEYtOUQy
RS1FQzY4MDU5OEY2QjM+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Bl
ci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVs
YXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMv
UnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Mb2NhbEF1dGhlbnRpY2F0aW9u
LmZyYW1ld29yay9Mb2NhbEF1dGhlbnRpY2F0aW9uCiAgICAweDdmZmYyNzRlZDAwMCAtICAgICAw
eDdmZmYyNzRmNGZmMCAgY29tLmFwcGxlLkNvcmVBdXRoZW50aWNhdGlvbi5TaGFyZWRVdGlscyAo
MS4wIC0gNjkzLjYyLjEpIDwxMTQwMTIwNy05QTAwLTNBREItQTlCOS1GNTY0QzczREQxRTc+IC9B
cHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25l
T1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50
aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Mb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yay9TdXBwb3J0
L1NoYXJlZFV0aWxzLmZyYW1ld29yay9TaGFyZWRVdGlscwogICAgMHg3ZmZmMjc3NDYwMDAgLSAg
ICAgMHg3ZmZmMjc3NTBmZmIgIGNvbS5hcHBsZS5NZWRpYUFjY2Vzc2liaWxpdHkgKDEuMCAtIDEy
NSkgPEM3MjY2ODc4LUE3NUUtM0Q1RC04NTI2LTNERTNGOTkwRDFENz4gL0FwcGxpY2F0aW9ucy9Y
Y29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9M
aWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1y
dW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL01lZGlhQWNjZXNzaWJpbGl0eS5mcmFtZXdvcmsvTWVkaWFBY2Nlc3NpYmlsaXR5CiAg
ICAweDdmZmYyN2FjYzAwMCAtICAgICAweDdmZmYyN2Y1ZGZmZCAgY29tLmFwcGxlLk1lZGlhVG9v
bGJveCAoMS4wIC0gMjUyMC45LjEuNCkgPDRBQTlCQUM4LUU2RTUtMzIwRS04NTFGLUIwMDNFNzY4
NkZCNT4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jt
cy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2Zp
bGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9v
dC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL01lZGlhVG9vbGJveC5mcmFtZXdvcmsvTWVkaWFU
b29sYm94CiAgICAweDdmZmYyODA5ZjAwMCAtICAgICAweDdmZmYyODE0YWZmOCAgY29tLmFwcGxl
Lk1ldGFsICgyMTMuMi4zIC0gMjEzLjIuMykgPEM0QThDNUU2LTk4ODgtMzU4RS04OENCLTVCRUYx
NDhERTg0Nz4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRm
b3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1By
b2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1l
Um9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL01ldGFsLmZyYW1ld29yay9NZXRhbAogICAg
MHg3ZmZmMjgxNDUwMDAgLSAgICAgMHg3ZmZmMjgxN2VmZjcgIGNvbS5hcHBsZS5NZXRhbFBlcmZv
cm1hbmNlU2hhZGVycy5NUFNDb3JlICgxLjAgLSAxKSA8RjAwMjEwNUItOUE3NC0zNzIyLUE2QzIt
QTk2REE4NzY1MjQyPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIv
UGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0
b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1
bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvTWV0YWxQZXJmb3JtYW5jZVNoYWRl
cnMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTVBTQ29yZS5mcmFtZXdvcmsvTVBTQ29yZQogICAgMHg3
ZmZmMjgxN2EwMDAgLSAgICAgMHg3ZmZmMjgxZmZmZmUgIGNvbS5hcHBsZS5NZXRhbFBlcmZvcm1h
bmNlU2hhZGVycy5NUFNJbWFnZSAoMS4wIC0gMSkgPEMyM0MxNUYxLTAyMDQtMzVDRS1BRjA4LUE0
MzE3NDVFNTc0QT4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1Bs
YXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9y
L1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50
aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL01ldGFsUGVyZm9ybWFuY2VTaGFkZXJz
LmZyYW1ld29yay9GcmFtZXdvcmtzL01QU0ltYWdlLmZyYW1ld29yay9NUFNJbWFnZQogICAgMHg3
ZmZmMjgxZmQwMDAgLSAgICAgMHg3ZmZmMjgyMjBmZmIgIGNvbS5hcHBsZS5NZXRhbFBlcmZvcm1h
bmNlU2hhZGVycy5NUFNNYXRyaXggKDEuMCAtIDEpIDw1QzMxNzA3MS1ENTg3LTM4OTAtQURFQi04
MDVBRTA2RjlGMjI+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9Q
bGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRv
ci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVu
dGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9NZXRhbFBlcmZvcm1hbmNlU2hhZGVy
cy5mcmFtZXdvcmsvRnJhbWV3b3Jrcy9NUFNNYXRyaXguZnJhbWV3b3JrL01QU01hdHJpeAogICAg
MHg3ZmZmMjgyMjAwMDAgLSAgICAgMHg3ZmZmMjgyMzVmZjcgIGNvbS5hcHBsZS5NZXRhbFBlcmZv
cm1hbmNlU2hhZGVycy5NUFNOREFycmF5ICgxLjAgLSAxKSA8Q0RDNTNFQzMtRTBDOS0zNkExLUE1
N0ItMkU1RUQyN0E1MERBPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9w
ZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11
bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2Vz
L1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvTWV0YWxQZXJmb3JtYW5jZVNo
YWRlcnMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTVBTTkRBcnJheS5mcmFtZXdvcmsvTVBTTkRBcnJh
eQogICAgMHg3ZmZmMjgyMzQwMDAgLSAgICAgMHg3ZmZmMjgzODJmZjYgIGNvbS5hcHBsZS5NZXRh
bFBlcmZvcm1hbmNlU2hhZGVycy5NUFNOZXVyYWxOZXR3b3JrICgxLjAgLSAxKSA8RERDNkMzRkQt
NTE1MS0zMUJCLUFDOEQtMDM2Q0UzOUVBOUVEPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250
ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxv
cGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVu
dHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvTWV0YWxQ
ZXJmb3JtYW5jZVNoYWRlcnMuZnJhbWV3b3JrL0ZyYW1ld29ya3MvTVBTTmV1cmFsTmV0d29yay5m
cmFtZXdvcmsvTVBTTmV1cmFsTmV0d29yawogICAgMHg3ZmZmMjgzNzIwMDAgLSAgICAgMHg3ZmZm
MjgzYmZmZjIgIGNvbS5hcHBsZS5NZXRhbFBlcmZvcm1hbmNlU2hhZGVycy5NUFNSYXlJbnRlcnNl
Y3RvciAoMS4wIC0gMSkgPDM3QzYyRTdCLTMzNzUtMzlDMy1CMEI3LTBDRjM0NzBFQkMzNT4gL0Fw
cGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVP
Uy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRp
bWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL01ldGFsUGVyZm9ybWFuY2VTaGFkZXJzLmZyYW1ld29yay9GcmFt
ZXdvcmtzL01QU1JheUludGVyc2VjdG9yLmZyYW1ld29yay9NUFNSYXlJbnRlcnNlY3RvcgogICAg
MHg3ZmZmMjgzYmQwMDAgLSAgICAgMHg3ZmZmMjgzYmRmZjAgIGNvbS5hcHBsZS5NZXRhbFBlcmZv
cm1hbmNlU2hhZGVycy5NZXRhbFBlcmZvcm1hbmNlU2hhZGVycyAoMS4wIC0gMSkgPDkwMEZCQzQw
LUY1NkItMzhBQy1CMTAxLTYzMUM1MEM4RDlFMD4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29u
dGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVs
b3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRl
bnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL01ldGFs
UGVyZm9ybWFuY2VTaGFkZXJzLmZyYW1ld29yay9NZXRhbFBlcmZvcm1hbmNlU2hhZGVycwogICAg
MHg3ZmZmMjgzY2EwMDAgLSAgICAgMHg3ZmZmMjgzY2FmZjcgIGNvbS5hcHBsZS5Nb2JpbGVDb3Jl
U2VydmljZXMgKDEwNjkuMTQgLSAxMDY5LjE0KSA8NzExMEI2NkItMTI0Mi0zMDkyLTkxMEYtQzU1
MjNCQTAyQ0MyPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxh
dGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3Iv
UHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRp
bWVSb290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvTW9iaWxlQ29yZVNlcnZpY2VzLmZyYW1l
d29yay9Nb2JpbGVDb3JlU2VydmljZXMKICAgIDB4N2ZmZjI5MmJlMDAwIC0gICAgIDB4N2ZmZjI5
MmY2ZmYwICBjb20uYXBwbGUuTmF0dXJhbExhbmd1YWdlICgxLjAgLSA1NykgPDNGQkVFOUEzLTcw
QjktMzc5OC1BNzg0LTg4MEVCMjAwQjQ3ND4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVu
dHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Bl
ci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRz
L1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL05hdHVyYWxM
YW5ndWFnZS5mcmFtZXdvcmsvTmF0dXJhbExhbmd1YWdlCiAgICAweDdmZmYyOTJmMzAwMCAtICAg
ICAweDdmZmYyOTM4MGZmOCAgY29tLmFwcGxlLk5ldHdvcmsgKDEuMCAtIDEpIDwwRDgxMzJEQy1C
OUEzLTNEREQtODlEQi0zRTk4MUZDODQxMDc+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRl
bnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9w
ZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50
cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9OZXR3b3Jr
LmZyYW1ld29yay9OZXR3b3JrCiAgICAweDdmZmYyOTVmMzAwMCAtICAgICAweDdmZmYyYTJhM2Y1
MyArbGliTExWTUNvbnRhaW5lci5keWxpYiAoNjAyLjIuNDYpIDwwNUU1NTA3MC0zNDlDLTM4QjAt
QjQyOC04QTcxQTRDRjA0QzY+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVs
b3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNp
bXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJj
ZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0xFUy5mcmFtZXdv
cmsvbGliTExWTUNvbnRhaW5lci5keWxpYgogICAgMHg3ZmZmMmEzYjIwMDAgLSAgICAgMHg3ZmZm
MmEzYmVmZjkgIGNvbS5hcHBsZS5vcGVuZ2xlcyAoMTcuMTAuMjIgLSAxNy4xMC4yMikgPDhEQjhE
N0I0LTJGNTYtMzFEQi04NERCLUYwNzk3OENBMjMzNT4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAv
Q29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0Rl
dmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0Nv
bnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09w
ZW5HTEVTLmZyYW1ld29yay9PcGVuR0xFUwogICAgMHg3ZmZmMmEzYmYwMDAgLSAgICAgMHg3ZmZm
MmEzYzFmZmYgK2xpYkNWTVNQbHVnaW5TdXBwb3J0LmR5bGliICgxNy4xMC4yMikgPEY2NTBCMEY0
LTA0MUMtMzlDMi04RTZFLUI4RjdGODVDQUU5Nz4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29u
dGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVs
b3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRl
bnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5H
TEVTLmZyYW1ld29yay9saWJDVk1TUGx1Z2luU3VwcG9ydC5keWxpYgogICAgMHg3ZmZmMmEzYzIw
MDAgLSAgICAgMHg3ZmZmMmEzYzdmZmYgK2xpYkNvcmVGU0NhY2hlLmR5bGliICgxNzYuOCkgPEFB
QUE4NDJBLUFFRjEtM0IxRi05MzA2LUFDNDVBOUM0RkFGOD4gL0FwcGxpY2F0aW9ucy9YY29kZS5h
cHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5
L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1l
L0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L09wZW5HTEVTLmZyYW1ld29yay9saWJDb3JlRlNDYWNoZS5keWxpYgogICAgMHg3ZmZmMmEzYzgw
MDAgLSAgICAgMHg3ZmZmMmEzZDBmZjcgK2xpYkNvcmVWTUNsaWVudC5keWxpYiAoMTc2LjgpIDww
Q0ZEMkI2MC0zMkY0LTMxMjktQUFBRi05MkZCODJCRDBFMkQ+IC9BcHBsaWNhdGlvbnMvWGNvZGUu
YXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFy
eS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGlt
ZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9PcGVuR0xFUy5mcmFtZXdvcmsvbGliQ29yZVZNQ2xpZW50LmR5bGliCiAgICAweDdmZmYyYTNk
MTAwMCAtICAgICAweDdmZmYyYTNkOWZmYiArbGliR0ZYU2hhcmVkLmR5bGliICgxNy4xMC4yMikg
PEQ5RTZFOTA5LTRBNzgtM0U1Mi05MjRELTY3NUZCOENBMEE4Nj4gL0FwcGxpY2F0aW9ucy9YY29k
ZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJy
YXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50
aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL09wZW5HTEVTLmZyYW1ld29yay9saWJHRlhTaGFyZWQuZHlsaWIKICAgIDB4N2ZmZjJhM2Rh
MDAwIC0gICAgIDB4N2ZmZjJhNDE5ZmYzICtsaWJHTEltYWdlLmR5bGliICgxNy4xMC4yMikgPEVC
ODI2NkM3LTc2OTQtMzlEQi1COENGLTUxNEI2RTVDMzNEMD4gL0FwcGxpY2F0aW9ucy9YY29kZS5h
cHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5
L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1l
L0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L09wZW5HTEVTLmZyYW1ld29yay9saWJHTEltYWdlLmR5bGliCiAgICAweDdmZmYyYTVmYjAwMCAt
ICAgICAweDdmZmYyYTZkNWZmOSAgY29tLmFwcGxlLlBERktpdCAoMS4wIC0gODI1LjEzKSA8Rjk0
RDQ3ODAtMEU2NS0zM0VGLUE1NUMtQjQ4MDkxQTlCNzJFPiAvQXBwbGljYXRpb25zL1hjb2RlLmFw
cC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkv
RGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUv
Q29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
UERGS2l0LmZyYW1ld29yay9QREZLaXQKICAgIDB4N2ZmZjJhZmQ3MDAwIC0gICAgIDB4N2ZmZjJh
ZmRlZmY2ICBjb20uYXBwbGUuUHVzaEtpdCAoMS4wIC0gMSkgPEZCMzc3MEFFLTkwMEYtM0RBNC1B
RUIyLTgxNEUwQjI3MjA0Qz4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxv
cGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2lt
dWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNl
cy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1B1c2hLaXQuZnJhbWV3b3Jr
L1B1c2hLaXQKICAgIDB4N2ZmZjJhZmRlMDAwIC0gICAgIDB4N2ZmZjJiMjFmZmYwICBjb20uYXBw
bGUuUXVhcnR6Q29yZSAoMS4xMSAtIDgxNS4yNSkgPDcyMTM5QzEwLTYyMDgtMzU0My04REJELTgz
QUYwRjY1QjhCMz4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1Bs
YXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9y
L1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50
aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrL1F1
YXJ0ekNvcmUKICAgIDB4N2ZmZjJiMmM0MDAwIC0gICAgIDB4N2ZmZjJiMzAxZmYwICBjb20uYXBw
bGUuUXVpY2tMb29rVGh1bWJuYWlsaW5nICgxLjAgLSAxKSA8NzA5NzJEMjctMjkxMC0zNDgwLUEy
QUQtNzYyQjAwN0ZFRjFBPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9w
ZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11
bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2Vz
L1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVpY2tMb29rVGh1bWJuYWls
aW5nLmZyYW1ld29yay9RdWlja0xvb2tUaHVtYm5haWxpbmcKICAgIDB4N2ZmZjJiYjQ3MDAwIC0g
ICAgIDB4N2ZmZjJiYzcyZmY4ICBjb20uYXBwbGUuU2VjdXJpdHkgKDEwLjAgLSA1OTMwNi42MC41
NikgPEQyRTdBQjQ0LTMwQzYtMzJFOS05NEE1LTQzQUVCNzM0QzFGNT4gL0FwcGxpY2F0aW9ucy9Y
Y29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9M
aWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1y
dW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9TZWN1cml0eQogICAgMHg3ZmZmMmM3NzkwMDAgLSAg
ICAgMHg3ZmZmMmM3ZDdmZjcgIGNvbS5hcHBsZS5TeXN0ZW1Db25maWd1cmF0aW9uICgxLjE5IC0g
MS4xOSkgPEUyQzEzQ0U3LUMzREUtM0JCNC1COUZBLTNBRjY3MEE3RDk5Mj4gL0FwcGxpY2F0aW9u
cy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9y
bS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5z
aW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL1N5c3RlbUNvbmZpZ3VyYXRpb24uZnJhbWV3b3JrL1N5c3RlbUNvbmZpZ3VyYXRp
b24KICAgIDB4N2ZmZjJjN2RhMDAwIC0gICAgIDB4N2ZmZjJjN2RhZmZmICBjb20uYXBwbGUuVUlL
aXQgKDEuMCAtIDYxMDAwKSA8RDQ2NTg0NEItRjhBRS0zNkFGLUI0OTQtNzBDQkU2QjU4NkY2PiAv
QXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9u
ZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVu
dGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvVUlLaXQuZnJhbWV3b3JrL1VJS2l0CiAgICAweDdmZmYyYzdk
YjAwMCAtICAgICAweDdmZmYyYzgwZmZmYyAgY29tLmFwcGxlLlVzZXJOb3RpZmljYXRpb25zICgx
LjAgLSA/Pz8pIDxDRTUxMzcxMC01RTlGLTNBQzQtQjBBNC1DRTA0QkRDMEM2RUE+IC9BcHBsaWNh
dGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxh
dGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9p
T1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Vc2VyTm90aWZpY2F0aW9ucy5mcmFtZXdvcmsvVXNlck5vdGlmaWNhdGlv
bnMKICAgIDB4N2ZmZjJjODg5MDAwIC0gICAgIDB4N2ZmZjJjYjc4ZmYyICBjb20uYXBwbGUuVmlk
ZW9Ub29sYm94ICgxLjAgLSAyNTIwLjkuMS40KSA8OTk0MDJDMTgtM0IyRi0zNEFDLTkxQTctNzVE
QTJBMTBENThEPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxh
dGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3Iv
UHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRp
bWVSb290L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvVmlkZW9Ub29sYm94LmZyYW1ld29yay9W
aWRlb1Rvb2xib3gKICAgIDB4N2ZmZjJlMzZlMDAwIC0gICAgIDB4N2ZmZjJlMzc5ZmY5ICBjb20u
YXBwbGUuYWNjZXNzaWJpbGl0eS5BWENvcmVVdGlsaXRpZXMgKDEuMCAtIDEpIDw3MUQ1ODkwQi01
OUJFLTM4OEItOTlGQi1FMjVDQkQ0QzVCRTQ+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRl
bnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9w
ZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50
cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3Mv
QVhDb3JlVXRpbGl0aWVzLmZyYW1ld29yay9BWENvcmVVdGlsaXRpZXMKICAgIDB4N2ZmZjJlNjgy
MDAwIC0gICAgIDB4N2ZmZjJlNjhmZmYyICBjb20uYXBwbGUuQWNjb3VudFNldHRpbmdzICgxLjAg
LSAxLjApIDwzRTYwRUFGNC1FRTQ0LTNGNDMtQUY0Mi0xQ0VFN0Y1ODg1MEI+IC9BcHBsaWNhdGlv
bnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZv
cm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Mu
c2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkv
UHJpdmF0ZUZyYW1ld29ya3MvQWNjb3VudFNldHRpbmdzLmZyYW1ld29yay9BY2NvdW50U2V0dGlu
Z3MKICAgIDB4N2ZmZjJlNjhmMDAwIC0gICAgIDB4N2ZmZjJlNzMyZmYxICBjb20uYXBwbGUuYWNj
b3VudHMuQWNjb3VudHNEYWVtb24gKDExMyAtIDExMykgPEExRTZDMzU5LTM1QjItM0YyOS1CQTkz
LUYxRTZCREFGMUY5OD4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVy
L1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxh
dG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9S
dW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9BY2NvdW50c0RhZW1v
bi5mcmFtZXdvcmsvQWNjb3VudHNEYWVtb24KICAgIDB4N2ZmZjJlZTM1MDAwIC0gICAgIDB4N2Zm
ZjJlZWQxZmZmICBjb20uYXBwbGUuQWRkcmVzc0Jvb2tMZWdhY3kgKDEuMCAtIDMwKSA8QzE5QTBC
MDctQTdBQi0zMzYzLUEzNTktM0U3MkQxQjM2Q0YzPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9D
b250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2
ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29u
dGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdv
cmtzL0FkZHJlc3NCb29rTGVnYWN5LmZyYW1ld29yay9BZGRyZXNzQm9va0xlZ2FjeQogICAgMHg3
ZmZmMmVlY2EwMDAgLSAgICAgMHg3ZmZmMmVlY2VmZmUgIGNvbS5hcHBsZS5BZ2dyZWdhdGVEaWN0
aW9uYXJ5ICgxLjAgLSAxKSA8NzY4NDBGRTctRDcwQS0zRDY4LTlFN0QtNzFBRDI0RjZBRjc2PiAv
QXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9u
ZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVu
dGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3Rl
bS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0FnZ3JlZ2F0ZURpY3Rpb25hcnkuZnJhbWV3b3Jr
L0FnZ3JlZ2F0ZURpY3Rpb25hcnkKICAgIDB4N2ZmZjJmMGI3MDAwIC0gICAgIDB4N2ZmZjJmMGQ4
ZmYwICBjb20uYXBwbGUuQXBwQ29uZHVpdCAoMS4wIC0gMSkgPDg1QzAxODNELTA1RTMtMzZCMy1C
RDdELTAzM0M4N0EwREVCRT4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxv
cGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2lt
dWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNl
cy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9BcHBDb25kdWl0
LmZyYW1ld29yay9BcHBDb25kdWl0CiAgICAweDdmZmYyZjFkYTAwMCAtICAgICAweDdmZmYyZjIx
OGZmNyAgY29tLmFwcGxlLkFwcFN1cHBvcnQgKDEuMC4wIC0gMjkpIDwwMTFCQTYxNi1FNjJBLTNC
QjYtOTNFQi02OEM5RDQ1MTE4RUI+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0Rl
dmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29y
ZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNv
dXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQXBwU3Vw
cG9ydC5mcmFtZXdvcmsvQXBwU3VwcG9ydAogICAgMHg3ZmZmMmYyM2QwMDAgLSAgICAgMHg3ZmZm
MmYzNTJmZjggIGNvbS5hcHBsZS5BcHBsZUFjY291bnQgKDEuMCAtIDEuMCkgPDc0NDc0NjJDLUFB
MTEtMzUwMy1CQTdGLThBMDRFMEVGNUFCQz4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVu
dHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Bl
ci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRz
L1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9B
cHBsZUFjY291bnQuZnJhbWV3b3JrL0FwcGxlQWNjb3VudAogICAgMHg3ZmZmMmYzOTQwMDAgLSAg
ICAgMHg3ZmZmMmYzOWZmZmYgIGNvbS5hcHBsZS5BcHBsZUlEQXV0aFN1cHBvcnQgKDEuMCAtIDEp
IDwxNzhENjdFMS02MTZGLTM1QTctOTlBQy0wM0IzNjRDNEFGQkI+IC9BcHBsaWNhdGlvbnMvWGNv
ZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGli
cmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVu
dGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0
ZUZyYW1ld29ya3MvQXBwbGVJREF1dGhTdXBwb3J0LmZyYW1ld29yay9BcHBsZUlEQXV0aFN1cHBv
cnQKICAgIDB4N2ZmZjJmMzlmMDAwIC0gICAgIDB4N2ZmZjJmM2E1ZmY3ICBjb20uYXBwbGUuQXBw
bGVJRFNTT0F1dGhlbnRpY2F0aW9uICgxLjAgLSAxKSA8NUI4QTlFMTUtQUE2Qy0zM0FFLTkzM0It
OTk1RDdENTQ4Nzg4PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIv
UGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0
b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1
bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0FwcGxlSURTU09BdXRo
ZW50aWNhdGlvbi5mcmFtZXdvcmsvQXBwbGVJRFNTT0F1dGhlbnRpY2F0aW9uCiAgICAweDdmZmYy
ZjNhNjAwMCAtICAgICAweDdmZmYyZjNlZWZmZiAgY29tLmFwcGxlLkFwcGxlSlBFRyAoMS4wIC0g
MSkgPDgzMEJERDQzLUNFRTAtMzFCMC05OTM2LUExRDg0MEI2RTUxNj4gL0FwcGxpY2F0aW9ucy9Y
Y29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9M
aWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1y
dW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2
YXRlRnJhbWV3b3Jrcy9BcHBsZUpQRUcuZnJhbWV3b3JrL0FwcGxlSlBFRwogICAgMHg3ZmZmMmYz
ZmQwMDAgLSAgICAgMHg3ZmZmMmY1NWJmZjggIGNvbS5hcHBsZS5BcHBsZU1lZGlhU2VydmljZXMg
KDEuMCAtIDEpIDwwNTVDRkYyNi0wMjVCLTM0ODUtOEE5RS01ODcwMTNDMkE1Q0E+IC9BcHBsaWNh
dGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxh
dGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9p
T1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJh
cnkvUHJpdmF0ZUZyYW1ld29ya3MvQXBwbGVNZWRpYVNlcnZpY2VzLmZyYW1ld29yay9BcHBsZU1l
ZGlhU2VydmljZXMKICAgIDB4N2ZmZjJmNTRmMDAwIC0gICAgIDB4N2ZmZjJmNTZiZmYyICBjb20u
YXBwbGUuYXBzLmZyYW1ld29yayAoNC4wIC0gNC4wKSA8NzVGRkFEOTAtRjA1Qi0zNTI4LTlBNjMt
MThEQkNBN0M2MUYxPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIv
UGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0
b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1
bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0FwcGxlUHVzaFNlcnZp
Y2UuZnJhbWV3b3JrL0FwcGxlUHVzaFNlcnZpY2UKICAgIDB4N2ZmZjJmNTZmMDAwIC0gICAgIDB4
N2ZmZjJmNTkxZmY3ICBjb20uYXBwbGUuYXBwbGVzYXVjZSAoMS4wIC0gMTYuMjIpIDxEMzlGQ0U4
Ni0yNkE2LTMzRjAtQjlBMy03MTA0QUZCOTE5MkM+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0Nv
bnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZl
bG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250
ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29y
a3MvQXBwbGVTYXVjZS5mcmFtZXdvcmsvQXBwbGVTYXVjZQogICAgMHg3ZmZmMmY1OWEwMDAgLSAg
ICAgMHg3ZmZmMmY1YTlmZmQgIGNvbS5hcHBsZS5Bc3NlcnRpb25TZXJ2aWNlcyAoMS4wIC0gMjIz
LjYwLjQpIDw3MzQwM0M3Ri04MjE3LTNDMDktODMyRC04NTExMDJEODUzODE+IC9BcHBsaWNhdGlv
bnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZv
cm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Mu
c2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkv
UHJpdmF0ZUZyYW1ld29ya3MvQXNzZXJ0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Fzc2VydGlvblNl
cnZpY2VzCiAgICAweDdmZmYyZjhkZjAwMCAtICAgICAweDdmZmYyZmIxNGZmOSAgY29tLmFwcGxl
LmF1ZGlvLkF1ZGlvVG9vbGJveENvcmUgKDEuMCAtIDExMDQuMjguMSkgPEJCOUVDNTk3LUQ4N0Et
M0JENS04MTg1LUMzQjIxNjZGN0MyMT4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMv
RGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9D
b3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jl
c291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9BdWRp
b1Rvb2xib3hDb3JlLmZyYW1ld29yay9BdWRpb1Rvb2xib3hDb3JlCiAgICAweDdmZmYyZmIwNzAw
MCAtICAgICAweDdmZmYyZmI4MWZmYyAgY29tLmFwcGxlLkF1dGhLaXQgKDEuMCAtIDEpIDxCREQ4
NEZFMy1CRjlDLTM5NzYtODg0OC1GODI4MEE0QUE3M0Y+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBw
L0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9E
ZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9D
b250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1l
d29ya3MvQXV0aEtpdC5mcmFtZXdvcmsvQXV0aEtpdAogICAgMHg3ZmZmMmZkZTQwMDAgLSAgICAg
MHg3ZmZmMmZlM2JmZmUgIGNvbS5hcHBsZS5CYWNrQm9hcmRTZXJ2aWNlcyAoMS4wIC0gMS4wKSA8
NTdBNkRCMjctNTExRS0zMTQ4LTgxMEQtRkFEMEMzNjRBOUM1PiAvQXBwbGljYXRpb25zL1hjb2Rl
LmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJh
cnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRp
bWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVG
cmFtZXdvcmtzL0JhY2tCb2FyZFNlcnZpY2VzLmZyYW1ld29yay9CYWNrQm9hcmRTZXJ2aWNlcwog
ICAgMHg3ZmZmMmZlNWEwMDAgLSAgICAgMHg3ZmZmMmZlZDhmZjEgIGNvbS5hcHBsZS5CYXNlQm9h
cmQgKDQ2NC4xIC0gNDY0LjEpIDw4NDRGNUZDNi00M0U1LTM5ODYtOEU5My1DRkIxOTdFOTU3MjQ+
IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBo
b25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9S
dW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lz
dGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQmFzZUJvYXJkLmZyYW1ld29yay9CYXNlQm9h
cmQKICAgIDB4N2ZmZjJmZjFiMDAwIC0gICAgIDB4N2ZmZjJmZjRiZmZkICBjb20uYXBwbGUuQm9h
cmRTZXJ2aWNlcyAoMS4wIC0gNDY0LjEpIDxBRDUxOUE5NC0xMjRGLTNDQTgtQUFGRS04RDZCMEZC
NDY2NkI+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9y
bXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9m
aWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJv
b3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQm9hcmRTZXJ2aWNlcy5mcmFtZXdv
cmsvQm9hcmRTZXJ2aWNlcwogICAgMHg3ZmZmMmZmNDgwMDAgLSAgICAgMHg3ZmZmMmZmNzlmZmYg
IGNvbS5hcHBsZS5ib20gKDE0LjAgLSAyMTkuMikgPDA4RDgyOUNDLUNEODAtMzc5Qy1BNzc1LTNG
QTU2RDE3MjlDOT4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1Bs
YXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9y
L1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50
aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Cb20uZnJhbWV3b3JrL0Jv
bQogICAgMHg3ZmZmMzAxNmUwMDAgLSAgICAgMHg3ZmZmMzAxYTRmZjkgIGNvbS5hcHBsZS5DMiAo
MS4zIC0gNDg3KSA8Mjc2RDI0MTAtQkQ4RC0zMUE5LTk4ODMtQThEMTY5NkMwOURBPiAvQXBwbGlj
YXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBs
YXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMv
aU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJy
YXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0MyLmZyYW1ld29yay9DMgogICAgMHg3ZmZmMzAyOGUwMDAg
LSAgICAgMHg3ZmZmMzAyOWRmZmYgIGNvbS5hcHBsZS5jb3JldGVsZXBob255LkNUQ2FycmllclNw
YWNlICgxLjAgLSAxKSA8N0U2RjQ1RUYtRTlEOS0zRURDLTlFMkEtNjJCRDI4QTZGQkY3PiAvQXBw
bGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9T
LnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGlt
ZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9M
aWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0NUQ2FycmllclNwYWNlLmZyYW1ld29yay9DVENhcnJp
ZXJTcGFjZQogICAgMHg3ZmZmMzA0ODEwMDAgLSAgICAgMHg3ZmZmMzA0ZGRmZmIgIGNvbS5hcHBs
ZS5DYWxlbmRhckRhZW1vbiAoMS4wIC0gNzUxLjIuNCkgPDMwMDc1MEQzLTZGQjItM0MwOC04Q0Q5
LUUzMDE3OEU1NUY5RT4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVy
L1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxh
dG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9S
dW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9DYWxlbmRhckRhZW1v
bi5mcmFtZXdvcmsvQ2FsZW5kYXJEYWVtb24KICAgIDB4N2ZmZjMwNGQ2MDAwIC0gICAgIDB4N2Zm
ZjMwNTZmZmZhICBjb20uYXBwbGUuQ2FsZW5kYXJEYXRhYmFzZSAoMS4wIC0gODExLjMuNCkgPEQ2
MzM0NjE4LTJFOTktM0M4My1BMzE2LURGRjhEMDhEMjcxQT4gL0FwcGxpY2F0aW9ucy9YY29kZS5h
cHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5
L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1l
L0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJh
bWV3b3Jrcy9DYWxlbmRhckRhdGFiYXNlLmZyYW1ld29yay9DYWxlbmRhckRhdGFiYXNlCiAgICAw
eDdmZmYzMDU2YjAwMCAtICAgICAweDdmZmYzMDVkNmZmMiAgY29tLmFwcGxlLkNhbGVuZGFyRm91
bmRhdGlvbiAoOC4wIC0gMTE0MS4yLjMpIDw1Q0REM0ZGQS0zMjA3LTMwNUYtQjM0NS0xNDVDMTY5
N0M1MDc+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9y
bXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9m
aWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJv
b3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQ2FsZW5kYXJGb3VuZGF0aW9uLmZy
YW1ld29yay9DYWxlbmRhckZvdW5kYXRpb24KICAgIDB4N2ZmZjMwYTIwMDAwIC0gICAgIDB4N2Zm
ZjMwYTRjZmZlICBjb20uYXBwbGUuQ2VsZXN0aWFsICgxLjAgLSAyNTIwLjkuMS40KSA8QzAyMEE2
MEItRjVFNS0zMzU2LUIyMTgtQTdGMjc0MDk0NUFDPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9D
b250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2
ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29u
dGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdv
cmtzL0NlbGVzdGlhbC5mcmFtZXdvcmsvQ2VsZXN0aWFsCiAgICAweDdmZmYzMGE0NjAwMCAtICAg
ICAweDdmZmYzMGE2NWZmZSAgY29tLmFwcGxlLkNlbGx1bGFyUGxhbk1hbmFnZXIgKDEuMCAtIDcy
OTYuMSkgPDM3Qzg1RUM1LTYxMTAtMzA1OC05RUZDLTA0NzIxREQyQTMwRD4gL0FwcGxpY2F0aW9u
cy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9y
bS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5z
aW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Q
cml2YXRlRnJhbWV3b3Jrcy9DZWxsdWxhclBsYW5NYW5hZ2VyLmZyYW1ld29yay9DZWxsdWxhclBs
YW5NYW5hZ2VyCiAgICAweDdmZmYzMGU1YjAwMCAtICAgICAweDdmZmYzMGVhM2ZmZiAgY29tLmFw
cGxlLkNodW5raW5nTGlicmFyeSAoMzAyIC0gMzAyKSA8NjQzQkYwMzYtNUYzOS0zRDQyLUE1N0Et
RUQzRkU1MDVFQjc5PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIv
UGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0
b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1
bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0NodW5raW5nTGlicmFy
eS5mcmFtZXdvcmsvQ2h1bmtpbmdMaWJyYXJ5CiAgICAweDdmZmYzMGZjODAwMCAtICAgICAweDdm
ZmYzMTA0ZWZmMiAgY29tLmFwcGxlLkNsb3VkRG9jcyAoMS4wIC0gNjg5KSA8ODlBNDYwQTUtNDdE
Ni0zNjM3LTg0RUMtRThBMzQzRTYxRkI3PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50
cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVy
L0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMv
UmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0Ns
b3VkRG9jcy5mcmFtZXdvcmsvQ2xvdWREb2NzCiAgICAweDdmZmYzMWM1MzAwMCAtICAgICAweDdm
ZmYzMWUwZGZmZiAgY29tLmFwcGxlLkNvbG9yU3luYyAoNC4xMy4wIC0gMzM5NC4zKSA8MDlBNDM3
NzktQTVCRC0zODg0LUE1MUQtNUU3REI2QUNDQUE0PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9D
b250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2
ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29u
dGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdv
cmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvQ29sb3JTeW5jCiAgICAweDdmZmYzMWUwZjAwMCAtICAg
ICAweDdmZmYzMWUxNmZmZiAgY29tLmFwcGxlLkNvbW1vbkF1dGggKDQuMCAtIDIuMCkgPDc3REVC
NDUwLTVERkQtMzRBRi1CNjk3LTY0QzBGOUFDMzhGNz4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAv
Q29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0Rl
dmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0Nv
bnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3
b3Jrcy9Db21tb25BdXRoLmZyYW1ld29yay9Db21tb25BdXRoCiAgICAweDdmZmYzMWUxNzAwMCAt
ICAgICAweDdmZmYzMWUyZWZmZCAgY29tLmFwcGxlLmNvbW1vbnV0aWxpdGllcyAoOC4wIC0gOTAw
KSA8MjMyODI4N0ItMEUxRi0zQ0ZGLUE3MjAtM0I4QzEzNTVCNEU4PiAvQXBwbGljYXRpb25zL1hj
b2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xp
YnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1
bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZh
dGVGcmFtZXdvcmtzL0NvbW1vblV0aWxpdGllcy5mcmFtZXdvcmsvQ29tbW9uVXRpbGl0aWVzCiAg
ICAweDdmZmYzMjBhMDAwMCAtICAgICAweDdmZmYzMjBhMmZmZiAgY29tLmFwcGxlLkNvbnN0YW50
Q2xhc3NlcyAoMS4wIC0gMSkgPEJFMzI0NjBDLTgwMDEtMzMzRS05OTA1LTA2NTRBODEyRDgxQz4g
L0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhv
bmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1
bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0
ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Db25zdGFudENsYXNzZXMuZnJhbWV3b3JrL0Nv
bnN0YW50Q2xhc3NlcwogICAgMHg3ZmZmMzIxM2YwMDAgLSAgICAgMHg3ZmZmMzIxYzBmZjAgIGNv
bS5hcHBsZS5BZGRyZXNzQm9vay5Db250YWN0c0ZvdW5kYXRpb24gKDguMCAtID8/PykgPEFBREU5
MzQ4LTJCMTYtM0I1My1CMDI5LTAwMkU5QzU1OTI5RD4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAv
Q29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0Rl
dmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0Nv
bnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3
b3Jrcy9Db250YWN0c0ZvdW5kYXRpb24uZnJhbWV3b3JrL0NvbnRhY3RzRm91bmRhdGlvbgogICAg
MHg3ZmZmMzI1YjcwMDAgLSAgICAgMHg3ZmZmMzI1ZDRmZmUgIGNvbS5hcHBsZS5hbmFseXRpY3Nk
ICgxLjAgLSAxKSA8M0RBNENDNDUtRUM5NC0zRUEyLThBNzAtNUZBMTlDMUM3OUYyPiAvQXBwbGlj
YXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBs
YXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMv
aU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJy
YXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0NvcmVBbmFseXRpY3MuZnJhbWV3b3JrL0NvcmVBbmFseXRp
Y3MKICAgIDB4N2ZmZjMyNzU2MDAwIC0gICAgIDB4N2ZmZjMyN2U3ZmY2ICBjb20uYXBwbGUuY29y
ZWRhdiAoMS4wLjEgLSA4NzEuMy4xKSA8MkQzQTFBRDktN0Q0Qy0zRjVCLTgzNUMtNzM0MTlCNDFB
RkRFPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1z
L2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmls
ZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290
L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0NvcmVEQVYuZnJhbWV3b3JrL0NvcmVE
QVYKICAgIDB4N2ZmZjMyYTI4MDAwIC0gICAgIDB4N2ZmZjMyYTM4ZmZmICBjb20uYXBwbGUuQ29y
ZUVtb2ppICgxLjAgLSAxMDcpIDw4RTdFNTU2OS0yMTZDLTM1NkMtQjBBRS04MDA5MUFERkM5RDk+
IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBo
b25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9S
dW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lz
dGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQ29yZUVtb2ppLmZyYW1ld29yay9Db3JlRW1v
amkKICAgIDB4N2ZmZjMyZTg5MDAwIC0gICAgIDB4N2ZmZjMyZWQ1ZmY5ICtDb3JlTG9jYXRpb25Q
cm90b2J1ZiAoNjcpIDw4RjdFMTM0NS1BN0E0LTM4NzAtODYxMy00RDc5NTQ3NEY1Q0I+IC9BcHBs
aWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1Mu
cGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1l
cy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xp
YnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQ29yZUxvY2F0aW9uUHJvdG9idWYuZnJhbWV3b3JrL0Nv
cmVMb2NhdGlvblByb3RvYnVmCiAgICAweDdmZmYzMmVkMTAwMCAtICAgICAweDdmZmYzMmVlZmZm
NyAgY29tLmFwcGxlLkNvcmVNYXRlcmlhbCAoMS4wIC0gMSkgPEQ3OERENjhGLTgxOTEtMzdGMi1C
MkQ5LTFCODFDRkE1MThBRj4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxv
cGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2lt
dWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNl
cy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Db3JlTWF0ZXJp
YWwuZnJhbWV3b3JrL0NvcmVNYXRlcmlhbAogICAgMHg3ZmZmMzJmZjQwMDAgLSAgICAgMHg3ZmZm
MzMwNWJmZmMgIGNvbS5hcHBsZS5Db3JlTkxQICgxLjAgLSAyMTMpIDxFNzZGRDVCMy01NkY3LTMz
QjQtQjkyQi0wMjk5RDI1NDlBQTY+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0Rl
dmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29y
ZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNv
dXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQ29yZU5M
UC5mcmFtZXdvcmsvQ29yZU5MUAogICAgMHg3ZmZmMzMzNTcwMDAgLSAgICAgMHg3ZmZmMzMzNWJm
ZmYgIGNvbS5hcHBsZS5Db3JlT3B0aW1pemF0aW9uICgxLjAgLSAxKSA8QkVBRjZFQkUtMEVCRS0z
RTNELUI3MzItQUZBM0FFNzBGMzM2PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9E
ZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0Nv
cmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVz
b3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0NvcmVP
cHRpbWl6YXRpb24uZnJhbWV3b3JrL0NvcmVPcHRpbWl6YXRpb24KICAgIDB4N2ZmZjMzMzVjMDAw
IC0gICAgIDB4N2ZmZjMzNDJiZmY5ICBjb20uYXBwbGUuQ29yZVBERiAoNS4wIC0gNTE4LjYpIDw1
RjMzREEzQy02OTg0LTM1NzEtQkQ4Ni1BMzQzQkZCRjFBM0E+IC9BcHBsaWNhdGlvbnMvWGNvZGUu
YXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFy
eS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGlt
ZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZy
YW1ld29ya3MvQ29yZVBERi5mcmFtZXdvcmsvQ29yZVBERgogICAgMHg3ZmZmMzM0ZjIwMDAgLSAg
ICAgMHg3ZmZmMzM0ZjlmZjAgIGNvbS5hcHBsZS5Db3JlUGhvbmVOdW1iZXJzICgxLjAgLSAxKSA8
N0YwRTEwNEQtMDBDMy0zQjQ3LTgxQjMtNkNGODZGRjUxRkQ4PiAvQXBwbGljYXRpb25zL1hjb2Rl
LmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJh
cnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRp
bWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVG
cmFtZXdvcmtzL0NvcmVQaG9uZU51bWJlcnMuZnJhbWV3b3JrL0NvcmVQaG9uZU51bWJlcnMKICAg
IDB4N2ZmZjMzNGZhMDAwIC0gICAgIDB4N2ZmZjMzNTQ5ZmZhICBjb20uYXBwbGUuQ29yZVByZWRp
Y3Rpb24gKDEuMCAtIDEpIDxFMDU0OUJGNi0xOTEwLTMzRUEtOTQyMC1ENzM1OTRFOEREREY+IC9B
cHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25l
T1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50
aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVt
L0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQ29yZVByZWRpY3Rpb24uZnJhbWV3b3JrL0NvcmVQ
cmVkaWN0aW9uCiAgICAweDdmZmYzM2JhZTAwMCAtICAgICAweDdmZmYzM2JjZmZmNyAgY29tLmFw
cGxlLkNvcmVTVkcgKDEuMCAtIDEyOSkgPEM0RkY1MjZGLUM4RjUtMzFENi1BODU2LTAzQjI5RTM5
REZDMj4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jt
cy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2Zp
bGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9v
dC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Db3JlU1ZHLmZyYW1ld29yay9Db3Jl
U1ZHCiAgICAweDdmZmYzM2JkMDAwMCAtICAgICAweDdmZmYzM2JmYWZmMyAgY29tLmFwcGxlLkNv
cmVTZXJ2aWNlc0ludGVybmFsICg0NDYuNSAtIDQ0Ni41KSA8MURGOTMzMDctQkNEMC0zQzVBLThD
OTgtN0RBNTc5MEE3ODBDPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9w
ZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11
bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2Vz
L1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0NvcmVTZXJ2aWNl
c0ludGVybmFsLmZyYW1ld29yay9Db3JlU2VydmljZXNJbnRlcm5hbAogICAgMHg3ZmZmMzNiZmIw
MDAgLSAgICAgMHg3ZmZmMzNjMjZmZjkgIGNvbS5hcHBsZS5DU1N0b3JlICgxMDY5LjE0IC0gMTA2
OS4xNCkgPDNGQkJERURELTUzQ0MtM0NBQS04RDg4LUZFQkJBQjRGODc1NT4gL0FwcGxpY2F0aW9u
cy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9y
bS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5z
aW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Q
cml2YXRlRnJhbWV3b3Jrcy9Db3JlU2VydmljZXNTdG9yZS5mcmFtZXdvcmsvQ29yZVNlcnZpY2Vz
U3RvcmUKICAgIDB4N2ZmZjMzZDNhMDAwIC0gICAgIDB4N2ZmZjMzZGRlZmZhICBjb20uYXBwbGUu
Q29yZVN1Z2dlc3Rpb25zICgxLjAgLSAxMDUyLjIxLjEpIDw0MkM3NTJBNi1CQTUxLTNDMEMtQjVD
QS03MDBBNjIzNUM3NzU+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Bl
ci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVs
YXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMv
UnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQ29yZVN1Z2dlc3Rp
b25zLmZyYW1ld29yay9Db3JlU3VnZ2VzdGlvbnMKICAgIDB4N2ZmZjM0MDk4MDAwIC0gICAgIDB4
N2ZmZjM0MTExZmZmICBjb20uYXBwbGUuQ29yZVN5bWJvbGljYXRpb24gKDExLjAgLSA2NDUwOS45
OC4xKSA8MjExQUJGRDktRTQ0MC0zNzY5LTg4M0QtNzI5M0I5RTQ0MEIxPiAvQXBwbGljYXRpb25z
L1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3Jt
L0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNp
bXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1By
aXZhdGVGcmFtZXdvcmtzL0NvcmVTeW1ib2xpY2F0aW9uLmZyYW1ld29yay9Db3JlU3ltYm9saWNh
dGlvbgogICAgMHg3ZmZmMzQxOGUwMDAgLSAgICAgMHg3ZmZmMzQxOTNmZmQgIGNvbS5hcHBsZS5D
b3JlVGltZSAoMjY2KSA8MzVBOTZEN0QtQ0Y5QS0zNzRBLUI3MDctMDBBQTREM0M4NTQxPiAvQXBw
bGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9T
LnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGlt
ZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9M
aWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0NvcmVUaW1lLmZyYW1ld29yay9Db3JlVGltZQogICAg
MHg3ZmZmMzQxOTQwMDAgLSAgICAgMHg3ZmZmMzQyNjVmZjQgIGNvbS5hcHBsZS5Db3JlVUkgKDEu
MCAtIDYwOC4zKSA8NTYxNTU2RTktMkE5MC0zOTcwLUI3ODMtMzIwNjE3OEIyREJDPiAvQXBwbGlj
YXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBs
YXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMv
aU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJy
YXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0NvcmVVSS5mcmFtZXdvcmsvQ29yZVVJCiAgICAweDdmZmYz
NDI1MjAwMCAtICAgICAweDdmZmYzNDNiY2ZmYyAgY29tLmFwcGxlLkNvcmVVdGlscyAoNi4xIC0g
NjEwLjE4KSA8NjI4MjJGM0MtMEE1Qy0zMkUzLUI1NTgtRDdFRjVCMUJEQjZDPiAvQXBwbGljYXRp
b25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRm
b3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9T
LnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5
L1ByaXZhdGVGcmFtZXdvcmtzL0NvcmVVdGlscy5mcmFtZXdvcmsvQ29yZVV0aWxzCiAgICAweDdm
ZmYzNDU5ODAwMCAtICAgICAweDdmZmYzNDVjOWZmYyAgY29tLmFwcGxlLmRhdGFhY2Nlc3MuZGF0
YWFjY2Vzc2V4cHJlc3MuZnJhbWV3b3JrICgxLjAgLSAxLjApIDwxQTgwMDkzOC02N0NFLTNBRUQt
QUYyRi00OEY5NzkwOEM0NTY+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVs
b3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNp
bXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJj
ZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvRGF0YUFjY2Vz
c0V4cHJlc3MuZnJhbWV3b3JrL0RhdGFBY2Nlc3NFeHByZXNzCiAgICAweDdmZmYzNDVkMDAwMCAt
ICAgICAweDdmZmYzNDYwNmZmZiAgY29tLmFwcGxlLmRhdGFkZXRlY3RvcnNjb3JlICg4LjAgLSA2
NTkpIDw5RkZBRDc4Qi0zQjQ3LTNCMEUtQUEzQS1DREQzMkE5QTZBNDE+IC9BcHBsaWNhdGlvbnMv
WGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0v
TGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2lt
cnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJp
dmF0ZUZyYW1ld29ya3MvRGF0YURldGVjdG9yc0NvcmUuZnJhbWV3b3JrL0RhdGFEZXRlY3RvcnND
b3JlCiAgICAweDdmZmYzNDYwNjAwMCAtICAgICAweDdmZmYzNDY0YWZmMyAgY29tLmFwcGxlLkRh
dGFEZXRlY3RvcnNOYXR1cmFsTGFuZ3VhZ2UgKDEuMCAtIDE1NCkgPDQ5MTE3MTgwLTE0OUYtMzVD
My1BQjVGLTlGNjJEOEM1MkNDNT4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2
ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3Jl
U2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291
cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9EYXRhRGV0
ZWN0b3JzTmF0dXJhbExhbmd1YWdlLmZyYW1ld29yay9EYXRhRGV0ZWN0b3JzTmF0dXJhbExhbmd1
YWdlCiAgICAweDdmZmYzNDY5NjAwMCAtICAgICAweDdmZmYzNDZhM2ZmYyAgY29tLmFwcGxlLmRh
dGFtaWdyYXRpb24gKDEuMCAtIDEuMCkgPDk3Nzc3ODRCLUVGNzYtM0NGQS04MDQ2LTU0NjYzRDAw
OEY0Mz4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jt
cy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2Zp
bGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9v
dC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9EYXRhTWlncmF0aW9uLmZyYW1ld29y
ay9EYXRhTWlncmF0aW9uCiAgICAweDdmZmYzNDk0NjAwMCAtICAgICAweDdmZmYzNDk3Y2ZmYyAg
Y29tLmFwcGxlLkRvY3VtZW50TWFuYWdlciAoMS4wIC0gMTcxLjMuMykgPDE4Mjg0QzhGLUFFQTkt
M0U3Ri04QkU1LUY4QkY1MEE1MjU4NT4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMv
RGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9D
b3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jl
c291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Eb2N1
bWVudE1hbmFnZXIuZnJhbWV3b3JrL0RvY3VtZW50TWFuYWdlcgogICAgMHg3ZmZmMzQ5NzUwMDAg
LSAgICAgMHg3ZmZmMzQ5OTRmZjggIGNvbS5hcHBsZS5Eb2N1bWVudE1hbmFnZXJDb3JlICgxLjAg
LSAxNzEuMy4zKSA8NTUwM0YyQUYtOTQ2OS0zMzA0LUE0N0ItRDM5MDg0ODRFQkIzPiAvQXBwbGlj
YXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBs
YXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMv
aU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJy
YXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0RvY3VtZW50TWFuYWdlckNvcmUuZnJhbWV3b3JrL0RvY3Vt
ZW50TWFuYWdlckNvcmUKICAgIDB4N2ZmZjM1M2M2MDAwIC0gICAgIDB4N2ZmZjM1M2RiZmY4ICBj
b20uYXBwbGUuRW5ncmFtICgxLjAgLSAxKSA8NzE3NjE5MjItQzIyMC0zRTI1LThFNjktQ0Y5RENC
RjgwOUEzPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZv
cm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJv
ZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVS
b290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0VuZ3JhbS5mcmFtZXdvcmsvRW5n
cmFtCiAgICAweDdmZmYzNTNlMzAwMCAtICAgICAweDdmZmYzNTk3MGZmMiAgY29tLmFwcGxlLnZp
c2lvbi5Fc3ByZXNzb0ZyYW1ld29yayAoMS4wIC0gMTg4LjIpIDw5RkRCOURFQi00QTU3LTMwODMt
ODM2RC1BNEZGODQ4NzFCQkU+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVs
b3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNp
bXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJj
ZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvRXNwcmVzc28u
ZnJhbWV3b3JrL0VzcHJlc3NvCiAgICAweDdmZmYzNWQ2OTAwMCAtICAgICAweDdmZmYzNjE4MGZm
YyAgY29tLmFwcGxlLnZpc2lvbi5GYWNlQ29yZSAoMy4xLjEyIC0gMy4xLjEyKSA8QkE1Q0ZBNEMt
NTZGNy0zM0Y4LUE5MzQtRTY4MUE3Q0FGN0NBPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250
ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxv
cGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVu
dHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtz
L0ZhY2VDb3JlLmZyYW1ld29yay9GYWNlQ29yZQogICAgMHg3ZmZmMzYzNDUwMDAgLSAgICAgMHg3
ZmZmMzYzNGZmZmEgIGNvbS5hcHBsZS5Gb250U2VydmljZXMgKDEuMCAtIDEpIDw4NDJCQjZGQS05
QkZGLTMzQUEtQkZCNC1DQTg2OEMzQTUwRjE+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRl
bnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9w
ZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50
cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3Mv
Rm9udFNlcnZpY2VzLmZyYW1ld29yay9Gb250U2VydmljZXMKICAgIDB4N2ZmZjM2MzRmMDAwIC0g
ICAgIDB4N2ZmZjM2NDllZmZjICtsaWJGb250UGFyc2VyLmR5bGliICgyNzcuMi4xLjIpIDwxOERG
NEY0OS1COUY5LTNFRTYtOEZEQS0zMjg3MjhDMDY5QkY+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBw
L0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9E
ZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9D
b250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1l
d29ya3MvRm9udFNlcnZpY2VzLmZyYW1ld29yay9saWJGb250UGFyc2VyLmR5bGliCiAgICAweDdm
ZmYzNjQ5ZjAwMCAtICAgICAweDdmZmYzNjRhZGZmZiArbGliR1NGb250LmR5bGliICg2MS4xLjIu
MikgPDEzOTkxNjNFLTAyQTctMzExNS1CQjg5LUU0NDlCOTFBOTJDQT4gL0FwcGxpY2F0aW9ucy9Y
Y29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9M
aWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1y
dW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2
YXRlRnJhbWV3b3Jrcy9Gb250U2VydmljZXMuZnJhbWV3b3JrL2xpYkdTRm9udC5keWxpYgogICAg
MHg3ZmZmMzY0YWUwMDAgLSAgICAgMHg3ZmZmMzY0YzFmZmUgK2xpYkdTRm9udENhY2hlLmR5bGli
ICgxNjkuMC4yLjEpIDwzODdGOTAwOS0zMTZDLTM1RTUtOTQ1Ny00MUEwQzJDMzg0RTM+IC9BcHBs
aWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1Mu
cGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1l
cy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xp
YnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvRm9udFNlcnZpY2VzLmZyYW1ld29yay9saWJHU0ZvbnRD
YWNoZS5keWxpYgogICAgMHg3ZmZmMzY1MjYwMDAgLSAgICAgMHg3ZmZmMzY1MzVmZmUgK2xpYmh2
Zi5keWxpYiAoMjc3LjIuMS4yKSA8Mjg5MTQ0RDAtQkY1My0zNjNGLUJCQUQtNkYyODI5NzMwNDhG
PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQ
aG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMv
UnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5
c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0ZvbnRTZXJ2aWNlcy5mcmFtZXdvcmsvbGli
aHZmLmR5bGliCiAgICAweDdmZmYzNjVjYTAwMCAtICAgICAweDdmZmYzNjY0Y2ZmNSAgY29tLmFw
cGxlLkZyb250Qm9hcmRTZXJ2aWNlcyAoNjI2LjQuMSAtIDYyNi40LjEpIDxCMkIwOTFGMC00QjFB
LTNEREYtODBDRS00Mjg5NEJBQUUzQjk+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRz
L0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIv
Q29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9S
ZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvRnJv
bnRCb2FyZFNlcnZpY2VzLmZyYW1ld29yay9Gcm9udEJvYXJkU2VydmljZXMKICAgIDB4N2ZmZjM3
NTVmMDAwIC0gICAgIDB4N2ZmZjM3NTdmZmY2ICBjb20uYXBwbGUuR2VuZXJhdGlvbmFsU3RvcmFn
ZSAoMi4wIC0gMzEzKSA8NjUxRjJDN0YtOTIxNS0zMjI4LTlBMkEtNzc3NDBBRjZGNTZGPiAvQXBw
bGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9T
LnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGlt
ZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9M
aWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0dlbmVyYXRpb25hbFN0b3JhZ2UuZnJhbWV3b3JrL0dl
bmVyYXRpb25hbFN0b3JhZ2UKICAgIDB4N2ZmZjM3NTdlMDAwIC0gICAgIDB4N2ZmZjM4NWFiZmZm
ICBjb20uYXBwbGUuR2VvU2VydmljZXMgKDEuMCAtIDE2MjQuMzIuMTAuOC44KSA8RjM4NDZBMjUt
MjI0OC0zQUFBLThFRDctRTQ1QkZFQzNFNDFGPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250
ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxv
cGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVu
dHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtz
L0dlb1NlcnZpY2VzLmZyYW1ld29yay9HZW9TZXJ2aWNlcwogICAgMHg3ZmZmMzg0YWUwMDAgLSAg
ICAgMHg3ZmZmMzg0YmNmZmUgIGNvbS5hcHBsZS5HcmFwaFZpc3VhbGl6ZXIgKDEuMCAtIDIxMC4x
KSA8OTZBMjA4RkMtQTZCRi0zMTQwLTg3ODQtOTkwQjAxRUMzQjY5PiAvQXBwbGljYXRpb25zL1hj
b2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xp
YnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1
bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZh
dGVGcmFtZXdvcmtzL0dyYXBoVmlzdWFsaXplci5mcmFtZXdvcmsvR3JhcGhWaXN1YWxpemVyCiAg
ICAweDdmZmYzODRiZDAwMCAtICAgICAweDdmZmYzODRjNWZmZSAgY29tLmFwcGxlLkdyYXBoaWNz
U2VydmljZXMgKDEuMCAtIDEuMCkgPDYyMDRGQjVDLTRGRTgtM0M3Ri05QTVCLTVBM0YxN0MwNkI2
OT4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9p
UGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVz
L1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9T
eXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9HcmFwaGljc1NlcnZpY2VzLmZyYW1ld29y
ay9HcmFwaGljc1NlcnZpY2VzCiAgICAweDdmZmYzOTVhYTAwMCAtICAgICAweDdmZmYzOTYxOGZm
OSAgY29tLmFwcGxlLkhlaW1kYWwgKDQuMCAtIDIuMCkgPDhCNDY5M0JDLUVGNTYtM0QxMy1BRDM3
LTExNDRFNUQ3MjEwQz4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVy
L1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxh
dG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9S
dW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9IZWltZGFsLmZyYW1l
d29yay9IZWltZGFsCiAgICAweDdmZmYzYTc4NDAwMCAtICAgICAweDdmZmYzYTg3ZGZmNiAgY29t
LmFwcGxlLmlkcyAoMTAuMCAtIDEwMDApIDxBNzMxNzkxMS1DQjk5LTNERUQtOTMwMy03RjA2M0FB
MTlDQUM+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9y
bXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9m
aWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJv
b3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvSURTLmZyYW1ld29yay9JRFMKICAg
IDB4N2ZmZjNhODZiMDAwIC0gICAgIDB4N2ZmZjNhOWE0ZmZhICBjb20uYXBwbGUuaWRzZm91bmRh
dGlvbiAoMTAuMCAtIDEwMDApIDw5RDZFOTg4Ri0yMkVCLTM0QTAtOUY2Qy1GRDdFOEVFMzU5M0M+
IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBo
b25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9S
dW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lz
dGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvSURTRm91bmRhdGlvbi5mcmFtZXdvcmsvSURT
Rm91bmRhdGlvbgogICAgMHg3ZmZmM2FkNmUwMDAgLSAgICAgMHg3ZmZmM2FkYzNmZmYgIGNvbS5h
cHBsZS5pbWZvdW5kYXRpb24gKDEwLjAgLSAxMDAwKSA8Rjk1NDE2ODUtRkFGMC0zNDg0LUJFQ0It
RDFDODVENjJEMjkzPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIv
UGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0
b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1
bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0lNRm91bmRhdGlvbi5m
cmFtZXdvcmsvSU1Gb3VuZGF0aW9uCiAgICAweDdmZmYzYWY3ZjAwMCAtICAgICAweDdmZmYzYWZh
OGZmMiAgY29tLmFwcGxlLkljb25TZXJ2aWNlcyAoNDM3IC0gNDM3KSA8MTY1NEI2RjQtRDZCNS0z
Q0EzLTgwMTEtRDg5QkM1QkM1MDI2PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9E
ZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0Nv
cmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVz
b3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0ljb25T
ZXJ2aWNlcy5mcmFtZXdvcmsvSWNvblNlcnZpY2VzCiAgICAweDdmZmYzYWZhNTAwMCAtICAgICAw
eDdmZmYzYWZhY2ZmYSAgY29tLmFwcGxlLmlzdC5JZGxlVGltZXJTZXJ2aWNlcyAoMS4wIC0gMSkg
PEJFNjEzNDZFLTQzNEMtMzUxMC1BODRCLTI4RTJFQ0U4REYyQj4gL0FwcGxpY2F0aW9ucy9YY29k
ZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJy
YXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50
aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRl
RnJhbWV3b3Jrcy9JZGxlVGltZXJTZXJ2aWNlcy5mcmFtZXdvcmsvSWRsZVRpbWVyU2VydmljZXMK
ICAgIDB4N2ZmZjNiMGM3MDAwIC0gICAgIDB4N2ZmZjNiMGQzZmZkICBjb20uYXBwbGUuSW50ZW50
c0ZvdW5kYXRpb24gKDEuMCAtIDEpIDw3NDU1MTgyNS1DNjlFLTNDQjgtODM2QS1GMjI3REUzOUU5
NjU+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMv
aVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxl
cy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3Qv
U3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvSW50ZW50c0ZvdW5kYXRpb24uZnJhbWV3
b3JrL0ludGVudHNGb3VuZGF0aW9uCiAgICAweDdmZmYzYjBmNzAwMCAtICAgICAweDdmZmYzYjBm
ZGZmYSAgY29tLmFwcGxlLkludGVybmF0aW9uYWxTdXBwb3J0ICgxLjAgLSA0NSkgPEI3RTE5NUM2
LTFGMUQtMzhGMi1BMERFLUExM0FCQ0RDN0E4ND4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29u
dGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVs
b3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRl
bnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jr
cy9JbnRlcm5hdGlvbmFsU3VwcG9ydC5mcmFtZXdvcmsvSW50ZXJuYXRpb25hbFN1cHBvcnQKICAg
IDB4N2ZmZjNiMGZlMDAwIC0gICAgIDB4N2ZmZjNiMTAwZmZiICBjb20uYXBwbGUuSW50ZXJuYXRp
b25hbFRleHRTZWFyY2ggKDEuMCAtIDEpIDw3NzEwQ0U5RC1CQjhELTMwQzgtODlEMS0xOURDQjg4
QzczQTQ+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9y
bXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9m
aWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJv
b3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvSW50ZXJuYXRpb25hbFRleHRTZWFy
Y2guZnJhbWV3b3JrL0ludGVybmF0aW9uYWxUZXh0U2VhcmNoCiAgICAweDdmZmYzYjEwMTAwMCAt
ICAgICAweDdmZmYzYjExY2ZmMiAgY29tLmFwcGxlLkludGxQcmVmZXJlbmNlcyAoMS4wIC0gMzAx
LjUpIDw2NDcyNzlDNS1DNjg4LTNDOUUtODg4Ni1DNUE4NUJBMEFGQTQ+IC9BcHBsaWNhdGlvbnMv
WGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0v
TGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2lt
cnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJp
dmF0ZUZyYW1ld29ya3MvSW50bFByZWZlcmVuY2VzLmZyYW1ld29yay9JbnRsUHJlZmVyZW5jZXMK
ICAgIDB4N2ZmZjNiM2Q4MDAwIC0gICAgIDB4N2ZmZjNiNGE0ZmZiICBjb20uYXBwbGUuTGFuZ3Vh
Z2VNb2RlbGluZyAoMS4wIC0gMjE1LjEpIDw1OTNCODE4OS1DNDA4LTMwQ0YtOUYzMi1COUE5MzY0
QTYwNzA+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9y
bXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9m
aWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJv
b3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvTGFuZ3VhZ2VNb2RlbGluZy5mcmFt
ZXdvcmsvTGFuZ3VhZ2VNb2RlbGluZwogICAgMHg3ZmZmM2I0ZDYwMDAgLSAgICAgMHg3ZmZmM2I1
MWVmZjcgIGNvbS5hcHBsZS5MZXhpY29uLWZyYW1ld29yayAoMS4wIC0gNzIpIDwxOTlGMTBBMy01
OTc2LTM0RjktQUZBQy1GRjZCNjdFNUY0ODM+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRl
bnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9w
ZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50
cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3Mv
TGV4aWNvbi5mcmFtZXdvcmsvTGV4aWNvbgogICAgMHg3ZmZmM2I1MjIwMDAgLSAgICAgMHg3ZmZm
M2I1MjRmZjMgIGNvbS5hcHBsZS5MaW5ndWlzdGljRGF0YSAoMS4wIC0gMzUzLjYpIDxFRjA2RkNC
RS02RkJELTM4RDctQkZDRi02OURCQTRENjU1RkM+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0Nv
bnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZl
bG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250
ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29y
a3MvTGluZ3Vpc3RpY0RhdGEuZnJhbWV3b3JrL0xpbmd1aXN0aWNEYXRhCiAgICAweDdmZmYzYjU0
MzAwMCAtICAgICAweDdmZmYzYjU2NWZmMiAgY29tLmFwcGxlLmxvY2F0aW9uc3VwcG9ydCAoMjM4
OS4wLjggLSAyMzg5LjAuOCkgPDczRTdBNkZDLTEwNDktM0I1NS1BOTI2LTFGMUEzMDJCODYxNj4g
L0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhv
bmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1
bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0
ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Mb2NhdGlvblN1cHBvcnQuZnJhbWV3b3JrL0xv
Y2F0aW9uU3VwcG9ydAogICAgMHg3ZmZmM2I4MTAwMDAgLSAgICAgMHg3ZmZmM2I5MzRmZjUgIGNv
bS5hcHBsZS5tYW5hZ2VkY29uZmlndXJhdGlvbiAoMS4wIC0gMS4wKSA8QjU5QkVGNjctMDBGMS0z
NkFBLTg2MzAtRjQ4NTFFMTU5NzQ5PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9E
ZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0Nv
cmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVz
b3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL01hbmFn
ZWRDb25maWd1cmF0aW9uLmZyYW1ld29yay9NYW5hZ2VkQ29uZmlndXJhdGlvbgogICAgMHg3ZmZm
M2JiNGUwMDAgLSAgICAgMHg3ZmZmM2JiNGVmZjUgIGNvbS5hcHBsZS5tYXJjbyAoMTAuMCAtIDEw
MDApIDw1QzZFNjE3RC01MjFFLTNGNjQtOUVCMi01QTQ3QkZBOUU4OTQ+IC9BcHBsaWNhdGlvbnMv
WGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0v
TGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2lt
cnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJp
dmF0ZUZyYW1ld29ya3MvTWFyY28uZnJhbWV3b3JrL01hcmNvCiAgICAweDdmZmYzYmMxOTAwMCAt
ICAgICAweDdmZmYzYmMxYmZmYiAgY29tLmFwcGxlLk1lZGlhRXhwZXJpZW5jZSAoMS4wIC0gMSkg
PDM2MjNFQzc3LUQxRUEtMzA2Qy04MDUxLUEyRDMwMkJBMzVDOT4gL0FwcGxpY2F0aW9ucy9YY29k
ZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJy
YXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50
aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRl
RnJhbWV3b3Jrcy9NZWRpYUV4cGVyaWVuY2UuZnJhbWV3b3JrL01lZGlhRXhwZXJpZW5jZQogICAg
MHg3ZmZmM2MxNzYwMDAgLSAgICAgMHg3ZmZmM2MzNzVmZmEgIGNvbS5hcHBsZS5NZWRpYVJlbW90
ZSAoMS4wIC0gMSkgPERDNTM3MTlGLUQyOUMtMzZCNS1BM0ZFLTFFMTRGNEMwQzNGQj4gL0FwcGxp
Y2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5w
bGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVz
L2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGli
cmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9NZWRpYVJlbW90ZS5mcmFtZXdvcmsvTWVkaWFSZW1vdGUK
ICAgIDB4N2ZmZjNjMzU2MDAwIC0gICAgIDB4N2ZmZjNjMzkyZmZjICBjb20uYXBwbGUuTWVkaWFT
ZXJ2aWNlcyAoMS4wIC0gMSkgPDA2MzUwMjVCLTg2RjYtM0MwRC04OUIxLUM1MEU3NUZFMUQ3QT4g
L0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhv
bmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1
bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0
ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9NZWRpYVNlcnZpY2VzLmZyYW1ld29yay9NZWRp
YVNlcnZpY2VzCiAgICAweDdmZmYzYzczNDAwMCAtICAgICAweDdmZmYzYzc2YmZmMiAgY29tLmFw
cGxlLnNwb3RsaWdodC5tZXRhZGF0YS51dGlsaXRpZXMgKDEuMCAtIDIwNzUuNCkgPDAzOUY4QUYz
LUY1RjItMzg5Mi1BMDk1LTIzNjhGRjJDOTUzRT4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29u
dGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVs
b3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRl
bnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jr
cy9NZXRhZGF0YVV0aWxpdGllcy5mcmFtZXdvcmsvTWV0YWRhdGFVdGlsaXRpZXMKICAgIDB4N2Zm
ZjNjODYxMDAwIC0gICAgIDB4N2ZmZjNjODc5ZmZiICBjb20uYXBwbGUuTW9iaWxlQXNzZXRzICgx
LjAgLSA2MTkuNjAuMSkgPDFCMzlDMzgyLUMyQUUtM0M0MS1BQzEyLTYxMTI2RjlGOEZFQj4gL0Fw
cGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVP
Uy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRp
bWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0v
TGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Nb2JpbGVBc3NldC5mcmFtZXdvcmsvTW9iaWxlQXNz
ZXQKICAgIDB4N2ZmZjNjOGExMDAwIC0gICAgIDB4N2ZmZjNjOGFkZmY1ICBjb20uYXBwbGUubW9i
aWxlaWNvbnMuZnJhbWV3b3JrICgxLjAgLSAzNzIuMCkgPEYyOEQ2NDE5LTlCRkQtMzQ5OC04OUI1
LTRGNzIxMkY3MEU5Nj4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVy
L1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxh
dG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9S
dW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Nb2JpbGVJY29ucy5m
cmFtZXdvcmsvTW9iaWxlSWNvbnMKICAgIDB4N2ZmZjNjOGFlMDAwIC0gICAgIDB4N2ZmZjNjOGU4
ZmY3ICBjb20uYXBwbGUuTW9iaWxlSW5zdGFsbGF0aW9uICgyLjAgLSAxLjApIDw4RUEyMDk2MS00
RjJCLTMzQjAtQTg5MS00MzUyMDczRTc1RTA+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRl
bnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9w
ZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50
cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3Mv
TW9iaWxlSW5zdGFsbGF0aW9uLmZyYW1ld29yay9Nb2JpbGVJbnN0YWxsYXRpb24KICAgIDB4N2Zm
ZjNjOTQ2MDAwIC0gICAgIDB4N2ZmZjNjYjkwZmZiICBjb20uYXBwbGUubW9iaWxlc3BvdGxpZ2h0
LmluZGV4ICgxMC43LjAgLSAyMDc1LjQpIDw2ODc5RjFGMS1BNTlBLTM4RjUtQjQ1MC04MjM0RTg5
MTRGOUM+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9y
bXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9m
aWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJv
b3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvTW9iaWxlU3BvdGxpZ2h0SW5kZXgu
ZnJhbWV3b3JrL01vYmlsZVNwb3RsaWdodEluZGV4CiAgICAweDdmZmYzY2JiMzAwMCAtICAgICAw
eDdmZmYzY2JiNmZmNyAgY29tLmFwcGxlLk1vYmlsZVN5c3RlbVNlcnZpY2VzICgxLjAgLSAxKSA8
NTk4NjJEODEtMkQ5QS0zMjRELUI0NDYtRDMyRTlFMjkxMzI5PiAvQXBwbGljYXRpb25zL1hjb2Rl
LmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJh
cnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRp
bWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVG
cmFtZXdvcmtzL01vYmlsZVN5c3RlbVNlcnZpY2VzLmZyYW1ld29yay9Nb2JpbGVTeXN0ZW1TZXJ2
aWNlcwogICAgMHg3ZmZmM2NjNmUwMDAgLSAgICAgMHg3ZmZmM2NkY2ZmZjEgIGNvbS5hcHBsZS5N
b250cmVhbCAoMS4wIC0gMTIxKSA8NEJDQTZBQTYtNUY4Qi0zRjFGLUExQzMtRkI5NEE3MUUyODM0
PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQ
aG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMv
UnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5
c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL01vbnRyZWFsLmZyYW1ld29yay9Nb250cmVh
bAogICAgMHg3ZmZmM2QwNjIwMDAgLSAgICAgMHg3ZmZmM2QxNGNmZjMgIGNvbS5hcHBsZS5OTFAg
KDEuMCAtIDIwMikgPDhGNUVBQzk2LUYzREItMzlGNy1CMkJDLTFGQjAyQTdBQzk4Qz4gL0FwcGxp
Y2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5w
bGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVz
L2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGli
cmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9OTFAuZnJhbWV3b3JrL05MUAogICAgMHg3ZmZmM2QzOTgw
MDAgLSAgICAgMHg3ZmZmM2QzYTZmZmMgIGNvbS5hcHBsZS5OYW5vUHJlZmVyZW5jZXNTeW5jICgx
LjAgLSAxKSA8RDE2MEVGNjAtMDA1OC0zMzM4LTg2NjktOUM0N0E2Q0RFMzdEPiAvQXBwbGljYXRp
b25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRm
b3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9T
LnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5
L1ByaXZhdGVGcmFtZXdvcmtzL05hbm9QcmVmZXJlbmNlc1N5bmMuZnJhbWV3b3JrL05hbm9QcmVm
ZXJlbmNlc1N5bmMKICAgIDB4N2ZmZjNkM2E1MDAwIC0gICAgIDB4N2ZmZjNkNDE2ZmYxICBjb20u
YXBwbGUucHJpdmF0ZS5OYW5vUmVnaXN0cnkgKDEuMCAtIDEpIDwyNjE1QUQwRC00RkJELTNDREIt
QjZBMi0zQTExQjUyMEU1ODg+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVs
b3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNp
bXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJj
ZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvTmFub1JlZ2lz
dHJ5LmZyYW1ld29yay9OYW5vUmVnaXN0cnkKICAgIDB4N2ZmZjNmY2YzMDAwIC0gICAgIDB4N2Zm
ZjNmY2Y1ZmZjICBjb20uYXBwbGUuT0F1dGggKDI1IC0gMjUpIDwxNkYzNUI4QS04OUM3LTNDM0It
OTlCNi02OTJCQUQ4QjFBQkM+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVs
b3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNp
bXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJj
ZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvT0F1dGguZnJh
bWV3b3JrL09BdXRoCiAgICAweDdmZmYzZmQyNDAwMCAtICAgICAweDdmZmYzZmQ2ZmZmYiAgY29t
LmFwcGxlLk9UU1ZHICgxLjAgLSA2NDMuMS4yLjIpIDxBNzcxNTg4Ny0wMjJFLTM3OTItOEFGMi00
OEVGNjc5MjFGOUM+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9Q
bGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRv
ci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVu
dGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvT1RTVkcuZnJhbWV3b3Jr
L09UU1ZHCiAgICAweDdmZmY0MGFjNDAwMCAtICAgICAweDdmZmY0MGFmYWZmOCAgY29tLmFwcGxl
LlBlZ2FzdXMgKDEuMCAtIDE0MSkgPDA4NUU0MzVFLTBFNEQtMzY3OS1CQ0VBLUNDREJDNzE5NTc4
Nz4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9p
UGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVz
L1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9T
eXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9QZWdhc3VzLmZyYW1ld29yay9QZWdhc3Vz
CiAgICAweDdmZmY0MGIzNjAwMCAtICAgICAweDdmZmY0MGI1ZWZmMyAgY29tLmFwcGxlLnBlcnNp
c3RlbnRjb25uZWN0aW9uICgxLjAgLSAxLjApIDwzRTY2MEI5NS1BMjU2LTM4RDktOEI5Ni04NjEy
RkZFNTQ2MEM+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0
Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Q
cm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGlt
ZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvUGVyc2lzdGVudENvbm5lY3Rp
b24uZnJhbWV3b3JrL1BlcnNpc3RlbnRDb25uZWN0aW9uCiAgICAweDdmZmY0MGI1YjAwMCAtICAg
ICAweDdmZmY0MGI2N2ZmOSAgY29tLmFwcGxlLlBlcnNvbmFLaXQgKDEuMCAtIDEpIDw4NTY2NkQ1
My1GRDZELTNGQ0MtQjFGRS1DRThFRjM1NjA2QUY+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0Nv
bnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZl
bG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250
ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29y
a3MvUGVyc29uYUtpdC5mcmFtZXdvcmsvUGVyc29uYUtpdAogICAgMHg3ZmZmNDBjZWUwMDAgLSAg
ICAgMHg3ZmZmNDBjZWVmZjAgIGNvbS5hcHBsZS5QaG9uZU51bWJlcnMgKDEuMCAtIDEpIDw4NUUx
MjA5MS1DNjgyLTNEQkQtODVGOS0yNkY4RkVGOTIzMzM+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBw
L0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9E
ZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9D
b250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1l
d29ya3MvUGhvbmVOdW1iZXJzLmZyYW1ld29yay9QaG9uZU51bWJlcnMKICAgIDB4N2ZmZjQyMTc0
MDAwIC0gICAgIDB4N2ZmZjQyMWM2ZmY4ICBjb20uYXBwbGUuUGh5c2ljc0tpdCAoMS4wIC0gMSkg
PDQzOTRDMTcwLURBMTItMzRCOS04MTM1LTY2M0QzRjY4M0E4Nz4gL0FwcGxpY2F0aW9ucy9YY29k
ZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJy
YXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50
aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRl
RnJhbWV3b3Jrcy9QaHlzaWNzS2l0LmZyYW1ld29yay9QaHlzaWNzS2l0CiAgICAweDdmZmY0MjIy
NzAwMCAtICAgICAweDdmZmY0MjI1M2ZmZSAgY29tLmFwcGxlLnBsdWdpbmtpdC5mcmFtZXdvcmsg
KDEuMCAtIDEpIDw0RDkzREY0NC04NDQ2LTNFQjEtOUI3Ny05QTVCMDk2MDlGNzk+IC9BcHBsaWNh
dGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxh
dGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9p
T1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJh
cnkvUHJpdmF0ZUZyYW1ld29ya3MvUGx1Z0luS2l0LmZyYW1ld29yay9QbHVnSW5LaXQKICAgIDB4
N2ZmZjQyMzk3MDAwIC0gICAgIDB4N2ZmZjQyM2I3ZmYyICBjb20uYXBwbGUucHJvYWN0aXZlLnN1
cHBvcnQuUHJvYWN0aXZlRXZlbnRUcmFja2VyICgxLjAgLSAyNTguNCkgPDZDMkQzRjM2LTg1MTAt
M0NCMS1CMEI2LUNFQjg2MzBEQUQ2Qj4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMv
RGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9D
b3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jl
c291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Qcm9h
Y3RpdmVFdmVudFRyYWNrZXIuZnJhbWV3b3JrL1Byb2FjdGl2ZUV2ZW50VHJhY2tlcgogICAgMHg3
ZmZmNDI0MmMwMDAgLSAgICAgMHg3ZmZmNDI0OTVmZjcgIGNvbS5hcHBsZS5wcm9hY3RpdmUuc3Vw
cG9ydC5Qcm9hY3RpdmVTdXBwb3J0ICgxLjAgLSAyNTguNCkgPDJCMEI5RDI0LUU2MUUtM0MxQy1C
ODNBLTE2RUJFM0ZDNzc3Qj4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxv
cGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2lt
dWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNl
cy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Qcm9hY3RpdmVT
dXBwb3J0LmZyYW1ld29yay9Qcm9hY3RpdmVTdXBwb3J0CiAgICAweDdmZmY0MjQ5YzAwMCAtICAg
ICAweDdmZmY0MjU2ZmZmMiAgY29tLmFwcGxlLlByb29mUmVhZGVyICgyLjQgLSA0OTIuMSkgPDZC
QUU2QjdDLUMwN0UtMzZFMC05OTE5LTIwQzQ4MURDNjhCQj4gL0FwcGxpY2F0aW9ucy9YY29kZS5h
cHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5
L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1l
L0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJh
bWV3b3Jrcy9Qcm9vZlJlYWRlci5mcmFtZXdvcmsvUHJvb2ZSZWFkZXIKICAgIDB4N2ZmZjQyNTY4
MDAwIC0gICAgIDB4N2ZmZjQyNWI1ZmZlICBjb20uYXBwbGUuUHJvdGVjdGVkQ2xvdWRTdG9yYWdl
ICgxLjAgLSAxKSA8QjFCOEZFMEQtN0Q5OC0zMDZDLTkxNTctQUFGMTY4M0Q5RTM0PiAvQXBwbGlj
YXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBs
YXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMv
aU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJy
YXJ5L1ByaXZhdGVGcmFtZXdvcmtzL1Byb3RlY3RlZENsb3VkU3RvcmFnZS5mcmFtZXdvcmsvUHJv
dGVjdGVkQ2xvdWRTdG9yYWdlCiAgICAweDdmZmY0MjViMzAwMCAtICAgICAweDdmZmY0MjVjYmZm
MCAgY29tLmFwcGxlLlByb3RvY29sQnVmZmVyICgxIC0gMjc0LjMwLjcuMTUuMSkgPDBGOTU2MEQ1
LUJFQTctMzlCNC05MjRCLTc2NTNDMzM0RjE4Mz4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29u
dGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVs
b3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRl
bnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jr
cy9Qcm90b2NvbEJ1ZmZlci5mcmFtZXdvcmsvUHJvdG9jb2xCdWZmZXIKICAgIDB4N2ZmZjQyNWM5
MDAwIC0gICAgIDB4N2ZmZjQyNWU0ZmY1ICBjb20uYXBwbGUuUHJvdG90eXBlVG9vbHMgKDEuMCAt
IDEpIDw4NjBCRUM4NC0wMkVDLTM0MDQtODU4Ni1DMzA1NDU1RTNEM0U+IC9BcHBsaWNhdGlvbnMv
WGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0v
TGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2lt
cnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJp
dmF0ZUZyYW1ld29ya3MvUHJvdG90eXBlVG9vbHMuZnJhbWV3b3JrL1Byb3RvdHlwZVRvb2xzCiAg
ICAweDdmZmY0MmFhNDAwMCAtICAgICAweDdmZmY0MmFiNWZmYiAgY29tLmFwcGxlLlJlbW90ZVRl
eHRJbnB1dCAoMS4wIC0gMSkgPDA0RTNGRjMyLUNCNTMtMzQ1RC04QkE4LTI2OUYxQzUzOUZGMz4g
L0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhv
bmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1
bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0
ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9SZW1vdGVUZXh0SW5wdXQuZnJhbWV3b3JrL1Jl
bW90ZVRleHRJbnB1dAogICAgMHg3ZmZmNDJiNjkwMDAgLSAgICAgMHg3ZmZmNDJjNzFmZjEgIGNv
bS5hcHBsZS5SZXNwb25zZUtpdCAoMS4wIC0gMTQ4KSA8RTI3NDQ3ODUtM0VDMC0zMkYxLUE2NDUt
MDFGN0FEMTlDRkIzPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIv
UGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0
b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1
bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL1Jlc3BvbnNlS2l0LmZy
YW1ld29yay9SZXNwb25zZUtpdAogICAgMHg3ZmZmNDJjNmQwMDAgLSAgICAgMHg3ZmZmNDJjNzFm
ZmQgIGNvbS5hcHBsZS5SZXZlYWxDb3JlICgxLjAgLSAxNykgPDkzNUU4QjFGLTAwRUEtMzI5OS1B
NEY0LThDM0UxRkE2NzgxOD4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxv
cGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2lt
dWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNl
cy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9SZXZlYWxDb3Jl
LmZyYW1ld29yay9SZXZlYWxDb3JlCiAgICAweDdmZmY0MmNlZTAwMCAtICAgICAweDdmZmY0MmQy
OWZmYyAgY29tLmFwcGxlLlJ1bm5pbmdCb2FyZFNlcnZpY2VzICgxLjAgLSAyMjMuNjAuNCkgPEE2
NjFCQjgzLTlGQzMtMzAxOC05RTEyLTVFMjU0MzIxN0NENz4gL0FwcGxpY2F0aW9ucy9YY29kZS5h
cHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5
L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1l
L0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJh
bWV3b3Jrcy9SdW5uaW5nQm9hcmRTZXJ2aWNlcy5mcmFtZXdvcmsvUnVubmluZ0JvYXJkU2Vydmlj
ZXMKICAgIDB4N2ZmZjQyZDM4MDAwIC0gICAgIDB4N2ZmZjQyZGRkZmY3ICBjb20uYXBwbGUuU0FP
YmplY3RzICgxLjAgLSAxKSA8NTBCMTgxNDAtMzVENi0zRjU0LUJBQjAtQjgzM0E3QzVDOUVBPiAv
QXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9u
ZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVu
dGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3Rl
bS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL1NBT2JqZWN0cy5mcmFtZXdvcmsvU0FPYmplY3Rz
CiAgICAweDdmZmY0MzI4MjAwMCAtICAgICAweDdmZmY0MzJjYmZmOSAgY29tLmFwcGxlLlNhZmFy
aS5TYWZlQnJvd3NpbmcgKDE0NjA4IC0gMTQ2MDguNC45LjAuNSkgPDU3NjNDOEQ3LUNFNzAtMzM3
OC1COEQ4LTkxQTlEODQ1RDZBNz4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2
ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3Jl
U2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291
cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9TYWZhcmlT
YWZlQnJvd3NpbmcuZnJhbWV3b3JrL1NhZmFyaVNhZmVCcm93c2luZwogICAgMHg3ZmZmNDM3MDYw
MDAgLSAgICAgMHg3ZmZmNDM4NWFmZmEgIGNvbS5hcHBsZS5TZWFyY2hGb3VuZGF0aW9uICgxLjAg
LSAzMTIuMy40KSA8Mjg0QzNEMDYtQjZBNC0zNjUyLUFGQ0UtRDBBMDE5RDI4N0U4PiAvQXBwbGlj
YXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBs
YXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMv
aU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJy
YXJ5L1ByaXZhdGVGcmFtZXdvcmtzL1NlYXJjaEZvdW5kYXRpb24uZnJhbWV3b3JrL1NlYXJjaEZv
dW5kYXRpb24KICAgIDB4N2ZmZjQzOGNiMDAwIC0gICAgIDB4N2ZmZjQzOGU1ZmY1ICBjb20uYXBw
bGUuU2VjdXJpdHlGb3VuZGF0aW9uICgxLjAgLSAxKSA8RkUwNkZBNjYtMTBFMy0zMDYzLUFGNjEt
NzA1QzQ2NDY3QkE0PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIv
UGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0
b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1
bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL1NlY3VyaXR5Rm91bmRh
dGlvbi5mcmFtZXdvcmsvU2VjdXJpdHlGb3VuZGF0aW9uCiAgICAweDdmZmY0M2E2NjAwMCAtICAg
ICAweDdmZmY0M2E5NWZmYyAgY29tLmFwcGxlLlNldHVwQXNzaXN0YW50ICgxLjAgLSAxKSA8OEZC
OTI3QzctMEFFMy0zODRCLThFRjYtQ0NBMzVEQ0Y3MzY4PiAvQXBwbGljYXRpb25zL1hjb2RlLmFw
cC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkv
RGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUv
Q29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFt
ZXdvcmtzL1NldHVwQXNzaXN0YW50LmZyYW1ld29yay9TZXR1cEFzc2lzdGFudAogICAgMHg3ZmZm
NDNhYzAwMDAgLSAgICAgMHg3ZmZmNDNiNmRmZjkgIGNvbS5hcHBsZS5TaGFyZVNoZWV0ICgxNTA2
LjcgLSAxNTA2LjcpIDw5N0E1MDY4RC1FOTUyLTNCRDMtQkM0Ri0yNEIzRURFRkJCNzU+IC9BcHBs
aWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1Mu
cGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1l
cy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xp
YnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvU2hhcmVTaGVldC5mcmFtZXdvcmsvU2hhcmVTaGVldAog
ICAgMHg3ZmZmNDNmMjQwMDAgLSAgICAgMHg3ZmZmNDNmMzBmZjcgIGNvbS5hcHBsZS5Db3JlU2lt
dWxhdG9yLlNpbUZyYW1lYnVmZmVyQ2xpZW50ICg2NzcgLSA2NzcpIDw4RDA2N0RFMS04MjIzLTNB
MkUtQUI0OS0wMjg4MDIzNTg0RTc+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0Rl
dmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29y
ZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNv
dXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvU2ltRnJh
bWVidWZmZXJDbGllbnQuZnJhbWV3b3JrL1NpbUZyYW1lYnVmZmVyQ2xpZW50CiAgICAweDdmZmY0
M2YzMTAwMCAtICAgICAweDdmZmY0M2YzNGZmMyAgY29tLmFwcGxlLmlwaG9uZXNpbXVsYXRvci5T
aW11bGF0b3JDbGllbnQgKDEuMCAtIDEpIDw4M0RDMkU5Qi03QkE4LTMxNjQtOTQ0Mi0yNkQ0Q0Yx
NzI4NEQ+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9y
bXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9m
aWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJv
b3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvU2ltdWxhdG9yQ2xpZW50LmZyYW1l
d29yay9TaW11bGF0b3JDbGllbnQKICAgIDB4N2ZmZjQ1MGIyMDAwIC0gICAgIDB4N2ZmZjQ1MTAy
ZmYzICBjb20uYXBwbGUuU3ByaW5nQm9hcmRTZXJ2aWNlcyAoMS4wIC0gMS4wKSA8NUE3OERFOTgt
Qjk3OS0zOEY3LUJCRTQtM0NBRkM2Q0MwNzk3PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250
ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxv
cGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVu
dHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtz
L1NwcmluZ0JvYXJkU2VydmljZXMuZnJhbWV3b3JrL1NwcmluZ0JvYXJkU2VydmljZXMKICAgIDB4
N2ZmZjQ1ZjEzMDAwIC0gICAgIDB4N2ZmZjQ1ZjU1ZmZmICBjb20uYXBwbGUuU3RyZWFtaW5nWmlw
ICgxLjAgLSAxKSA8MTcyNjM1M0QtQ0YxNi0zOEIzLUI4OUMtN0EzMTRBRjdDQUUxPiAvQXBwbGlj
YXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBs
YXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMv
aU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJy
YXJ5L1ByaXZhdGVGcmFtZXdvcmtzL1N0cmVhbWluZ1ppcC5mcmFtZXdvcmsvU3RyZWFtaW5nWmlw
CiAgICAweDdmZmY0NjAwYjAwMCAtICAgICAweDdmZmY0NjAxM2ZmMyAgY29tLmFwcGxlLlRDQyAo
MS4wIC0gMSkgPEIxODEwQjBCLTU1NkItM0QyMS04MTNELTBBMTREQzAwNDhCND4gL0FwcGxpY2F0
aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0
Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lP
Uy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFy
eS9Qcml2YXRlRnJhbWV3b3Jrcy9UQ0MuZnJhbWV3b3JrL1RDQwogICAgMHg3ZmZmNDZkMGIwMDAg
LSAgICAgMHg3ZmZmNDZkODNmZjggIGNvbS5hcHBsZS5UZXh0SW5wdXQgKDEuMCAtIDEuMCkgPERG
OTU0NDU4LTczQjMtMzI3OC1BRkQ3LTc0NDhFMjE3MEI1ND4gL0FwcGxpY2F0aW9ucy9YY29kZS5h
cHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5
L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1l
L0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJh
bWV3b3Jrcy9UZXh0SW5wdXQuZnJhbWV3b3JrL1RleHRJbnB1dAogICAgMHg3ZmZmNDcxMGIwMDAg
LSAgICAgMHg3ZmZmNDcxZDZmZmUgIGNvbS5hcHBsZS5UZXh0dXJlSU8gKDMuMTAuOSAtIDMuMTAu
OSkgPDJBMDcwOUIwLUFGNDAtM0FGMy04RTFBLTI0NTdCNDNBNUM2OD4gL0FwcGxpY2F0aW9ucy9Y
Y29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9M
aWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1y
dW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2
YXRlRnJhbWV3b3Jrcy9UZXh0dXJlSU8uZnJhbWV3b3JrL1RleHR1cmVJTwogICAgMHg3ZmZmNDc0
ZWEwMDAgLSAgICAgMHg3ZmZmNDc1ZjNmZjYgIGNvbS5hcHBsZS5VSUZvdW5kYXRpb24gKDEuMCAt
IDY2MCkgPDVFMDgxMkJCLUMwOEQtM0Q0RC05NjM2LUM5MTc1NzdDNDczOD4gL0FwcGxpY2F0aW9u
cy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9y
bS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5z
aW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Q
cml2YXRlRnJhbWV3b3Jrcy9VSUZvdW5kYXRpb24uZnJhbWV3b3JrL1VJRm91bmRhdGlvbgogICAg
MHg3ZmZmNDc1ZGIwMDAgLSAgICAgMHg3ZmZmNDg5YTBmZmIgIGNvbS5hcHBsZS5VSUtpdENvcmUg
KDEuMCAtIDYxMDAwKSA8NTM0NDBGMDUtRDlBNC0zMzNFLUI4NkYtRjFDQ0UzOEMxNTQzPiAvQXBw
bGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9T
LnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGlt
ZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9M
aWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL1VJS2l0Q29yZS5mcmFtZXdvcmsvVUlLaXRDb3JlCiAg
ICAweDdmZmY0ODdhODAwMCAtICAgICAweDdmZmY0ODdiOWZmNCAgY29tLmFwcGxlLlVJS2l0U2Vy
dmljZXMgKDEuMCAtIDEpIDwzOUEzM0E3OS0zQzFCLTNGNDQtOTcyNy02QzcxNkQ1QjEwMUU+IC9B
cHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25l
T1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50
aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVt
L0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvVUlLaXRTZXJ2aWNlcy5mcmFtZXdvcmsvVUlLaXRT
ZXJ2aWNlcwogICAgMHg3ZmZmNDg3YjgwMDAgLSAgICAgMHg3ZmZmNDg3YmVmZmMgIGNvbS5hcHBs
ZS5VUkxGb3JtYXR0aW5nICgxMTkgLSAxMTkuMTUpIDw0MzU0RkIyOC1BRkQwLTMzODMtOEU5Ni0w
NzI3M0JFNEVBNjc+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9Q
bGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRv
ci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVu
dGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvVVJMRm9ybWF0dGluZy5m
cmFtZXdvcmsvVVJMRm9ybWF0dGluZwogICAgMHg3ZmZmNDhkY2YwMDAgLSAgICAgMHg3ZmZmNDhk
ZWJmZmUgIGNvbS5hcHBsZS5Vc2VyTWFuYWdlbWVudCAoMS4wIC0gMSkgPDlGRUZEMUZELUMxREIt
MzM5Qy1CNEY3LTc5RTVBNDYyMzc2Nj4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMv
RGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9D
b3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jl
c291cmNlcy9SdW50aW1lUm9vdC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Vc2Vy
TWFuYWdlbWVudC5mcmFtZXdvcmsvVXNlck1hbmFnZW1lbnQKICAgIDB4N2ZmZjRjMmQ5MDAwIC0g
ICAgIDB4N2ZmZjRjMzFjZmY5ICBjb20uYXBwbGUuYXdkICgxLjAgLSA5NDkpIDxGQjE0MTE2NS05
NTVFLTM2REMtODEyRC1BNjlEOUU2RTUxNjg+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRl
bnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9w
ZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50
cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3Mv
V2lyZWxlc3NEaWFnbm9zdGljcy5mcmFtZXdvcmsvV2lyZWxlc3NEaWFnbm9zdGljcwogICAgMHg3
ZmZmNGNhMDMwMDAgLSAgICAgMHg3ZmZmNGNhMDZmZmUgIGNvbS5hcHBsZS5kdC5YQ1RUYXJnZXRC
b290c3RyYXAgKDEuMCAtIDE1NzAwKSA8OTZENzhBMjMtMzNERS0zODlGLUI1N0ItNjQ0Rjc0Rjg2
QThCPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1z
L2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmls
ZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290
L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL1hDVFRhcmdldEJvb3RzdHJhcC5mcmFt
ZXdvcmsvWENUVGFyZ2V0Qm9vdHN0cmFwCiAgICAweDdmZmY0Y2EwNzAwMCAtICAgICAweDdmZmY0
Y2ExNWZmMCAgY29tLmFwcGxlLmF1ZGlvLmNhdWxrICgxLjAgLSAzMi4zKSA8M0IxNDEyRTEtRTYy
Ni0zMTNGLUFDREQtRTA2NkZDMkU4QzJEPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50
cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVy
L0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMv
UmVzb3VyY2VzL1J1bnRpbWVSb290L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL2Nh
dWxrLmZyYW1ld29yay9jYXVsawogICAgMHg3ZmZmNGNiYTYwMDAgLSAgICAgMHg3ZmZmNGNiZGFm
ZjAgIGNvbS5hcHBsZS5pQ2FsZW5kYXIgKDcuMCAtIDgxMS4yLjEpIDw1NkVDMkU2Qi00OTkzLTNG
NTQtQjlGNi0xRUQxQzMxOEY1REI+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0Rl
dmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29y
ZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNv
dXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvaUNhbGVu
ZGFyLmZyYW1ld29yay9pQ2FsZW5kYXIKICAgIDB4N2ZmZjRlNzdiMDAwIC0gICAgIDB4N2ZmZjRl
Nzg4ZmZiICBjb20uYXBwbGUucGVyZmRhdGEgKDEuMCAtIDUxLjQwLjMpIDwyMjc4NUI5RC05RjFC
LTNERjQtOTdFRS1DMkEzQzdBNkYwNjI+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRz
L0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIv
Q29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9S
ZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvcGVy
ZmRhdGEuZnJhbWV3b3JrL3BlcmZkYXRhCiAgICAweDdmZmY0ZTc4ODAwMCAtICAgICAweDdmZmY0
ZTdiOGZmOSAgY29tLmFwcGxlLmNvbnRhY3RzLnZDYXJkICgxLjAgLSA/Pz8pIDw1QUZFMDdFMC0w
OTA3LTM1NDYtQTZEQi1CODA4QUIyNDQzNUQ+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRl
bnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9w
ZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50
cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3Mv
dkNhcmQuZnJhbWV3b3JrL3ZDYXJkCiAgICAweDdmZmY0ZWE5MDAwMCAtICAgICAweDdmZmY0ZWFj
M2ZmMyArbGliQVdEU3VwcG9ydC5keWxpYiAoOTQ5KSA8QzBCQzI4OEYtRjg5MC0zMkU0LTk2MTUt
Rjc3RTA1MkI1QTA2PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIv
UGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0
b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1
bnRpbWVSb290L3Vzci9saWIvbGliQVdEU3VwcG9ydC5keWxpYgogICAgMHg3ZmZmNGVhYzQwMDAg
LSAgICAgMHg3ZmZmNGViZDBmZjYgK2xpYkFXRFN1cHBvcnRGcmFtZXdvcmsuZHlsaWIgKDMzMTYp
IDxBNTcyQUIzRC03ODVDLTM2RDktODhCOC1FOTZFQ0I2QTdCQTA+IC9BcHBsaWNhdGlvbnMvWGNv
ZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGli
cmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVu
dGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNyL2xpYi9saWJBV0RTdXBwb3J0
RnJhbWV3b3JrLmR5bGliCiAgICAweDdmZmY0ZWJjNDAwMCAtICAgICAweDdmZmY0ZWJkYWZmNyAr
bGliQWNjZXNzaWJpbGl0eS5keWxpYiAoMjc3MS40MCkgPDYwNkVGRThELUVDRUMtMzAxNC1COUIy
LUUzRDk4OEExODlCNT4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVy
L1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxh
dG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9S
dW50aW1lUm9vdC91c3IvbGliL2xpYkFjY2Vzc2liaWxpdHkuZHlsaWIKICAgIDB4N2ZmZjRlYmYx
MDAwIC0gICAgIDB4N2ZmZjRlYmZkZmZjICtsaWJBdWRpb1N0YXRpc3RpY3MuZHlsaWIgKDExMDQu
MjguMSkgPERBMTlFRkYxLTQxOUUtMzM3MS1CQTY3LUE0OEE0NDBFNkU4QT4gL0FwcGxpY2F0aW9u
cy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9y
bS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5z
aW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC91c3IvbGliL2xpYkF1ZGlv
U3RhdGlzdGljcy5keWxpYgogICAgMHg3ZmZmNGViZmUwMDAgLSAgICAgMHg3ZmZmNGVjMzNmZjUg
K2xpYkF1ZGlvVG9vbGJveFV0aWxpdHkuZHlsaWIgKDExMDQuMjguMSkgPDk4NjlCODQ1LUVDMEYt
M0REMi05MDc1LUEyQTkxQkFBREY5MT4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMv
RGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9D
b3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jl
c291cmNlcy9SdW50aW1lUm9vdC91c3IvbGliL2xpYkF1ZGlvVG9vbGJveFV0aWxpdHkuZHlsaWIK
ICAgIDB4N2ZmZjRlYzNjMDAwIC0gICAgIDB4N2ZmZjRlYzZiZmY3ICtsaWJDUkZTdWl0ZS5keWxp
YiAoNDgpIDxEODZCMDQyMS1FOUY2LTM5QjUtOTM2Mi1GNkJFMTc4MjM2Q0Q+IC9BcHBsaWNhdGlv
bnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZv
cm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Mu
c2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNyL2xpYi9saWJDUkZT
dWl0ZS5keWxpYgogICAgMHg3ZmZmNGVjNmMwMDAgLSAgICAgMHg3ZmZmNGVjNmRmZjMgK2xpYkNU
R3JlZW5UZWFMb2dnZXIuZHlsaWIgKDcyOTYuMSkgPEFBMzBDRTk2LTQxRUQtM0NGQi1CNzMzLUFE
MTY4ODlCRDIxND4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1Bs
YXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9y
L1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50
aW1lUm9vdC91c3IvbGliL2xpYkNUR3JlZW5UZWFMb2dnZXIuZHlsaWIKICAgIDB4N2ZmZjRlYzZl
MDAwIC0gICAgIDB4N2ZmZjRlYzc2ZmYzICtsaWJDaGluZXNlVG9rZW5pemVyLmR5bGliICgzNCkg
PEI0NjVGRjhGLTg2RTYtM0JCQS1CRDA5LUMxQzY5MUVCMTBBND4gL0FwcGxpY2F0aW9ucy9YY29k
ZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJy
YXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50
aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC91c3IvbGliL2xpYkNoaW5lc2VUb2tl
bml6ZXIuZHlsaWIKICAgIDB4N2ZmZjRlYzc3MDAwIC0gICAgIDB4N2ZmZjRlZTJlZmZmICtsaWJG
b3NsX2R5bmFtaWMuZHlsaWIgKDIxMC40KSA8QTgxNDEzNTYtNThDNC0zMzQ4LTk4NUEtRDIyODdB
ODZGMDdGPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZv
cm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJv
ZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVS
b290L3Vzci9saWIvbGliRm9zbF9keW5hbWljLmR5bGliCiAgICAweDdmZmY0ZmU3MTAwMCAtICAg
ICAweDdmZmY0ZmU5MWZmZiArbGliTW9iaWxlR2VzdGFsdC5keWxpYiAoODI2LjYwLjEpIDwyODQ1
RkJEOS00MDM1LTNGRjktQjQxNC1EMEI1ODZDQjlFMTM+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBw
L0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9E
ZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9D
b250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNyL2xpYi9saWJNb2JpbGVHZXN0YWx0LmR5
bGliCiAgICAweDdmZmY0ZmU5MjAwMCAtICAgICAweDdmZmY0ZmU5Y2ZmMiArbGliTW9iaWxlR2Vz
dGFsdEV4dGVuc2lvbnMuZHlsaWIgKDgyNi42MC4xKSA8NTBEMEUwREQtNTU5RC0zRDlGLUJBREUt
NzU3MDdEQzNERkM3PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIv
UGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0
b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1
bnRpbWVSb290L3Vzci9saWIvbGliTW9iaWxlR2VzdGFsdEV4dGVuc2lvbnMuZHlsaWIKICAgIDB4
N2ZmZjRmZjE1MDAwIC0gICAgIDB4N2ZmZjRmZjE2ZmZmICtsaWJTeXN0ZW0uQi5keWxpYiAoMTI4
MSkgPDc4ODFBRDdGLTUyNEMtM0NGQS05NTk1LTAyRUQ1NDkxNjZBQT4gL0FwcGxpY2F0aW9ucy9Y
Y29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9M
aWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1y
dW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC91c3IvbGliL2xpYlN5c3RlbS5C
LmR5bGliCiAgICAweDdmZmY0ZmYxNzAwMCAtICAgICAweDdmZmY0ZmY1ZmZmYyArbGliVGVsZXBo
b255VXRpbER5bmFtaWMuZHlsaWIgKDM4NTIpIDwyODBCNjIwNC0xRjZCLTNCQjYtQkE2MC1DM0Ex
MEFFNEVGMkI+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0
Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Q
cm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGlt
ZVJvb3QvdXNyL2xpYi9saWJUZWxlcGhvbnlVdGlsRHluYW1pYy5keWxpYgogICAgMHg3ZmZmNGZm
NjAwMDAgLSAgICAgMHg3ZmZmNGZmNjFmZmYgK2xpYlRoYWlUb2tlbml6ZXIuZHlsaWIgKDMpIDw1
QTkwNERGRC0xNjYwLTNFNTQtQkEyMi1EQkU5Mzk5NTU2Qzk+IC9BcHBsaWNhdGlvbnMvWGNvZGUu
YXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFy
eS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGlt
ZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNyL2xpYi9saWJUaGFpVG9rZW5pemVy
LmR5bGliCiAgICAweDdmZmY0ZmY2MjAwMCAtICAgICAweDdmZmY0ZmY2NGZmYiArbGliYXBwX2xh
dW5jaF9tZWFzdXJlbWVudC5keWxpYiAoMTApIDw4QTJDQUExNy1ERjlCLTM3NzctOTVEMy1BMjk5
MzM1QURFQzI+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0
Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Q
cm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGlt
ZVJvb3QvdXNyL2xpYi9saWJhcHBfbGF1bmNoX21lYXN1cmVtZW50LmR5bGliCiAgICAweDdmZmY0
ZmY2NTAwMCAtICAgICAweDdmZmY0ZmY3YmZmZiArbGliYXBwbGVfbmdodHRwMi5keWxpYiAoMS4z
OS4yKSA8QUVGMEU4RUMtODE0Qi0zOTYwLUE2ODctQ0M3QTZGNjhGNTI2PiAvQXBwbGljYXRpb25z
L1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3Jt
L0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNp
bXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L3Vzci9saWIvbGliYXBwbGVf
bmdodHRwMi5keWxpYgogICAgMHg3ZmZmNGZmN2MwMDAgLSAgICAgMHg3ZmZmNGZmZWVmZjcgK2xp
YmFyY2hpdmUuMi5keWxpYiAoNzIuNDAuMikgPDYxOURBNjk3LUE2OTgtM0M5NC1BM0U5LUI5NjJG
NUFERkZEOD4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRm
b3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1By
b2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1l
Um9vdC91c3IvbGliL2xpYmFyY2hpdmUuMi5keWxpYgogICAgMHg3ZmZmNGZmZWYwMDAgLSAgICAg
MHg3ZmZmNTAxMTJmYzEgK2xpYmF0ZS5keWxpYiAoMi4wLjkpIDxFNEM2Q0NDOC1GNkM3LTM4M0Ut
ODZCOC04MkQ0N0YxNTcyQzc+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVs
b3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNp
bXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJj
ZXMvUnVudGltZVJvb3QvdXNyL2xpYi9saWJhdGUuZHlsaWIKICAgIDB4N2ZmZjUwMWQ3MDAwIC0g
ICAgIDB4N2ZmZjUwMWU3ZmYzICtsaWJic20uMC5keWxpYiAoNjApIDxFRjM2NkQ1My01MzU5LTM4
REMtODZGQS1GOUUwQkExNjFEQkU+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0Rl
dmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29y
ZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNv
dXJjZXMvUnVudGltZVJvb3QvdXNyL2xpYi9saWJic20uMC5keWxpYgogICAgMHg3ZmZmNTAxZTgw
MDAgLSAgICAgMHg3ZmZmNTAxZjRmZmYgK2xpYmJ6Mi4xLjAuZHlsaWIgKDQ0KSA8NURFMjA4MUIt
QzE3NC0zNDYyLTlBQjUtQTg2RkIwMThBRDlCPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250
ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxv
cGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVu
dHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L3Vzci9saWIvbGliYnoyLjEuMC5keWxpYgogICAgMHg3
ZmZmNTAxZjUwMDAgLSAgICAgMHg3ZmZmNTAyNDdmZmYgK2xpYmMrKy4xLmR5bGliICg4MDAuNykg
PEFCRDAxODU5LTFEQjgtM0Q4Mi1BOTA4LTE4NkE3RjYwMkFDRD4gL0FwcGxpY2F0aW9ucy9YY29k
ZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJy
YXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50
aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC91c3IvbGliL2xpYmMrKy4xLmR5bGli
CiAgICAweDdmZmY1MDI0ODAwMCAtICAgICAweDdmZmY1MDI1YmZmNyArbGliYysrYWJpLmR5bGli
ICg4MDAuNikgPDM1NzRGMTA1LTU3N0ItMzc2QS1CODEyLUQ0NERDN0Y0MzU2Rj4gL0FwcGxpY2F0
aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0
Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lP
Uy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC91c3IvbGliL2xpYmMr
K2FiaS5keWxpYgogICAgMHg3ZmZmNTAyNWMwMDAgLSAgICAgMHg3ZmZmNTAyNWNmZmIgK2xpYmNo
YXJzZXQuMS5keWxpYiAoNTkpIDwxQ0MzMkUzMi0xMEI1LTNDOTQtOURGRS1ERDVFRUQ1OEY3Q0E+
IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBo
b25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9S
dW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNy
L2xpYi9saWJjaGFyc2V0LjEuZHlsaWIKICAgIDB4N2ZmZjUwMjVkMDAwIC0gICAgIDB4N2ZmZjUw
MjZlZmZiICtsaWJjbXBoLmR5bGliICg4KSA8OEYzRjUyOEUtMzg3Ni0zOTlBLUEzODUtRTYxMDhE
QkQxOTIzPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZv
cm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJv
ZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVS
b290L3Vzci9saWIvbGliY21waC5keWxpYgogICAgMHg3ZmZmNTAyNmYwMDAgLSAgICAgMHg3ZmZm
NTAyODZmZWIgK2xpYmNvbXByZXNzaW9uLmR5bGliICg4NykgPDEwMzM5RjA0LUU5NzktMzlBOS04
ODY1LUJFQTUwQTZEQkMwMj4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxv
cGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2lt
dWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNl
cy9SdW50aW1lUm9vdC91c3IvbGliL2xpYmNvbXByZXNzaW9uLmR5bGliCiAgICAweDdmZmY1MDUy
NTAwMCAtICAgICAweDdmZmY1MDUzYWZmNyArbGliY29yZXRscy5keWxpYiAoMTY3KSA8QTJCRjRC
NTctQ0JGMy0zMzlELThGRjItMTlGNUI4QzhCQzcyPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9D
b250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2
ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29u
dGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L3Vzci9saWIvbGliY29yZXRscy5keWxpYgogICAg
MHg3ZmZmNTA1M2IwMDAgLSAgICAgMHg3ZmZmNTA1M2NmZmIgK2xpYmNvcmV0bHNfY2ZoZWxwZXJz
LmR5bGliICgxNjcpIDw5MEUxOTU1Qy1EQTM3LTM5RkUtQkI5QS00MzM1MkJCQjk0RUQ+IC9BcHBs
aWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1Mu
cGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1l
cy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNyL2xpYi9s
aWJjb3JldGxzX2NmaGVscGVycy5keWxpYgogICAgMHg3ZmZmNTA1M2QwMDAgLSAgICAgMHg3ZmZm
NTA1NDJmZjMgK2xpYmN1cG9saWN5LmR5bGliICg3Mjk2LjEpIDwzRDY5RDg1MC02QkQ1LTMwRUUt
QUZEQi04OTJBOEI3NDE0QUU+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVs
b3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNp
bXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJj
ZXMvUnVudGltZVJvb3QvdXNyL2xpYi9saWJjdXBvbGljeS5keWxpYgogICAgMHg3ZmZmNTA1Yjcw
MDAgLSAgICAgMHg3ZmZmNTA1YmNmZmIgK2xpYmdlcm1hbnRvay5keWxpYiAoMjQpIDw2RDc5NkRD
Mi00Rjc1LTM2MkEtOUEyQi1ENEM2RDk0QzkxNjA+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0Nv
bnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZl
bG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250
ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNyL2xpYi9saWJnZXJtYW50b2suZHlsaWIKICAg
IDB4N2ZmZjUwNWJkMDAwIC0gICAgIDB4N2ZmZjUwNWMxZmY3ICtsaWJoZWltZGFsLWFzbjEuZHls
aWIgKDU2NC42MC4yKSA8NUU0ODlGMjQtQ0YzNi0zM0I0LUFGQ0EtRjIwOTI4MzlCNkM4PiAvQXBw
bGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9T
LnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGlt
ZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L3Vzci9saWIv
bGliaGVpbWRhbC1hc24xLmR5bGliCiAgICAweDdmZmY1MDVjMjAwMCAtICAgICAweDdmZmY1MDZi
MmZmZiArbGliaWNvbnYuMi5keWxpYiAoNTkpIDwwQjhGMkIyNy1CRUNBLTNCRDktQUMwOC0zQjRD
NjBCMDVBMDg+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0
Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Q
cm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGlt
ZVJvb3QvdXNyL2xpYi9saWJpY29udi4yLmR5bGliCiAgICAweDdmZmY1MDZiMzAwMCAtICAgICAw
eDdmZmY1MDkwNWZmZiArbGliaWN1Y29yZS5BLmR5bGliICg2NDI1Mi4wLjIpIDxDRTlBRjJFNS1D
MzY5LTMzNkUtQjI3MC0wQjcwQTVDMzIxQ0U+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRl
bnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9w
ZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50
cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNyL2xpYi9saWJpY3Vjb3JlLkEuZHlsaWIKICAgIDB4
N2ZmZjUwOTA2MDAwIC0gICAgIDB4N2ZmZjUwOTA3ZmZmICtsaWJsYW5naWQuZHlsaWIgKDEzMykg
PDdFRjBCMzNBLTc2NDEtMzE4QS1CNDQ1LUE2OUQwQzA4QTdDMT4gL0FwcGxpY2F0aW9ucy9YY29k
ZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJy
YXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50
aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC91c3IvbGliL2xpYmxhbmdpZC5keWxp
YgogICAgMHg3ZmZmNTA5MDgwMDAgLSAgICAgMHg3ZmZmNTA5MjBmZmIgK2xpYmx6bWEuNS5keWxp
YiAoMTYpIDxEQkRGREY1Mi1DMkJELTNCOEYtODgzOC1FNDk1NDkxMjk5Njk+IC9BcHBsaWNhdGlv
bnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZv
cm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Mu
c2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNyL2xpYi9saWJsem1h
LjUuZHlsaWIKICAgIDB4N2ZmZjUwOTM4MDAwIC0gICAgIDB4N2ZmZjUwOWYxZmZiICtsaWJtZWNh
Yi5keWxpYiAoODgzLjEuMSkgPDgxNkM0Njk5LTI2MEEtMzZGOC1CNjAzLTRFOEQ1RjVEOEIyRj4g
L0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhv
bmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1
bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC91c3Iv
bGliL2xpYm1lY2FiLmR5bGliCiAgICAweDdmZmY1MGZjMjAwMCAtICAgICAweDdmZmY1MGZmMWZm
YiArbGlibmN1cnNlcy41LjQuZHlsaWIgKDU3KSA8MjU3RkMzQkYtQzIyMC0zNEM1LUE2M0MtRkYy
MUJERjE4MDY1PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxh
dGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3Iv
UHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRp
bWVSb290L3Vzci9saWIvbGlibmN1cnNlcy41LjQuZHlsaWIKICAgIDB4N2ZmZjUwZmYyMDAwIC0g
ICAgIDB4N2ZmZjUxM2Q4ZmZmICtsaWJuZXR3b3JrLmR5bGliICgxODgwLjYwLjUpIDxFMzI0NDNG
OC0zRjdBLTNGMUYtQjNBMS02MEM5RDBFRTU3MUE+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0Nv
bnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZl
bG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250
ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNyL2xpYi9saWJuZXR3b3JrLmR5bGliCiAgICAw
eDdmZmY1MTNmNjAwMCAtICAgICAweDdmZmY1MTQyMWZjZSArbGlib2JqYy5BLmR5bGliICg3ODAp
IDwzRUM2ODNGNi0zNkVGLTMzRTEtOEI5OC1DOTVFMTJCQTM4RDI+IC9BcHBsaWNhdGlvbnMvWGNv
ZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGli
cmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVu
dGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNyL2xpYi9saWJvYmpjLkEuZHls
aWIKICAgIDB4N2ZmZjUxNDIyMDAwIC0gICAgIDB4N2ZmZjUxNDMwZmY4ICtsaWJwZXJmY2hlY2su
ZHlsaWIgKDM3KSA8NTREMzg1MTEtRUQzNS0zMTVCLUI2M0YtMUEwN0Q4NTdCRUNCPiAvQXBwbGlj
YXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBs
YXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMv
aU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L3Vzci9saWIvbGli
cGVyZmNoZWNrLmR5bGliCiAgICAweDdmZmY1MTQzMTAwMCAtICAgICAweDdmZmY1MTQ0NGZmZCAr
bGlicHJlcXVlbGl0ZS5keWxpYiAoMTAyKSA8RDBGMEE2RDQtMDdFQi0zQUU4LThFNTAtOTM4MzVB
QkI4RkQyPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZv
cm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJv
ZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVS
b290L3Vzci9saWIvbGlicHJlcXVlbGl0ZS5keWxpYgogICAgMHg3ZmZmNTE0NDMwMDAgLSAgICAg
MHg3ZmZmNTE0NTNmZmYgK2xpYnByb3RvYnVmLWxpdGUuZHlsaWIgKDMzMTYpIDwxNUU2Q0M3Ri04
RTkyLTM5RTQtOUFCOC02OUZCRDY2OUNGQjY+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRl
bnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9w
ZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50
cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNyL2xpYi9saWJwcm90b2J1Zi1saXRlLmR5bGliCiAg
ICAweDdmZmY1MTQ1NDAwMCAtICAgICAweDdmZmY1MTRhZWZmMyArbGlicHJvdG9idWYuZHlsaWIg
KDMzMTYpIDwyQ0Q2Rjg1QS03RjA2LTM2RjUtQkQ1RS0yN0M4RjA5NzgxMEI+IC9BcHBsaWNhdGlv
bnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZv
cm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Mu
c2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNyL2xpYi9saWJwcm90
b2J1Zi5keWxpYgogICAgMHg3ZmZmNTE0YWYwMDAgLSAgICAgMHg3ZmZmNTE0YzdmZmIgK2xpYnJl
c29sdi45LmR5bGliICg2Ny40MC4xKSA8ODU2RjBGNUItOEQ4RS0zNDBCLUJBNTItOUFCQjc2MTcy
Q0VEPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1z
L2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmls
ZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290
L3Vzci9saWIvbGlicmVzb2x2LjkuZHlsaWIKICAgIDB4N2ZmZjUxNGM4MDAwIC0gICAgIDB4N2Zm
ZjUxNjY2ZmZiICtsaWJzcWxpdGUzLmR5bGliICgzMDguNCkgPDdFNzIyMEVCLTVDQTItMzk0NS04
QTAxLURBRUJBRTcxREExNz4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxv
cGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2lt
dWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNl
cy9SdW50aW1lUm9vdC91c3IvbGliL2xpYnNxbGl0ZTMuZHlsaWIKICAgIDB4N2ZmZjUxNjY3MDAw
IC0gICAgIDB4N2ZmZjUxNjk3ZmZiICtsaWJ0aWR5LkEuZHlsaWIgKDE3LjEpIDxBRkFENDA5Qi1D
RkYxLTM1QkEtQkYxNS01REIwQTE4NzNFRDM+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRl
bnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9w
ZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50
cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNyL2xpYi9saWJ0aWR5LkEuZHlsaWIKICAgIDB4N2Zm
ZjUxNmY1MDAwIC0gICAgIDB4N2ZmZjUxN2Q3ZmY3ICtsaWJ4bWwyLjIuZHlsaWIgKDMyLjEzKSA8
ODNCM0JFQ0UtOTcyMC0zMkZELTkzNjAtNURGRTdGRTE1NjBEPiAvQXBwbGljYXRpb25zL1hjb2Rl
LmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJh
cnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRp
bWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L3Vzci9saWIvbGlieG1sMi4yLmR5bGli
CiAgICAweDdmZmY1MTgwNDAwMCAtICAgICAweDdmZmY1MTgxNmZmMyArbGliei4xLmR5bGliICg3
NikgPDdENzUwMEE0LUExNTctM0FBOS1BMkIzLTY2NjEwQzM4MTA4Mj4gL0FwcGxpY2F0aW9ucy9Y
Y29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9M
aWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1y
dW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC91c3IvbGliL2xpYnouMS5keWxp
YgogICAgMHg3ZmZmNTIwNmIwMDAgLSAgICAgMHg3ZmZmNTIwNzBmZjcgK2xpYmNhY2hlLmR5bGli
ICg4MykgPDdDOTU0RUIyLTJFM0ItMzZBNC05RUZELUQwMDZBREIxOTE2OD4gL0FwcGxpY2F0aW9u
cy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9y
bS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5z
aW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC91c3IvbGliL3N5c3RlbS9s
aWJjYWNoZS5keWxpYgogICAgMHg3ZmZmNTIwNzEwMDAgLSAgICAgMHg3ZmZmNTIwN2NmZjcgK2xp
YmNvbW1vbkNyeXB0by5keWxpYiAoNjAxNjUpIDw3RjFDMjJENy05MkMzLTM5QzgtODcyQy02OEYz
MDNENTMxNEQ+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0
Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Q
cm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGlt
ZVJvb3QvdXNyL2xpYi9zeXN0ZW0vbGliY29tbW9uQ3J5cHRvLmR5bGliCiAgICAweDdmZmY1MjA3
ZDAwMCAtICAgICAweDdmZmY1MjA4NGZmZiArbGliY29tcGlsZXJfcnQuZHlsaWIgKDEwMS4xKSA8
MDUzQURDQzgtQzAzMy0zMTg0LTk4NUQtNEI0MTM3Q0JEOTIyPiAvQXBwbGljYXRpb25zL1hjb2Rl
LmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJh
cnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRp
bWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L3Vzci9saWIvc3lzdGVtL2xpYmNvbXBp
bGVyX3J0LmR5bGliCiAgICAweDdmZmY1MjA4NTAwMCAtICAgICAweDdmZmY1MjA4ZWZmMyArbGli
Y29weWZpbGUuZHlsaWIgKDE2Ni40MC4xKSA8NjQ3M0JDNDktMEExMC0zNTQ1LUIwNDQtM0IxQ0M0
MDE5M0RDPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZv
cm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJv
ZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVS
b290L3Vzci9saWIvc3lzdGVtL2xpYmNvcHlmaWxlLmR5bGliCiAgICAweDdmZmY1MjA4ZjAwMCAt
ICAgICAweDdmZmY1MjEyNmZjZiArbGliY29yZWNyeXB0by5keWxpYiAoODY2LjYwLjMpIDxEQkNB
RTU3Ni01NTcwLTMwMTktQjYzNC05MDlCRjVDREI5MUQ+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBw
L0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9E
ZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9D
b250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNyL2xpYi9zeXN0ZW0vbGliY29yZWNyeXB0
by5keWxpYgogICAgMHg3ZmZmNTIyM2QwMDAgLSAgICAgMHg3ZmZmNTIyN2RmZjAgK2xpYmRpc3Bh
dGNoLmR5bGliICgxMTczLjYwLjEpIDxFRTYxNkM5OC00MEJBLTNEMUEtODc1MC1FOTE3RDcwRjA1
MUE+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMv
aVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxl
cy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3Qv
dXNyL2xpYi9zeXN0ZW0vbGliZGlzcGF0Y2guZHlsaWIKICAgIDB4N2ZmZjUyMjdlMDAwIC0gICAg
IDB4N2ZmZjUyMmFmZmZiICtsaWJkeWxkLmR5bGliICg3MzMuMy4xKSA8Nzg4QkU2Q0UtMjkwRC0z
QjI1LTk5NzAtMDdDMTZFRjg2OTlGPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9E
ZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0Nv
cmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVz
b3VyY2VzL1J1bnRpbWVSb290L3Vzci9saWIvc3lzdGVtL2xpYmR5bGQuZHlsaWIKICAgIDB4N2Zm
ZjUyMmIwMDAwIC0gICAgIDB4N2ZmZjUyMmIwZmY3ICtsaWJsYXVuY2guZHlsaWIgKDE3MzguNjIu
MSkgPDg0OEI4NTgxLUU3MDktMzUyOC1CMDM2LTQwQzhEOEQwNkMzQj4gL0FwcGxpY2F0aW9ucy9Y
Y29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9M
aWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1y
dW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC91c3IvbGliL3N5c3RlbS9saWJs
YXVuY2guZHlsaWIKICAgIDB4N2ZmZjUyMmIxMDAwIC0gICAgIDB4N2ZmZjUyMmI2ZmZmICtsaWJt
YWNoby5keWxpYiAoOTQ5LjAuMSkgPDAwQzE0QzFFLTc3NEQtM0ZBMC05QzlDLUI4MkNDOEU1MEE5
Qj4gL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9p
UGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVz
L1J1bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC91
c3IvbGliL3N5c3RlbS9saWJtYWNoby5keWxpYgogICAgMHg3ZmZmNTIyYjcwMDAgLSAgICAgMHg3
ZmZmNTIyYjhmZmYgK2xpYnJlbW92ZWZpbGUuZHlsaWIgKDQ4KSA8RTMzNEZCODctQzA2Mi0zNzNF
LUIwMjctODU3QzNEOEJBNDQwPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZl
bG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVT
aW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3Vy
Y2VzL1J1bnRpbWVSb290L3Vzci9saWIvc3lzdGVtL2xpYnJlbW92ZWZpbGUuZHlsaWIKICAgIDB4
N2ZmZjUyMmI5MDAwIC0gICAgIDB4N2ZmZjUyMmNmZmY3ICtsaWJzeXN0ZW1fYXNsLmR5bGliICgz
NzcuNjAuMikgPEIwQjRCNzM1LTJBMkEtMzBDMy04QTRBLTk4QzQxM0NERTg3MT4gL0FwcGxpY2F0
aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0
Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lP
Uy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC91c3IvbGliL3N5c3Rl
bS9saWJzeXN0ZW1fYXNsLmR5bGliCiAgICAweDdmZmY1MjJkMDAwMCAtICAgICAweDdmZmY1MjJk
MGZmNyArbGlic3lzdGVtX2Jsb2Nrcy5keWxpYiAoNzMpIDwxNDY5MDdCQi1DMTFCLTM1MTQtQTlG
MC1GMkVGNjJGOTU5Rjk+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Bl
ci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVs
YXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMv
UnVudGltZVJvb3QvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVtX2Jsb2Nrcy5keWxpYgogICAgMHg3
ZmZmNTIyZDEwMDAgLSAgICAgMHg3ZmZmNTIzNTNmZmYgK2xpYnN5c3RlbV9jLmR5bGliICgxMzUz
LjYwLjgpIDw0OTI2MDFFRC1COUM4LTNCRUMtQjYzNy1GNTNGQjI0QzlBMDY+IC9BcHBsaWNhdGlv
bnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZv
cm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Mu
c2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNyL2xpYi9zeXN0ZW0v
bGlic3lzdGVtX2MuZHlsaWIKICAgIDB4N2ZmZjUyMzU0MDAwIC0gICAgIDB4N2ZmZjUyMzU3ZmYz
ICtsaWJzeXN0ZW1fY29uZmlndXJhdGlvbi5keWxpYiAoMTA2MS42Mi4yKSA8MzU4RUFDRTgtRDk2
Mi0zNDFGLTgxMUMtOTcyNDkyMTE4RTRGPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50
cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVy
L0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMv
UmVzb3VyY2VzL1J1bnRpbWVSb290L3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9jb25maWd1cmF0
aW9uLmR5bGliCiAgICAweDdmZmY1MjM1ODAwMCAtICAgICAweDdmZmY1MjM1ZWZmMyArbGlic3lz
dGVtX2NvbnRhaW5lcm1hbmFnZXIuZHlsaWIgKDIzNC42MC4xKSA8MEY5NEFEQzgtNzlEQy0zQkM4
LUIwQzQtREYwRDIzMjFEQTkwPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZl
bG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVT
aW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3Vy
Y2VzL1J1bnRpbWVSb290L3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9jb250YWluZXJtYW5hZ2Vy
LmR5bGliCiAgICAweDdmZmY1MjM1ZjAwMCAtICAgICAweDdmZmY1MjM2MGZmZiArbGlic3lzdGVt
X2NvcmVzZXJ2aWNlcy5keWxpYiAoMTE0KSA8Q0I0MDAxMzEtQzRBQS0zNUY3LUI4RTktRDk2NEI1
Nzg0OUQ1PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZv
cm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJv
ZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVS
b290L3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9jb3Jlc2VydmljZXMuZHlsaWIKICAgIDB4N2Zm
ZjUyMzYxMDAwIC0gICAgIDB4N2ZmZjUyMzY4ZmZiICtsaWJzeXN0ZW1fZGFyd2luLmR5bGliICgx
MzUzLjYwLjgpIDwzQ0NDMDcwQy05NzQ2LTNBNjgtQkNDQy1GRDUwQ0JGODExN0Q+IC9BcHBsaWNh
dGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxh
dGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9p
T1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNyL2xpYi9zeXN0
ZW0vbGlic3lzdGVtX2Rhcndpbi5keWxpYgogICAgMHg3ZmZmNTIzNjkwMDAgLSAgICAgMHg3ZmZm
NTIzNmZmZmYgK2xpYnN5c3RlbV9kbnNzZC5keWxpYiAoMTA5Ni42MC4yKSA8M0IyRjdFNDktRjU3
NS0zMjkyLThDRkUtMTUxOTFBOUZEMTIyPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50
cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVy
L0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMv
UmVzb3VyY2VzL1J1bnRpbWVSb290L3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9kbnNzZC5keWxp
YgogICAgMHg3ZmZmNTIzNzAwMDAgLSAgICAgMHg3ZmZmNTIzNzFmZmYgK2xpYnN5c3RlbV9mZWF0
dXJlZmxhZ3MuZHlsaWIgKDE3KSA8ODE4REE3NjUtRTkwMy0zMkQ3LTlCRjktQjAzQzM3QzBCOUUw
PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQ
aG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMv
UnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L3Vz
ci9saWIvc3lzdGVtL2xpYnN5c3RlbV9mZWF0dXJlZmxhZ3MuZHlsaWIKICAgIDB4N2ZmZjUyMzcy
MDAwIC0gICAgIDB4N2ZmZjUyM2I0ZmY3ICtsaWJzeXN0ZW1faW5mby5keWxpYiAoNTM4KSA8ODQ4
QzU1NUEtMDlDNC0zNENCLTk0NjgtRTZEMjI2OTFBRjc4PiAvQXBwbGljYXRpb25zL1hjb2RlLmFw
cC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkv
RGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUv
Q29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9p
bmZvLmR5bGliCiAgICAweDdmZmY1MjNiNTAwMCAtICAgICAweDdmZmY1MjNlMWZmNyArbGlic3lz
dGVtX2tlcm5lbC5keWxpYiAoNjE1My44MS41KSA8MjM5MDlGNDUtNzlDMy0zNEM5LUEyOEYtMzM3
OTE1OTI1RTVFPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxh
dGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3Iv
UHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRp
bWVSb290L3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9rZXJuZWwuZHlsaWIKICAgIDB4N2ZmZjUy
M2UyMDAwIC0gICAgIDB4N2ZmZjUyNDI3ZmYzICtsaWJzeXN0ZW1fbS5keWxpYiAoMzE3OCkgPEFB
MDZFODUyLTVEMUQtM0VBRS04MUQ2LUFDODM4ODMzQTNEND4gL0FwcGxpY2F0aW9ucy9YY29kZS5h
cHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJyYXJ5
L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50aW1l
L0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC91c3IvbGliL3N5c3RlbS9saWJzeXN0ZW1f
bS5keWxpYgogICAgMHg3ZmZmNTI0MjgwMDAgLSAgICAgMHg3ZmZmNTI0NGRmZmYgK2xpYnN5c3Rl
bV9tYWxsb2MuZHlsaWIgKDI4My42MC4xKSA8MjhGNkNCNDQtNEEyMS0zRkQ0LTgzREItQzMwREYy
OTQwNUI5PiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZv
cm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJv
ZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVS
b290L3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9tYWxsb2MuZHlsaWIKICAgIDB4N2ZmZjUyNDRl
MDAwIC0gICAgIDB4N2ZmZjUyNDU2ZmZmICtsaWJzeXN0ZW1fbm90aWZ5LmR5bGliICgyNDEpIDw0
RTlFNDc2Mi00QzAwLTM3QUItQUI0Qi1DQzFGMEVCMDkzRTU+IC9BcHBsaWNhdGlvbnMvWGNvZGUu
YXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFy
eS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGlt
ZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVt
X25vdGlmeS5keWxpYgogICAgMHg3ZmZmNTI0NTcwMDAgLSAgICAgMHg3ZmZmNTI0NjBmZWYgK2xp
YnN5c3RlbV9wbGF0Zm9ybS5keWxpYiAoMjIwKSA8M0RBRkNDMDEtQjc2OC0zRkZDLUFDNTktNDdB
QUU4NkJCRUExPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxh
dGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3Iv
UHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRp
bWVSb290L3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9wbGF0Zm9ybS5keWxpYgogICAgMHg3ZmZm
NTI0NjEwMDAgLSAgICAgMHg3ZmZmNTI0NmJmZmYgK2xpYnN5c3RlbV9wdGhyZWFkLmR5bGliICg0
MTYuNjAuMikgPEFBRjUwNkY0LTk0NTUtM0NDNC04RTBCLTY3OTFFM0MwOTkzQz4gL0FwcGxpY2F0
aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0
Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lP
Uy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC91c3IvbGliL3N5c3Rl
bS9saWJzeXN0ZW1fcHRocmVhZC5keWxpYgogICAgMHg3ZmZmNTI0NmMwMDAgLSAgICAgMHg3ZmZm
NTI0NmVmZjcgK2xpYnN5c3RlbV9zYW5kYm94LmR5bGliICgxMjE3LjYwLjI1KSA8MTRCRDM2M0Yt
RkIzMy0zRjZDLTlEQTUtRDI2QTM1Q0VBRDAyPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250
ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxv
cGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVu
dHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9zYW5kYm94
LmR5bGliCiAgICAweDdmZmY1MjQ2ZjAwMCAtICAgICAweDdmZmY1MjQ3MGZmYiArbGlic3lzdGVt
X3NpbV9rZXJuZWwuZHlsaWIgKDIxMS40MC4yKSA8OURBMDY3NDMtNEU2Ni0zM0I0LTg3NzQtNzlB
RTI2QkIyRUJGPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxh
dGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3Iv
UHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRp
bWVSb290L3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9zaW1fa2VybmVsLmR5bGliCiAgICAweDdm
ZmY1MjQ3MTAwMCAtICAgICAweDdmZmY1MjQ3MWZmNyArbGlic3lzdGVtX3NpbV9rZXJuZWxfaG9z
dC5keWxpYiAoMjExLjQwLjIpIDxFRjIxOEJEOC00RDk1LTM3RjgtOTM1OC0xQjQ4ODgzMUNGMTE+
IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBo
b25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9S
dW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNy
L2xpYi9zeXN0ZW0vbGlic3lzdGVtX3NpbV9rZXJuZWxfaG9zdC5keWxpYgogICAgMHg3ZmZmNTI0
NzIwMDAgLSAgICAgMHg3ZmZmNTI0NzVmZmYgK2xpYnN5c3RlbV9zaW1fcGxhdGZvcm0uZHlsaWIg
KDIxMS40MC4yKSA8N0E3NzhDRDQtRkM2Ny0zNjkzLUIwRTctNUFERUUyRjc2RTQ4PiAvQXBwbGlj
YXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBs
YXRmb3JtL0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMv
aU9TLnNpbXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L3Vzci9saWIvc3lz
dGVtL2xpYnN5c3RlbV9zaW1fcGxhdGZvcm0uZHlsaWIKICAgIDB4N2ZmZjUyNDc2MDAwIC0gICAg
IDB4N2ZmZjUyNDc2ZmY3ICtsaWJzeXN0ZW1fc2ltX3BsYXRmb3JtX2hvc3QuZHlsaWIgKDIxMS40
MC4yKSA8QjM0NTNBODgtNTk1OS0zMTdFLTgwNUItMzQ1MTVBMkE4MzlCPiAvQXBwbGljYXRpb25z
L1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3Jt
L0xpYnJhcnkvRGV2ZWxvcGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNp
bXJ1bnRpbWUvQ29udGVudHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L3Vzci9saWIvc3lzdGVtL2xp
YnN5c3RlbV9zaW1fcGxhdGZvcm1faG9zdC5keWxpYgogICAgMHg3ZmZmNTI0NzcwMDAgLSAgICAg
MHg3ZmZmNTI0NzdmZmIgK2xpYnN5c3RlbV9zaW1fcHRocmVhZC5keWxpYiAoMjExLjQwLjIpIDw3
Q0U3NDhEQy1EQ0RBLTM1MjItOTJBNy04N0Y3ODY1NDcyMzE+IC9BcHBsaWNhdGlvbnMvWGNvZGUu
YXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFy
eS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGlt
ZS9Db250ZW50cy9SZXNvdXJjZXMvUnVudGltZVJvb3QvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVt
X3NpbV9wdGhyZWFkLmR5bGliCiAgICAweDdmZmY1MjQ3ODAwMCAtICAgICAweDdmZmY1MjQ3OGZm
NyArbGlic3lzdGVtX3NpbV9wdGhyZWFkX2hvc3QuZHlsaWIgKDIxMS40MC4yKSA8RkQ3QzE1RDQt
ODYxMi0zQkQ1LUFFODktQUY2QjEyNkMzQTkzPiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250
ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0xpYnJhcnkvRGV2ZWxv
cGVyL0NvcmVTaW11bGF0b3IvUHJvZmlsZXMvUnVudGltZXMvaU9TLnNpbXJ1bnRpbWUvQ29udGVu
dHMvUmVzb3VyY2VzL1J1bnRpbWVSb290L3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9zaW1fcHRo
cmVhZF9ob3N0LmR5bGliCiAgICAweDdmZmY1MjQ3OTAwMCAtICAgICAweDdmZmY1MjQ4ZWZmMSAr
bGlic3lzdGVtX3RyYWNlLmR5bGliICgxMTQ3LjYwLjMpIDw1NTM3QkE0RC01MzA0LTNCOEEtQUY4
Ni04OTJBNUFENkYwMUU+IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Bl
ci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVs
YXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZS9Db250ZW50cy9SZXNvdXJjZXMv
UnVudGltZVJvb3QvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVtX3RyYWNlLmR5bGliCiAgICAweDdm
ZmY1MjQ4ZjAwMCAtICAgICAweDdmZmY1MjQ5NGZmZiArbGlidW53aW5kLmR5bGliICgxMjguMikg
PEY3QTk3RDU1LTQ1QjctMzU2Ni1BQzg3LTdBNzFEQzhGNjIxQT4gL0FwcGxpY2F0aW9ucy9YY29k
ZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9MaWJy
YXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1bnRpbWVzL2lPUy5zaW1ydW50
aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC91c3IvbGliL3N5c3RlbS9saWJ1bndp
bmQuZHlsaWIKICAgIDB4N2ZmZjUyNDk1MDAwIC0gICAgIDB4N2ZmZjUyNGM3ZmZhICtsaWJ4cGMu
ZHlsaWIgKDE3MzguNjIuMSkgPEY0NDY3MTMwLUQ5REEtMzc5MS1BNEQwLUY0MUM5MUYxQ0ZFQT4g
L0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9pUGhv
bmVPUy5wbGF0Zm9ybS9MaWJyYXJ5L0RldmVsb3Blci9Db3JlU2ltdWxhdG9yL1Byb2ZpbGVzL1J1
bnRpbWVzL2lPUy5zaW1ydW50aW1lL0NvbnRlbnRzL1Jlc291cmNlcy9SdW50aW1lUm9vdC91c3Iv
bGliL3N5c3RlbS9saWJ4cGMuZHlsaWIKCkV4dGVybmFsIE1vZGlmaWNhdGlvbiBTdW1tYXJ5Ogog
IENhbGxzIG1hZGUgYnkgb3RoZXIgcHJvY2Vzc2VzIHRhcmdldGluZyB0aGlzIHByb2Nlc3M6CiAg
ICB0YXNrX2Zvcl9waWQ6IDAKICAgIHRocmVhZF9jcmVhdGU6IDAKICAgIHRocmVhZF9zZXRfc3Rh
dGU6IDAKICBDYWxscyBtYWRlIGJ5IHRoaXMgcHJvY2VzczoKICAgIHRhc2tfZm9yX3BpZDogMAog
ICAgdGhyZWFkX2NyZWF0ZTogMAogICAgdGhyZWFkX3NldF9zdGF0ZTogMAogIENhbGxzIG1hZGUg
YnkgYWxsIHByb2Nlc3NlcyBvbiB0aGlzIG1hY2hpbmU6CiAgICB0YXNrX2Zvcl9waWQ6IDI1NzgK
ICAgIHRocmVhZF9jcmVhdGU6IDAKICAgIHRocmVhZF9zZXRfc3RhdGU6IDAKClZNIFJlZ2lvbiBT
dW1tYXJ5OgpSZWFkT25seSBwb3J0aW9uIG9mIExpYnJhcmllczogVG90YWw9NjMyLjhNIHJlc2lk
ZW50PTBLKDAlKSBzd2FwcGVkX291dF9vcl91bmFsbG9jYXRlZD02MzIuOE0oMTAwJSkKV3JpdGFi
bGUgcmVnaW9uczogVG90YWw9NTAuMUcgd3JpdHRlbj0wSygwJSkgcmVzaWRlbnQ9MEsoMCUpIHN3
YXBwZWRfb3V0PTBLKDAlKSB1bmFsbG9jYXRlZD01MC4xRygxMDAlKQogCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVklSVFVBTCAgIFJFR0lPTiAKUkVHSU9OIFRZUEUgICAgICAgICAg
ICAgICAgICAgICAgICBTSVpFICAgIENPVU5UIChub24tY29hbGVzY2VkKSAKPT09PT09PT09PT0g
ICAgICAgICAgICAgICAgICAgICA9PT09PT09ICA9PT09PT09IApBY3Rpdml0eSBUcmFjaW5nICAg
ICAgICAgICAgICAgICAgIDI1NksgICAgICAgIDEgCkRpc3BhdGNoIGNvbnRpbnVhdGlvbnMgICAg
ICAgICAgICAxMi4wTSAgICAgICAgMiAKSlMgSklUIGdlbmVyYXRlZCBjb2RlICAgICAgICAgICAg
ICAxLjBHICAgICAgICAzIApKUyBWTSByZWdpc3RlciBmaWxlICAgICAgICAgICAgICAgIDQyMEsg
ICAgICAgIDkgCktlcm5lbCBBbGxvYyBPbmNlICAgICAgICAgICAgICAgICAgICA4SyAgICAgICAg
MSAKTUFMTE9DICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQwLjRNICAgICAgIDg3IApNQUxM
T0MgZ3VhcmQgcGFnZSAgICAgICAgICAgICAgICAgICA0OEsgICAgICAgIDkgCk1BTExPQ19NRURJ
VU0gKHJlc2VydmVkKSAgICAgICAgIDc4NC4wTSAgICAgICAgNyAgICAgICAgIHJlc2VydmVkIFZN
IGFkZHJlc3Mgc3BhY2UgKHVuYWxsb2NhdGVkKQpTVEFDSyBHVUFSRCAgICAgICAgICAgICAgICAg
ICAgICAgNTYuME0gICAgICAgIDkgClN0YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
Mi4xTSAgICAgICAxMCAKVk1fQUxMT0NBVEUgICAgICAgICAgICAgICAgICAgICAgIDE1LjBNICAg
ICAgICA2IApXZWJBc3NlbWJseSBtZW1vcnkgICAgICAgICAgICAgICAgMzIuMkcgICAgICAgIDMg
CldlYkFzc2VtYmx5IG1lbW9yeSAocmVzZXJ2ZWQpICAgICA0Ny44RyAgICAgICAgNCAgICAgICAg
IHJlc2VydmVkIFZNIGFkZHJlc3Mgc3BhY2UgKHVuYWxsb2NhdGVkKQpXZWJLaXQgTWFsbG9jICAg
ICAgICAgICAgICAgICAgICAgMTEuM00gICAgICAgMTggCl9fREFUQSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA5MDI0SyAgICAgIDMxNCAKX19EQVRBX0NPTlNUICAgICAgICAgICAgICAgICAg
ICAgIDM0LjRNICAgICAgMzAxIApfX0RBVEFfRElSVFkgICAgICAgICAgICAgICAgICAgICAgICAx
NEsgICAgICAgMTEgCl9fRk9OVF9EQVRBICAgICAgICAgICAgICAgICAgICAgICAgICA0SyAgICAg
ICAgMSAKX19MSU5LRURJVCAgICAgICAgICAgICAgICAgICAgICAgMzU4LjdNICAgICAgIDExIApf
X09CSkNfUk8gICAgICAgICAgICAgICAgICAgICAgICAgNDMuME0gICAgICAgIDEgCl9fT0JKQ19S
VyAgICAgICAgICAgICAgICAgICAgICAgICAyMTQ0SyAgICAgICAgMSAKX19URVhUICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMjc0LjFNICAgICAgMzExIApfX1VOSUNPREUgICAgICAgICAgICAg
ICAgICAgICAgICAgIDU2NEsgICAgICAgIDEgCm1hcHBlZCBmaWxlICAgICAgICAgICAgICAgICAg
ICAgICAzMi43TSAgICAgICAyMCAKc2hhcmVkIG1lbW9yeSAgICAgICAgICAgICAgICAgICAgICAg
MjRLICAgICAgICAzIAo9PT09PT09PT09PSAgICAgICAgICAgICAgICAgICAgID09PT09PT0gID09
PT09PT0gClRPVEFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4Mi45RyAgICAgMTE0NCAK
VE9UQUwsIG1pbnVzIHJlc2VydmVkIFZNIHNwYWNlICAgIDM0LjRHICAgICAxMTQ0IAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393668</attachid>
            <date>2020-03-16 12:01:15 -0700</date>
            <delta_ts>2020-03-16 12:06:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209129-20200316120113.patch</filename>
            <type>text/plain</type>
            <size>123915</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmM0ZjE2MWZiZTEyNTY1
MzI0YmQ4OWE5ZGEyZTVhOTNmOWY3ZDcyZS4uNGYwZjE3NzI0NDIxNzBhYmIwNDFmZWMxYzUxZGEw
MmJkNzVlZDYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MyBAQAorMjAyMC0wMy0xNSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBtb3N0IG9mIFRleHRJ
dGVyYXRvciBvZmYgb2YgbGl2ZSByYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwOTEyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIC0gQ2hhbmdlIGFsbW9zdCBhbGwgYXJndW1lbnRzIGFuZCByZXR1
cm4gdmFsdWVzIG9mIGZ1bmN0aW9ucyBpbiBUZXh0SXRlcmF0b3IuaAorICAgICAgICAgIHRvIHVz
ZSBTaW1wbGVSYW5nZSBpbnN0ZWFkIG9mIGxpdmUgcmFuZ2VzLiBFeGNlcHRpb25zIGFyZSBhbiBv
dmVybG9hZCBvZiBwbGFpblRleHQKKyAgICAgICAgICBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
LCBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoLAorICAgICAgICAgIFRl
eHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UsIGFuZCBUZXh0SXRlcmF0
b3I6OnN1YnJhbmdlLiBUaG9zZQorICAgICAgICAgIGZpdmUgYXJlIGEgbGl0dGxlIHRyaWNraWVy
IHRvIGNvbnZlcnQsIHNvIEkgd2lsbCBkbyB0aGVtIGVhY2ggaW4gc2VwYXJhdGUgcGF0Y2hlcy4K
KworICAgICAgICAtIEdvIHdpdGggdGhlIGZsb3cgaW4gYWRkaW5nIGFuIGluY2x1ZGUgb2YgTm9k
ZS5oIHRvIEJvdW5kYXJ5UG9pbnQuaC4gSSBoYWQgYXZvaWRlZAorICAgICAgICAgIHRoaXMgaW4g
dGhlIGluaXRpYWwgdmVyc2lvbiwgYnV0IG5vdyBpdCBzZWVtcyBwcmFjdGljYWwgdG8ganVzdCBs
ZWF2ZSBpdCB0aGF0IHdheS4KKyAgICAgICAgICBUaGlzIGxlZCB0byByZW1vdmluZyBCb3VuZGFy
eVBvaW50LmNwcCBhbmQgbW92aW5nIGFsbCBmdW5jdGlvbnMgdG8gdGhlIGhlYWRlci4KKworICAg
ICAgICAtIENvbnZlcnRlZCBtYW55IG1lbWJlciBmdW5jdGlvbnMgb2YgdGhlIFBvc2l0aW9uIGNs
YXNzIGZyb20gdXNpbmcgaW50IHRvIHVuc2lnbmVkCisgICAgICAgICAgZm9yIG9mZnNldHMuIFRo
ZSBET00gc3BlY2lmaWVzIHVuc2lnbmVkIGZvciBvZmZzZXRzLCBidXQgZm9yIHNvbWUgcmVhc29u
IHdlIHVzZWQKKyAgICAgICAgICBpbnQgZm9yIHRoZW0gYSBsb3QgaGlzdG9yaWNhbGx5LCBldmVu
IHRob3VnaCBuZWdhdGl2ZSBudW1iZXJzIGRvbid0IG1ha2Ugc2Vuc2UuCisgICAgICAgICAgTmV3
IGNsYXNzZXMgbGlrZSBTdGF0aWNSYW5nZSwgU2ltcGxlUmFuZ2UsIGFuZCBCb3VuZGFyeVBvaW50
IGFyZSBhbHJlYWR5IHVzaW5nCisgICAgICAgICAgdW5zaWduZWQgZXhjbHVzaXZlbHkgYW5kIHdl
J2xsIGV2ZW50dWFsbHkgY29udmVydCBldmVyeXRoaW5nLgorCisgICAgICAgIC0gUmVtb3ZlIGlu
Y2x1ZGVzIG9mIFNpbXBsZVJhbmdlLmggZnJvbSBmaWxlcyB0aGF0IGFsc28gaW5jbHVkZSBUZXh0
SXRlcmF0b3IuaCwKKyAgICAgICAgICBub3cgdGhhdCBUZXh0SXRlcmF0b3IuaCBwdWxscyBpdCBp
bi4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6IExldCB0aGlz
IGdldCB1cGRhdGVkLgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
OiBEaXR0by4KKworICAgICAgICAqIFNvdXJjZXMudHh0OiBSZW1vdmVkIEJvdW5kYXJ5UG9pbnQu
Y3BwLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8u
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6dHJhdmVyc2VUb09mZnNldEluUmFuZ2UpOiBVcGRhdGVk
IHRvIHBhc3MgYSByZWZlcmVuY2UKKyAgICAgICAgdG8gYSByYW5nZSByYXRoZXIgdGhhbiBhIHBv
aW50ZXIsIGFmdGVyIG51bGwtY2hlY2tpbmcgaXQuCisgICAgICAgIChXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjpsZW5ndGhGb3JSYW5nZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6bmV4dEJvdW5kYXJ5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjpwcmV2aW91c0JvdW5kYXJ5KTogRGl0dG8uCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnN0cmluZ0ZvclJhbmdlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdHJpbmdGb3JWaXNpYmxlUG9zaXRpb25SYW5nZSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGVuZ3RoRm9yVmlz
aWJsZVBvc2l0aW9uUmFuZ2UgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oOiBSZW1vdmVkIGFuIGV4dHJhIGluY2x1
ZGUuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
YXJyYXlPZlRleHRGb3JUZXh0TWFya2VyczphdHRyaWJ1dGVkOl0pOgorICAgICAgICBVcGRhdGVk
IHRvIHBhc3MgYSByZWZlcmVuY2UgdG8gYSByYW5nZSByYXRoZXIgdGhhbiBhIHBvaW50ZXIsIGFm
dGVyIG51bGwtY2hlY2tpbmcgaXQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIGRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlOnNw
ZWxsQ2hlY2s6XSk6IERpdHRvLgorCisgICAgICAgICogZG9tL0JvdW5kYXJ5UG9pbnQuY3BwOiBS
ZW1vdmVkLgorCisgICAgICAgICogZG9tL0JvdW5kYXJ5UG9pbnQuaDogUmVtb3ZlZCByZWR1bmRh
bnQgaW5jbHVkZXMgYW5kIGZvcndhcmQgZGVjbGFyYXRpb25zCisgICAgICAgIHNpbmNlIHdlJ3Jl
IG5vdyBjb21taXR0aW5nIHRvIGluY2x1ZGluZyAiTm9kZS5oIiBoZXJlLiBNb3ZlZCBmdW5jdGlv
bnMKKyAgICAgICAgYWxsIG91dCBvZiB0aGUgLmNwcCBmaWxlIGFuZCBtYWRlIHRoZW0gaW5saW5l
cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4dFJhbmdlcyk6
IFBhc3MgYSByZWZlcmVuY2UgdG8KKyAgICAgICAgYSByYW5nZSBpbnN0ZWFkIG9mIGEgcG9pbnRl
ci4KKworICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3Np
dGlvbjo6UG9zaXRpb24pOiBUYWtlIHVuc2lnbmVkLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRp
b246Om1vdmVUb1Bvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6
bW92ZVRvT2Zmc2V0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6cGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50IGNvbnN0KTogQ2FzdCB0byB1bnNpZ25lZC4KKyAgICAgICAgKFdl
YkNvcmU6OlBvc2l0aW9uOjphbmNob3JUeXBlRm9yTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKTogVGFr
ZSB1bnNpZ25lZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpwcmV2aW91cyBjb25zdCk6
IFVzZSB1bnNpZ25lZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpuZXh0IGNvbnN0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6dW5jaGVja2VkUHJldmlvdXNPZmZz
ZXQpOiBUYWtlIHVuc2lnbmVkLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnVuY2hlY2tl
ZFByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbik6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UG9zaXRpb246OnVuY2hlY2tlZE5leHRPZmZzZXQpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlBvc2l0aW9uOjphdExhc3RFZGl0aW5nUG9zaXRpb25Gb3JOb2RlIGNvbnN0KTogQ2Fz
dCB0byB1bnNpZ25lZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjphdEVuZE9mVHJlZSBj
b25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnJlbmRlcnNJbkRpZmZl
cmVudFBvc2l0aW9uIGNvbnN0KTogQWRkZWQgY2FzdHMgdG8KKyAgICAgICAgdW5zaWduZWQgYW5k
IGFsc28gcmVtb3ZlZCB1bm5lZWRlZCByZWR1bmRhbnQgY2hlY2tzLiBJbiBhIHBsYWNlIHdoZXJl
CisgICAgICAgIHdlIGhhZCBhbHJlYWR5IGNoZWNrZWQgdGhhdCBib3RoIG5vZGVzIHdlcmUgdGhl
IHNhbWUgYW5kIGJvdGggb2Zmc2V0cworICAgICAgICB3ZXJlIGRpZmZlcmVudCwgd2Ugd2VyZSBj
aGVja2luZyB0aGUgdHlwZXMgb2YgYm90aCBub2RlcyAoYnV0IHRoZXkgYXJlCisgICAgICAgIHRo
ZSBzYW1lIHNvIG9ubHkgbmVlZCB0byBjaGVjayBvbmUpIGFuZCB3ZSB3ZXJlIGNoZWNraW5nIHRo
YXQgYm90aAorICAgICAgICBvZmZzZXRzIHdlcmUgZGlmZmVyZW50IChidXQgd2UgYWxyZWFkeSBr
bmV3IHRoZXkgd2VyZSBkaWZmZXJlbnQpLgorICAgICAgICAoV2ViQ29yZTo6c2VhcmNoQWhlYWRG
b3JCZXR0ZXJNYXRjaCk6IFVzZSB1bnNpZ25lZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9u
OjpnZXRJbmxpbmVCb3hBbmRPZmZzZXQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlBvc2l0aW9uOjplcXVhbHMgY29uc3QpOiBSZW1vdmVkIGEgY2FzdCB0byBpbnQuCisgICAgICAg
IChXZWJDb3JlOjptYWtlQm91bmRhcnlQb2ludCk6IE1vdmVkIHRoaXMgZnVuY3Rpb24gaGVyZSBz
byBub3cgaXQgY2FuIGJlCisgICAgICAgIHVzZWQgaW4gbW9yZSBwbGFjZXMuCisKKyAgICAgICAg
KiBkb20vUG9zaXRpb24uaDogQ2hhbmdlZCBtYW55IGFyZ3VtZW50IHR5cGVzIHRvIHVuc2lnbmVk
LiBNb3ZlZCBkZWNsYXJhdGlvbnMKKyAgICAgICAgb2YgYWxsIHRoZSBmdW5jdGlvbnMgdXAgYWJv
dmUgYWxsIHRoZSBpbmxpbmUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBmdW5jdGlvbnMKKyAgICAg
ICAgdG8gc2VwYXJhdGUgaW50ZXJmYWNlIGZyb20gaW1wbGVtZW50YXRpb24gYSBiaXQgYmV0dGVy
LiBXcm90ZSBhIEZJWE1FIGFib3V0CisgICAgICAgIHRoZSBuYW1lIGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbi4gTW92ZWQgbWFrZUJvdW5kYXJ5UG9pbnQgaGVyZSBhbmQgZXhwb3J0ZWQKKyAg
ICAgICAgaXQgZnJvbSBXZWJDb3JlIHNvIHdlIGNhbiB1c2UgaXQgZnJvbSBtb3JlIHBsYWNlcy4K
KworICAgICAgICAqIGRvbS9SYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVMaXZl
UmFuZ2UpOiBNb3ZlZCB0aGVzZSBmdW5jdGlvbnMgaGVyZSBmcm9tIFNpbXBsZVJhbmdlLmNwcAor
ICAgICAgICBiZWNhdXNlIGEgbGl2ZSByYW5nZSBpcyBtb3JlIGFkdmFuY2VkIGNvbmNlcHQsIHNv
IG1ha2VzIG1vcmUgc2Vuc2UgZm9yIGxpdmUKKyAgICAgICAgcmFuZ2UgdG8ga25vdyBhYm91dCBz
aW1wbGUgcmFuZ2UgcmF0aGVyIHRoYW4gdmljZSB2ZXJzYS4KKworICAgICAgICAqIGRvbS9SYW5n
ZS5oOiBSZW1vdmVkIHNvbWUgdW5uZWVkZWQgaW5jbHVkZXMgYW5kIGZvcndhcmQgZGVjbGFyYXRp
b25zLgorICAgICAgICBBZGRlZCBhIEZJWE1FIGFib3V0IHJlbmFtaW5nIHRvIExpdmVSYW5nZS4g
TW92ZWQgdGhlIGNyZWF0ZUxpdmVSYW5nZQorICAgICAgICBmdW5jdGlvbnMgaGVyZS4gTW92ZWQg
ZGVjbGFyYXRpb25zIG9mIGZ1bmN0aW9ucyBhYm92ZSBpbmxpbmUgZnVuY3Rpb24gYm9kaWVzLgor
CisgICAgICAgICogZG9tL1NpbXBsZVJhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUxpdmVSYW5nZSk6IE1vdmVkIHRvIFJhbmdlLmNwcC4KKworICAgICAgICAqIGRvbS9TaW1wbGVS
YW5nZS5oOiBFeHBvcnRlZCB0aGUgY29uc3RydWN0b3IuIFJlbW92ZWQgdW5uZWVkZWQgb3Zlcmxv
YWQKKyAgICAgICAgdGhhdCB0YWtlcyBhIFJhbmdlKi4KKworICAgICAgICAqIGVkaXRpbmcvQXBw
bHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6
Om1lcmdlU3RhcnRXaXRoUHJldmlvdXNJZklkZW50aWNhbCk6CisgICAgICAgIFJlZmFjdG9yZWQg
Y29kZSBhIGJpdCBhbmQgdXNlIHVuc2lnbmVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHls
ZUNvbW1hbmQ6Om1lcmdlRW5kV2l0aE5leHRJZklkZW50aWNhbCk6IFVzZSB1bnNpZ25lZC4KKwor
ICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2aXNpYmxl
SW1hZ2VFbGVtZW50c0luUmFuZ2VXaXRoTm9uTG9hZGVkSW1hZ2VzKTogVXNlIGEgcmVmZXJlbmNl
CisgICAgICAgIHRvIGEgcmFuZ2UgcmF0aGVyIHRoYW4gYSBwb2ludGVyLgorCisgICAgICAgICog
ZWRpdGluZy9FZGl0aW5nLmg6IEFkZGVkIGEgZm9yd2FyZCBkZWNsYXJhdGlvbiBvZiBSYW5nZSB0
aGF0IG5vdyBzZWVtcyB0bworICAgICAgICBiZSBuZWVkZWQgdG8gY29tcGlsZS4KKworICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0
ZWRUZXh0IGNvbnN0KTogQ2FsbCBtYWtlQm91bmRhcnlQb2ludCB0d2ljZSBoZXJlIHRvCisgICAg
ICAgIGNvbnZlcnQgdHdvIFBvc2l0aW9uIG9iamVjdHMgaW50byBhIFNpbXBsZVJhbmdlLgorCisg
ICAgICAgICogZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwOiBSZW1vdmVkIHNvbWUgZXh0cmEg
aW5jbHVkZXMuCisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdl
Rm9ybWF0KTogVXNlIHZhcmlhZGljCisgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZC4KKwor
ICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZp
cnN0Tm9kZSk6IEFkZGVkLiBXZSB1c2UgdGhpcyBpbnN0ZWFkIG9mIFJhbmdlOjpmaXJzdE5vZGUu
CisgICAgICAgIElmIHdlIGZpbmQgd2UgbmVlZCBpdCBvdXRzaWRlIFRleHRJdGVyYXRvciB3ZSBj
YW4gZmluZCBhIGhlYWRlciBmb3IgaXQuCisgICAgICAgIE5vdCBzdXJlIGl0IHdvdWxkIGJlIGdy
ZWF0IHRvIGFkZCBpdCB0byBpbiBCb3VuZGFyeVBvaW50LmgsIG5vciBpcyBpdAorICAgICAgICBv
YnZpb3VzbHkgYmV0dGVyIGFzIGEgQm91bmRhcnlQb2ludCBtZW1iZXIgZnVuY3Rpb24uCisgICAg
ICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcik6IEN1dCBkb3duIG9uIHRo
ZSBleHRyYSBjb25zdHJ1Y3RvcnMKKyAgICAgICAgYW5kIGhhdmUgdGhlIHNpbmdsZSByZW1haW5p
bmcgb25lIHRha2UgYSBTaW1wbGVSYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsaWZpZWRC
YWNrd2FyZHNUZXh0SXRlcmF0b3I6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IpOgor
ICAgICAgICBEaXR0by4gQWxzbyBjaGFuZ2Ugc29tZSBpbnQgdG8gdW5zaWduZWQuCisgICAgICAg
IChXZWJDb3JlOjpDaGFyYWN0ZXJJdGVyYXRvcjo6Q2hhcmFjdGVySXRlcmF0b3IpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjpCYWNrd2FyZHND
aGFyYWN0ZXJJdGVyYXRvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V29yZEF3YXJlSXRl
cmF0b3I6OldvcmRBd2FyZUl0ZXJhdG9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0
SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKTogU2luY2UgdGhpcyBpcyBvbmUgb2YgdGhlIGZ1bmN0aW9u
cworICAgICAgICB0aGF0IHN0aWxsIHRha2VzIGEgbGl2ZSByYW5nZSBwb2ludGVyLCB1cGRhdGVk
IGl0IHRvIGNoZWNrIGZvciBudWxsIGFuZAorICAgICAgICBwYXNzIGEgcmVmZXJlbmNlIHJhdGhl
ciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VG
cm9tTG9jYXRpb25BbmRMZW5ndGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Omhhc0FueVBs
YWluVGV4dCk6IFJlbW92ZWQgbm93LXVubmVlZGVkIGNhbGwgdG8gY3JlYXRlTGl2ZVJhbmdlLgor
ICAgICAgICAoV2ViQ29yZTo6cGxhaW5UZXh0KTogVXBkYXRlZCB0aGUgbWFpbiBpbXBsZW1lbnRh
dGlvbiB0byB0YWtlIGEgU2ltcGxlUmFuZ2UsCisgICAgICAgIGVsaW1pbmF0aW5nIHRoZSB2ZXJz
aW9uIHRoYXQgdGFrZXMgdHdvIFBvc2l0aW9uIG9iamVjdHMsIGJ1dCBrZWVwaW5nIHRoZQorICAg
ICAgICBvbmUgdGhhdCB0YWtlcyBhIGxpdmUgcmFuZ2UgcG9pbnRlciBmb3Igbm93LgorICAgICAg
ICAoV2ViQ29yZTo6cGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKTogUmVtb3ZlZCBhbGwg
YnV0IHRoZSBvbmUsIGFuZAorICAgICAgICBoYXZlIHRoYXQgb25lIHRha2UgYSBTaW1wbGVSYW5n
ZS4KKworICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6IFJlbW92ZWQgdGhlIGluY2x1
ZGUgb2YgU2ltcGxlUmFuZ2UuaC4gQWxzbworICAgICAgICBVcGRhdGVkIGZvciB0aGUgY2hhbmdl
cyBhYm92ZSwgZWxpbWluYXRpbmcgZml2ZSBkaWZmZXJlbnQgY29uc3RydWN0b3JzCisgICAgICAg
IHRoYXQgdGFrZSBhIGxpdmUgcmFuZ2UgYW5kIGFsc28gb3ZlcmxvYWRzIHRoYXQgdGFrZSB0d28g
UG9zaXRpb24gb2JqZWN0cy4KKworICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWdyYXBoQ29udGVudEl0ZXJhdG9y
OjpQYXJhZ3JhcGhDb250ZW50SXRlcmF0b3IpOgorICAgICAgICBDYWxsIG1ha2VCb3VuZGFyeVBv
aW50IHR3aWNlIGhlcmUgdG8gY29udmVydCB0d28gUG9zaXRpb24gb2JqZWN0cyBpbnRvCisgICAg
ICAgIGEgU2ltcGxlUmFuZ2UuCisKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24u
Y3BwOiBSZW1vdmVkIGFuIGluY2x1ZGUuCisKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdWZmaXhMZW5ndGhGb3JSYW5nZSk6IFBhc3MgYSBy
ZWZlcmVuY2UgdG8gYSByYW5nZSBrbm93biB0bworICAgICAgICBub3QgYmUgbnVsbC4KKyAgICAg
ICAgKFdlYkNvcmU6OnByZXZpb3VzQm91bmRhcnkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
Om5leHRCb3VuZGFyeSk6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0
ZWN0aW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRRdWVyeSk6IFRha2UgYSBTaW1wbGVS
YW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJh
bmdlKTogQWRkZWQgYSBudWxsIGNoZWNrIG9uCisgICAgICAgIGEgbGl2ZSByYW5nZSBhbmQgcGFz
cyBhIHJlZmVyZW5jZSB0byBpdC4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlM
b29rdXAubW06CisgICAgICAgIChXZWJDT3JlOjpEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0
VGVzdFJlc3VsdCk6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFu
Z2UpOiBQYXNzIGEgcmVmZXJlbmNlIHRvIGEgcmFuZ2UKKyAgICAgICAga25vd24gdG8gbm90IGJl
IG51bGwuCisgICAgICAgICogcGFnZS9UZXh0SW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmVzdGltYXRlZFRleHRDb2xvcnNGb3JSYW5nZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Y29udGFpbnNPbmx5V2hpdGVTcGFjZVRleHQpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL2lv
cy9GcmFtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbnRlcnByZXRhdGlvbnNG
b3JDdXJyZW50Um9vdCBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6c2VsZWN0ZWRU
ZXh0IGNvbnN0KTogQWRkZWQgYSBudWxsIGNoZWNrIG9uCisgICAgICAgIGEgbGl2ZSByYW5nZSBh
bmQgcGFzcyBhIHJlZmVyZW5jZSB0byBpdC4KKworICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xp
bmVMYXlvdXRUcmF2ZXJzYWwuaDogUmVtb3ZlZCBzb21lIHVubmVlZGVkIGluY2x1ZGVzLgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDogRGl0dG8uCisKIDIwMjAtMDMtMTMgIFNlcmdp
byBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dlYlhSXSBJ
RExzLCBzdHVicyBhbmQgYnVpbGQgY29uZmlndXJhdGlvbiBmb3IgV1BFCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM2
YjgwZGIzZDdjN2IyNGM3N2YzOTc2Zjk0NDNhMzgwYzVmNjc5NTUuLmUxNjlmMGE3ZTVkY2EyMmQ0
NTkyOGFkYmI3MDNmNDExZTIzODg5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMjAt
MDMtMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgbW9z
dCBvZiBUZXh0SXRlcmF0b3Igb2ZmIG9mIGxpdmUgcmFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkxMjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1bV0tET01UZXh0SXRlcmF0
b3IgaW5pdFdpdGhSYW5nZTpdKTogTGVhdmUgX3RleHRJdGVyYXRvciBhcyBhIG51bGxwdHIKKyAg
ICAgICAgaWYgdGhlIHBhc3NlZC1pbiByYW5nZSBpcyBuaWwgc2luY2Ugd2Ugbm8gbG9uZ2VyIG9m
ZmVyIGEgd2F5IHRvIGNyZWF0ZQorICAgICAgICBhbiBlbXB0eSBUZXh0SXRlcmF0b3I7IG90aGVy
IGNsaWVudHMgZG9uJ3Qgc2VlbSB0byBuZWVkIG9uZS4KKyAgICAgICAgKC1bV0tET01UZXh0SXRl
cmF0b3IgYWR2YW5jZV0pOiBBZGQgYSBudWxsIGNoZWNrLgorICAgICAgICAoLVtXS0RPTVRleHRJ
dGVyYXRvciBhdEVuZF0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tET01UZXh0SXRlcmF0b3IgY3Vy
cmVudFJhbmdlXSk6IERpdHRvLgorICAgICAgICAoLVtXS0RPTVRleHRJdGVyYXRvciBjdXJyZW50
VGV4dFBvaW50ZXJdKTogRGl0dG8uCisgICAgICAgICgtW1dLRE9NVGV4dEl0ZXJhdG9yIGN1cnJl
bnRUZXh0TGVuZ3RoXSk6IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbTogUmVtb3ZlZCBpbmNsdWRlLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb21w
dXRlVGV4dExlZ2liaWxpdHlTY2FsZXMpOiBQYXNzCisgICAgICAgIGEgcmVmZXJlbmNlIHRvIGEg
cmFuZ2Uga25vd24gbm90IHRvIGJlIG51bGwuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6IFJlbW92ZWQgYW4gaW5jbHVkZS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbTogUmVtb3ZlZCBhICJ1c2luZyBuYWVtc2FwY2Ug
V2ViQ29yZSIuCisgICAgICAgIEFkZGVkIHR3byBsb2NhbCBmdW5jdGlvbnMKKyAgICAgICAgKFdl
YktpdDo6cGxhaW5UZXh0Rm9yQ29udGV4dCk6IEFkZGVkLiBIZWxwZXIgZm9yIGp1c3QgdGhpcyBm
aWxlIHdoZXJlIGNhbGxpbmcKKyAgICAgICAgcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNl
IG9uIGEgcG9zc2libHkgbnVsbCBSYW5nZSBpcyBjb21tb24uCisgICAgICAgIChXZWJLaXQ6OnBs
YWluVGV4dEZvckRpc3BsYXkpOiBEaXR0by4gVGhpcyBvbmUgcGFzc2VzIHRydWUgZm9yIGlzRGlz
cGxheVN0cmluZy4KKyAgICAgICAgTm90IGVudGlyZWx5IGNsZWFyIGhvdyBjYXJlZnVsbHkgd2Ug
Y2hvc2Ugd2hpY2ggb2YgdGhlIHR3byB0byBjYWxsLCBvciBpZiB0aGVyZQorICAgICAgICBpcyBz
dWZmaWNpZW50IHRlc3QgY292ZXJhZ2UuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRm
b3JtRWRpdG9yU3RhdGUgY29uc3QpOiBVc2UgcGxhaW5UZXh0Rm9yQ29udGV4dAorICAgICAgICBh
bmQgcGxhaW5UZXh0Rm9yRGlzcGxheS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2Vs
ZWN0aW9uQ29udGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZWN0
c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQpOiBVc2UgcGxhaW5UZXh0Rm9yRGlzcGxheS4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQpOiBVc2UgcGxh
aW5UZXh0Rm9yQ29udGV4dC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVwbGFjZVNlbGVj
dGVkVGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXBsYWNlRGljdGF0
ZWRUZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBdXRvY29y
cmVjdGlvbkRhdGEpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBwbHlBdXRv
Y29ycmVjdGlvbkludGVybmFsKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmF1
dG9jb3JyZWN0aW9uQ29udGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpkYXRhRGV0ZWN0
b3JMaW5rUG9zaXRpb25JbmZvcm1hdGlvbik6IFVzZSBwbGFpblRleHRGb3JEaXNwbGF5LgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dCk6IFVz
ZSBSZXRhaW5QdHIgaW5zdGVhZCBvZgorICAgICAgICBhdXRvcmVsZWFzZS4gVXNlIG1ha2VCb3Vu
ZGFyeVBvaW50IHRvIGNvbnZlcnQgUG9zaXRpb24gb2JqZWN0cyB0byBTaW1wbGVSYW5nZS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbTogUmVtb3ZlZCBh
biBpbmNsdWRlLgorCiAyMDIwLTAzLTEzICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtXZWJYUl0gSURMcywgc3R1YnMgYW5kIGJ1aWxkIGNvbmZp
Z3VyYXRpb24gZm9yIFdQRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDY1NGI0NTM0
YTg0MmZkMDMzMWExMDVkMTg5OGIzNDBkZTBkMDhiNGEuLmM3ZDRmNjVkOWVjZjcyNjRlYWRlMjM4
NDA3ZWU3OGQ2NWIwYTExZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyOSBAQAorMjAyMC0wMy0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgTW92ZSBtb3N0IG9mIFRleHRJdGVyYXRvciBvZmYgb2YgbGl2ZSByYW5nZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTEyOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJG
cmFtZS5tbTogUmVtb3ZlZCBhbiBpbmNsdWRlLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
Vmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2xlZ2FjeUF0dHJpYnV0ZWRTdHJpbmdG
cm9tOm9mZnNldDp0bzpvZmZzZXQ6XSk6CisgICAgICAgIEFkZCBjYXN0cyB0byB1bnNpZ25lZC4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tOgorICAgICAgICAoLVtXZWJU
ZXh0SXRlcmF0b3IgaW5pdFdpdGhSYW5nZTpdKTogTGVhdmUgX3ByaXZhdGUtPl90ZXh0SXRlcmF0
b3IKKyAgICAgICAgYXMgYSBudWxscHRyIGlmIHRoZSBwYXNzZWQtaW4gcmFuZ2UgaXMgbmlsIHNp
bmNlIHdlIG5vIGxvbmdlciBvZmZlcgorICAgICAgICBhIHdheSB0byBjcmVhdGUgYW4gZW1wdHkg
VGV4dEl0ZXJhdG9yOyBvdGhlciBjbGllbnRzIGRvbid0IHNlZW0gdG8KKyAgICAgICAgbmVlZCBv
bmUuCisgICAgICAgICgtW1dlYlRleHRJdGVyYXRvciBhZHZhbmNlXSk6IENoZWNrIF9wcml2YXRl
LT5fdGV4dEl0ZXJhdG9yIGZvciBudWxsLgorICAgICAgICAoLVtXZWJUZXh0SXRlcmF0b3IgYXRF
bmRdKTogRGl0dG8uCisgICAgICAgICgtW1dlYlRleHRJdGVyYXRvciBjdXJyZW50UmFuZ2VdKTog
RGl0dG8uCisgICAgICAgICgtW1dlYlRleHRJdGVyYXRvciBjdXJyZW50VGV4dFBvaW50ZXJdKTog
RGl0dG8uCisgICAgICAgICgtW1dlYlRleHRJdGVyYXRvciBjdXJyZW50VGV4dExlbmd0aF0pOiBE
aXR0by4KKyAgICAgICAgKC1bV2ViVGV4dEl0ZXJhdG9yIGN1cnJlbnROb2RlXSk6IERpdHRvLgor
ICAgICAgICAoLVtXZWJUZXh0SXRlcmF0b3IgY3VycmVudFRleHRdKTogRGl0dG8uCisKIDIwMjAt
MDMtMTMgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1dlYlhSXSBJRExzLCBzdHVicyBhbmQgYnVpbGQgY29uZmlndXJhdGlvbiBmb3IgV1BFCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBh
MTlkNTE1ZGY0NmMzY2VjYzM0YTAxYjliNDhhMjlkOTNkOWQ0NDEwLi42MWU1MGRhMDA2ZGNhNWIw
YTA1NWJiNGQ1ODQyZTkzNmNiNzAxOTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTQwOSw2ICs0MDksMzcgQEAgJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZVZpZXcuaWRsCiAkKFBST0pFQ1RfRElSKS9N
b2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYnhyL05hdmln
YXRvcldlYlhSLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRS
ZWZlcmVuY2VTcGFjZS5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2VieHIvV2ViWFJGcmFt
ZS5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5pZGwK
KyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmlkbAor
JChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJ4ci9XZWJYUlBvc2UuaWRsCiskKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaWRsCiskKFBST0pFQ1RfRElSKS9N
b2R1bGVzL3dlYnhyL1dlYlhSUmVuZGVyU3RhdGUuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYnhyL1dlYlhSUmlnaWRUcmFuc2Zvcm0uaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YnhyL1dlYlhSU2Vzc2lvbi5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2VieHIvV2ViWFJT
cGFjZS5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaWRsCisk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5pZGwKKyQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxl
cy93ZWJ4ci9XZWJYUlZpZXdwb3J0LmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJ4ci9X
ZWJYUldlYkdMTGF5ZXIuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYnhyL1hSRW52aXJv
bm1lbnRCbGVuZE1vZGUuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYnhyL1hSRXllLmlk
bAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJ4ci9YUkZyYW1lUmVxdWVzdENhbGxiYWNrLmlk
bAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJ4ci9YUkhhbmRlZG5lc3MuaWRsCiskKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYnhyL1hSSW5wdXRTb3VyY2VFdmVudC5pZGwKKyQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2VieHIvWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5pZGwKKyQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvd2VieHIvWFJSZWZlcmVuY2VTcGFjZUV2ZW50LmlkbAorJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJ4ci9YUlJlZmVyZW5jZVNwYWNlVHlwZS5pZGwKKyQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2VieHIvWFJSZW5kZXJTdGF0ZUluaXQuaWRsCiskKFBST0pFQ1RfRElSKS9N
b2R1bGVzL3dlYnhyL1hSU2Vzc2lvbkV2ZW50LmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJ4ci9YUlNlc3Npb25Jbml0LmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJ4ci9YUlNl
c3Npb25Nb2RlLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJ4ci9YUlRhcmdldFJheU1v
ZGUuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYnhyL1hSVmlzaWJpbGl0eVN0YXRlLmlk
bAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJ4ci9YUldlYkdMTGF5ZXJJbml0LmlkbAogJChQ
Uk9KRUNUX0RJUikvUmVzb3VyY2VzL3BsdWdJbnMuanMKICQoUFJPSkVDVF9ESVIpL1NjcmlwdHMv
R2VuZXJhdGVTZXR0aW5ncy5yYgogJChQUk9KRUNUX0RJUikvU2NyaXB0cy9TZXR0aW5nc1RlbXBs
YXRlcy9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggNzBjZmFlYTczMTEwZDRj
Y2YxMzE1ZWYyOGZhMDE4ZTc2NDM2YjlkNy4uM2U2M2RkMzc3ZTgyMTQyNTI1OTkyNDc2OTU2ODk0
ZGU5YzY3ZDhjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKQEAgLTExMzYsNiArMTEzNiw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3JTdG9yYWdl
UXVvdGEuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNO
YXZpZ2F0b3JXZWJEcml2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU05hdmlnYXRvcldlYkRyaXZlci5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvcldlYlhSLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOYXZpZ2F0b3JXZWJYUi5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05vZGUuY3BwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05vZGUuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNOb2RlRmlsdGVyLmNwcApA
QCAtMjA2NCw2ICsyMDY2LDM2IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJTb2NrZXQuY3Bw
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYlNvY2tl
dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYlhS
Qm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYlhSRnJhbWUuY3BwCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYlhSRnJhbWUuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJYUklucHV0
U291cmNlLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJYUklucHV0U291cmNlLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViWFJJbnB1dFNvdXJjZUFycmF5LmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJYUklucHV0U291cmNlQXJyYXkuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJYUlBvc2UuY3Bw
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYlhSUG9z
ZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYlhS
UmVmZXJlbmNlU3BhY2UuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1dlYlhSUmVmZXJlbmNlU3BhY2UuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJYUlJlbmRlclN0YXRlLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJYUlJlbmRlclN0YXRlLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViWFJSaWdpZFRy
YW5zZm9ybS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViWFJSaWdpZFRyYW5zZm9ybS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1dlYlhSU2Vzc2lvbi5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViWFJTZXNzaW9uLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViWFJTcGFjZS5jcHAKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViWFJTcGFjZS5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYlhSU3lzdGVtLmNwcAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJYUlN5c3Rl
bS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYlhS
Vmlldy5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViWFJWaWV3LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViWFJWaWV3ZXJQb3NlLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJYUlZpZXdlclBvc2UuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJYUlZpZXdwb3J0LmNwcAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJYUlZpZXdwb3J0LmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViWFJXZWJHTExheWVyLmNw
cAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJYUldl
YkdMTGF5ZXIuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXaGVlbEV2ZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXaGVlbEV2ZW50LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2luZG93RXZlbnRIYW5kbGVycy5jcHAKQEAgLTIxMTYsNiArMjE0OCwzNiBA
QCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hQYXRoTlNS
ZXNvbHZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTWFBhdGhOU1Jlc29sdmVyLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTWFBhdGhSZXN1bHQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1hQYXRoUmVzdWx0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTWFJFbnZpcm9ubWVudEJsZW5kTW9kZS5jcHAKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTWFJFbnZpcm9ubWVudEJs
ZW5kTW9kZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1hSRXllLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNYUkV5ZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1hSRnJhbWVSZXF1ZXN0Q2FsbGJhY2suY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1hSRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNYUkhhbmRlZG5lc3MuY3BwCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hSSGFuZGVkbmVzcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hSSW5wdXRT
b3VyY2VFdmVudC5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTWFJJbnB1dFNvdXJjZUV2ZW50LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTWFJJbnB1dFNvdXJjZXNDaGFu
Z2VFdmVudC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1hSUmVmZXJlbmNlU3BhY2VFdmVudC5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTWFJSZWZlcmVuY2VTcGFjZUV2ZW50LmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTWFJSZWZlcmVuY2VTcGFjZVR5cGUuY3Bw
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hSUmVmZXJl
bmNlU3BhY2VUeXBlLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTWFJSZW5kZXJTdGF0ZUluaXQuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1hSUmVuZGVyU3RhdGVJbml0LmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTWFJTZXNzaW9uRXZlbnQuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hSU2Vzc2lvbkV2ZW50LmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTWFJTZXNzaW9u
SW5pdC5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
WFJTZXNzaW9uSW5pdC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1hSU2Vzc2lvbk1vZGUuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1hSU2Vzc2lvbk1vZGUuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNYUlRhcmdldFJheU1vZGUuY3BwCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hSVGFyZ2V0UmF5TW9kZS5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hSVmlzaWJpbGl0eVN0
YXRlLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNY
UlZpc2liaWxpdHlTdGF0ZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1hSV2ViR0xMYXllckluaXQuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hSV2ViR0xMYXllckluaXQuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNYU0xUUHJvY2Vzc29yLmNwcAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNYU0xUUHJvY2Vzc29yLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL01hdGhNTEVsZW1l
bnRGYWN0b3J5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA0MDFjYWQ0YWE1ZjQyYjYzYjQ1OTBjNTBl
NDg0MzU1MTNlOWRmZGI3Li5jZmNlZmI5MzYzYWRjZWRlMzdjYmFkMzg1MjA3YjFhYTM0YzE4YmU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dApAQCAtODUwLDcgKzg1MCw2IEBAIGRvbS9BdHRyLmNwcAogZG9tL0Jl
Zm9yZUxvYWRFdmVudC5jcHAKIGRvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5jcHAKIGRvbS9C
ZWZvcmVVbmxvYWRFdmVudC5jcHAKLWRvbS9Cb3VuZGFyeVBvaW50LmNwcAogZG9tL0NEQVRBU2Vj
dGlvbi5jcHAKIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcAogZG9tL0NoaWxkTGlzdE11dGF0aW9uU2Nv
cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggODZhZTg1ODlhNTFiOGNhM2ZkZDY5NTI0Mjk2MzVkYmVmMWUzMWE2OC4uNGNk
MDU0YjI1YjMzOWNlNmYxODcxNzQ5OTg2N2Y2Yzg3NTE3ZTllZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA3MDgsNyArMTA3
MDgsNiBAQAogCQk5MzE1M0JFMTE0MTk1QTU3MDBGQ0Y1QkUgLyogbWlzc2luZ0ltYWdlLnBuZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBu
ZzsgcGF0aCA9IG1pc3NpbmdJbWFnZS5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzMTZEREY4MjQwQzY0QjMwMDkzNDBBQSAvKiBTaW1wbGVSYW5nZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTaW1wbGVSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MzE2RERGQTI0MEM2NEIzMDA5MzQwQUEgLyogU2ltcGxlUmFuZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltcGxlUmFuZ2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk5MzE2RERGRDI0MEM2NEY4MDA5MzQwQUEgLyogQm91bmRh
cnlQb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCb3VuZGFy
eVBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxNkRERkUyNDBDNjRG
ODAwOTM0MEFBIC8qIEJvdW5kYXJ5UG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQm91bmRhcnlQb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzFB
RTNCODFGQjgwRUFFMDBGNUVGQjIgLyogSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzMUJDQzYwMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVuZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDYW5TdGFydExpc3RlbmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODMyMyw3ICsyODMyMiw2IEBACiAJ
CQkJODUwMzFCMjYwQTQ0RUZDNzAwRjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmNwcCAqLywK
IAkJCQk4NTAzMUIyNzBBNDRFRkM3MDBGOTkyRTAgLyogQmVmb3JlVW5sb2FkRXZlbnQuaCAqLywK
IAkJCQk3QzFFOENGRjFFRDBDMkJFMDBCMUQ5ODMgLyogQmVmb3JlVW5sb2FkRXZlbnQuaWRsICov
LAotCQkJCTkzMTZEREZEMjQwQzY0RjgwMDkzNDBBQSAvKiBCb3VuZGFyeVBvaW50LmNwcCAqLywK
IAkJCQk5MzE2RERGRTI0MEM2NEY4MDA5MzQwQUEgLyogQm91bmRhcnlQb2ludC5oICovLAogCQkJ
CTdDMUU4RDAwMUVEMEMyQkUwMEIxRDk4MyAvKiBDYWxsYmFja1Jlc3VsdC5oICovLAogCQkJCTY1
NTBCNjkzMDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uY3BwICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggMWViNjI2YjZj
OWI3NWJiYjNlZDZjMTlmZmJiYWRhYTBmMzI4YWEwOC4uZDRlNWM5ODdkNThiNjI1MjE4NjdlMDIw
ZjNhOGE3YWFkZTg4YzAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwCkBAIC05OSw3ICs5OSw2IEBACiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5o
IgogI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNjcm9sbFZp
ZXcuaCIKLSNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRCb3VuZGFyaWVz
LmgiCiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yLmgiCkBAIC0xNzkxLDcgKzE3OTAsNyBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmpl
Y3RDYWNoZTo6dHJhdmVyc2VUb09mZnNldEluUmFuZ2UoUmVmUHRyPFJhbmdlPnJhbmdlLCBpbnQg
bwogICAgIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKICAgICBpbnQgbGFzdFN0YXJ0T2Zmc2V0ID0g
MDsKICAgICAKLSAgICBUZXh0SXRlcmF0b3IgaXRlcmF0b3IocmFuZ2UuZ2V0KCksIGRvTm90RW50
ZXJUZXh0Q29udHJvbHMgPyBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IgOiBUZXh0SXRlcmF0
b3JFbnRlcnNUZXh0Q29udHJvbHMpOworICAgIFRleHRJdGVyYXRvciBpdGVyYXRvcigqcmFuZ2Us
IGRvTm90RW50ZXJUZXh0Q29udHJvbHMgPyBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IgOiBU
ZXh0SXRlcmF0b3JFbnRlcnNUZXh0Q29udHJvbHMpOwogICAgIAogICAgIC8vIFdoZW4gdGhlIHJh
bmdlIGhhcyB6ZXJvIGxlbmd0aCwgdGhlcmUgbWlnaHQgYmUgcmVwbGFjZWQgbm9kZSBvciBiclRh
ZyB0aGF0IHdlIG5lZWQgdG8gaW5jcmVtZW50IHRoZSBjaGFyYWN0ZXJPZmZzZXQuCiAgICAgaWYg
KGl0ZXJhdG9yLmF0RW5kKCkpIHsKQEAgLTE5MDIsNyArMTkwMSw3IEBAIGludCBBWE9iamVjdENh
Y2hlOjpsZW5ndGhGb3JSYW5nZShSYW5nZSogcmFuZ2UpCiAgICAgaWYgKCFyYW5nZSkKICAgICAg
ICAgcmV0dXJuIC0xOwogICAgIGludCBsZW5ndGggPSAwOwotICAgIGZvciAoVGV4dEl0ZXJhdG9y
IGl0KHJhbmdlKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgeworICAgIGZvciAoVGV4dEl0
ZXJhdG9yIGl0KCpyYW5nZSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKICAgICAgICAg
Ly8gbm9uLXplcm8gbGVuZ3RoIG1lYW5zIHRleHR1YWwgbm9kZSwgemVybyBsZW5ndGggbWVhbnMg
cmVwbGFjZWQgbm9kZSAoQUtBICJhdHRhY2htZW50cyIgaW4gQVgpCiAgICAgICAgIGlmIChpdC50
ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgICAgICBsZW5ndGggKz0gaXQudGV4dCgpLmxlbmd0aCgp
OwpAQCAtMjYwMiw3ICsyNjAxLDcgQEAgQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6Om5l
eHRCb3VuZGFyeShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnMKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgZW5kID0gc3RhcnRPckVuZENoYXJhY3Rl
ck9mZnNldEZvclJhbmdlKHNlYXJjaFJhbmdlLCBmYWxzZSk7CiAgICAgCi0gICAgVGV4dEl0ZXJh
dG9yIGl0KHNlYXJjaFJhbmdlLmdldCgpLCBUZXh0SXRlcmF0b3JFbWl0c09iamVjdFJlcGxhY2Vt
ZW50Q2hhcmFjdGVycyk7CisgICAgVGV4dEl0ZXJhdG9yIGl0KCpzZWFyY2hSYW5nZSwgVGV4dEl0
ZXJhdG9yRW1pdHNPYmplY3RSZXBsYWNlbWVudENoYXJhY3RlcnMpOwogICAgIHVuc2lnbmVkIG5l
eHQgPSBmb3J3YXJkU2VhcmNoRm9yQm91bmRhcnlXaXRoVGV4dEl0ZXJhdG9yKGl0LCBzdHJpbmcs
IHByZWZpeExlbmd0aCwgc2VhcmNoRnVuY3Rpb24pOwogICAgIAogICAgIGlmIChpdC5hdEVuZCgp
ICYmIG5leHQgPT0gc3RyaW5nLnNpemUoKSkKQEAgLTI2NDMsNyArMjY0Miw3IEBAIENoYXJhY3Rl
ck9mZnNldCBBWE9iamVjdENhY2hlOjpwcmV2aW91c0JvdW5kYXJ5KGNvbnN0IENoYXJhY3Rlck9m
ZnNldCYgY2hhcmFjdGVyCiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICBpZiAoIXNl
dFJhbmdlU3RhcnRPckVuZFdpdGhDaGFyYWN0ZXJPZmZzZXQoZm9yd2FyZHNTY2FuUmFuZ2UsIGVu
ZE9mQ3VycmVudFBhcmFncmFwaCwgZmFsc2UpKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICAgICAgZm9yIChUZXh0SXRlcmF0b3IgZm9yd2FyZHNJdGVyYXRvcihmb3J3YXJkc1NjYW5SYW5n
ZS5wdHIoKSk7ICFmb3J3YXJkc0l0ZXJhdG9yLmF0RW5kKCk7IGZvcndhcmRzSXRlcmF0b3IuYWR2
YW5jZSgpKQorICAgICAgICBmb3IgKFRleHRJdGVyYXRvciBmb3J3YXJkc0l0ZXJhdG9yKGZvcndh
cmRzU2NhblJhbmdlKTsgIWZvcndhcmRzSXRlcmF0b3IuYXRFbmQoKTsgZm9yd2FyZHNJdGVyYXRv
ci5hZHZhbmNlKCkpCiAgICAgICAgICAgICBhcHBlbmQoc3RyaW5nLCBmb3J3YXJkc0l0ZXJhdG9y
LnRleHQoKSk7CiAgICAgICAgIHN1ZmZpeExlbmd0aCA9IHN0cmluZy5zaXplKCk7CiAgICAgfSBl
bHNlIGlmIChyZXF1aXJlc0NvbnRleHRGb3JXb3JkQm91bmRhcnkoY2hhcmFjdGVyQmVmb3JlKGNo
YXJhY3Rlck9mZnNldCkpKSB7CkBAIC0yNjY2LDcgKzI2NjUsNyBAQCBDaGFyYWN0ZXJPZmZzZXQg
QVhPYmplY3RDYWNoZTo6cHJldmlvdXNCb3VuZGFyeShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNo
YXJhY3RlcgogICAgICAgICByZXR1cm4gaXQuYXRFbmQoKSA/IHN0YXJ0IDogY2hhcmFjdGVyT2Zm
c2V0OwogICAgIAogICAgIGF1dG8mIG5vZGUgPSBpdC5hdEVuZCgpID8gc2VhcmNoUmFuZ2UtPnN0
YXJ0Q29udGFpbmVyKCkgOiBpdC5yYW5nZSgpLnN0YXJ0LmNvbnRhaW5lci5nZXQoKTsKLSAgICAK
KwogICAgIC8vIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IgaWdub3JlcyByZXBsYWNl
ZCBlbGVtZW50cy4KICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVwbGFjZWROb2RlTmVl
ZHNDaGFyYWN0ZXIoY2hhcmFjdGVyT2Zmc2V0Lm5vZGUpKQogICAgICAgICByZXR1cm4gY2hhcmFj
dGVyT2Zmc2V0Rm9yTm9kZUFuZE9mZnNldCgqY2hhcmFjdGVyT2Zmc2V0Lm5vZGUsIDApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAKaW5kZXggNjE5MTIxZDY2MjcxMDYyNDg5MjM1NTEwMTcyZGNmOTNhNWQ0OTYwOS4uNDVjMGIw
NzBmZGQ4MGU4MDhkMTMwZTFjMTdjN2IyN2JmZDIwZDc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0xMjY3LDcg
KzEyNjcsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3RyaW5nRm9yUmFuZ2UoUmVm
UHRyPFJhbmdlPiByYW5nZSkgY29uc3QKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAgICAgCi0gICAgVGV4dEl0ZXJhdG9yIGl0KHJhbmdlLmdldCgpKTsKKyAgICBU
ZXh0SXRlcmF0b3IgaXQoKnJhbmdlKTsKICAgICBpZiAoaXQuYXRFbmQoKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogICAgIApAQCAtMTI5Niw3ICsxMjk2LDEwIEBAIFN0cmluZyBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzdHJpbmdGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxl
UG9zaXRpb25SCiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IG1ha2VSYW5nZSh2aXNpYmxlUG9zaXRpb25SYW5nZS5zdGFydCwgdmlzaWJsZVBv
c2l0aW9uUmFuZ2UuZW5kKTsKLSAgICBmb3IgKFRleHRJdGVyYXRvciBpdChyYW5nZS5nZXQoKSk7
ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdCgqcmFuZ2UpOyAhaXQu
YXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CiAgICAgICAgIC8vIG5vbi16ZXJvIGxlbmd0aCBtZWFu
cyB0ZXh0dWFsIG5vZGUsIHplcm8gbGVuZ3RoIG1lYW5zIHJlcGxhY2VkIG5vZGUgKEFLQSAiYXR0
YWNobWVudHMiIGluIEFYKQogICAgICAgICBpZiAoaXQudGV4dCgpLmxlbmd0aCgpKSB7CiAgICAg
ICAgICAgICAvLyBBZGQgYSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIGZvciBsaXN0IG1hcmtlciB0
ZXh0LgpAQCAtMTMxOCw5ICsxMzIxLDEyIEBAIGludCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsZW5n
dGhGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nCiAgICAg
aWYgKHZpc2libGVQb3NpdGlvblJhbmdlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gLTE7CiAK
LSAgICBpbnQgbGVuZ3RoID0gMDsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gbWFrZVJhbmdl
KHZpc2libGVQb3NpdGlvblJhbmdlLnN0YXJ0LCB2aXNpYmxlUG9zaXRpb25SYW5nZS5lbmQpOwot
ICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHJhbmdlLmdldCgpKTsgIWl0LmF0RW5kKCk7IGl0LmFk
dmFuY2UoKSkgeworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlu
dCBsZW5ndGggPSAwOworICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KCpyYW5nZSk7ICFpdC5hdEVu
ZCgpOyBpdC5hZHZhbmNlKCkpIHsKICAgICAgICAgLy8gbm9uLXplcm8gbGVuZ3RoIG1lYW5zIHRl
eHR1YWwgbm9kZSwgemVybyBsZW5ndGggbWVhbnMgcmVwbGFjZWQgbm9kZSAoQUtBICJhdHRhY2ht
ZW50cyIgaW4gQVgpCiAgICAgICAgIGlmIChpdC50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgICAg
ICBsZW5ndGggKz0gaXQudGV4dCgpLmxlbmd0aCgpOwpAQCAtMTMyOSw3ICsxMzM1LDYgQEAgaW50
IEFjY2Vzc2liaWxpdHlPYmplY3Q6Omxlbmd0aEZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0
IFZpc2libGVQb3NpdGlvblJhbmcKICAgICAgICAgICAgICAgICArK2xlbmd0aDsKICAgICAgICAg
fQogICAgIH0KLQogICAgIHJldHVybiBsZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgK
aW5kZXggZTRkMWQ5YTg1Zjk3OTdkOTRhY2Y0M2NjODAxMWUxNDZhNDNhODMwYS4uY2JiNjIwOGRj
YjFhNzI5NGNlMmZlMWJhZmU1NTRlZTMyN2RjMTZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgK
QEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiUmFu
Z2UuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJUZXh0SXRlcmF0b3JC
ZWhhdmlvci5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlZpc2li
bGVTZWxlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCBjMzEzMDhlNDAzZWFjNTkwMTFiMmYxM2Fi
N2QyOWNjOGM2YzJiMjg4Li4xMDFlYjJkODI3OTc5NGRhOTEzNGQyODExODBkZWE1Y2FiODBkYzVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtNTQsNyArNTQs
NiBAQAogI2ltcG9ydCAiU1ZHTmFtZXMuaCIKICNpbXBvcnQgIlNWR0VsZW1lbnQuaCIKICNpbXBv
cnQgIlNlbGVjdGlvblJlY3QuaCIKLSNpbXBvcnQgIlNpbXBsZVJhbmdlLmgiCiAjaW1wb3J0ICJU
ZXh0SXRlcmF0b3IuaCIKICNpbXBvcnQgIldBS1Njcm9sbFZpZXcuaCIKICNpbXBvcnQgIldBS1dp
bmRvdy5oIgpAQCAtMjI1MywxMCArMjI1MiwxNCBAQCAtIChOU0FycmF5ICopYXJyYXlPZlRleHRG
b3JUZXh0TWFya2VyczooTlNBcnJheSAqKW1hcmtlcnMgYXR0cmlidXRlZDooQk9PTClhdHRyaQog
ICAgIFZpc2libGVQb3NpdGlvbiBlbmRWaXNpYmxlUG9zaXRpb24gPSBbZW5kTWFya2VyIHZpc2li
bGVQb3NpdGlvbl07CiAgICAgaWYgKGVuZFZpc2libGVQb3NpdGlvbi5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICAKKworICAgIGF1dG8gcmFuZ2UgPSBtYWtlUmFuZ2Uoc3RhcnRW
aXNpYmxlUG9zaXRpb24sIGVuZFZpc2libGVQb3NpdGlvbik7CisgICAgaWYgKCFyYW5nZSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKwogICAgIC8vIGl0ZXJhdGUgb3ZlciB0aGUgcmFuZ2UgdG8gYnVp
bGQgdGhlIEFYIGF0dHJpYnV0ZWQgc3RyaW5nCiAgICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0g
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07Ci0gICAgVGV4dEl0ZXJhdG9yIGl0KG1ha2VS
YW5nZShzdGFydFZpc2libGVQb3NpdGlvbiwgZW5kVmlzaWJsZVBvc2l0aW9uKS5nZXQoKSk7Cisg
ICAgVGV4dEl0ZXJhdG9yIGl0KCpyYW5nZSk7CiAgICAgZm9yICg7ICFpdC5hdEVuZCgpOyBpdC5h
ZHZhbmNlKCkpIHsKICAgICAgICAgTm9kZSYgbm9kZSA9IGl0LnJhbmdlKCkuc3RhcnQuY29udGFp
bmVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDg1MzUx
YTI3MjBkYWY2N2ZjNjVhMGEzYjcxYzA3NTMzNzc2MTUyMGQuLjJiMDg0NTRkMGM0MTNjNDM0ZDg0
NmVlY2IyYjZlNzAxZWJhOTFjZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tCkBAIC03MCw3ICs3MCw2IEBACiAjaW1wb3J0ICJSZW5kZXJWaWV3LmgiCiAjaW1wb3J0
ICJSZW5kZXJXaWRnZXQuaCIKICNpbXBvcnQgIlNjcm9sbFZpZXcuaCIKLSNpbXBvcnQgIlNpbXBs
ZVJhbmdlLmgiCiAjaW1wb3J0ICJUZXh0Q2hlY2tlckNsaWVudC5oIgogI2ltcG9ydCAiVGV4dENo
ZWNraW5nSGVscGVyLmgiCiAjaW1wb3J0ICJUZXh0RGVjb3JhdGlvblBhaW50ZXIuaCIKQEAgLTEy
NTUsNyArMTI1NCw5IEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyopZG9BWEF0dHJpYnV0ZWRTdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2U6KGlkKXRleHRNYXJrZXJSYW5nCiAKICAgICAgICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IFtwcm90ZWN0ZWRTZWxmIHJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOnRl
eHRNYXJrZXJSYW5nZV07CiAgICAgICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJT
dHJpbmcgPSBbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdOwotICAgICAg
ICBUZXh0SXRlcmF0b3IgaXQocmFuZ2UuZ2V0KCkpOworICAgICAgICBpZiAoIXJhbmdlKQorICAg
ICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgVGV4dEl0ZXJhdG9yIGl0KCpyYW5nZSk7CiAg
ICAgICAgIHdoaWxlICghaXQuYXRFbmQoKSkgewogICAgICAgICAgICAgTm9kZSYgbm9kZSA9IGl0
LnJhbmdlKCkuc3RhcnQuY29udGFpbmVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQm91bmRhcnlQb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3ZTBmMzY0MDdlNzdlZThiY2Q1MDk1
OThkYmFjNDBkMzQ4Y2E0MzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJCb3VuZGFyeVBvaW50LmgiCi0KLSNpbmNsdWRlICJOb2RlLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotQm91bmRhcnlQb2ludDo6Qm91bmRhcnlQb2ludChjb25zdCBCb3VuZGFy
eVBvaW50JiBvdGhlcikKLSAgICA6IGNvbnRhaW5lcihvdGhlci5jb250YWluZXIuY29weVJlZigp
KQotICAgICwgb2Zmc2V0KG90aGVyLm9mZnNldCkKLXsKLX0KLQotQm91bmRhcnlQb2ludCYgQm91
bmRhcnlQb2ludDo6b3BlcmF0b3I9KGNvbnN0IEJvdW5kYXJ5UG9pbnQmIG90aGVyKQotewotICAg
IGNvbnRhaW5lciA9IG90aGVyLmNvbnRhaW5lci5jb3B5UmVmKCk7Ci0gICAgb2Zmc2V0ID0gb3Ro
ZXIub2Zmc2V0OwotICAgIHJldHVybiAqdGhpczsKLX0KLQotQm91bmRhcnlQb2ludCYgQm91bmRh
cnlQb2ludDo6b3BlcmF0b3I9KEJvdW5kYXJ5UG9pbnQmJikgPSBkZWZhdWx0OwotCi1Eb2N1bWVu
dCYgQm91bmRhcnlQb2ludDo6ZG9jdW1lbnQoKSBjb25zdAotewotICAgIHJldHVybiBjb250YWlu
ZXItPmRvY3VtZW50KCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9C
b3VuZGFyeVBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5oCmluZGV4
IDY5MGY2Zjk2M2EwM2ZkNmZjNDY2ZGVkZmVhZmY2NjhjYmJiMTU1ZTQuLmE1ZDhlM2UwMTJlZWRh
YTljZGY3MjkzMTA4YjQzOTI3YmUxMjRmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Cb3VuZGFyeVBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQu
aApAQCAtMjcsMTIgKzI3LDggQEAKIAogI2luY2x1ZGUgIk5vZGUuaCIKIAotI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEb2N1bWVudDsKLQogc3Ry
dWN0IEJvdW5kYXJ5UG9pbnQgewogICAgIFJlZjxOb2RlPiBjb250YWluZXI7CiAgICAgdW5zaWdu
ZWQgb2Zmc2V0IHsgMCB9OwpAQCAtNDMsNyArMzksNyBAQCBzdHJ1Y3QgQm91bmRhcnlQb2ludCB7
CiAgICAgQm91bmRhcnlQb2ludChjb25zdCBCb3VuZGFyeVBvaW50Jik7CiAgICAgQm91bmRhcnlQ
b2ludChCb3VuZGFyeVBvaW50JiYpID0gZGVmYXVsdDsKICAgICBCb3VuZGFyeVBvaW50JiBvcGVy
YXRvcj0oY29uc3QgQm91bmRhcnlQb2ludCYpOwotICAgIEJvdW5kYXJ5UG9pbnQmIG9wZXJhdG9y
PShCb3VuZGFyeVBvaW50JiYpOworICAgIEJvdW5kYXJ5UG9pbnQmIG9wZXJhdG9yPShCb3VuZGFy
eVBvaW50JiYpID0gZGVmYXVsdDsKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCgpIGNvbnN0Owog
fTsKQEAgLTU2LDYgKzUyLDI0IEBAIGlubGluZSBCb3VuZGFyeVBvaW50OjpCb3VuZGFyeVBvaW50
KFJlZjxOb2RlPiYmIGNvbnRhaW5lciwgdW5zaWduZWQgb2Zmc2V0KQogewogfQogCitpbmxpbmUg
Qm91bmRhcnlQb2ludDo6Qm91bmRhcnlQb2ludChjb25zdCBCb3VuZGFyeVBvaW50JiBvdGhlcikK
KyAgICA6IGNvbnRhaW5lcihvdGhlci5jb250YWluZXIuY29weVJlZigpKQorICAgICwgb2Zmc2V0
KG90aGVyLm9mZnNldCkKK3sKK30KKworaW5saW5lIEJvdW5kYXJ5UG9pbnQmIEJvdW5kYXJ5UG9p
bnQ6Om9wZXJhdG9yPShjb25zdCBCb3VuZGFyeVBvaW50JiBvdGhlcikKK3sKKyAgICBjb250YWlu
ZXIgPSBvdGhlci5jb250YWluZXIuY29weVJlZigpOworICAgIG9mZnNldCA9IG90aGVyLm9mZnNl
dDsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2lubGluZSBEb2N1bWVudCYgQm91bmRhcnlQb2lu
dDo6ZG9jdW1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBjb250YWluZXItPmRvY3VtZW50KCk7
Cit9CisKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQm91bmRhcnlQb2ludCYgYSwgY29u
c3QgQm91bmRhcnlQb2ludCYgYikKIHsKICAgICByZXR1cm4gYS5jb250YWluZXIucHRyKCkgPT0g
Yi5jb250YWluZXIucHRyKCkgJiYgYS5vZmZzZXQgPT0gYi5vZmZzZXQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IGNjNzI4NDc1YzZj
MTQ5MWQ4YTA1Y2IyZjRkMjRjNTcxNzQ4MGQ0ODcuLmY0ZTUxNzUwMTFhN2FmODA0MjlkNjJkNjEx
OWMwODM5MDNjZmEzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOjpkZXRhY2goKQogVmVjdG9yPFJlZlB0cjxSYW5nZT4+IERvY3VtZW50TWFya2VyQ29u
dHJvbGxlcjo6Y29sbGVjdFRleHRSYW5nZXMoY29uc3QgUmFuZ2UmIHJhbmdlKQogewogICAgIFZl
Y3RvcjxSZWZQdHI8UmFuZ2U+PiB0ZXh0UmFuZ2U7Ci0gICAgZm9yIChUZXh0SXRlcmF0b3IgdGV4
dEl0ZXJhdG9yKCZyYW5nZSk7ICF0ZXh0SXRlcmF0b3IuYXRFbmQoKTsgdGV4dEl0ZXJhdG9yLmFk
dmFuY2UoKSkKKyAgICBmb3IgKFRleHRJdGVyYXRvciB0ZXh0SXRlcmF0b3IocmFuZ2UpOyAhdGV4
dEl0ZXJhdG9yLmF0RW5kKCk7IHRleHRJdGVyYXRvci5hZHZhbmNlKCkpCiAgICAgICAgIHRleHRS
YW5nZS5hcHBlbmQoY3JlYXRlTGl2ZVJhbmdlKHRleHRJdGVyYXRvci5yYW5nZSgpKSk7CiAgICAg
cmV0dXJuIHRleHRSYW5nZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IGE4MjAwOTg4
ZWNjMjE2MjYyNzEwY2NiMzU1YmZhMWIxYTExNDM2OTguLmE5MWI4MjI1YzM0OTExOGMyNmRmZjE0
MjM3NDNiMjYzMjU1NDZiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDksIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMjUsNyArMTI1LDcgQEAgUG9zaXRpb246OlBvc2l0aW9uKE5vZGUqIGFuY2hv
ck5vZGUsIEFuY2hvclR5cGUgYW5jaG9yVHlwZSkKICAgICAgICAgJiYgKGlzPFRleHQ+KCptX2Fu
Y2hvck5vZGUpIHx8IGVkaXRpbmdJZ25vcmVzQ29udGVudCgqbV9hbmNob3JOb2RlKSkpKTsKIH0K
IAotUG9zaXRpb246OlBvc2l0aW9uKE5vZGUqIGFuY2hvck5vZGUsIGludCBvZmZzZXQsIEFuY2hv
clR5cGUgYW5jaG9yVHlwZSkKK1Bvc2l0aW9uOjpQb3NpdGlvbihOb2RlKiBhbmNob3JOb2RlLCB1
bnNpZ25lZCBvZmZzZXQsIEFuY2hvclR5cGUgYW5jaG9yVHlwZSkKICAgICA6IG1fYW5jaG9yTm9k
ZShhbmNob3JOb2RlKQogICAgICwgbV9vZmZzZXQob2Zmc2V0KQogICAgICwgbV9hbmNob3JUeXBl
KGFuY2hvclR5cGUpCkBAIC0xNDUsNyArMTQ1LDcgQEAgUG9zaXRpb246OlBvc2l0aW9uKFRleHQq
IHRleHROb2RlLCB1bnNpZ25lZCBvZmZzZXQpCiAgICAgQVNTRVJUKG1fYW5jaG9yTm9kZSk7CiB9
CiAKLXZvaWQgUG9zaXRpb246Om1vdmVUb1Bvc2l0aW9uKE5vZGUqIG5vZGUsIGludCBvZmZzZXQp
Cit2b2lkIFBvc2l0aW9uOjptb3ZlVG9Qb3NpdGlvbihOb2RlKiBub2RlLCB1bnNpZ25lZCBvZmZz
ZXQpCiB7CiAgICAgQVNTRVJUKCFlZGl0aW5nSWdub3Jlc0NvbnRlbnQoKm5vZGUpKTsKICAgICBB
U1NFUlQoYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciB8fCBtX2lzTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKTsKQEAgLTE1NCw3ICsxNTQsOCBAQCB2b2lkIFBvc2l0aW9uOjpt
b3ZlVG9Qb3NpdGlvbihOb2RlKiBub2RlLCBpbnQgb2Zmc2V0KQogICAgIGlmIChtX2lzTGVnYWN5
RWRpdGluZ1Bvc2l0aW9uKQogICAgICAgICBtX2FuY2hvclR5cGUgPSBhbmNob3JUeXBlRm9yTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKG1fYW5jaG9yTm9kZS5nZXQoKSwgbV9vZmZzZXQpOwogfQotdm9p
ZCBQb3NpdGlvbjo6bW92ZVRvT2Zmc2V0KGludCBvZmZzZXQpCisKK3ZvaWQgUG9zaXRpb246Om1v
dmVUb09mZnNldCh1bnNpZ25lZCBvZmZzZXQpCiB7CiAgICAgQVNTRVJUKGFuY2hvclR5cGUoKSA9
PSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IgfHwgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbik7
CiAgICAgbV9vZmZzZXQgPSBvZmZzZXQ7CkBAIC0yNDcsNyArMjQ4LDcgQEAgUG9zaXRpb24gUG9z
aXRpb246OnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBw
b3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKG1fYW5jaG9yTm9kZS5nZXQoKSk7CiAgICAgfQogCi0g
ICAgcmV0dXJuIHsgY29udGFpbmVyTm9kZSgpLCBjb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2Rl
KCksIFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciB9OworICAgIHJldHVybiB7IGNvbnRhaW5lck5v
ZGUoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUo
KSksIFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciB9OwogfQogCiBSZWZQdHI8Tm9kZT4gUG9zaXRp
b246OmZpcnN0Tm9kZSgpIGNvbnN0CkBAIC0zMDYsNyArMzA3LDcgQEAgTm9kZSogUG9zaXRpb246
OmNvbXB1dGVOb2RlQWZ0ZXJQb3NpdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLVBvc2l0aW9uOjpBbmNob3JUeXBlIFBvc2l0aW9uOjphbmNob3JUeXBlRm9yTGVnYWN5RWRp
dGluZ1Bvc2l0aW9uKE5vZGUqIGFuY2hvck5vZGUsIGludCBvZmZzZXQpCitQb3NpdGlvbjo6QW5j
aG9yVHlwZSBQb3NpdGlvbjo6YW5jaG9yVHlwZUZvckxlZ2FjeUVkaXRpbmdQb3NpdGlvbihOb2Rl
KiBhbmNob3JOb2RlLCB1bnNpZ25lZCBvZmZzZXQpCiB7CiAgICAgaWYgKGFuY2hvck5vZGUgJiYg
ZWRpdGluZ0lnbm9yZXNDb250ZW50KCphbmNob3JOb2RlKSkgewogICAgICAgICBpZiAob2Zmc2V0
ID09IDApCkBAIC0zMzEsOSArMzMyLDEwIEBAIFBvc2l0aW9uIFBvc2l0aW9uOjpwcmV2aW91cyhQ
b3NpdGlvbk1vdmVUeXBlIG1vdmVUeXBlKSBjb25zdAogICAgIGlmICghbm9kZSkKICAgICAgICAg
cmV0dXJuICp0aGlzOwogCi0gICAgaW50IG9mZnNldCA9IGRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0
KCk7CiAgICAgLy8gRklYTUU6IE5lZ2F0aXZlIG9mZnNldHMgc2hvdWxkbid0IGJlIGFsbG93ZWQu
IFdlIHNob3VsZCBjYXRjaCB0aGlzIGVhcmxpZXIuCi0gICAgQVNTRVJUKG9mZnNldCA+PSAwKTsK
KyAgICBBU1NFUlQoZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+PSAwKTsKKworICAgIHVuc2ln
bmVkIG9mZnNldCA9IGRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAKICAgICBpZiAoYW5jaG9y
VHlwZSgpID09IFBvc2l0aW9uSXNCZWZvcmVBbmNob3IpIHsKICAgICAgICAgbm9kZSA9IGNvbnRh
aW5lck5vZGUoKTsKQEAgLTM4NCw5ICszODYsMTAgQEAgUG9zaXRpb24gUG9zaXRpb246Om5leHQo
UG9zaXRpb25Nb3ZlVHlwZSBtb3ZlVHlwZSkgY29uc3QKICAgICBpZiAoIW5vZGUpCiAgICAgICAg
IHJldHVybiAqdGhpczsKIAotICAgIGludCBvZmZzZXQgPSBkZXByZWNhdGVkRWRpdGluZ09mZnNl
dCgpOwogICAgIC8vIEZJWE1FOiBOZWdhdGl2ZSBvZmZzZXRzIHNob3VsZG4ndCBiZSBhbGxvd2Vk
LiBXZSBzaG91bGQgY2F0Y2ggdGhpcyBlYXJsaWVyLgotICAgIEFTU0VSVChvZmZzZXQgPj0gMCk7
CisgICAgQVNTRVJUKGRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPj0gMCk7CisKKyAgICB1bnNp
Z25lZCBvZmZzZXQgPSBkZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogCiAgICAgaWYgKGFuY2hv
clR5cGUoKSA9PSBQb3NpdGlvbklzQWZ0ZXJBbmNob3IpIHsKICAgICAgICAgbm9kZSA9IGNvbnRh
aW5lck5vZGUoKTsKQEAgLTM5Nyw3ICs0MDAsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6bmV4dChQ
b3NpdGlvbk1vdmVUeXBlIG1vdmVUeXBlKSBjb25zdAogICAgIH0KIAogICAgIE5vZGUqIGNoaWxk
ID0gbm9kZS0+dHJhdmVyc2VUb0NoaWxkQXQob2Zmc2V0KTsKLSAgICBpZiAoY2hpbGQgfHwgKCFu
b2RlLT5oYXNDaGlsZE5vZGVzKCkgJiYgb2Zmc2V0IDwgbGFzdE9mZnNldEZvckVkaXRpbmcoKm5v
ZGUpKSkgeworICAgIGlmIChjaGlsZCB8fCAoIW5vZGUtPmhhc0NoaWxkTm9kZXMoKSAmJiBvZmZz
ZXQgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGFzdE9mZnNldEZvckVkaXRpbmcoKm5vZGUpKSkp
IHsKICAgICAgICAgaWYgKGNoaWxkKQogICAgICAgICAgICAgcmV0dXJuIGZpcnN0UG9zaXRpb25J
bk9yQmVmb3JlTm9kZShjaGlsZCk7CiAKQEAgLTQyMywxNyArNDI2LDE3IEBAIFBvc2l0aW9uIFBv
c2l0aW9uOjpuZXh0KFBvc2l0aW9uTW92ZVR5cGUgbW92ZVR5cGUpIGNvbnN0CiAgICAgcmV0dXJu
IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihwYXJlbnQsIG5vZGUtPmNvbXB1dGVOb2RlSW5k
ZXgoKSArIDEpOwogfQogCi1pbnQgUG9zaXRpb246OnVuY2hlY2tlZFByZXZpb3VzT2Zmc2V0KGNv
bnN0IE5vZGUqIG4sIGludCBjdXJyZW50KQoraW50IFBvc2l0aW9uOjp1bmNoZWNrZWRQcmV2aW91
c09mZnNldChjb25zdCBOb2RlKiBuLCB1bnNpZ25lZCBjdXJyZW50KQogewogICAgIHJldHVybiBu
LT5yZW5kZXJlcigpID8gbi0+cmVuZGVyZXIoKS0+cHJldmlvdXNPZmZzZXQoY3VycmVudCkgOiBj
dXJyZW50IC0gMTsKIH0KIAotaW50IFBvc2l0aW9uOjp1bmNoZWNrZWRQcmV2aW91c09mZnNldEZv
ckJhY2t3YXJkRGVsZXRpb24oY29uc3QgTm9kZSogbiwgaW50IGN1cnJlbnQpCitpbnQgUG9zaXRp
b246OnVuY2hlY2tlZFByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbihjb25zdCBOb2Rl
KiBuLCB1bnNpZ25lZCBjdXJyZW50KQogewogICAgIHJldHVybiBuLT5yZW5kZXJlcigpID8gbi0+
cmVuZGVyZXIoKS0+cHJldmlvdXNPZmZzZXRGb3JCYWNrd2FyZERlbGV0aW9uKGN1cnJlbnQpIDog
Y3VycmVudCAtIDE7CiB9CiAKLWludCBQb3NpdGlvbjo6dW5jaGVja2VkTmV4dE9mZnNldChjb25z
dCBOb2RlKiBuLCBpbnQgY3VycmVudCkKK2ludCBQb3NpdGlvbjo6dW5jaGVja2VkTmV4dE9mZnNl
dChjb25zdCBOb2RlKiBuLCB1bnNpZ25lZCBjdXJyZW50KQogewogICAgIHJldHVybiBuLT5yZW5k
ZXJlcigpID8gbi0+cmVuZGVyZXIoKS0+bmV4dE9mZnNldChjdXJyZW50KSA6IGN1cnJlbnQgKyAx
OwogfQpAQCAtNDYyLDkgKzQ2NSw4IEBAIGJvb2wgUG9zaXRpb246OmF0TGFzdEVkaXRpbmdQb3Np
dGlvbkZvck5vZGUoKSBjb25zdAogewogICAgIGlmIChpc051bGwoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgLy8gRklYTUU6IFBvc2l0aW9uIGFmdGVyIGFuY2hvciBzaG91bGRuJ3QgYmUg
Y29uc2lkZXJlZCBhcyBhdCB0aGUgZmlyc3QgZWRpdGluZyBwb3NpdGlvbiBmb3Igbm9kZQotICAg
IC8vIHNpbmNlIHRoYXQgcG9zaXRpb24gcmVzaWRlcyBvdXRzaWRlIG9mIHRoZSBub2RlLgotICAg
IHJldHVybiBtX2FuY2hvclR5cGUgPT0gUG9zaXRpb25Jc0FmdGVyQW5jaG9yIHx8IG1fYW5jaG9y
VHlwZSA9PSBQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbiB8fCBtX29mZnNldCA+PSBsYXN0T2Zmc2V0
Rm9yRWRpdGluZygqZGVwcmVjYXRlZE5vZGUoKSk7CisgICAgLy8gRklYTUU6IFBvc2l0aW9uIGFm
dGVyIGFuY2hvciBzaG91bGRuJ3QgYmUgY29uc2lkZXJlZCBhcyBhdCB0aGUgZmlyc3QgZWRpdGlu
ZyBwb3NpdGlvbiBmb3Igbm9kZSBzaW5jZSB0aGF0IHBvc2l0aW9uIHJlc2lkZXMgb3V0c2lkZSBv
ZiB0aGUgbm9kZS4KKyAgICByZXR1cm4gbV9hbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRlckFu
Y2hvciB8fCBtX2FuY2hvclR5cGUgPT0gUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4gfHwgbV9vZmZz
ZXQgPj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxhc3RPZmZzZXRGb3JFZGl0aW5nKCpkZXByZWNh
dGVkTm9kZSgpKSk7CiB9CiAKIC8vIEEgcG9zaXRpb24gaXMgY29uc2lkZXJlZCBhdCBlZGl0aW5n
IGJvdW5kYXJ5IGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6CkBAIC01NDEsNyArNTQz
LDcgQEAgYm9vbCBQb3NpdGlvbjo6YXRFbmRPZlRyZWUoKSBjb25zdAogCiAgICAgc3dpdGNoICht
X2FuY2hvclR5cGUpIHsKICAgICBjYXNlIFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcjoKLSAgICAg
ICAgcmV0dXJuIG1fb2Zmc2V0ID49IGxhc3RPZmZzZXRGb3JFZGl0aW5nKCptX2FuY2hvck5vZGUp
OworICAgICAgICByZXR1cm4gbV9vZmZzZXQgPj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxhc3RP
ZmZzZXRGb3JFZGl0aW5nKCptX2FuY2hvck5vZGUpKTsKICAgICBjYXNlIFBvc2l0aW9uSXNCZWZv
cmVBbmNob3I6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIFBvc2l0aW9uSXNBZnRl
ckFuY2hvcjoKQEAgLTEwMzgsMTMgKzEwNDAsMTEgQEAgYm9vbCBQb3NpdGlvbjo6cmVuZGVyc0lu
RGlmZmVyZW50UG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdAogICAgICAg
ICBpZiAoaXM8SFRNTEJSRWxlbWVudD4oKmRlcHJlY2F0ZWROb2RlKCkpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmIChtX29mZnNldCA9PSBwb3NpdGlvbi5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpKQorICAgICAgICBpZiAobV9vZmZzZXQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICghaXM8VGV4dD4oKmRlcHJlY2F0ZWROb2Rl
KCkpICYmICFpczxUZXh0PigqcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKSkpIHsKLSAgICAgICAg
ICAgIGlmIChtX29mZnNldCAhPSBwb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgICAgIGlmICghaXM8
VGV4dD4oKmRlcHJlY2F0ZWROb2RlKCkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCiAgICAgaWYgKGlzPEhUTUxCUkVsZW1lbnQ+KCpkZXByZWNhdGVkTm9kZSgpKSAmJiBwb3Np
dGlvbi5pc0NhbmRpZGF0ZSgpKQpAQCAtMTA2Miw4ICsxMDYyLDggQEAgYm9vbCBQb3NpdGlvbjo6
cmVuZGVyc0luRGlmZmVyZW50UG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKSBjb25z
dAogICAgIGlmIChpczxSZW5kZXJUZXh0PigqcG9zaXRpb25SZW5kZXJlcikgJiYgIWRvd25jYXN0
PFJlbmRlclRleHQ+KCpwb3NpdGlvblJlbmRlcmVyKS5jb250YWluc0NhcmV0T2Zmc2V0KHBvc2l0
aW9uLm1fb2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW50IHRoaXNSZW5k
ZXJlZE9mZnNldCA9IGlzPFJlbmRlclRleHQ+KCpyZW5kZXJlcikgPyBkb3duY2FzdDxSZW5kZXJU
ZXh0PigqcmVuZGVyZXIpLmNvdW50UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXRzVW50aWwobV9vZmZz
ZXQpIDogbV9vZmZzZXQ7Ci0gICAgaW50IHBvc2l0aW9uUmVuZGVyZWRPZmZzZXQgPSBpczxSZW5k
ZXJUZXh0PigqcG9zaXRpb25SZW5kZXJlcikgPyBkb3duY2FzdDxSZW5kZXJUZXh0PigqcG9zaXRp
b25SZW5kZXJlcikuY291bnRSZW5kZXJlZENoYXJhY3Rlck9mZnNldHNVbnRpbChwb3NpdGlvbi5t
X29mZnNldCkgOiBwb3NpdGlvbi5tX29mZnNldDsKKyAgICB1bnNpZ25lZCB0aGlzUmVuZGVyZWRP
ZmZzZXQgPSBpczxSZW5kZXJUZXh0PigqcmVuZGVyZXIpID8gZG93bmNhc3Q8UmVuZGVyVGV4dD4o
KnJlbmRlcmVyKS5jb3VudFJlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0c1VudGlsKG1fb2Zmc2V0KSA6
IG1fb2Zmc2V0OworICAgIHVuc2lnbmVkIHBvc2l0aW9uUmVuZGVyZWRPZmZzZXQgPSBpczxSZW5k
ZXJUZXh0PigqcG9zaXRpb25SZW5kZXJlcikgPyBkb3duY2FzdDxSZW5kZXJUZXh0PigqcG9zaXRp
b25SZW5kZXJlcikuY291bnRSZW5kZXJlZENoYXJhY3Rlck9mZnNldHNVbnRpbChwb3NpdGlvbi5t
X29mZnNldCkgOiBwb3NpdGlvbi5tX29mZnNldDsKIAogICAgIGlmIChyZW5kZXJlciA9PSBwb3Np
dGlvblJlbmRlcmVyICYmIHRoaXNSZW5kZXJlZE9mZnNldCA9PSBwb3NpdGlvblJlbmRlcmVkT2Zm
c2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDkxLDEyICsxMDkxLDEyIEBAIGJvb2wg
UG9zaXRpb246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3Np
dGlvbikgY29uc3QKICAgICB9CiAKICAgICBpZiAobmV4dFJlbmRlcmVkRWRpdGFibGUoZGVwcmVj
YXRlZE5vZGUoKSkgPT0gcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKQotICAgICAgICAmJiB0aGlz
UmVuZGVyZWRPZmZzZXQgPT0gY2FyZXRNYXhPZmZzZXQoKmRlcHJlY2F0ZWROb2RlKCkpICYmICFw
b3NpdGlvblJlbmRlcmVkT2Zmc2V0KSB7CisgICAgICAgICYmIHRoaXNSZW5kZXJlZE9mZnNldCA9
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FyZXRNYXhPZmZzZXQoKmRlcHJlY2F0ZWROb2RlKCkp
KSAmJiAhcG9zaXRpb25SZW5kZXJlZE9mZnNldCkgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIAogICAgIGlmIChwcmV2aW91c1JlbmRlcmVkRWRpdGFibGUoZGVwcmVjYXRlZE5v
ZGUoKSkgPT0gcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKQotICAgICAgICAmJiAhdGhpc1JlbmRl
cmVkT2Zmc2V0ICYmIHBvc2l0aW9uUmVuZGVyZWRPZmZzZXQgPT0gY2FyZXRNYXhPZmZzZXQoKnBv
c2l0aW9uLmRlcHJlY2F0ZWROb2RlKCkpKSB7CisgICAgICAgICYmICF0aGlzUmVuZGVyZWRPZmZz
ZXQgJiYgcG9zaXRpb25SZW5kZXJlZE9mZnNldCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2Fy
ZXRNYXhPZmZzZXQoKnBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCkpKSkgewogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMTY3LDkgKzExNjcsOSBAQCBzdGF0aWMgSW5saW5lVGV4
dEJveCogc2VhcmNoQWhlYWRGb3JCZXR0ZXJNYXRjaChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0Pigq
bmV4dCkpIHsKICAgICAgICAgICAgIElubGluZVRleHRCb3gqIG1hdGNoID0gbnVsbHB0cjsKLSAg
ICAgICAgICAgIGludCBtaW5PZmZzZXQgPSBJTlRfTUFYOworICAgICAgICAgICAgdW5zaWduZWQg
bWluT2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOwogICAgICAg
ICAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqbmV4
dCkuZmlyc3RUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7Ci0gICAg
ICAgICAgICAgICAgaW50IGNhcmV0TWluT2Zmc2V0ID0gYm94LT5jYXJldE1pbk9mZnNldCgpOwor
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNhcmV0TWluT2Zmc2V0ID0gYm94LT5jYXJldE1pbk9m
ZnNldCgpOwogICAgICAgICAgICAgICAgIGlmIChjYXJldE1pbk9mZnNldCA8IG1pbk9mZnNldCkg
ewogICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IGJveDsKICAgICAgICAgICAgICAgICAgICAg
bWluT2Zmc2V0ID0gY2FyZXRNaW5PZmZzZXQ7CkBAIC0xMjE5LDIwICsxMjE5LDIwIEBAIHZvaWQg
UG9zaXRpb246OmdldElubGluZUJveEFuZE9mZnNldChFQWZmaW5pdHkgYWZmaW5pdHksIFRleHRE
aXJlY3Rpb24gcHJpbWFyeURpCiAgICAgICAgIElubGluZVRleHRCb3gqIGNhbmRpZGF0ZSA9IG51
bGxwdHI7CiAKICAgICAgICAgZm9yIChib3ggPSB0ZXh0UmVuZGVyZXIuZmlyc3RUZXh0Qm94KCk7
IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7Ci0gICAgICAgICAgICBpbnQgY2FyZXRN
aW5PZmZzZXQgPSBib3gtPmNhcmV0TWluT2Zmc2V0KCk7Ci0gICAgICAgICAgICBpbnQgY2FyZXRN
YXhPZmZzZXQgPSBib3gtPmNhcmV0TWF4T2Zmc2V0KCk7CisgICAgICAgICAgICB1bnNpZ25lZCBj
YXJldE1pbk9mZnNldCA9IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKKyAgICAgICAgICAgIHVuc2ln
bmVkIGNhcmV0TWF4T2Zmc2V0ID0gYm94LT5jYXJldE1heE9mZnNldCgpOwogCi0gICAgICAgICAg
ICBpZiAoY2FyZXRPZmZzZXQgPCBjYXJldE1pbk9mZnNldCB8fCBjYXJldE9mZnNldCA+IGNhcmV0
TWF4T2Zmc2V0IHx8IChjYXJldE9mZnNldCA9PSBjYXJldE1heE9mZnNldCAmJiBib3gtPmlzTGlu
ZUJyZWFrKCkpKQorICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYXJldE9m
ZnNldCkgPCBjYXJldE1pbk9mZnNldCB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FyZXRPZmZz
ZXQpID4gY2FyZXRNYXhPZmZzZXQgfHwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYXJldE9mZnNl
dCkgPT0gY2FyZXRNYXhPZmZzZXQgJiYgYm94LT5pc0xpbmVCcmVhaygpKSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKGNhcmV0T2Zmc2V0ID4gY2FyZXRNaW5P
ZmZzZXQgJiYgY2FyZXRPZmZzZXQgPCBjYXJldE1heE9mZnNldCkgeworICAgICAgICAgICAgaWYg
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYXJldE9mZnNldCkgPiBjYXJldE1pbk9mZnNldCAmJiBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FyZXRPZmZzZXQpIDwgY2FyZXRNYXhPZmZzZXQpIHsKICAg
ICAgICAgICAgICAgICBpbmxpbmVCb3ggPSBib3g7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoKChjYXJldE9mZnNldCA9PSBjYXJldE1h
eE9mZnNldCkgXiAoYWZmaW5pdHkgPT0gRE9XTlNUUkVBTSkpCi0gICAgICAgICAgICAgICAgfHwg
KChjYXJldE9mZnNldCA9PSBjYXJldE1pbk9mZnNldCkgXiAoYWZmaW5pdHkgPT0gVVBTVFJFQU0p
KQotICAgICAgICAgICAgICAgIHx8IChjYXJldE9mZnNldCA9PSBjYXJldE1heE9mZnNldCAmJiBi
b3gtPm5leHRMZWFmT25MaW5lKCkgJiYgYm94LT5uZXh0TGVhZk9uTGluZSgpLT5pc0xpbmVCcmVh
aygpKSkKKyAgICAgICAgICAgIGlmICgoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYXJldE9mZnNl
dCkgPT0gY2FyZXRNYXhPZmZzZXQpIF4gKGFmZmluaXR5ID09IERPV05TVFJFQU0pKQorICAgICAg
ICAgICAgICAgIHx8ICgoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhcmV0T2Zmc2V0KSA9PSBjYXJl
dE1pbk9mZnNldCkgXiAoYWZmaW5pdHkgPT0gVVBTVFJFQU0pKQorICAgICAgICAgICAgICAgIHx8
IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FyZXRPZmZzZXQpID09IGNhcmV0TWF4T2Zmc2V0ICYm
IGJveC0+bmV4dExlYWZPbkxpbmUoKSAmJiBib3gtPm5leHRMZWFmT25MaW5lKCktPmlzTGluZUJy
ZWFrKCkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYW5kaWRhdGUg
PSBib3g7CkBAIC0xNDc4LDcgKzE0NzgsNyBAQCBib29sIFBvc2l0aW9uOjplcXVhbHMoY29uc3Qg
UG9zaXRpb24mIG90aGVyKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIG1fYW5jaG9yTm9kZSA9
PSBvdGhlci5tX2FuY2hvck5vZGUgJiYgIW1fb2Zmc2V0OwogICAgICAgICBjYXNlIFBvc2l0aW9u
SXNBZnRlckNoaWxkcmVuOgogICAgICAgICAgICAgQVNTRVJUKCFpczxUZXh0Pigqb3RoZXIubV9h
bmNob3JOb2RlKSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9hbmNob3JOb2RlID09IG90aGVyLm1f
YW5jaG9yTm9kZSAmJiBtX29mZnNldCA9PSBzdGF0aWNfY2FzdDxpbnQ+KG90aGVyLm1fYW5jaG9y
Tm9kZS0+Y291bnRDaGlsZE5vZGVzKCkpOworICAgICAgICAgICAgcmV0dXJuIG1fYW5jaG9yTm9k
ZSA9PSBvdGhlci5tX2FuY2hvck5vZGUgJiYgbV9vZmZzZXQgPT0gb3RoZXIubV9hbmNob3JOb2Rl
LT5jb3VudENoaWxkTm9kZXMoKTsKICAgICAgICAgY2FzZSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNo
b3I6CiAgICAgICAgICAgICByZXR1cm4gbV9hbmNob3JOb2RlID09IG90aGVyLm1fYW5jaG9yTm9k
ZSAmJiBtX29mZnNldCA9PSBvdGhlci5tX29mZnNldDsKICAgICAgICAgY2FzZSBQb3NpdGlvbklz
QmVmb3JlQW5jaG9yOgpAQCAtMTU5OCw2ICsxNTk4LDEyIEBAIFBvc2l0aW9uIGNyZWF0ZUxlZ2Fj
eUVkaXRpbmdQb3NpdGlvbihjb25zdCBCb3VuZGFyeVBvaW50JiBwb2ludCkKICAgICByZXR1cm4g
Y3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHBvaW50LmNvbnRhaW5lci5wdHIoKSwgcG9pbnQu
b2Zmc2V0KTsKIH0KIAorQm91bmRhcnlQb2ludCBtYWtlQm91bmRhcnlQb2ludChjb25zdCBQb3Np
dGlvbiYgcG9zaXRpb24pCit7CisgICAgQVNTRVJUKHBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSk7
CisgICAgcmV0dXJuIHsgKnBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHBvc2l0aW9uLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkgfTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9zaXRpb24uaAppbmRleCA2NGMyZDE4ZTBlMWNjOTI0YWEzZTJjMzkwOThhM2FiNDU0M2Vm
ZmFhLi40N2MwNWM3MDhkNzk2MDhmNmE3MzY3ZmJkNDNhODQxODkwZGIzNTI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UG9zaXRpb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZv
ciBjcmVhdGluZyBvZmZzZXQgcG9zaXRpb25zOgogICAgIC8vIEZJWE1FOiBUaGlzIGNvbnN0cnVj
dG9yIHNob3VsZCBldmVudHVhbGx5IGdvIGF3YXkuIFNlZSBidWcgNjMwNDAuCi0gICAgV0VCQ09S
RV9FWFBPUlQgUG9zaXRpb24oTm9kZSogYW5jaG9yTm9kZSwgaW50IG9mZnNldCwgQW5jaG9yVHlw
ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUG9zaXRpb24oTm9kZSogYW5jaG9yTm9kZSwgdW5zaWdu
ZWQgb2Zmc2V0LCBBbmNob3JUeXBlKTsKIAogICAgIEFuY2hvclR5cGUgYW5jaG9yVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFuY2hvclR5cGU+KG1fYW5jaG9yVHlwZSk7IH0KIApA
QCAtMTIxLDggKzEyMSw4IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIHNob3VsZCBvbmx5IGJl
IHVzZWQgZm9yIFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciBwb3NpdGlvbnMsIHVubGVzcwogICAg
IC8vIHRoZSBwb3NpdGlvbiBpcyBhIGxlZ2FjeSBlZGl0aW5nIHBvc2l0aW9uLgotICAgIHZvaWQg
bW92ZVRvUG9zaXRpb24oTm9kZSogYW5jaG9yTm9kZSwgaW50IG9mZnNldCk7Ci0gICAgdm9pZCBt
b3ZlVG9PZmZzZXQoaW50IG9mZnNldCk7CisgICAgdm9pZCBtb3ZlVG9Qb3NpdGlvbihOb2RlKiBh
bmNob3JOb2RlLCB1bnNpZ25lZCBvZmZzZXQpOworICAgIHZvaWQgbW92ZVRvT2Zmc2V0KHVuc2ln
bmVkIG9mZnNldCk7CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2FuY2hv
ck5vZGU7IH0KICAgICBib29sIGlzTm90TnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5jaG9yTm9k
ZTsgfQpAQCAtMTM1LDkgKzEzNSw5IEBAIHB1YmxpYzoKICAgICAvLyB1c2luZyBjb21wb3NlZCBj
aGFyYWN0ZXJzLCB0aGUgcmVzdWx0IG1heSBiZSBpbnNpZGUgYSBzaW5nbGUgdXNlci12aXNpYmxl
IGNoYXJhY3RlciBpZiBhIGxpZ2F0dXJlIGlzIGZvcm1lZC4KICAgICBXRUJDT1JFX0VYUE9SVCBQ
b3NpdGlvbiBwcmV2aW91cyhQb3NpdGlvbk1vdmVUeXBlID0gQ29kZVBvaW50KSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBQb3NpdGlvbiBuZXh0KFBvc2l0aW9uTW92ZVR5cGUgPSBDb2RlUG9p
bnQpIGNvbnN0OwotICAgIHN0YXRpYyBpbnQgdW5jaGVja2VkUHJldmlvdXNPZmZzZXQoY29uc3Qg
Tm9kZSosIGludCBjdXJyZW50KTsKLSAgICBzdGF0aWMgaW50IHVuY2hlY2tlZFByZXZpb3VzT2Zm
c2V0Rm9yQmFja3dhcmREZWxldGlvbihjb25zdCBOb2RlKiwgaW50IGN1cnJlbnQpOwotICAgIHN0
YXRpYyBpbnQgdW5jaGVja2VkTmV4dE9mZnNldChjb25zdCBOb2RlKiwgaW50IGN1cnJlbnQpOwor
ICAgIHN0YXRpYyBpbnQgdW5jaGVja2VkUHJldmlvdXNPZmZzZXQoY29uc3QgTm9kZSosIHVuc2ln
bmVkIGN1cnJlbnQpOworICAgIHN0YXRpYyBpbnQgdW5jaGVja2VkUHJldmlvdXNPZmZzZXRGb3JC
YWNrd2FyZERlbGV0aW9uKGNvbnN0IE5vZGUqLCB1bnNpZ25lZCBjdXJyZW50KTsKKyAgICBzdGF0
aWMgaW50IHVuY2hlY2tlZE5leHRPZmZzZXQoY29uc3QgTm9kZSosIHVuc2lnbmVkIGN1cnJlbnQp
OwogCiAgICAgLy8gVGhlc2UgY2FuIGJlIGVpdGhlciBpbnNpZGUgb3IganVzdCBiZWZvcmUvYWZ0
ZXIgdGhlIG5vZGUsIGRlcGVuZGluZyBvbgogICAgIC8vIGlmIHRoZSBub2RlIGlzIGlnbm9yZWQg
YnkgZWRpdGluZyBvciBub3QuCkBAIC0yMDYsMTkgKzIwNiw1MiBAQCBwcml2YXRlOgogICAgIFBv
c2l0aW9uIHByZXZpb3VzQ2hhcmFjdGVyUG9zaXRpb24oRUFmZmluaXR5KSBjb25zdDsKICAgICBQ
b3NpdGlvbiBuZXh0Q2hhcmFjdGVyUG9zaXRpb24oRUFmZmluaXR5KSBjb25zdDsKIAotICAgIHN0
YXRpYyBBbmNob3JUeXBlIGFuY2hvclR5cGVGb3JMZWdhY3lFZGl0aW5nUG9zaXRpb24oTm9kZSog
YW5jaG9yTm9kZSwgaW50IG9mZnNldCk7CisgICAgc3RhdGljIEFuY2hvclR5cGUgYW5jaG9yVHlw
ZUZvckxlZ2FjeUVkaXRpbmdQb3NpdGlvbihOb2RlKiBhbmNob3JOb2RlLCB1bnNpZ25lZCBvZmZz
ZXQpOwogCiAgICAgUmVmUHRyPE5vZGU+IG1fYW5jaG9yTm9kZTsKICAgICAvLyBtX29mZnNldCBj
YW4gYmUgdGhlIG9mZnNldCBpbnNpZGUgbV9hbmNob3JOb2RlLCBvciBpZiBlZGl0aW5nSWdub3Jl
c0NvbnRlbnQobV9hbmNob3JOb2RlKQogICAgIC8vIHJldHVybnMgdHJ1ZSwgdGhlbiBvdGhlciBw
bGFjZXMgaW4gZWRpdGluZyB3aWxsIHRyZWF0IG1fb2Zmc2V0ID09IDAgYXMgImJlZm9yZSB0aGUg
YW5jaG9yIgogICAgIC8vIGFuZCBtX29mZnNldCA+IDAgYXMgImFmdGVyIHRoZSBhbmNob3Igbm9k
ZSIuICBTZWUgcGFyZW50QW5jaG9yZWRFcXVpdmFsZW50IGZvciBtb3JlIGluZm8uCi0gICAgaW50
IG1fb2Zmc2V0IHsgMCB9OworICAgIHVuc2lnbmVkIG1fb2Zmc2V0IHsgMCB9OwogICAgIHVuc2ln
bmVkIG1fYW5jaG9yVHlwZSA6IDM7CiAgICAgYm9vbCBtX2lzTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
IDogMTsKIH07CiAKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0
aW9uJik7Citib29sIG9wZXJhdG9yIT0oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYp
OworYm9vbCBvcGVyYXRvcjwoY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOworYm9v
bCBvcGVyYXRvcj4oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOworYm9vbCBvcGVy
YXRvcj49KGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKK2Jvb2wgb3BlcmF0b3I8
PShjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7CisKKy8vIEZJWE1FOiBDb25zaWRl
ciByZW5hbWluZyB0aGlzIHRvICJtYWtlIiBpbnN0ZWFkIG9mICJjcmVhdGUiIHNpbmNlIHdlIG5v
cm1hbGx5IHVzZSAiY3JlYXRlIiBmb3IgZnVuY3Rpb25zIHRoYXQgYWxsb2NhdGUgaGVhcCBvYmpl
Y3RzLgorUG9zaXRpb24gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKE5vZGUqLCB1bnNpZ25l
ZCBvZmZzZXQpOwogUG9zaXRpb24gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGNvbnN0IEJv
dW5kYXJ5UG9pbnQmKTsKIAorV0VCQ09SRV9FWFBPUlQgQm91bmRhcnlQb2ludCBtYWtlQm91bmRh
cnlQb2ludChjb25zdCBQb3NpdGlvbiYpOworCitQb3NpdGlvbiBwb3NpdGlvbkluUGFyZW50QmVm
b3JlTm9kZShOb2RlKik7CitQb3NpdGlvbiBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKE5vZGUq
KTsKKworLy8gcG9zaXRpb25CZWZvcmVOb2RlIGFuZCBwb3NpdGlvbkFmdGVyTm9kZSByZXR1cm4g
bmVpZ2hib3ItYW5jaG9yZWQgcG9zaXRpb25zLCBjb25zdHJ1Y3Rpb24gaXMgTygxKQorUG9zaXRp
b24gcG9zaXRpb25CZWZvcmVOb2RlKE5vZGUqIGFuY2hvck5vZGUpOworUG9zaXRpb24gcG9zaXRp
b25BZnRlck5vZGUoTm9kZSogYW5jaG9yTm9kZSk7CisKK2ludCBsYXN0T2Zmc2V0SW5Ob2RlKE5v
ZGUqKTsKKworLy8gZmlyc3RQb3NpdGlvbkluTm9kZSBhbmQgbGFzdFBvc2l0aW9uSW5Ob2RlIHJl
dHVybiBwYXJlbnQtYW5jaG9yZWQgcG9zaXRpb25zLCBsYXN0UG9zaXRpb25Jbk5vZGUgY29uc3Ry
dWN0aW9uIGlzIE8obikgZHVlIHRvIGNvdW50Q2hpbGROb2RlcygpCitQb3NpdGlvbiBmaXJzdFBv
c2l0aW9uSW5Ob2RlKE5vZGUqIGFuY2hvck5vZGUpOworUG9zaXRpb24gbGFzdFBvc2l0aW9uSW5O
b2RlKE5vZGUqIGFuY2hvck5vZGUpOworCitpbnQgbWluT2Zmc2V0Rm9yTm9kZShOb2RlKiBhbmNo
b3JOb2RlLCB1bnNpZ25lZCBvZmZzZXQpOworYm9vbCBvZmZzZXRJc0JlZm9yZUxhc3ROb2RlT2Zm
c2V0KHVuc2lnbmVkIG9mZnNldCwgTm9kZSogYW5jaG9yTm9kZSk7CisKK1JlZlB0cjxOb2RlPiBj
b21tb25TaGFkb3dJbmNsdWRpbmdBbmNlc3Rvcihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0
aW9uJik7CisKK1dURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBj
b25zdCBQb3NpdGlvbiYpOworCisvLyBpbmxpbmVzCisKIGlubGluZSBQb3NpdGlvbiBjcmVhdGVM
ZWdhY3lFZGl0aW5nUG9zaXRpb24oTm9kZSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0KQogewogICAg
IHJldHVybiB7IG5vZGUsIG9mZnNldCwgUG9zaXRpb246OkxlZ2FjeUVkaXRpbmdQb3NpdGlvbkZs
YWc6Ok9uIH07CkBAIC0yNjAsOSArMjkzLDYgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25z
dCBQb3NpdGlvbiYgYSwgY29uc3QgUG9zaXRpb24mIGIpCiAgICAgcmV0dXJuICFhLmlzTnVsbCgp
ICYmICFiLmlzTnVsbCgpICYmIChhID09IGIgfHwgYSA8IGIpOwogfQogCi1Qb3NpdGlvbiBwb3Np
dGlvbkluUGFyZW50QmVmb3JlTm9kZShOb2RlKik7Ci1Qb3NpdGlvbiBwb3NpdGlvbkluUGFyZW50
QWZ0ZXJOb2RlKE5vZGUqKTsKLQogLy8gcG9zaXRpb25CZWZvcmVOb2RlIGFuZCBwb3NpdGlvbkFm
dGVyTm9kZSByZXR1cm4gbmVpZ2hib3ItYW5jaG9yZWQgcG9zaXRpb25zLCBjb25zdHJ1Y3Rpb24g
aXMgTygxKQogaW5saW5lIFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTm9kZShOb2RlKiBhbmNob3JO
b2RlKQogewpAQCAtMjc4LDcgKzMwOCw3IEBAIGlubGluZSBQb3NpdGlvbiBwb3NpdGlvbkFmdGVy
Tm9kZShOb2RlKiBhbmNob3JOb2RlKQogCiBpbmxpbmUgaW50IGxhc3RPZmZzZXRJbk5vZGUoTm9k
ZSogbm9kZSkKIHsKLSAgICByZXR1cm4gbm9kZS0+aXNDaGFyYWN0ZXJEYXRhTm9kZSgpID8gbm9k
ZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCkgOiBzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPmNvdW50Q2hp
bGROb2RlcygpKTsKKyAgICByZXR1cm4gbm9kZS0+aXNDaGFyYWN0ZXJEYXRhTm9kZSgpID8gbm9k
ZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCkgOiBub2RlLT5jb3VudENoaWxkTm9kZXMoKTsKIH0KIAog
Ly8gZmlyc3RQb3NpdGlvbkluTm9kZSBhbmQgbGFzdFBvc2l0aW9uSW5Ob2RlIHJldHVybiBwYXJl
bnQtYW5jaG9yZWQgcG9zaXRpb25zLCBsYXN0UG9zaXRpb25Jbk5vZGUgY29uc3RydWN0aW9uIGlz
IE8obikgZHVlIHRvIGNvdW50Q2hpbGROb2RlcygpCkBAIC0yOTYsMjQgKzMyNiwyNCBAQCBpbmxp
bmUgUG9zaXRpb24gbGFzdFBvc2l0aW9uSW5Ob2RlKE5vZGUqIGFuY2hvck5vZGUpCiAgICAgcmV0
dXJuIFBvc2l0aW9uKGFuY2hvck5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJDaGlsZHJl
bik7CiB9CiAKLWlubGluZSBpbnQgbWluT2Zmc2V0Rm9yTm9kZShOb2RlKiBhbmNob3JOb2RlLCBp
bnQgb2Zmc2V0KQoraW5saW5lIGludCBtaW5PZmZzZXRGb3JOb2RlKE5vZGUqIGFuY2hvck5vZGUs
IHVuc2lnbmVkIG9mZnNldCkKIHsKICAgICBpZiAoYW5jaG9yTm9kZS0+aXNDaGFyYWN0ZXJEYXRh
Tm9kZSgpKQotICAgICAgICByZXR1cm4gc3RkOjptaW4ob2Zmc2V0LCBhbmNob3JOb2RlLT5tYXhD
aGFyYWN0ZXJPZmZzZXQoKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1pbjx1bnNpZ25lZD4ob2Zm
c2V0LCBhbmNob3JOb2RlLT5tYXhDaGFyYWN0ZXJPZmZzZXQoKSk7CiAKLSAgICBpbnQgbmV3T2Zm
c2V0ID0gMDsKKyAgICB1bnNpZ25lZCBuZXdPZmZzZXQgPSAwOwogICAgIGZvciAoTm9kZSogbm9k
ZSA9IGFuY2hvck5vZGUtPmZpcnN0Q2hpbGQoKTsgbm9kZSAmJiBuZXdPZmZzZXQgPCBvZmZzZXQ7
IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQogICAgICAgICBuZXdPZmZzZXQrKzsKICAgICAK
ICAgICByZXR1cm4gbmV3T2Zmc2V0OwogfQogCi1pbmxpbmUgYm9vbCBvZmZzZXRJc0JlZm9yZUxh
c3ROb2RlT2Zmc2V0KGludCBvZmZzZXQsIE5vZGUqIGFuY2hvck5vZGUpCitpbmxpbmUgYm9vbCBv
ZmZzZXRJc0JlZm9yZUxhc3ROb2RlT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCwgTm9kZSogYW5jaG9y
Tm9kZSkKIHsKICAgICBpZiAoYW5jaG9yTm9kZS0+aXNDaGFyYWN0ZXJEYXRhTm9kZSgpKQotICAg
ICAgICByZXR1cm4gb2Zmc2V0IDwgYW5jaG9yTm9kZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCk7Cisg
ICAgICAgIHJldHVybiBvZmZzZXQgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYW5jaG9yTm9kZS0+
bWF4Q2hhcmFjdGVyT2Zmc2V0KCkpOwogCi0gICAgaW50IGN1cnJlbnRPZmZzZXQgPSAwOworICAg
IHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQgPSAwOwogICAgIGZvciAoTm9kZSogbm9kZSA9IGFuY2hv
ck5vZGUtPmZpcnN0Q2hpbGQoKTsgbm9kZSAmJiBjdXJyZW50T2Zmc2V0IDwgb2Zmc2V0OyBub2Rl
ID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgY3VycmVudE9mZnNldCsrOwogICAgIApA
QCAtMzIxLDEwICszNTEsNiBAQCBpbmxpbmUgYm9vbCBvZmZzZXRJc0JlZm9yZUxhc3ROb2RlT2Zm
c2V0KGludCBvZmZzZXQsIE5vZGUqIGFuY2hvck5vZGUpCiAgICAgcmV0dXJuIG9mZnNldCA8IGN1
cnJlbnRPZmZzZXQ7CiB9CiAKLVJlZlB0cjxOb2RlPiBjb21tb25TaGFkb3dJbmNsdWRpbmdBbmNl
c3Rvcihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7Ci0KLVdURjo6VGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBQb3NpdGlvbiYpOwotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlLmNwcAppbmRleCA5YzExMzQwNWUyNzc1Y2Y3ZjA1YzdmOGFjM2ZhMTgwMGIzZDQ1OTdmLi40
NWMxYmNmZDAyYzE5OGNkOGI5OTBlY2EwMWUzZjBlNmEzOTNiNWZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5j
cHAKQEAgLTE4NjksNiArMTg2OSwxOCBAQCBGbG9hdFJlY3QgUmFuZ2U6OmFic29sdXRlQm91bmRp
bmdSZWN0KE9wdGlvblNldDxCb3VuZGluZ1JlY3RCZWhhdmlvcj4gcmVjdE9wdGlvbgogICAgIHJl
dHVybiBib3VuZGluZ1JlY3QoQ29vcmRpbmF0ZVNwYWNlOjpBYnNvbHV0ZSwgcmVjdE9wdGlvbnMp
OwogfQogCitSZWY8UmFuZ2U+IGNyZWF0ZUxpdmVSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmFu
Z2UpCit7CisgICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUocmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKSwg
cmFuZ2Uuc3RhcnQuY29udGFpbmVyLnB0cigpLCByYW5nZS5zdGFydC5vZmZzZXQsIHJhbmdlLmVu
ZC5jb250YWluZXIucHRyKCksIHJhbmdlLmVuZC5vZmZzZXQpOworfQorCitSZWZQdHI8UmFuZ2U+
IGNyZWF0ZUxpdmVSYW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQorewor
ICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjcmVh
dGVMaXZlUmFuZ2UoKnJhbmdlKTsKK30KKwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdU
Rjo6VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJhbmdlQm91bmRhcnlQb2ludCYgcikKIHsKICAgICBy
ZXR1cm4gdHMgPDwgci50b1Bvc2l0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCmluZGV4IGI0OTNjN2NkNDZk
NTUxOTU5MGVmZDk3ZTVkZWM3YjljNDljNDJiNmYuLjY5Y2YyYjk3MmVkYThlZjYyM2M3NDRkZTkw
MzNjYmE0NmZhM2Q3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCkBAIC0zLDcgKzMsNyBAQAogICogKEMpIDIw
MDAgR3VubnN0ZWluIEx5ZSAoZ3VubnN0ZWluQG5ldGNvbS5ubykKICAqIChDKSAyMDAwIEZyZWRl
cmlrIEhvbGxqZW4gKGZyZWRlcmlrLmhvbGxqZW5AaGlnLm5vKQogICogKEMpIDIwMDEgUGV0ZXIg
S2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTI3LDI2ICsyNywyMyBAQAogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJSYW5nZUJvdW5kYXJ5UG9pbnQuaCIK
LSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250YWluZXJOb2RlOwogY2xhc3MgRE9NUmVjdDsK
IGNsYXNzIERPTVJlY3RMaXN0OwotY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudEZyYWdt
ZW50OwogY2xhc3MgRmxvYXRRdWFkOwotY2xhc3MgTm9kZTsKIGNsYXNzIE5vZGVXaXRoSW5kZXg7
CiBjbGFzcyBSZW5kZXJUZXh0OwogY2xhc3MgU2VsZWN0aW9uUmVjdDsKIGNsYXNzIFRleHQ7CiBj
bGFzcyBWaXNpYmxlUG9zaXRpb247CiAKK3N0cnVjdCBTaW1wbGVSYW5nZTsKKworLy8gRklYTUU6
IFJlbmFtZSB0byBMaXZlUmFuZ2UsIHdoaWxlIGxlYXZpbmcgdGhlIERPTS1leHBvc2VkIG5hbWUg
YXMgUmFuZ2UuCiBjbGFzcyBSYW5nZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJhbmdlPiB7CiBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxSYW5nZT4gY3JlYXRlKERvY3VtZW50
Jik7CkBAIC0xODUsMTUgKzE4MiwyMCBAQCBXRUJDT1JFX0VYUE9SVCBSZWY8UmFuZ2U+IHJhbmdl
T2ZDb250ZW50cyhOb2RlJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIGFyZVJhbmdlc0VxdWFsKGNv
bnN0IFJhbmdlKiwgY29uc3QgUmFuZ2UqKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmFuZ2VzT3Zl
cmxhcChjb25zdCBSYW5nZSosIGNvbnN0IFJhbmdlKik7CiAKK1dFQkNPUkVfRVhQT1JUIFJlZjxS
YW5nZT4gY3JlYXRlTGl2ZVJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJik7CitXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8UmFuZ2U+IGNyZWF0ZUxpdmVSYW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4mKTsKKworYm9vbCBkb2N1bWVudE9yZGVyQ29tcGFyYXRvcihjb25zdCBOb2RlKiwgY29uc3Qg
Tm9kZSopOworCitXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwg
Y29uc3QgUmFuZ2VCb3VuZGFyeVBvaW50Jik7CitXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
V1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgUmFuZ2UmKTsKKwogaW5saW5lIGJvb2wgZG9jdW1lbnRP
cmRlckNvbXBhcmF0b3IoY29uc3QgTm9kZSogYSwgY29uc3QgTm9kZSogYikKIHsKICAgICByZXR1
cm4gUmFuZ2U6OmNvbXBhcmVCb3VuZGFyeVBvaW50cyhjb25zdF9jYXN0PE5vZGUqPihhKSwgMCwg
Y29uc3RfY2FzdDxOb2RlKj4oYiksIDApLnJlbGVhc2VSZXR1cm5WYWx1ZSgpIDwgMDsKIH0KLSAg
ICAKLVdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBS
YW5nZUJvdW5kYXJ5UG9pbnQmKTsKLVdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRl
eHRTdHJlYW0mLCBjb25zdCBSYW5nZSYpOwogCi19IC8vIG5hbWVzcGFjZQorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQogLy8gT3V0c2lkZSB0aGUg
V2ViQ29yZSBuYW1lc3BhY2UgZm9yIGVhc2Ugb2YgaW52b2NhdGlvbiBmcm9tIHRoZSBkZWJ1Z2dl
ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwCmluZGV4IDA5ZGY5OWM4NWJmMWU4NTcxZGJl
YWE1OWFjZGU4NWEwNTVlMzk3NjcuLmI0ZmUyYjg1ZDNhZjg1Y2I4MzA3OGQ3YTllNTEyMTdmMTQw
NTAzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcApAQCAtNTMsMTYgKzUzLDQgQEAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNpbXBsZVJhbmdlJiBhLCBjb25zdCBTaW1wbGVSYW5nZSYg
YikKICAgICByZXR1cm4gYS5zdGFydCA9PSBiLnN0YXJ0ICYmIGEuZW5kID09IGIuZW5kOwogfQog
Ci1SZWY8UmFuZ2U+IGNyZWF0ZUxpdmVSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCi17
Ci0gICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUocmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKSwgcmFuZ2Uu
c3RhcnQuY29udGFpbmVyLnB0cigpLCByYW5nZS5zdGFydC5vZmZzZXQsIHJhbmdlLmVuZC5jb250
YWluZXIucHRyKCksIHJhbmdlLmVuZC5vZmZzZXQpOwotfQotCi1SZWZQdHI8UmFuZ2U+IGNyZWF0
ZUxpdmVSYW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQotewotICAgIGlm
ICghcmFuZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBjcmVhdGVMaXZl
UmFuZ2UoKnJhbmdlKTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Np
bXBsZVJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaAppbmRleCA2NjVj
OWI4YTQ5NTczYmY1ZWQ3YmRmYmE4OTM5NzEwOTIxMzkzYTU5Li4xMjdmMmYxODk0NjRjMTBjNDlh
NTU0NDg2NmVhYzQ5NGQ0ZTg4YjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2lt
cGxlUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaApAQCAtNDMs
MjUgKzQzLDE2IEBAIHN0cnVjdCBTaW1wbGVSYW5nZSB7CiAgICAgYm9vbCBjb2xsYXBzZWQoKSBj
b25zdCB7IHJldHVybiBzdGFydCA9PSBlbmQ7IH0KIAogICAgIFNpbXBsZVJhbmdlKGNvbnN0IEJv
dW5kYXJ5UG9pbnQmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7Ci0gICAgU2ltcGxlUmFuZ2UoQm91
bmRhcnlQb2ludCYmLCBCb3VuZGFyeVBvaW50JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFNpbXBs
ZVJhbmdlKEJvdW5kYXJ5UG9pbnQmJiwgQm91bmRhcnlQb2ludCYmKTsKIAorICAgIC8vIENvbnZl
bmllbmNlIG92ZXJsb2FkcyB0byBoZWxwIHdpdGggdHJhbnNpdGlvbiBmcm9tIHVzaW5nIGEgbG90
IG9mIGxpdmUgcmFuZ2VzLgorICAgIC8vIEZJWE1FOiBNb3ZlIHRvIHRoZSBSYW5nZSBjbGFzcyBo
ZWFkZXIgYXMgZWl0aGVyIG1ha2VTaW1wbGVSYW5nZSBvciBSYW5nZTo6b3BlcmF0b3IgU2ltcGxl
UmFuZ2UuCiAgICAgV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UoY29uc3QgUmFuZ2UmKTsKLQot
ICAgIC8vIENvbnZlbmllbmNlIG92ZXJsb2FkcyB0byBoZWxwIHdpdGggdHJhbnNpdGlvbiBmcm9t
IHVzaW5nIGEgbG90IG9mIGxpdmUgcmFuZ2VzLiBDb25zaWRlciByZW1vdmluZyB0aGVzZSBldmVu
dHVhbGx5LgotICAgIFNpbXBsZVJhbmdlKGNvbnN0IFJhbmdlKik7IC8vIENyYXNoZXMgaWYgcGFz
c2VkIGEgbnVsbHB0ci4KICAgICBTaW1wbGVSYW5nZShjb25zdCBSZWY8UmFuZ2U+Jik7CiB9Owog
CiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1wbGVSYW5nZSYp
OwogCi1XRUJDT1JFX0VYUE9SVCBSZWY8UmFuZ2U+IGNyZWF0ZUxpdmVSYW5nZShjb25zdCBTaW1w
bGVSYW5nZSYpOwotV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFJhbmdlPiBjcmVhdGVMaXZlUmFuZ2Uo
Y29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jik7Ci0KLWlubGluZSBTaW1wbGVSYW5nZTo6U2lt
cGxlUmFuZ2UoY29uc3QgUmFuZ2UqIHJhbmdlKQotICAgIDogU2ltcGxlUmFuZ2UoKnJhbmdlKQot
ewotfQotCiBpbmxpbmUgU2ltcGxlUmFuZ2U6OlNpbXBsZVJhbmdlKGNvbnN0IFJlZjxSYW5nZT4m
IHJhbmdlKQogICAgIDogU2ltcGxlUmFuZ2UocmFuZ2UuZ2V0KCkpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IDUyZTZlNGUwYjE3ZGRmOTBk
ZDFiZWI1ZWRkOTFjMDAxNWRhMzI5NzQuLmVhNmYyMDE1MWQ5YzllMjIyZmI4OTFmNDExNDFmNzVi
M2M5Yzk4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
Y3BwCkBAIC0xMjY2LDggKzEyNjYsNyBAQCBib29sIEFwcGx5U3R5bGVDb21tYW5kOjppc1ZhbGlk
Q2FyZXRQb3NpdGlvbkluVGV4dE5vZGUoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQogYm9vbCBB
cHBseVN0eWxlQ29tbWFuZDo6bWVyZ2VTdGFydFdpdGhQcmV2aW91c0lmSWRlbnRpY2FsKGNvbnN0
IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKIHsKICAgICBhdXRvKiBzdGFy
dE5vZGUgPSBzdGFydC5jb250YWluZXJOb2RlKCk7Ci0gICAgaW50IHN0YXJ0T2Zmc2V0ID0gc3Rh
cnQuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpOwotICAgIGlmIChzdGFydE9mZnNldCkK
KyAgICBpZiAoc3RhcnQuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaXNBdG9taWNOb2RlKHN0YXJ0Tm9kZSkpIHsKQEAgLTEy
ODksMTAgKzEyODgsMTEgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6bWVyZ2VTdGFydFdpdGhQ
cmV2aW91c0lmSWRlbnRpY2FsKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwKICAgICBBU1NFUlQoc3Rh
cnRDaGlsZCk7CiAgICAgbWVyZ2VJZGVudGljYWxFbGVtZW50cyhwcmV2aW91c0VsZW1lbnQsIGVs
ZW1lbnQpOwogCi0gICAgaW50IHN0YXJ0T2Zmc2V0QWRqdXN0bWVudCA9IHN0YXJ0Q2hpbGQtPmNv
bXB1dGVOb2RlSW5kZXgoKTsKLSAgICBpbnQgZW5kT2Zmc2V0QWRqdXN0bWVudCA9IHN0YXJ0Tm9k
ZSA9PSBlbmQuZGVwcmVjYXRlZE5vZGUoKSA/IHN0YXJ0T2Zmc2V0QWRqdXN0bWVudCA6IDA7Ci0g
ICAgdXBkYXRlU3RhcnRFbmQoeyBzdGFydE5vZGUsIHN0YXJ0T2Zmc2V0QWRqdXN0bWVudCwgUG9z
aXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcn0sCi0gICAgICAgIHsgZW5kLmRlcHJlY2F0
ZWROb2RlKCksIGVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpICsgZW5kT2Zmc2V0QWRqdXN0
bWVudCwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciB9KTsKKyAgICAvLyBGSVhN
RTogSW5jb25zaXN0ZW50IHRoYXQgd2UgdXNlIGNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUg
Zm9yIHN0YXJ0LCBidXQgZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQgZm9yIGVuZC4KKyAgICB1bnNp
Z25lZCBzdGFydE9mZnNldCA9IHN0YXJ0Q2hpbGQtPmNvbXB1dGVOb2RlSW5kZXgoKTsKKyAgICB1
bnNpZ25lZCBlbmRPZmZzZXQgPSBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSArIChzdGFy
dE5vZGUgPT0gZW5kLmRlcHJlY2F0ZWROb2RlKCkgPyBzdGFydE9mZnNldCA6IDApOworICAgIHVw
ZGF0ZVN0YXJ0RW5kKHsgc3RhcnROb2RlLCBzdGFydE9mZnNldCwgUG9zaXRpb246OlBvc2l0aW9u
SXNPZmZzZXRJbkFuY2hvciB9LAorICAgICAgICB7IGVuZC5kZXByZWNhdGVkTm9kZSgpLCBlbmRP
ZmZzZXQsIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IgfSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTEzMjIsNyArMTMyMiw3IEBAIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6
Om1lcmdlRW5kV2l0aE5leHRJZklkZW50aWNhbChjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0
CiAgICAgbWVyZ2VJZGVudGljYWxFbGVtZW50cyhlbGVtZW50LCBuZXh0RWxlbWVudCk7CiAKICAg
ICBib29sIHNob3VsZFVwZGF0ZVN0YXJ0ID0gc3RhcnQuY29udGFpbmVyTm9kZSgpID09IGVuZE5v
ZGU7Ci0gICAgaW50IGVuZE9mZnNldCA9IG5leHRDaGlsZCA/IG5leHRDaGlsZC0+Y29tcHV0ZU5v
ZGVJbmRleCgpIDogbmV4dEVsZW1lbnQuY291bnRDaGlsZE5vZGVzKCk7CisgICAgdW5zaWduZWQg
ZW5kT2Zmc2V0ID0gbmV4dENoaWxkID8gbmV4dENoaWxkLT5jb21wdXRlTm9kZUluZGV4KCkgOiBu
ZXh0RWxlbWVudC5jb3VudENoaWxkTm9kZXMoKTsKICAgICB1cGRhdGVTdGFydEVuZChzaG91bGRV
cGRhdGVTdGFydCA/IFBvc2l0aW9uKCZuZXh0RWxlbWVudCwgc3RhcnQub2Zmc2V0SW5Db250YWlu
ZXJOb2RlKCksIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpIDogc3RhcnQsCiAg
ICAgICAgIHsgJm5leHRFbGVtZW50LCBlbmRPZmZzZXQsIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zm
c2V0SW5BbmNob3IgfSk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
LmNwcAppbmRleCBmZjkxZmUwMDhlZmI5NDVlOGQ0YTZiNWZhZjBiMTZjMDEyNTEzYmMzLi44ZDZi
ZGY0NzhhYmY3YTg5ZWUwNmQxZjBjNWM3MjljMGVhNWE3NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZy5jcHAKQEAgLTUxLDcgKzUxLDYgQEAKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgot
I2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRl
eHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgpAQCAtMTMwOCw3ICsxMzA3
LDcgQEAgSW50UmVjdCBhYnNvbHV0ZUJvdW5kc0ZvckxvY2FsQ2FyZXRSZWN0KFJlbmRlckJsb2Nr
KiByZW5kZXJlckZvckNhcmV0UGFpbnRpbmcsIGMKIEhhc2hTZXQ8UmVmUHRyPEhUTUxJbWFnZUVs
ZW1lbnQ+PiB2aXNpYmxlSW1hZ2VFbGVtZW50c0luUmFuZ2VXaXRoTm9uTG9hZGVkSW1hZ2VzKGNv
bnN0IFJhbmdlJiByYW5nZSkKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50
Pj4gcmVzdWx0OwotICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0ZXJhdG9yKCZyYW5nZSk7ICFpdGVy
YXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkpIHsKKyAgICBmb3IgKFRleHRJdGVyYXRv
ciBpdGVyYXRvcihyYW5nZSk7ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkp
IHsKICAgICAgICAgaWYgKCFpczxIVE1MSW1hZ2VFbGVtZW50PihpdGVyYXRvci5ub2RlKCkpKQog
ICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKaW5kZXggNzQ1
Yjc2MzgxZWUyMDczODA1ZGU3ZmQ0MzIxYjk0MTQxOTM5M2Y5NS4uZGVkNjNkZDNlMjdiYjFhMDlh
MTE5ZGViNjRjNGM3ZDc5MzBhZmI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKQEAgLTM3
LDYgKzM3LDcgQEAgY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50Owog
Y2xhc3MgSFRNTFNwYW5FbGVtZW50OwogY2xhc3MgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ7
CitjbGFzcyBSYW5nZTsKIGNsYXNzIFJlbmRlckJsb2NrOwogY2xhc3MgVmlzaWJsZVBvc2l0aW9u
OwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRl
eCA3ZGY0YWFhYTQwYzg5NmQ4MzY0NzI0NTMyMGM2MjViYTA3ZjQwZDQxLi45ZTE0YWUyNGVhNWE5
NDA4N2UwZGQxZGM1NTg4YzA2NjJkYTM4MGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CkBAIC0zMzEzLDcgKzMzMTMsMTEgQEAgU3RyaW5nIEVkaXRvcjo6c2VsZWN0ZWRUZXh0KFRleHRJ
dGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAogewogICAgIC8vIFdlIHJlbW92ZSAnXDAn
IGNoYXJhY3RlcnMgYmVjYXVzZSB0aGV5IGFyZSBub3QgdmlzaWJseSByZW5kZXJlZCB0byB0aGUg
dXNlci4KICAgICBhdXRvJiBzZWxlY3Rpb24gPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpOwotICAgIHJldHVybiBwbGFpblRleHQoc2VsZWN0aW9uLnN0YXJ0KCksIHNlbGVjdGlvbi5l
bmQoKSwgYmVoYXZpb3IpLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXDAnLCAiIik7CisgICAgYXV0byBz
dGFydCA9IHNlbGVjdGlvbi5zdGFydCgpOworICAgIGF1dG8gZW5kID0gc2VsZWN0aW9uLmVuZCgp
OworICAgIGlmIChzdGFydC5pc051bGwoKSB8fCBzdGFydC5pc09ycGhhbigpIHx8IGVuZC5pc051
bGwoKSB8fCBlbmQuaXNPcnBoYW4oKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cisg
ICAgcmV0dXJuIHBsYWluVGV4dChTaW1wbGVSYW5nZSB7IG1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0
KSwgbWFrZUJvdW5kYXJ5UG9pbnQoZW5kKSB9LCBiZWhhdmlvcikucmVwbGFjZVdpdGhMaXRlcmFs
KCdcMCcsICIiKTsKIH0KIAogUmVmUHRyPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+IEVkaXRvcjo6
aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUmIHNpemUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHAKaW5kZXggYjIyMzQzYjAwOWQzN2Q1NTI5NjE2
NzI5NmNlMjRlNjZiYjgxNDY2ZC4uNGI4NGZjNzU2OWVkMWEzMGYxMzI4YmFlNDI3YTUxODJhYzhj
ZWFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hhbmdlLmNwcApAQCAt
MjcsMTAgKzI3LDggQEAKICNpbmNsdWRlICJIVE1MSW50ZXJjaGFuZ2UuaCIKIAogI2luY2x1ZGUg
IkVkaXRpbmcuaCIKLSNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVy
VGV4dC5oIgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUv
Q2hhcmFjdGVyTmFtZXMuaD4KIApAQCAtNjIsOSArNjAsNyBAQCBTdHJpbmcgY29udmVydEhUTUxU
ZXh0VG9JbnRlcmNoYW5nZUZvcm1hdChjb25zdCBTdHJpbmcmIGluLCBjb25zdCBUZXh0KiBub2Rl
KQogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFkZCA9IGNvdW50ICUgMzsKICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKGFkZCkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIDA6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzLmFwcGVuZExpdGVyYWwoY29udmVydGVkU3BhY2VTdHJpbmcpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHMuYXBwZW5kTGl0ZXJhbChjb252ZXJ0ZWRTcGFjZVN0cmluZyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzLmFwcGVuZChjb252ZXJ0ZWRTcGFjZVN0cmluZywgJyAnLCBjb252ZXJ0
ZWRTcGFjZVN0cmluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgPSAzOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKQEAg
LTc2LDE1ICs3MiwxMiBAQCBTdHJpbmcgY29udmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1h
dChjb25zdCBTdHJpbmcmIGluLCBjb25zdCBUZXh0KiBub2RlKQogICAgICAgICAgICAgICAgICAg
ICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSAwKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGF0IHN0YXJ0IG9mIHN0cmluZwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHMuYXBwZW5kTGl0ZXJhbChjb252ZXJ0ZWRTcGFjZVN0cmluZyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzLmFwcGVuZChjb252ZXJ0ZWRTcGFjZVN0cmluZywgJyAnKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaSArIDIgPT0gaW4ubGVuZ3RoKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXQgZW5kIG9mIHN0cmluZwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kTGl0ZXJhbChjb252ZXJ0ZWRTcGFjZVN0cmluZyk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmRMaXRlcmFsKGNvbnZlcnRlZFNw
YWNlU3RyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZChjb252ZXJ0
ZWRTcGFjZVN0cmluZywgY29udmVydGVkU3BhY2VTdHJpbmcpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZExpdGVy
YWwoY29udmVydGVkU3BhY2VTdHJpbmcpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMu
YXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQoY29udmVy
dGVkU3BhY2VTdHJpbmcsICcgJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggZGIyOWI5YmI4MGViMWExNTk1NWUyMzRhOWFk
ZTllNzk4ZGQzMDBiYy4uZTg0NDEyYjI3NjgzNTY2ZjMwM2E2ZDFiOTJlNjdmMzIxMmQ4ZDJmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMzI5LDUxICszMjks
MjggQEAgdm9pZCBUZXh0SXRlcmF0b3JDb3B5YWJsZVRleHQ6OmFwcGVuZFRvU3RyaW5nQnVpbGRl
cihTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb24KIAogLy8gLS0tLS0tLS0KIAotCi1UZXh0SXRl
cmF0b3I6OlRleHRJdGVyYXRvcihQb3NpdGlvbiBzdGFydCwgUG9zaXRpb24gZW5kLCBUZXh0SXRl
cmF0b3JCZWhhdmlvciBiZWhhdmlvcikKLSAgICA6IG1fYmVoYXZpb3IoYmVoYXZpb3IpCitzdGF0
aWMgTm9kZSogZmlyc3ROb2RlKGNvbnN0IEJvdW5kYXJ5UG9pbnQmIHBvaW50KQogewotICAgIGlm
IChzdGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBB
U1NFUlQoY29tcGFyZVBvc2l0aW9ucyhzdGFydCwgZW5kKSA8PSAwKTsKLQotICAgIFJFTEVBU0Vf
QVNTRVJUKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yVHJhdmVyc2VzRmxhdFRyZWUgfHwgc3RhcnQu
dHJlZVNjb3BlKCkgPT0gZW5kLnRyZWVTY29wZSgpKTsKLQotICAgIHN0YXJ0LmRvY3VtZW50KCkt
PnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotCi0gICAgLy8gRklYTUU6
IFVzZSBQb3NpdGlvbiAvIFBvc2l0aW9uSXRlcmF0b3IgaW5zdGVhZCB0byBhdm9pZCBvZmZzZXQg
Y29tcHV0YXRpb24uCi0gICAgbV9zdGFydENvbnRhaW5lciA9IHN0YXJ0LmNvbnRhaW5lck5vZGUo
KTsKLSAgICBtX3N0YXJ0T2Zmc2V0ID0gc3RhcnQuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9k
ZSgpOwotCi0gICAgbV9lbmRDb250YWluZXIgPSBlbmQuY29udGFpbmVyTm9kZSgpOwotICAgIG1f
ZW5kT2Zmc2V0ID0gZW5kLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKLQotICAgIG1f
bm9kZSA9IHN0YXJ0LmZpcnN0Tm9kZSgpLmdldCgpOwotICAgIGlmICghbV9ub2RlKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpbml0KCk7CisgICAgaWYgKHBvaW50LmNvbnRhaW5lci0+aXNDaGFy
YWN0ZXJEYXRhTm9kZSgpKQorICAgICAgICByZXR1cm4gcG9pbnQuY29udGFpbmVyLnB0cigpOwor
ICAgIGlmIChOb2RlKiBjaGlsZCA9IHBvaW50LmNvbnRhaW5lci0+dHJhdmVyc2VUb0NoaWxkQXQo
cG9pbnQub2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIGNoaWxkOworICAgIGlmICghcG9pbnQub2Zm
c2V0KQorICAgICAgICByZXR1cm4gcG9pbnQuY29udGFpbmVyLnB0cigpOworICAgIHJldHVybiBO
b2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbihwb2ludC5jb250YWluZXIpOwogfQog
Ci1UZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcihjb25zdCBSYW5nZSogcmFuZ2UsIFRleHRJdGVy
YXRvckJlaGF2aW9yIGJlaGF2aW9yKQorVGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IoY29uc3Qg
U2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikKICAgICA6
IG1fYmVoYXZpb3IoYmVoYXZpb3IpCiB7Ci0gICAgaWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJu
OworICAgIHJhbmdlLnN0YXJ0LmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKCk7CiAKLSAgICByYW5nZS0+b3duZXJEb2N1bWVudCgpLnVwZGF0ZUxheW91dEln
bm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgIG1fc3RhcnRDb250YWluZXIgPSByYW5nZS5z
dGFydC5jb250YWluZXIucHRyKCk7CisgICAgbV9zdGFydE9mZnNldCA9IHJhbmdlLnN0YXJ0Lm9m
ZnNldDsKKyAgICBtX2VuZENvbnRhaW5lciA9IHJhbmdlLmVuZC5jb250YWluZXIucHRyKCk7Cisg
ICAgbV9lbmRPZmZzZXQgPSByYW5nZS5lbmQub2Zmc2V0OwogCi0gICAgbV9zdGFydENvbnRhaW5l
ciA9ICZyYW5nZS0+c3RhcnRDb250YWluZXIoKTsKLQotICAgIC8vIENhbGxlcnMgc2hvdWxkIGJl
IGhhbmRpbmcgdXMgd2VsbC1mb3JtZWQgcmFuZ2VzLiBJZiB3ZSBkaXNjb3ZlciB0aGF0IHRoaXMg
aXNuJ3QKLSAgICAvLyB0aGUgY2FzZSwgd2UgY291bGQgY29uc2lkZXIgY2hhbmdpbmcgdGhpcyBh
c3NlcnRpb24gdG8gYW4gZWFybHkgcmV0dXJuLgotICAgIEFTU0VSVChyYW5nZS0+Ym91bmRhcnlQ
b2ludHNWYWxpZCgpKTsKLQotICAgIG1fc3RhcnRPZmZzZXQgPSByYW5nZS0+c3RhcnRPZmZzZXQo
KTsKLSAgICBtX2VuZENvbnRhaW5lciA9ICZyYW5nZS0+ZW5kQ29udGFpbmVyKCk7Ci0gICAgbV9l
bmRPZmZzZXQgPSByYW5nZS0+ZW5kT2Zmc2V0KCk7Ci0KLSAgICBtX25vZGUgPSByYW5nZS0+Zmly
c3ROb2RlKCk7CisgICAgbV9ub2RlID0gZmlyc3ROb2RlKHJhbmdlLnN0YXJ0KTsKICAgICBpZiAo
IW1fbm9kZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMTQwLDIzICsxMTE3LDIzIEBAIE5vZGUq
IFRleHRJdGVyYXRvcjo6bm9kZSgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tCiAKLVNpbXBsaWZpZWRC
YWNrd2FyZHNUZXh0SXRlcmF0b3I6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29u
c3QgUmFuZ2UmIHJhbmdlKQorU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6U2ltcGxp
ZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCiB7Ci0g
ICAgcmFuZ2Uub3duZXJEb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0cygpOworICAgIHJhbmdlLnN0YXJ0LmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKCk7CiAKLSAgICBOb2RlKiBzdGFydE5vZGUgPSAmcmFuZ2Uuc3RhcnRD
b250YWluZXIoKTsKLSAgICBOb2RlKiBlbmROb2RlID0gJnJhbmdlLmVuZENvbnRhaW5lcigpOwot
ICAgIGludCBzdGFydE9mZnNldCA9IHJhbmdlLnN0YXJ0T2Zmc2V0KCk7Ci0gICAgaW50IGVuZE9m
ZnNldCA9IHJhbmdlLmVuZE9mZnNldCgpOworICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHJhbmdlLnN0
YXJ0LmNvbnRhaW5lci5wdHIoKTsKKyAgICBOb2RlKiBlbmROb2RlID0gcmFuZ2UuZW5kLmNvbnRh
aW5lci5wdHIoKTsKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHJhbmdlLnN0YXJ0Lm9mZnNl
dDsKKyAgICB1bnNpZ25lZCBlbmRPZmZzZXQgPSByYW5nZS5lbmQub2Zmc2V0OwogCiAgICAgaWYg
KCFzdGFydE5vZGUtPmlzQ2hhcmFjdGVyRGF0YU5vZGUoKSkgewotICAgICAgICBpZiAoc3RhcnRP
ZmZzZXQgPj0gMCAmJiBzdGFydE9mZnNldCA8IHN0YXRpY19jYXN0PGludD4oc3RhcnROb2RlLT5j
b3VudENoaWxkTm9kZXMoKSkpIHsKKyAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0IDwgc3RhcnROb2Rl
LT5jb3VudENoaWxkTm9kZXMoKSkgewogICAgICAgICAgICAgc3RhcnROb2RlID0gc3RhcnROb2Rl
LT50cmF2ZXJzZVRvQ2hpbGRBdChzdGFydE9mZnNldCk7CiAgICAgICAgICAgICBzdGFydE9mZnNl
dCA9IDA7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCFlbmROb2RlLT5pc0NoYXJhY3RlckRh
dGFOb2RlKCkpIHsKLSAgICAgICAgaWYgKGVuZE9mZnNldCA+IDAgJiYgZW5kT2Zmc2V0IDw9IHN0
YXRpY19jYXN0PGludD4oZW5kTm9kZS0+Y291bnRDaGlsZE5vZGVzKCkpKSB7CisgICAgICAgIGlm
IChlbmRPZmZzZXQgPiAwICYmIGVuZE9mZnNldCA8PSBlbmROb2RlLT5jb3VudENoaWxkTm9kZXMo
KSkgewogICAgICAgICAgICAgZW5kTm9kZSA9IGVuZE5vZGUtPnRyYXZlcnNlVG9DaGlsZEF0KGVu
ZE9mZnNldCAtIDEpOwogICAgICAgICAgICAgZW5kT2Zmc2V0ID0gbGFzdE9mZnNldEluTm9kZShl
bmROb2RlKTsKICAgICAgICAgfQpAQCAtMTM5MSwxNSArMTM2OCw4IEBAIFNpbXBsZVJhbmdlIFNp
bXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OnJhbmdlKCkgY29uc3QKIAogLy8gLS0tLS0t
LS0KIAotQ2hhcmFjdGVySXRlcmF0b3I6OkNoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFJhbmdlJiBy
YW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCi0gICAgOiBtX3VuZGVybHlpbmdJ
dGVyYXRvcigmcmFuZ2UsIGJlaGF2aW9yKQotewotICAgIHdoaWxlICghYXRFbmQoKSAmJiAhbV91
bmRlcmx5aW5nSXRlcmF0b3IudGV4dCgpLmxlbmd0aCgpKQotICAgICAgICBtX3VuZGVybHlpbmdJ
dGVyYXRvci5hZHZhbmNlKCk7Ci19Ci0KLUNoYXJhY3Rlckl0ZXJhdG9yOjpDaGFyYWN0ZXJJdGVy
YXRvcihQb3NpdGlvbiBzdGFydCwgUG9zaXRpb24gZW5kLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBi
ZWhhdmlvcikKLSAgICA6IG1fdW5kZXJseWluZ0l0ZXJhdG9yKHN0YXJ0LCBlbmQsIGJlaGF2aW9y
KQorQ2hhcmFjdGVySXRlcmF0b3I6OkNoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdl
JiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCisgICAgOiBtX3VuZGVybHlp
bmdJdGVyYXRvcihyYW5nZSwgYmVoYXZpb3IpCiB7CiAgICAgd2hpbGUgKCFhdEVuZCgpICYmICFt
X3VuZGVybHlpbmdJdGVyYXRvci50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgIG1fdW5kZXJseWlu
Z0l0ZXJhdG9yLmFkdmFuY2UoKTsKQEAgLTE0ODMsNyArMTQ1Myw3IEBAIHN0YXRpYyBSZWY8UmFu
Z2U+IGNoYXJhY3RlclN1YnJhbmdlKERvY3VtZW50JiBkb2N1bWVudCwgQ2hhcmFjdGVySXRlcmF0
b3ImIGl0LCBpCiAgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShTaW1wbGVSYW5nZSB7IHN0YXJ0
LCBlbmQgfSk7CiB9CiAKLUJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjpCYWNrd2FyZHNDaGFy
YWN0ZXJJdGVyYXRvcihjb25zdCBSYW5nZSYgcmFuZ2UpCitCYWNrd2FyZHNDaGFyYWN0ZXJJdGVy
YXRvcjo6QmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3IoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdl
KQogICAgIDogbV91bmRlcmx5aW5nSXRlcmF0b3IocmFuZ2UpCiB7CiAgICAgd2hpbGUgKCFhdEVu
ZCgpICYmICFtX3VuZGVybHlpbmdJdGVyYXRvci50ZXh0KCkubGVuZ3RoKCkpCkBAIC0xNTQ2LDgg
KzE1MTYsOCBAQCB2b2lkIEJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjphZHZhbmNlKGludCBj
b3VudCkKIAogLy8gLS0tLS0tLS0KIAotV29yZEF3YXJlSXRlcmF0b3I6OldvcmRBd2FyZUl0ZXJh
dG9yKGNvbnN0IFJhbmdlJiByYW5nZSkKLSAgICA6IG1fdW5kZXJseWluZ0l0ZXJhdG9yKCZyYW5n
ZSkKK1dvcmRBd2FyZUl0ZXJhdG9yOjpXb3JkQXdhcmVJdGVyYXRvcihjb25zdCBTaW1wbGVSYW5n
ZSYgcmFuZ2UpCisgICAgOiBtX3VuZGVybHlpbmdJdGVyYXRvcihyYW5nZSkKIHsKICAgICBhZHZh
bmNlKCk7IC8vIGdldCBpbiBwb3NpdGlvbiBvdmVyIHRoZSBmaXJzdCBjaHVuayBvZiB0ZXh0CiB9
CkBAIC0yMzc1LDggKzIzNDUsMTAgQEAgc2l6ZV90IFNlYXJjaEJ1ZmZlcjo6bGVuZ3RoKCkgY29u
c3QKIAogaW50IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoY29uc3QgUmFuZ2UqIHJhbmdlLCBi
b29sIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbikKIHsKKyAgICBpZiAoIXJhbmdlKQorICAgICAg
ICByZXR1cm4gMDsKICAgICB1bnNpZ25lZCBsZW5ndGggPSAwOwotICAgIGZvciAoVGV4dEl0ZXJh
dG9yIGl0KHJhbmdlLCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24gPyBUZXh0SXRlcmF0b3JFbWl0
c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyA6IFRleHRJdGVyYXRvckRlZmF1
bHRCZWhhdmlvcik7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpCisgICAgZm9yIChUZXh0SXRl
cmF0b3IgaXQoKnJhbmdlLCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24gPyBUZXh0SXRlcmF0b3JF
bWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyA6IFRleHRJdGVyYXRvckRl
ZmF1bHRCZWhhdmlvcik7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpCiAgICAgICAgIGxlbmd0
aCArPSBpdC50ZXh0KCkubGVuZ3RoKCk7CiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KQEAgLTI0MDUs
NyArMjM3Nyw3IEBAIFJlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aChDb250YWluZXJOb2RlKiBzY29wZSwgaW50CiAKICAgICBSZWY8UmFuZ2U+IHRl
eHRSdW5SYW5nZSA9IHJhbmdlT2ZDb250ZW50cygqc2NvcGUpOwogCi0gICAgVGV4dEl0ZXJhdG9y
IGl0KHRleHRSdW5SYW5nZS5wdHIoKSwgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uID8gVGV4dEl0
ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgOiBUZXh0SXRl
cmF0b3JEZWZhdWx0QmVoYXZpb3IpOworICAgIFRleHRJdGVyYXRvciBpdCh0ZXh0UnVuUmFuZ2Us
IGZvclNlbGVjdGlvblByZXNlcnZhdGlvbiA/IFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0Jl
dHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zIDogVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsK
ICAgICAKICAgICAvLyBGSVhNRTogdGhlIGF0RW5kKCkgY2hlY2sgc2hvdWxkbid0IGJlIG5lY2Vz
c2FyeSwgd29ya2Fyb3VuZCBmb3IgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYyODk+LgogICAgIGlmICghcmFuZ2VMb2NhdGlvbiAmJiAhcmFuZ2VMZW5ndGggJiYgaXQu
YXRFbmQoKSkgewpAQCAtMjUwNiwyMSArMjQ3OCwxOSBAQCBib29sIFRleHRJdGVyYXRvcjo6Z2V0
TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoTm9kZSogc2NvcGUsIGNvbnN0IFJhbmdlKiByYW5n
ZQogCiBib29sIGhhc0FueVBsYWluVGV4dChjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRleHRJ
dGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQogewotICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0ZXJh
dG9yIHsgY3JlYXRlTGl2ZVJhbmdlKHJhbmdlKS5wdHIoKSwgYmVoYXZpb3IgfTsgIWl0ZXJhdG9y
LmF0RW5kKCk7IGl0ZXJhdG9yLmFkdmFuY2UoKSkgeworICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0
ZXJhdG9yIHsgcmFuZ2UsIGJlaGF2aW9yIH07ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5h
ZHZhbmNlKCkpIHsKICAgICAgICAgaWYgKCFpdGVyYXRvci50ZXh0KCkuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3Ry
aW5nIHBsYWluVGV4dChQb3NpdGlvbiBzdGFydCwgUG9zaXRpb24gZW5kLCBUZXh0SXRlcmF0b3JC
ZWhhdmlvciBkZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nKQorU3RyaW5nIHBs
YWluVGV4dChjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGRl
ZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcpCiB7CiAgICAgLy8gVGhlIGluaXRp
YWwgYnVmZmVyIHNpemUgY2FuIGJlIGNyaXRpY2FsIGZvciBwZXJmb3JtYW5jZTogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMTkyCiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGluaXRpYWxDYXBhY2l0eSA9IDEgPDwgMTU7CiAKLSAgICBpZiAoIXN0YXJ0LmRvY3Vt
ZW50KCkpCi0gICAgICAgIHJldHVybiB7IH07Ci0gICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYo
KnN0YXJ0LmRvY3VtZW50KCkpOworICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmKHJhbmdlLnN0
YXJ0LmRvY3VtZW50KCkpOwogCiAgICAgdW5zaWduZWQgYnVmZmVyTGVuZ3RoID0gMDsKICAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CkBAIC0yNTI5LDcgKzI0OTksNyBAQCBTdHJpbmcgcGxhaW5U
ZXh0KFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2aW9yIGRl
ZmF1bHRCZWhhdgogICAgIGlmICghaXNEaXNwbGF5U3RyaW5nKQogICAgICAgICBiZWhhdmlvciA9
IHN0YXRpY19jYXN0PFRleHRJdGVyYXRvckJlaGF2aW9yPihiZWhhdmlvciB8IFRleHRJdGVyYXRv
ckVtaXRzVGV4dHNXaXRob3V0VHJhbnNjb2RpbmcpOwogCi0gICAgZm9yIChUZXh0SXRlcmF0b3Ig
aXQoc3RhcnQsIGVuZCwgYmVoYXZpb3IpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7Cisg
ICAgZm9yIChUZXh0SXRlcmF0b3IgaXQocmFuZ2UsIGJlaGF2aW9yKTsgIWl0LmF0RW5kKCk7IGl0
LmFkdmFuY2UoKSkgewogICAgICAgICBpdC5hcHBlbmRUZXh0VG9TdHJpbmdCdWlsZGVyKGJ1aWxk
ZXIpOwogICAgICAgICBidWZmZXJMZW5ndGggKz0gaXQudGV4dCgpLmxlbmd0aCgpOwogICAgIH0K
QEAgLTI1NDUsMTYgKzI1MTUsMTEgQEAgU3RyaW5nIHBsYWluVGV4dChQb3NpdGlvbiBzdGFydCwg
UG9zaXRpb24gZW5kLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBkZWZhdWx0QmVoYXYKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1TdHJpbmcgcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKFBv
c2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2aW9yIGRlZmF1bHRC
ZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcpCi17Ci0gICAgcmV0dXJuIHBsYWluVGV4dChz
dGFydCwgZW5kLCBkZWZhdWx0QmVoYXZpb3IsIGlzRGlzcGxheVN0cmluZykucmVwbGFjZShub0Jy
ZWFrU3BhY2UsICcgJyk7Ci19Ci0KIFN0cmluZyBwbGFpblRleHQoY29uc3QgUmFuZ2UqIHJhbmdl
LCBUZXh0SXRlcmF0b3JCZWhhdmlvciBkZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3Ry
aW5nKQogewogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwot
ICAgIHJldHVybiBwbGFpblRleHQocmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcmFuZ2UtPmVuZFBv
c2l0aW9uKCksIGRlZmF1bHRCZWhhdmlvciwgaXNEaXNwbGF5U3RyaW5nKTsKKyAgICByZXR1cm4g
cGxhaW5UZXh0KCpyYW5nZSwgZGVmYXVsdEJlaGF2aW9yLCBpc0Rpc3BsYXlTdHJpbmcpOwogfQog
CiBTdHJpbmcgcGxhaW5UZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0b3JGb3JUZXN0aW5nKGNv
bnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKQEAgLTI1NjUsNyArMjUzMCw3IEBAIFN0cmluZyBwbGFp
blRleHRVc2luZ0JhY2t3YXJkc1RleHRJdGVyYXRvckZvclRlc3RpbmcoY29uc3QgU2ltcGxlUmFu
Z2UmIHJhbmdlKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBwbGFpblRleHRSZXBs
YWNpbmdOb0JyZWFrU3BhY2UoY29uc3QgUmFuZ2UqIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlv
ciBkZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nKQorU3RyaW5nIHBsYWluVGV4
dFJlcGxhY2luZ05vQnJlYWtTcGFjZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRleHRJdGVy
YXRvckJlaGF2aW9yIGRlZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcpCiB7CiAg
ICAgcmV0dXJuIHBsYWluVGV4dChyYW5nZSwgZGVmYXVsdEJlaGF2aW9yLCBpc0Rpc3BsYXlTdHJp
bmcpLnJlcGxhY2Uobm9CcmVha1NwYWNlLCAnICcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmgKaW5kZXggYTVkMGVhMTJhYmFmYTIyNTg0YjlhOGViMDczNDQzNGYyNWNlNDRi
Yy4uMTU3ZjFkYTFkMGU2Yzk1M2Q5ZGVkYzRlZmFjZTEzZTk4MGUzMTM0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0zMCwxOSArMzAsMTUgQEAKICNpbmNsdWRlICJT
aW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSYW5nZTsKLWNsYXNzIFJlbmRlclRleHQ7CiBjbGFz
cyBSZW5kZXJUZXh0RnJhZ21lbnQ7CiAKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBwbGFpblRleHQo
UG9zaXRpb24gc3RhcnQsIFBvc2l0aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0
SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nID0gZmFsc2UpOwot
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShQb3Np
dGlvbiBzdGFydCwgUG9zaXRpb24gZW5kLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVy
YXRvckRlZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcgPSBmYWxzZSk7Ci0KIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyBwbGFpblRleHQoY29uc3QgUmFuZ2UqLCBUZXh0SXRlcmF0b3JC
ZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJp
bmcgPSBmYWxzZSk7Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGxhaW5UZXh0UmVwbGFjaW5nTm9C
cmVha1NwYWNlKGNvbnN0IFJhbmdlKiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0
b3JEZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nID0gZmFsc2UpOworV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIHBsYWluVGV4dChjb25zdCBTaW1wbGVSYW5nZSYsIFRleHRJdGVyYXRv
ckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0
cmluZyA9IGZhbHNlKTsKK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBwbGFpblRleHRSZXBsYWNpbmdO
b0JyZWFrU3BhY2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRl
eHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcgPSBmYWxzZSk7
CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGxhaW5UZXh0VXNpbmdCYWNrd2FyZHNUZXh0SXRlcmF0
b3JGb3JUZXN0aW5nKGNvbnN0IFNpbXBsZVJhbmdlJik7CiAKIFNpbXBsZVJhbmdlIGZpbmRQbGFp
blRleHQoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucyk7CkBA
IC05MSw4ICs4Nyw3IEBAIHByaXZhdGU6CiBjbGFzcyBUZXh0SXRlcmF0b3IgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFRleHRJdGVy
YXRvcihQb3NpdGlvbiBzdGFydCwgUG9zaXRpb24gZW5kLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9
IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0
SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFRl
eHRJdGVyYXRvcihjb25zdCBTaW1wbGVSYW5nZSYsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4
dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+VGV4dEl0ZXJh
dG9yKCk7CiAKICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gIW1fcG9zaXRpb25Ob2Rl
OyB9CkBAIC0xNzcsNyArMTcyLDcgQEAgcHJpdmF0ZToKIC8vIGNodW5rcyBzbyBhcyB0byBvcHRp
bWl6ZSBmb3IgcGVyZm9ybWFuY2Ugb2YgdGhlIGl0ZXJhdGlvbi4KIGNsYXNzIFNpbXBsaWZpZWRC
YWNrd2FyZHNUZXh0SXRlcmF0b3IgewogcHVibGljOgotICAgIGV4cGxpY2l0IFNpbXBsaWZpZWRC
YWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UmKTsKKyAgICBleHBsaWNpdCBTaW1wbGlm
aWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJik7CiAKICAgICBib29s
IGF0RW5kKCkgY29uc3QgeyByZXR1cm4gIW1fcG9zaXRpb25Ob2RlOyB9CiAgICAgdm9pZCBhZHZh
bmNlKCk7CkBAIC0yMzIsOCArMjI3LDcgQEAgcHJpdmF0ZToKIC8vIGNoYXJhY3RlciBhdCBhIHRp
bWUsIG9yIGZhc3RlciwgYXMgbmVlZGVkLiBVc2VmdWwgZm9yIHNlYXJjaGluZy4KIGNsYXNzIENo
YXJhY3Rlckl0ZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBD
aGFyYWN0ZXJJdGVyYXRvcihjb25zdCBSYW5nZSYsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4
dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBD
aGFyYWN0ZXJJdGVyYXRvcihQb3NpdGlvbiBzdGFydCwgUG9zaXRpb24gZW5kLCBUZXh0SXRlcmF0
b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgQ2hhcmFjdGVySXRlcmF0b3IoY29uc3QgU2ltcGxlUmFuZ2UmLCBUZXh0
SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CiAgICAgCiAg
ICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJseWluZ0l0ZXJhdG9yLmF0RW5k
KCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkdmFuY2UoaW50IG51bUNoYXJhY3RlcnMp
OwpAQCAtMjU0LDcgKzI0OCw3IEBAIHByaXZhdGU6CiAgICAgCiBjbGFzcyBCYWNrd2FyZHNDaGFy
YWN0ZXJJdGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQmFja3dhcmRzQ2hhcmFjdGVy
SXRlcmF0b3IoY29uc3QgUmFuZ2UmKTsKKyAgICBleHBsaWNpdCBCYWNrd2FyZHNDaGFyYWN0ZXJJ
dGVyYXRvcihjb25zdCBTaW1wbGVSYW5nZSYpOwogCiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsg
cmV0dXJuIG1fdW5kZXJseWluZ0l0ZXJhdG9yLmF0RW5kKCk7IH0KICAgICB2b2lkIGFkdmFuY2Uo
aW50IG51bUNoYXJhY3RlcnMpOwpAQCAtMjczLDcgKzI2Nyw3IEBAIHByaXZhdGU6CiAvLyB0aGV5
IG5ldmVyIHNwbGl0IHVwIGEgd29yZC4gVGhpcyBpcyB1c2VmdWwgZm9yIHNwZWxsIGNoZWNraW5n
IGFuZCBwZXJoYXBzIG9uZSBkYXkgZm9yIHNlYXJjaGluZyBhcyB3ZWxsLgogY2xhc3MgV29yZEF3
YXJlSXRlcmF0b3IgewogcHVibGljOgotICAgIGV4cGxpY2l0IFdvcmRBd2FyZUl0ZXJhdG9yKGNv
bnN0IFJhbmdlJik7CisgICAgZXhwbGljaXQgV29yZEF3YXJlSXRlcmF0b3IoY29uc3QgU2ltcGxl
UmFuZ2UmKTsKIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9kaWRMb29rQWhl
YWQgJiYgbV91bmRlcmx5aW5nSXRlcmF0b3IuYXRFbmQoKTsgfQogICAgIHZvaWQgYWR2YW5jZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250
cm9sbGVyLmNwcAppbmRleCBiYjM1OGE5ZTNiZmQ0NGRkYjc5MDIxODM1ODlmZTRkOTdhM2E3MmMz
Li4wMDlkYTQ5MTcwM2RlYzUwMjYxNDllOWZhZDlhOGU4MzEyZWU4ZDIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcApA
QCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnN0YXJ0
T2JzZXJ2aW5nUGFyYWdyYXBocyhNYW5pcHVsYXRpb25JdGVtQ2FsbGJhCiBjbGFzcyBQYXJhZ3Jh
cGhDb250ZW50SXRlcmF0b3IgewogcHVibGljOgogICAgIFBhcmFncmFwaENvbnRlbnRJdGVyYXRv
cihjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCi0gICAgICAgIDog
bV9pdGVyYXRvcihzdGFydCwgZW5kKQorICAgICAgICA6IG1faXRlcmF0b3IoeyBtYWtlQm91bmRh
cnlQb2ludChzdGFydCksIG1ha2VCb3VuZGFyeVBvaW50KGVuZCkgfSkKICAgICAgICAgLCBtX2l0
ZXJhdG9yTm9kZShtX2l0ZXJhdG9yLmF0RW5kKCkgPyBudWxscHRyIDogY3JlYXRlTGl2ZVJhbmdl
KG1faXRlcmF0b3IucmFuZ2UoKSktPmZpcnN0Tm9kZSgpKQogICAgICAgICAsIG1fY3VycmVudE5v
ZGVGb3JGaW5kaW5nSW52aXNpYmxlQ29udGVudChzdGFydC5maXJzdE5vZGUoKSkKICAgICAgICAg
LCBtX3Bhc3RFbmROb2RlKGVuZC5maXJzdE5vZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVTZWxlY3Rpb24uY3BwCmluZGV4IGIzMDZkNDcwYzkwZmU5Zjk2ZWIyZmJiZGM0YjFi
NjY2YmExNDA5Y2MuLjMzZmM4NTAyNWE5NDJlYjJmZmVhNjY0Y2Q2MGVhYjJkNTJkYjEyY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcApAQCAtMzMsNyAr
MzMsNiBAQAogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJU
ZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKICNpbmNsdWRlIDxzdGRp
by5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4IDc1MjJiMTA5
YjQwOWQyYmZkNTU3NzY2NzNmMGE5M2U4NDM3NGZjOWUuLjkxMDlhYjk1NDkwNjlmMzYwNGYwOTg2
YWM5OGU4Yjk5NDQ5YTE0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlz
aWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5j
cHAKQEAgLTQ4OSw3ICs0ODksNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRSZXBlYXRlZENoYXJhY3Rl
cihWZWN0b3I8VUNoYXIsIDEwMjQ+JiBidWZmZXIsIFVDaGFyIGNoYXJhY3RlcgogdW5zaWduZWQg
c3VmZml4TGVuZ3RoRm9yUmFuZ2UoY29uc3QgUmFuZ2UmIGZvcndhcmRzU2NhblJhbmdlLCBWZWN0
b3I8VUNoYXIsIDEwMjQ+JiBzdHJpbmcpCiB7CiAgICAgdW5zaWduZWQgc3VmZml4TGVuZ3RoID0g
MDsKLSAgICBUZXh0SXRlcmF0b3IgZm9yd2FyZHNJdGVyYXRvcigmZm9yd2FyZHNTY2FuUmFuZ2Up
OworICAgIFRleHRJdGVyYXRvciBmb3J3YXJkc0l0ZXJhdG9yKGZvcndhcmRzU2NhblJhbmdlKTsK
ICAgICB3aGlsZSAoIWZvcndhcmRzSXRlcmF0b3IuYXRFbmQoKSkgewogICAgICAgICBTdHJpbmdW
aWV3IHRleHQgPSBmb3J3YXJkc0l0ZXJhdG9yLnRleHQoKTsKICAgICAgICAgdW5zaWduZWQgaSA9
IGVuZE9mRmlyc3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQpOwpAQCAtNjA5LDcgKzYwOSw3IEBA
IHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9z
aXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNoCiAgICAgICAgIHJlc3VsdCA9IGZvcndhcmRzU2NhblJh
bmdlLT5zZXRTdGFydChzdGFydCk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBmb3IgKFRleHRJdGVyYXRvciBmb3J3
YXJkc0l0ZXJhdG9yKGZvcndhcmRzU2NhblJhbmdlLnB0cigpKTsgIWZvcndhcmRzSXRlcmF0b3Iu
YXRFbmQoKTsgZm9yd2FyZHNJdGVyYXRvci5hZHZhbmNlKCkpCisgICAgICAgIGZvciAoVGV4dEl0
ZXJhdG9yIGZvcndhcmRzSXRlcmF0b3IoZm9yd2FyZHNTY2FuUmFuZ2UpOyAhZm9yd2FyZHNJdGVy
YXRvci5hdEVuZCgpOyBmb3J3YXJkc0l0ZXJhdG9yLmFkdmFuY2UoKSkKICAgICAgICAgICAgIGFw
cGVuZChzdHJpbmcsIGZvcndhcmRzSXRlcmF0b3IudGV4dCgpKTsKICAgICAgICAgc3VmZml4TGVu
Z3RoID0gc3RyaW5nLnNpemUoKTsKICAgICB9IGVsc2UgaWYgKHJlcXVpcmVzQ29udGV4dEZvcldv
cmRCb3VuZGFyeShjLmNoYXJhY3RlckJlZm9yZSgpKSkgewpAQCAtNjc0LDcgKzY3NCw3IEBAIHN0
YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
YywgQm91bmRhcnlTZWFyY2hGdW5jCiAgICAgc2VhcmNoUmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50
cygqYm91bmRhcnkpOwogICAgIGlmIChzdGFydC5kZXByZWNhdGVkTm9kZSgpKQogICAgICAgICBz
ZWFyY2hSYW5nZS0+c2V0U3RhcnQoKnN0YXJ0LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0LmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwotICAgIFRleHRJdGVyYXRvciBpdChzZWFyY2hSYW5nZS5w
dHIoKSwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlv
bnMpOworICAgIFRleHRJdGVyYXRvciBpdChzZWFyY2hSYW5nZSwgVGV4dEl0ZXJhdG9yRW1pdHND
aGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpOwogICAgIHVuc2lnbmVkIG5leHQg
PSBmb3J3YXJkU2VhcmNoRm9yQm91bmRhcnlXaXRoVGV4dEl0ZXJhdG9yKGl0LCBzdHJpbmcsIHBy
ZWZpeExlbmd0aCwgc2VhcmNoRnVuY3Rpb24pOwogICAgIAogICAgIGlmIChpdC5hdEVuZCgpICYm
IG5leHQgPT0gc3RyaW5nLnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
RGF0YURldGVjdGlvbi5tbQppbmRleCBjNjFlMzU2NTgyN2RiNGVlZWZmYTc2NzA4ZDZhMDk0MTk0
M2U4MGVhLi4xMDNlNTUzYjIzN2E5MTk3YmMzOGQyNDIxNjAyNDZjNmQyMzIyNjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBAIC00Myw3ICs0
Myw2IEBACiAjaW1wb3J0ICJOb2RlVHJhdmVyc2FsLmgiCiAjaW1wb3J0ICJSYW5nZS5oIgogI2lt
cG9ydCAiUmVuZGVyT2JqZWN0LmgiCi0jaW1wb3J0ICJTaW1wbGVSYW5nZS5oIgogI2ltcG9ydCAi
U3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW1wb3J0ICJUZXh0LmgiCiAjaW1wb3J0ICJUZXh0SXRlcmF0
b3IuaCIKQEAgLTE2Miw2ICsxNjEsNyBAQCBSZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBEYXRh
RGV0ZWN0aW9uOjpkZXRlY3RJdGVtQXJvdW5kSGl0VGVzdFJlc3VsdChjb25zdCBIaQogCiAgICAg
cmV0dXJuIGRldGVjdEl0ZW1BdFBvc2l0aW9uV2l0aFJhbmdlKHBvc2l0aW9uLCBjb250ZXh0UmFu
Z2UsIGRldGVjdGVkRGF0YUJvdW5kaW5nQm94LCBkZXRlY3RlZERhdGFSYW5nZSk7CiB9CisKICNl
bmRpZiAvLyBQTEFURk9STShNQUMpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMzQ1
LDcgKzM0NSw3IEBAIHN0YXRpYyBTdHJpbmcgZGF0YURldGVjdG9yU3RyaW5nRm9yUGF0aChOU0lu
ZGV4UGF0aCAqcGF0aCkKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGJ1aWxkUXVlcnkoRERTY2Fu
UXVlcnlSZWYgc2NhblF1ZXJ5LCBSYW5nZSogY29udGV4dFJhbmdlKQorc3RhdGljIHZvaWQgYnVp
bGRRdWVyeShERFNjYW5RdWVyeVJlZiBzY2FuUXVlcnksIGNvbnN0IFNpbXBsZVJhbmdlJiBjb250
ZXh0UmFuZ2UpCiB7CiAgICAgLy8gT25jZSB3ZSdyZSBvdmVyIHRoaXMgbnVtYmVyIG9mIGZyYWdt
ZW50cywgc3RvcCBhdCB0aGUgZmlyc3QgaGFyZCBicmVhay4KICAgICBjb25zdCBDRkluZGV4IG1h
eEZyYWdtZW50V2l0aEhhcmRCcmVhayA9IDEwMDA7CkBAIC00NDQsOSArNDQ0LDEyIEBAIHZvaWQg
RGF0YURldGVjdGlvbjo6cmVtb3ZlRGF0YURldGVjdGVkTGlua3NJbkRvY3VtZW50KERvY3VtZW50
JiBkb2N1bWVudCkKIAogTlNBcnJheSAqRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFu
Z2UoUmVmUHRyPFJhbmdlPiYgY29udGV4dFJhbmdlLCBEYXRhRGV0ZWN0b3JUeXBlcyB0eXBlcywg
TlNEaWN0aW9uYXJ5ICpjb250ZXh0KQogeworICAgIGlmICghY29udGV4dFJhbmdlKQorICAgICAg
ICByZXR1cm4gbmlsOworCiAgICAgUmV0YWluUHRyPEREU2Nhbm5lclJlZj4gc2Nhbm5lciA9IGFk
b3B0Q0Yoc29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTY2FubmVyQ3JlYXRlKEREU2Nhbm5l
clR5cGVTdGFuZGFyZCwgMCwgbnVsbHB0cikpOwogICAgIFJldGFpblB0cjxERFNjYW5RdWVyeVJl
Zj4gc2NhblF1ZXJ5ID0gYWRvcHRDRihzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFNjYW5R
dWVyeUNyZWF0ZShOVUxMKSk7Ci0gICAgYnVpbGRRdWVyeShzY2FuUXVlcnkuZ2V0KCksIGNvbnRl
eHRSYW5nZS5nZXQoKSk7CisgICAgYnVpbGRRdWVyeShzY2FuUXVlcnkuZ2V0KCksICpjb250ZXh0
UmFuZ2UpOwogICAgIAogICAgIGlmICh0eXBlcyAmIERhdGFEZXRlY3RvclR5cGVMb29rdXBTdWdn
ZXN0aW9uKQogICAgICAgICBzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFNjYW5uZXJFbmFi
bGVPcHRpb25hbFNvdXJjZShzY2FubmVyLmdldCgpLCBERFNjYW5uZXJTb3VyY2VTcG90bGlnaHQs
IHRydWUpOwpAQCAtNDg3LDcgKzQ5MCw3IEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVj
dENvbnRlbnRJblJhbmdlKFJlZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURlCiAgICAg
fQogCiAgICAgVmVjdG9yPFZlY3RvcjxSZWZQdHI8UmFuZ2U+Pj4gYWxsUmVzdWx0UmFuZ2VzOwot
ICAgIFRleHRJdGVyYXRvciBpdGVyYXRvcihjb250ZXh0UmFuZ2UuZ2V0KCkpOworICAgIFRleHRJ
dGVyYXRvciBpdGVyYXRvcigqY29udGV4dFJhbmdlKTsKICAgICBDRkluZGV4IGl0ZXJhdG9yQ291
bnQgPSAwOwogCiAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSBhcnJheSBvZiB0aGUgZXhwYW5k
ZWQgcmVzdWx0cyB0byBjcmVhdGUgYSB2ZWN0b3Igb2YgUmFuZ2Ugb2JqZWN0cyB0aGF0IGluZGlj
YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlM
b29rdXAubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAu
bW0KaW5kZXggZDM1NTM5YTlkZmQ4ZDQ3ZWU0ZTAxMTcwZDViMjhjZjE1MTAzZWQ3Mi4uODc5NzIy
MDI4NDY4ZjAzZTAyZWFlNTliNTVhMjlhMjNkZWNlOTJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQpAQCAtMzM3LDcgKzMzNyw5IEBA
IHN0ZDo6dHVwbGU8UmVmUHRyPFJhbmdlPiwgTlNEaWN0aW9uYXJ5ICo+IERpY3Rpb25hcnlMb29r
dXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0CiAgICAgICAgIGF1dG8gcmFuZ2VUb1NlbGVjdGlvbkVu
ZCA9IG1ha2VSYW5nZShwYXJhZ3JhcGhTdGFydCwgc2VsZWN0aW9uRW5kKTsKICAgICAgICAgCiAg
ICAgICAgIGZ1bGxDaGFyYWN0ZXJSYW5nZSA9IG1ha2VSYW5nZShwYXJhZ3JhcGhTdGFydCwgcGFy
YWdyYXBoRW5kKTsKLSAgICAgICAgCisgICAgICAgIGlmICghZnVsbENoYXJhY3RlclJhbmdlKQor
ICAgICAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbmlsIH07CisKICAgICAgICAgc2VsZWN0aW9u
UmFuZ2UgPSBOU01ha2VSYW5nZShUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlVG9TZWxl
Y3Rpb25TdGFydC5nZXQoKSksIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgobWFrZVJhbmdlKHNl
bGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpLmdldCgpKSk7CiAgICAgICAgIAogICAgICAgICBo
aXRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgobWFrZVJhbmdlKHBhcmFncmFwaFN0
YXJ0LCBwb3NpdGlvbikuZ2V0KCkpOwpAQCAtMzU3LDcgKzM1OSw3IEBAIHN0ZDo6dHVwbGU8UmVm
UHRyPFJhbmdlPiwgTlNEaWN0aW9uYXJ5ICo+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRU
ZXN0UmVzdWx0CiAgICAgCiAgICAgTlNSYW5nZSBzZWxlY3RlZFJhbmdlID0gW2dldFJWU2VsZWN0
aW9uQ2xhc3MoKSByZXZlYWxSYW5nZUF0SW5kZXg6aGl0SW5kZXggc2VsZWN0ZWRSYW5nZXM6QFtb
TlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpzZWxlY3Rpb25SYW5nZV1dIHNob3VsZFVwZGF0ZVNlbGVj
dGlvbjpuaWxdOwogICAgIAotICAgIFN0cmluZyBpdGVtU3RyaW5nID0gcGxhaW5UZXh0KGZ1bGxD
aGFyYWN0ZXJSYW5nZS5nZXQoKSk7CisgICAgU3RyaW5nIGl0ZW1TdHJpbmcgPSBwbGFpblRleHQo
KmZ1bGxDaGFyYWN0ZXJSYW5nZSk7CiAgICAgUmV0YWluUHRyPFJWSXRlbT4gaXRlbSA9IGFkb3B0
TlMoW2FsbG9jUlZJdGVtSW5zdGFuY2UoKSBpbml0V2l0aFRleHQ6aXRlbVN0cmluZyBzZWxlY3Rl
ZFJhbmdlOnNlbGVjdGVkUmFuZ2VdKTsKICAgICBOU1JhbmdlIGhpZ2hsaWdodFJhbmdlID0gaXRl
bS5nZXQoKS5oaWdobGlnaHRSYW5nZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDRmN2ZhYTBlMWNhOTFkODMyZGVlNTc5ZDkzYWVlM2Fi
MWE5ZTBjMjMuLmE1NDNhYzJkMWFlMmFjMzhmOGNkMjdmYjI1N2ZlMmQxNjI0MGRjZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTYxLDcg
KzYxLDYgQEAKICNpbXBvcnQgIlJhbmdlLmgiCiAjaW1wb3J0ICJSZW5kZXJJbWFnZS5oIgogI2lt
cG9ydCAiUmVuZGVyVGV4dC5oIgotI2ltcG9ydCAiU2ltcGxlUmFuZ2UuaCIKICNpbXBvcnQgIlN0
eWxlUHJvcGVydGllcy5oIgogI2ltcG9ydCAiU3R5bGVkRWxlbWVudC5oIgogI2ltcG9ydCAiVGV4
dEl0ZXJhdG9yLmgiCkBAIC0yMzk2LDcgKzIzOTUsNyBAQCBOU0F0dHJpYnV0ZWRTdHJpbmcgKmVk
aXRpbmdBdHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlKFJhbmdlJiByYW5nZSwgSW5jbHVkZUltYWdl
cwogICAgIE5TVUludGVnZXIgc3RyaW5nTGVuZ3RoID0gMDsKICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlRGljdGlvbmFyeT4gYXR0cnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxv
Y10gaW5pdF0pOwogCi0gICAgZm9yIChUZXh0SXRlcmF0b3IgaXQoJnJhbmdlKTsgIWl0LmF0RW5k
KCk7IGl0LmFkdmFuY2UoKSkgeworICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHJhbmdlKTsgIWl0
LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgewogICAgICAgICBTaW1wbGVSYW5nZSBjdXJyZW50VGV4
dFJhbmdlID0gaXQucmFuZ2UoKTsKICAgICAgICAgTm9kZSYgc3RhcnRDb250YWluZXIgPSBjdXJy
ZW50VGV4dFJhbmdlLnN0YXJ0LmNvbnRhaW5lcjsKICAgICAgICAgTm9kZSYgZW5kQ29udGFpbmVy
ID0gY3VycmVudFRleHRSYW5nZS5lbmQuY29udGFpbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dElu
ZGljYXRvci5jcHAKaW5kZXggMmQyMTEwNGIzMjFlNjNjYjhjODU5Nzk1MjkyZjAyYjFmY2FmZWYy
NS4uNDJlZmVhZGIwZDFhNjgzNjVjNWMzNDMwODBlNWZmYjI2ODA2OGJiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCkBAIC00Myw3ICs0Myw2IEBACiAjaW5jbHVkZSAiUmVu
ZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRl
clRleHQuaCIKLSNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIlRleHRQYWludFN0eWxlLmgiCiAKQEAgLTIxMyw3ICsyMTIsNyBAQCBz
dGF0aWMgYm9vbCBzdHlsZUNvbnRhaW5zQ29tcGxleEJhY2tncm91bmQoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKQogc3RhdGljIEhhc2hTZXQ8Q29sb3I+IGVzdGltYXRlZFRleHRDb2xvcnNGb3JS
YW5nZShjb25zdCBSYW5nZSYgcmFuZ2UpCiB7CiAgICAgSGFzaFNldDxDb2xvcj4gY29sb3JzOwot
ICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0ZXJhdG9yKCZyYW5nZSk7ICFpdGVyYXRvci5hdEVuZCgp
OyBpdGVyYXRvci5hZHZhbmNlKCkpIHsKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdGVyYXRvcihy
YW5nZSk7ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkpIHsKICAgICAgICAg
YXV0byogbm9kZSA9IGl0ZXJhdG9yLm5vZGUoKTsKICAgICAgICAgaWYgKCFpczxUZXh0Pihub2Rl
KSB8fCAhaXM8UmVuZGVyVGV4dD4obm9kZS0+cmVuZGVyZXIoKSkpCiAgICAgICAgICAgICBjb250
aW51ZTsKQEAgLTI5OSw3ICsyOTgsNyBAQCBzdGF0aWMgYm9vbCBjb250YWluc09ubHlXaGl0ZVNw
YWNlVGV4dChjb25zdCBSYW5nZSYgcmFuZ2UpCiAgICAgICAgIGlmICghaXM8UmVuZGVyVGV4dD4o
bm9kZS0+cmVuZGVyZXIoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IHJldHVybiBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoJnJhbmdlKS5zdHJpcFdoaXRl
U3BhY2UoKS5pc0VtcHR5KCk7CisgICAgcmV0dXJuIHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtT
cGFjZShyYW5nZSkuc3RyaXBXaGl0ZVNwYWNlKCkuaXNFbXB0eSgpOwogfQogCiBzdGF0aWMgYm9v
bCBpbml0aWFsaXplSW5kaWNhdG9yKFRleHRJbmRpY2F0b3JEYXRhJiBkYXRhLCBGcmFtZSYgZnJh
bWUsIGNvbnN0IFJhbmdlJiByYW5nZSwgRmxvYXRTaXplIG1hcmdpbiwgYm9vbCBpbmRpY2F0ZXND
dXJyZW50U2VsZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJh
bWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQppbmRleCAzMDA5
MTM4ZjJkYzAyNGVjNzgyNzI5MjBhZTFlNDAyOWYwZTg3MzA3Li42ZWU0ZmI0NDU1ZGM2OTBkNGVi
OTljNDNhMmI5MzgxMmYxNDE3MmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lv
cy9GcmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpA
QCAtNzYwLDcgKzc2MCw3IEBAIE5TQXJyYXkgKkZyYW1lOjppbnRlcnByZXRhdGlvbnNGb3JDdXJy
ZW50Um9vdCgpIGNvbnN0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGF1dG8gcmFuZ2VG
b3JNYXJrZXIgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgpLCBjcmVhdGVMZWdhY3lFZGl0aW5n
UG9zaXRpb24obm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpKSwgY3JlYXRlTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+ZW5kT2Zmc2V0KCkpKTsKLSAgICAgICAgICAgIFN0cmlu
ZyB2aXNpYmxlVGV4dEZvck1hcmtlciA9IHBsYWluVGV4dChyYW5nZUZvck1hcmtlci5wdHIoKSk7
CisgICAgICAgICAgICBTdHJpbmcgdmlzaWJsZVRleHRGb3JNYXJrZXIgPSBwbGFpblRleHQocmFu
Z2VGb3JNYXJrZXIpOwogICAgICAgICAgICAgc2l6ZV90IGludGVycHJldGF0aW9uc0NvdW50Rm9y
Q3VycmVudE1hcmtlciA9IG1hcmtlci0+YWx0ZXJuYXRpdmVzKCkuc2l6ZSgpICsgMTsKICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW50ZXJwcmV0YXRpb25zQ291bnQ7ICsraSkg
ewogICAgICAgICAgICAgICAgIC8vIERldGVybWluZSB0ZXh0IGZvciB0aGUgaXRoIGludGVycHJl
dGF0aW9uLiBJdCB3aWxsIGVpdGhlciBiZSB0aGUgdmlzaWJsZSB0ZXh0LCBvciBvbmUgb2YgaXRz
CkBAIC03ODEsNyArNzgxLDcgQEAgTlNBcnJheSAqRnJhbWU6OmludGVycHJldGF0aW9uc0ZvckN1
cnJlbnRSb290KCkgY29uc3QKIAogICAgIC8vIEZpbmFsbHksIGFkZCBhbnkgdGV4dCBhZnRlciB0
aGUgbGFzdCBtYXJrZXIuCiAgICAgYXV0byBhZnRlckxhc3RNYXJrZXJSYW5nZSA9IFJhbmdlOjpj
cmVhdGUoKmRvY3VtZW50KCksIHByZWNlZGluZ1RleHRTdGFydFBvc2l0aW9uLCBjcmVhdGVMZWdh
Y3lFZGl0aW5nUG9zaXRpb24ocm9vdCwgcm9vdENoaWxkQ291bnQpKTsKLSAgICBTdHJpbmcgdGV4
dEFmdGVyTGFzdE1hcmtlciA9IHBsYWluVGV4dChhZnRlckxhc3RNYXJrZXJSYW5nZS5wdHIoKSk7
CisgICAgU3RyaW5nIHRleHRBZnRlckxhc3RNYXJrZXIgPSBwbGFpblRleHQoYWZ0ZXJMYXN0TWFy
a2VyUmFuZ2UpOwogICAgIGlmICghdGV4dEFmdGVyTGFzdE1hcmtlci5pc0VtcHR5KCkpIHsKICAg
ICAgICAgZm9yIChhdXRvJiBpbnRlcnByZXRhdGlvbiA6IGludGVycHJldGF0aW9ucykKICAgICAg
ICAgICAgIGFwcGVuZChpbnRlcnByZXRhdGlvbiwgdGV4dEFmdGVyTGFzdE1hcmtlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggYzE1Yzc0ZDEyZmU0
YzZiODEwNGE4ZjljNTJmYmI3MTk3YmYxZjA2MS4uOGQyOGQ3MWNlYzAyOGY1MjQyODEzNmY3MDE2
YjAwYzViNjE3ZmZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcApAQCAtMjAyLDggKzIwMiwxMiBAQCBTdHJpbmcgSGl0VGVzdFJlc3VsdDo6c2VsZWN0ZWRU
ZXh0KCkgY29uc3QKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIAorICAgIGF1dG8gcmFuZ2UgPSBmcmFtZS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFu
Z2UoKTsKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKwog
ICAgIC8vIExvb2sgZm9yIGEgY2hhcmFjdGVyIHRoYXQncyBub3QganVzdCBhIHNlcGFyYXRvci4K
LSAgICBmb3IgKFRleHRJdGVyYXRvciBpdChmcmFtZS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVk
UmFuZ2UoKS5nZXQoKSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKKyAgICBmb3IgKFRl
eHRJdGVyYXRvciBpdCgqcmFuZ2UpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CiAgICAg
ICAgIGludCBsZW5ndGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7CiAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGlmICghKFVfR0VUX0dDX01BU0so
aXQudGV4dCgpW2ldKSAmIFVfR0NfWl9NQVNLKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuaAppbmRleCA5NGFiOTZkZWMzY2JlMzIy
OWRlMGUwODllN2M1ODc0MmUxYmQyMGI2Li5iOTY4ZWY3MDg5MDIzYzFhMTE4MTljMWUyYWRjOTQ1
NzBhZmVlYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5l
TGF5b3V0VHJhdmVyc2FsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGlu
ZUxheW91dFRyYXZlcnNhbC5oCkBAIC0yOSwxNSArMjksMTIgQEAKICNpbmNsdWRlICJMaW5lTGF5
b3V0VHJhdmVyc2FsQ29tcGxleFBhdGguaCIKICNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2Fs
RGlzcGxheVJ1blBhdGguaCIKICNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsU2ltcGxlUGF0
aC5oIgotI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgot
I2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUmVuZGVyTGluZUJyZWFrOworY2xhc3MgUmVuZGVyVGV4dDsKIAogbmFtZXNwYWNl
IExpbmVMYXlvdXRUcmF2ZXJzYWwgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggOTIzZWU5NWUwNTBjZjViMWViYzM3NzNjNGJlMmM0OWU0NWQxNTNjYy4uMmI5ODgwMDJj
OGJjMWMzMjE3NTQ2MTBkMzExODg2MWYzNWY4NDAxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtMTc0LDcgKzE3NCw2IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRhdGEuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKLSNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlNwZWxsQ2hlY2tlci5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tCmluZGV4IDc5YjJlNGY1
N2Y3YjE1YmUwYzk5YjNiMzE4NjVlZjhkYzdiNDE3OWUuLmI5NjkzYTgwYzNmZTUxNWFhYjM2Nzhh
NjhjNWQwYmVmZmZiNjhhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9y
Lm1tCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbXBvcnQgIldLRE9NSW50ZXJuYWxzLmgiCiAjaW1w
b3J0ICJXS0RPTVJhbmdlLmgiCi0jaW1wb3J0IDxXZWJDb3JlL1NpbXBsZVJhbmdlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgogCiBAaW50ZXJmYWNlIFdLRE9NVGV4dEl0ZXJh
dG9yICgpIHsKQEAgLTQ2LDI5ICs0NSwzNSBAQCAtIChpZClpbml0V2l0aFJhbmdlOihXS0RPTVJh
bmdlICopcmFuZ2UKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBf
dGV4dEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+KFdlYktpdDo6
dG9XZWJDb3JlUmFuZ2UocmFuZ2UpKTsKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4g
c2VsZjsKKworICAgIF90ZXh0SXRlcmF0b3IgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRleHRJdGVy
YXRvcj4oKldlYktpdDo6dG9XZWJDb3JlUmFuZ2UocmFuZ2UpKTsKICAgICByZXR1cm4gc2VsZjsK
IH0KIAogLSAodm9pZClhZHZhbmNlCiB7Ci0gICAgX3RleHRJdGVyYXRvci0+YWR2YW5jZSgpOwor
ICAgIGlmIChfdGV4dEl0ZXJhdG9yKQorICAgICAgICBfdGV4dEl0ZXJhdG9yLT5hZHZhbmNlKCk7
CiAgICAgX3VwY29udmVydGVkVGV4dC5zaHJpbmsoMCk7CiB9CiAKIC0gKEJPT0wpYXRFbmQKIHsK
LSAgICByZXR1cm4gX3RleHRJdGVyYXRvci0+YXRFbmQoKTsKKyAgICByZXR1cm4gX3RleHRJdGVy
YXRvciAmJiBfdGV4dEl0ZXJhdG9yLT5hdEVuZCgpOwogfQogCiAtIChXS0RPTVJhbmdlICopY3Vy
cmVudFJhbmdlCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9XS0RPTVJhbmdlKGNyZWF0ZUxpdmVS
YW5nZShfdGV4dEl0ZXJhdG9yLT5yYW5nZSgpKS5wdHIoKSk7CisgICAgcmV0dXJuIF90ZXh0SXRl
cmF0b3IgPyBXZWJLaXQ6OnRvV0tET01SYW5nZShjcmVhdGVMaXZlUmFuZ2UoX3RleHRJdGVyYXRv
ci0+cmFuZ2UoKSkucHRyKCkpIDogbmlsOwogfQogCiAvLyBGSVhNRTogQ29uc2lkZXIgZGVwcmVj
YXRpbmcgdGhpcyBtZXRob2QgYW5kIGNyZWF0aW5nIG9uZSB0aGF0IGRvZXMgbm90IHJlcXVpcmUg
Y29weWluZyA4LWJpdCBjaGFyYWN0ZXJzLgogLSAoY29uc3QgdW5pY2hhciopY3VycmVudFRleHRQ
b2ludGVyCiB7CisgICAgaWYgKCFfdGV4dEl0ZXJhdG9yKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBTdHJpbmdWaWV3IHRleHQgPSBfdGV4dEl0ZXJhdG9yLT50ZXh0KCk7CiAgICAgdW5z
aWduZWQgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aCkKQEAgLTgzLDcg
Kzg4LDcgQEAgLSAoY29uc3QgdW5pY2hhciopY3VycmVudFRleHRQb2ludGVyCiAKIC0gKE5TVUlu
dGVnZXIpY3VycmVudFRleHRMZW5ndGgKIHsKLSAgICByZXR1cm4gX3RleHRJdGVyYXRvci0+dGV4
dCgpLmxlbmd0aCgpOworICAgIHJldHVybiBfdGV4dEl0ZXJhdG9yID8gX3RleHRJdGVyYXRvci0+
dGV4dCgpLmxlbmd0aCgpIDogMDsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29u
dHJvbGxlclByb3h5Lm1tCmluZGV4IDdmM2Y0ZDk2MTM3ODlhMDhmY2I2ZGMzZGYzZDc5OTA1YTI5
N2E0NGUuLmRlYzNhY2EwZjRkZmZkMmFiMmE4N2JlZjAxNzBiYjExNDM1OWYzNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0Nv
bnRyb2xsZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KQEAgLTQwLDcgKzQwLDYgQEAKICNp
bXBvcnQgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRl
ck9iamVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJlZERvY3VtZW50TWFya2VyLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1NpbXBsZVJhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJdGVy
YXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlVW5pdHMuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLmNwcAppbmRleCA1ZmI1MzI5M2FhNzQ0YmY2MGRkZTYzZjE3MzdmN2Q0
ZTBkYWIwZGMxLi4wZDI3NmU0ZTEzNGY0YjgzM2E2MjIxMzNlMGI0N2YxMmE3MWQ0ZWFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIE9wdGlv
bmFsPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3I6OmNvbXB1dGVUZXh0TGVnCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZJdGVyYXRpb25zID0gMDsK
ICAgICB1bnNpZ25lZCB0b3RhbFNhbXBsZWRUZXh0TGVuZ3RoID0gMDsKIAotICAgIGZvciAoVGV4
dEl0ZXJhdG9yIGRvY3VtZW50VGV4dEl0ZXJhdG9yIHsgZG9jdW1lbnRSYW5nZS5wdHIoKSwgVGV4
dEl0ZXJhdG9yRW50ZXJzVGV4dENvbnRyb2xzIH07ICFkb2N1bWVudFRleHRJdGVyYXRvci5hdEVu
ZCgpOyBkb2N1bWVudFRleHRJdGVyYXRvci5hZHZhbmNlKCkpIHsKKyAgICBmb3IgKFRleHRJdGVy
YXRvciBkb2N1bWVudFRleHRJdGVyYXRvciB7IGRvY3VtZW50UmFuZ2UuZ2V0KCksIFRleHRJdGVy
YXRvckVudGVyc1RleHRDb250cm9scyB9OyAhZG9jdW1lbnRUZXh0SXRlcmF0b3IuYXRFbmQoKTsg
ZG9jdW1lbnRUZXh0SXRlcmF0b3IuYWR2YW5jZSgpKSB7CiAgICAgICAgIGlmICgrK251bWJlck9m
SXRlcmF0aW9ucyA+PSBtYXhpbXVtTnVtYmVyT2ZUZXh0UnVuc1RvQ29uc2lkZXIpCiAgICAgICAg
ICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCBmMTZlZTBjMDk3ZWM1YWI1MDA4MTlhMDg0ZWViZDQwYWMyNWQxZDQyLi5kOGQ1
OGU3NzY0NGY3YjJhMGZlNDNmMzQ3NTJlOWQ3MjMzMzBlOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjI2LDcgKzIyNiw2IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhZG93Um9vdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9T
aW1wbGVSYW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3R5bGVQcm9wZXJ0aWVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TdWJmcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3Vic3Rp
dHV0ZURhdGEuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KaW5kZXggZmVkNmMwNGJlYzhjNWRhMjZlNjUxOTM1NmM2MjAwZTIzYmVl
MDM1MC4uNTllMGE3NmM3OWQzNTI3NWQ4NTJlMDFkYzFhMjJlYmVlMDVmZTFjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAg
LTEyNCw3ICsxMjQsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TaGFkb3dSb290Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgot
I2ltcG9ydCA8V2ViQ29yZS9TaW1wbGVSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVBy
b3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KQEAgLTE0Myw3ICsxNDIsMjIgQEAKICNkZWZpbmUgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0df
RVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFdlYlBh
Z2U6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisvLyBGSVhNRTogVW5jbGVhciBpZiBjYWxsZXJzIGlu
IHRoaXMgZmlsZSBhcmUgY29ycmVjdGx5IGNob29zaW5nIHdoaWNoIG9mIHRoZXNlIHR3byBmdW5j
dGlvbnMgdG8gdXNlLgorCitzdGF0aWMgU3RyaW5nIHBsYWluVGV4dEZvckNvbnRleHQoY29uc3Qg
UmFuZ2UqIHJhbmdlKQoreworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOworICAgIHJldHVybiBXZWJDb3JlOjpwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3Bh
Y2UoKnJhbmdlKTsKK30KKworc3RhdGljIFN0cmluZyBwbGFpblRleHRGb3JEaXNwbGF5KGNvbnN0
IFJhbmdlKiByYW5nZSkKK3sKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6cGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1Nw
YWNlKCpyYW5nZSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKK30KIAogdm9p
ZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewpAQCAtMjI4LDcgKzI0Miw3IEBAIHZv
aWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRl
JiByZXN1bHQsIEluY2x1ZGVQb3N0CiAgICAgICAgICAgICAgICAgcmVzdWx0Lmxhc3RNYXJrZWRS
ZWN0ID0gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KGNvbXBvc2l0aW9uUmVjdHMubGFzdCgpLnJl
Y3QoKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmVzdWx0Lmxhc3RNYXJr
ZWRSZWN0ID0gcmVzdWx0LmZpcnN0TWFya2VkUmVjdDsKLSAgICAgICAgICAgIHJlc3VsdC5tYXJr
ZWRUZXh0ID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGNvbXBvc2l0aW9uUmFuZ2Uu
Z2V0KCkpOworICAgICAgICAgICAgcmVzdWx0Lm1hcmtlZFRleHQgPSBwbGFpblRleHRGb3JDb250
ZXh0KGNvbXBvc2l0aW9uUmFuZ2UuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNTgs
NyArMjcyLDcgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFt
ZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3QKICAgICAgICAgcG9zdExheW91dERh
dGEuY2FyZXRSZWN0QXRFbmQgPSBwb3N0TGF5b3V0RGF0YS5jYXJldFJlY3RBdFN0YXJ0OwogICAg
ICAgICAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyBjaGVjayBzaG91bGQgdGFrZSBpbnRvIGFjY291
bnQgd3JpdGluZyBkaXJlY3Rpb24uCiAgICAgICAgIHBvc3RMYXlvdXREYXRhLmlzUmVwbGFjZUFs
bG93ZWQgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgJiYgYXRCb3VuZGFyeU9mR3JhbnVsYXJp
dHkoc2VsZWN0aW9uLnN0YXJ0KCksIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7
Ci0gICAgICAgIHBvc3RMYXlvdXREYXRhLndvcmRBdFNlbGVjdGlvbiA9IHBsYWluVGV4dFJlcGxh
Y2luZ05vQnJlYWtTcGFjZSh3b3JkUmFuZ2VGcm9tUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCkp
LmdldCgpKTsKKyAgICAgICAgcG9zdExheW91dERhdGEud29yZEF0U2VsZWN0aW9uID0gcGxhaW5U
ZXh0Rm9yQ29udGV4dCh3b3JkUmFuZ2VGcm9tUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCkpLmdl
dCgpKTsKICAgICAgICAgaWYgKHNlbGVjdGlvbi5pc0NvbnRlbnRFZGl0YWJsZSgpKQogICAgICAg
ICAgICAgY2hhcmFjdGVyc0Fyb3VuZFBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpLCBwb3N0TGF5
b3V0RGF0YS5jaGFyYWN0ZXJBZnRlclNlbGVjdGlvbiwgcG9zdExheW91dERhdGEuY2hhcmFjdGVy
QmVmb3JlU2VsZWN0aW9uLCBwb3N0TGF5b3V0RGF0YS50d29DaGFyYWN0ZXJCZWZvcmVTZWxlY3Rp
b24pOwogICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uLmlzUmFuZ2UoKSkgewpAQCAtMjY5LDcgKzI4
Myw3IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVk
aXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0CiAgICAgICAgIGlmIChzZWxlY3RlZFJhbmdl
KSB7CiAgICAgICAgICAgICBzZWxlY3RlZFJhbmdlLT5jb2xsZWN0U2VsZWN0aW9uUmVjdHMocG9z
dExheW91dERhdGEuc2VsZWN0aW9uUmVjdHMpOwogICAgICAgICAgICAgY29udmVydFNlbGVjdGlv
blJlY3RzVG9Sb290Vmlldyh2aWV3LCBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rpb25SZWN0cyk7Ci0g
ICAgICAgICAgICBzZWxlY3RlZFRleHQgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2Uo
c2VsZWN0ZWRSYW5nZS5nZXQoKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsK
KyAgICAgICAgICAgIHNlbGVjdGVkVGV4dCA9IHBsYWluVGV4dEZvckRpc3BsYXkoc2VsZWN0ZWRS
YW5nZS5nZXQoKSk7CiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5zZWxlY3RlZFRleHRMZW5n
dGggPSBzZWxlY3RlZFRleHQubGVuZ3RoKCk7CiAgICAgICAgICAgICBjb25zdCBpbnQgbWF4U2Vs
ZWN0ZWRUZXh0TGVuZ3RoID0gMjAwOwogICAgICAgICAgICAgcG9zdExheW91dERhdGEud29yZEF0
U2VsZWN0aW9uID0gc2VsZWN0ZWRUZXh0LmxlZnQobWF4U2VsZWN0ZWRUZXh0TGVuZ3RoKTsKQEAg
LTUwMiw5ICs1MTYsOSBAQCB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkNvbnRleHQoQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogICAgIH0KICAgICBjb25zdCBpbnQgc2VsZWN0aW9uRXh0ZW5kZWRD
b250ZXh0TGVuZ3RoID0gMzUwOwogICAgIAotICAgIFN0cmluZyBzZWxlY3RlZFRleHQgPSBwbGFp
blRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7Ci0gICAgU3RyaW5nIHRleHRCZWZvcmUgPSBwbGFp
blRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGly
ZWN0aW9uQXRXb3JkQm91bmRhcnkoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQo
KSwgc2VsZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25CYWNrd2FyZCkuZ2V0
KCksIFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgdHJ1ZSk7Ci0gICAgU3RyaW5nIHRleHRB
ZnRlciA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZUV4cGFuZGVkQnlDaGFy
YWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS5lbmQoKSwgc2VsZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25Gb3J3
YXJkKS5nZXQoKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKKyAgICBTdHJp
bmcgc2VsZWN0ZWRUZXh0ID0gcGxhaW5UZXh0Rm9yQ29udGV4dChmcmFtZS5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKKyAgICBTdHJpbmcgdGV4dEJl
Zm9yZSA9IHBsYWluVGV4dEZvckRpc3BsYXkocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGly
ZWN0aW9uQXRXb3JkQm91bmRhcnkoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQo
KSwgc2VsZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25CYWNrd2FyZCkuZ2V0
KCkpOworICAgIFN0cmluZyB0ZXh0QWZ0ZXIgPSBwbGFpblRleHRGb3JEaXNwbGF5KHJhbmdlRXhw
YW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KGZyYW1lLnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLmVuZCgpLCBzZWxlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERp
cmVjdGlvbkZvcndhcmQpLmdldCgpKTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKHNlbGVjdGVkVGV4dCwgdGV4dEJlZm9yZSwgdGV4
dEFmdGVyLCBjYWxsYmFja0lEKSk7CiB9CkBAIC0yMDA2LDcgKzIwMjAsNyBAQCB2b2lkIFdlYlBh
Z2U6OmdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgY29u
c3QgU3RyaW5nJiB0ZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHBsYWluVGV4
dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZS5wdHIoKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJl
aGF2aW9yLCB0cnVlKSAhPSB0ZXh0KSB7CisgICAgaWYgKHBsYWluVGV4dEZvckRpc3BsYXkocmFu
Z2UucHRyKCkpICE9IHRleHQpIHsKICAgICAgICAgLy8gVHJ5IHRvIHNlYXJjaCBmb3IgYSByYW5n
ZSB3aGljaCBpcyB0aGUgY2xvc2VzdCB0byB0aGUgcG9zaXRpb24gd2l0aGluIHRoZSBzZWxlY3Rp
b24gcmFuZ2UgdGhhdCBtYXRjaGVzIHRoZSBwYXNzZWQgaW4gdGV4dC4KICAgICAgICAgaWYgKGF1
dG8gd29yZFJhbmdlID0gcmFuZ2VOZWFyUG9zaXRpb25NYXRjaGVzVGV4dChzdGFydFBvc2l0aW9u
LCB0ZXh0LCBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKSkpIHsKICAgICAgICAgICAgIGlm
ICghd29yZFJhbmdlLT5jb2xsYXBzZWQoKSkKQEAgLTIyMjYsNyArMjI0MCw3IEBAIHZvaWQgV2Vi
UGFnZTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCiAg
ICAgU3RyaW5nIHNlbGVjdGVkVGV4dDsKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNSYW5n
ZSgpKQotICAgICAgICBzZWxlY3RlZFRleHQgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3Bh
Y2UoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQo
KSk7CisgICAgICAgIHNlbGVjdGVkVGV4dCA9IHBsYWluVGV4dEZvckNvbnRleHQoZnJhbWUuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiAKICAgICBT
dHJpbmcgY29udGV4dEJlZm9yZTsKICAgICBpZiAoc3RhcnRQb3NpdGlvbiAhPSBzdGFydE9mRWRp
dGFibGVDb250ZW50KHN0YXJ0UG9zaXRpb24pKSB7CkBAIC0yMjM5LDcgKzIyNTMsNyBAQCB2b2lk
IFdlYlBhZ2U6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICAgICAgICAgICAgIGxhc3RQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgfQog
ICAgICAgICBpZiAobGFzdFBvc2l0aW9uLmlzTm90TnVsbCgpICYmIGxhc3RQb3NpdGlvbiAhPSBz
dGFydFBvc2l0aW9uKQotICAgICAgICAgICAgY29udGV4dEJlZm9yZSA9IHBsYWluVGV4dFJlcGxh
Y2luZ05vQnJlYWtTcGFjZShSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBsYXN0UG9z
aXRpb24sIHN0YXJ0UG9zaXRpb24pLnB0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHRCZWZvcmUg
PSBwbGFpblRleHRGb3JDb250ZXh0KFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIGxh
c3RQb3NpdGlvbiwgc3RhcnRQb3NpdGlvbikucHRyKCkpOwogICAgIH0KIAogICAgIFN0cmluZyBj
b250ZXh0QWZ0ZXI7CkBAIC0yMjUzLDcgKzIyNjcsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RE
aWN0YXRpb25Db250ZXh0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICAgICAgICAgIGxhc3RQ
b3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgfQogICAgICAgICBpZiAobGFzdFBv
c2l0aW9uLmlzTm90TnVsbCgpICYmIGxhc3RQb3NpdGlvbiAhPSBlbmRQb3NpdGlvbikKLSAgICAg
ICAgICAgIGNvbnRleHRBZnRlciA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShSYW5n
ZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBlbmRQb3NpdGlvbiwgbGFzdFBvc2l0aW9uKS5w
dHIoKSk7CisgICAgICAgICAgICBjb250ZXh0QWZ0ZXIgPSBwbGFpblRleHRGb3JDb250ZXh0KFJh
bmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIGVuZFBvc2l0aW9uLCBsYXN0UG9zaXRpb24p
LnB0cigpKTsKICAgICB9CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNlbGVj
dGlvbkNvbnRleHRDYWxsYmFjayhzZWxlY3RlZFRleHQsIGNvbnRleHRCZWZvcmUsIGNvbnRleHRB
ZnRlciwgY2FsbGJhY2tJRCkpOwpAQCAtMjI2Myw3ICsyMjc3LDcgQEAgdm9pZCBXZWJQYWdlOjpy
ZXBsYWNlU2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBu
ZXdUZXh0KQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCku
Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgUmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2UgPSBmcmFt
ZS5zZWxlY3Rpb24oKS5pc0NhcmV0KCkgPyB3b3JkUmFuZ2VGcm9tUG9zaXRpb24oZnJhbWUuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSkgOiBmcmFtZS5zZWxlY3Rpb24oKS50b05vcm1h
bGl6ZWRSYW5nZSgpOwotICAgIGlmIChwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2Uod29y
ZFJhbmdlLmdldCgpKSAhPSBvbGRUZXh0KQorICAgIGlmIChwbGFpblRleHRGb3JDb250ZXh0KHdv
cmRSYW5nZS5nZXQoKSkgIT0gb2xkVGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGZy
YW1lLmVkaXRvcigpLnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXModHJ1ZSk7CkBAIC0yMjg5LDcg
KzIzMDMsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5n
JiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpCiAgICAgICAgIHBvc2l0aW9uID0gc3Rh
cnRPZkRvY3VtZW50KHN0YXRpY19jYXN0PE5vZGUqPihmcmFtZS5kb2N1bWVudCgpLT5kb2N1bWVu
dEVsZW1lbnQoKSkpOwogICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1
bWVudCgpLCBwb3NpdGlvbiwgZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSk7
CiAKLSAgICBpZiAocGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLnB0cigpKSAh
PSBvbGRUZXh0KQorICAgIGlmIChwbGFpblRleHRGb3JDb250ZXh0KHJhbmdlLnB0cigpKSAhPSBv
bGRUZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIG5vdGlm
eSB0aGUgY2xpZW50IHRoYXQgdGhlIHNlbGVjdGlvbiBoYXMgY2hhbmdlZCB1bnRpbCB3ZSBhcmUg
ZG9uZSBpbnNlcnRpbmcgdGhlIG5ldyB0ZXh0LgpAQCAtMjMxNCw3ICsyMzI4LDcgQEAgdm9pZCBX
ZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1
dG9jb3JyZWN0aW9uLCBDb20KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gdGV4
dEZvclJhbmdlID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLmdldCgpKTsK
KyAgICBhdXRvIHRleHRGb3JSYW5nZSA9IHBsYWluVGV4dEZvckNvbnRleHQocmFuZ2UuZ2V0KCkp
OwogICAgIGNvbnN0IHVuc2lnbmVkIG1heFNlYXJjaEF0dGVtcHRzID0gNTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgIGkgPCBtYXhTZWFyY2hBdHRlbXB0cyAmJiB0ZXh0Rm9yUmFuZ2UgIT0gdGV4
dEZvckF1dG9jb3JyZWN0aW9uOyArK2kpCiAgICAgewpAQCAtMjMyMiw3ICsyMzM2LDcgQEAgdm9p
ZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZv
ckF1dG9jb3JyZWN0aW9uLCBDb20KICAgICAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpIHx8IHBv
c2l0aW9uID09IHJhbmdlLT5zdGFydFBvc2l0aW9uKCkpCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCB3b3JkUmFuZ2VG
cm9tUG9zaXRpb24ocG9zaXRpb24pLT5zdGFydFBvc2l0aW9uKCksIHJhbmdlLT5lbmRQb3NpdGlv
bigpKTsKLSAgICAgICAgdGV4dEZvclJhbmdlID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1Nw
YWNlKHJhbmdlLmdldCgpKTsKKyAgICAgICAgdGV4dEZvclJhbmdlID0gcGxhaW5UZXh0Rm9yQ29u
dGV4dChyYW5nZS5nZXQoKSk7CiAgICAgfQogCiAgICAgVmVjdG9yPFNlbGVjdGlvblJlY3Q+IHNl
bGVjdGlvblJlY3RzOwpAQCAtMjM4NSw3ICsyMzk5LDcgQEAgYm9vbCBXZWJQYWdlOjphcHBseUF1
dG9jb3JyZWN0aW9uSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJp
bmcKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNDYXJldCgpKSB7CiAgICAgICAgIFZpc2li
bGVQb3NpdGlvbiBwb3NpdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0
KCk7CiAgICAgICAgIHJhbmdlID0gd29yZFJhbmdlRnJvbVBvc2l0aW9uKHBvc2l0aW9uKTsKLSAg
ICAgICAgdGV4dEZvclJhbmdlID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdl
LmdldCgpKTsKKyAgICAgICAgdGV4dEZvclJhbmdlID0gcGxhaW5UZXh0Rm9yQ29udGV4dChyYW5n
ZS5nZXQoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBJZiAnb3JpZ2luYWxUZXh0JyBpcyBub3Qg
dGhlIHNhbWUgYXMgJ3RleHRGb3JSYW5nZScgd2UgbmVlZCB0byBtb3ZlICdyYW5nZScKICAgICAg
ICAgLy8gZm9yd2FyZCBzdWNoIHRoYXQgaXQgbWF0Y2hlcyB0aGUgb3JpZ2luYWwgc2VsZWN0aW9u
IGFzIG11Y2ggYXMgcG9zc2libGUuCkBAIC0yMzk2LDcgKzI0MTAsNyBAQCBib29sIFdlYlBhZ2U6
OmFwcGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hbChjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNv
bnN0IFN0cmluZwogICAgICAgICAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICAg
ICAgICAgIHBvc2l0aW9uID0gc3RhcnRPZkRvY3VtZW50KHN0YXRpY19jYXN0PE5vZGUqPihmcmFt
ZS5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkpOwogICAgICAgICAgICAgcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkuc3RhcnQoKSk7Ci0gICAgICAgICAgICB0ZXh0Rm9yUmFuZ2UgPSBwbGFp
blRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgdGV4
dEZvclJhbmdlID0gcGxhaW5UZXh0Rm9yQ29udGV4dChyYW5nZS5nZXQoKSk7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBsb29wQ291bnQgPSAwOwogICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbWF4
UG9zaXRpb25zQXR0ZW1wdHMgPSAxMDsKICAgICAgICAgICAgIHdoaWxlICh0ZXh0Rm9yUmFuZ2Uu
bGVuZ3RoKCkgJiYgdGV4dEZvclJhbmdlLmxlbmd0aCgpID4gb3JpZ2luYWxUZXh0Lmxlbmd0aCgp
ICYmIGxvb3BDb3VudCA8IG1heFBvc2l0aW9uc0F0dGVtcHRzKSB7CkBAIC0yNDA1LDcgKzI0MTks
NyBAQCBib29sIFdlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hbChjb25zdCBTdHJp
bmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZwogICAgICAgICAgICAgICAgICAgICByYW5nZSA9
IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICByYW5n
ZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHBvc2l0aW9uLCBmcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKTsKLSAgICAgICAgICAgICAgICB0ZXh0Rm9yUmFu
Z2UgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UuZ2V0KCkpOworICAgICAg
ICAgICAgICAgIHRleHRGb3JSYW5nZSA9IHBsYWluVGV4dEZvckNvbnRleHQocmFuZ2UuZ2V0KCkp
OwogICAgICAgICAgICAgICAgIGxvb3BDb3VudCsrOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgaWYgKHRleHRGb3JSYW5nZS5pc0VtcHR5KCkgJiYgcmFuZ2UgJiYgIXJhbmdlLT5jb2xs
YXBzZWQoKSkgewpAQCAtMjQyMSw3ICsyNDM1LDcgQEAgYm9vbCBXZWJQYWdlOjphcHBseUF1dG9j
b3JyZWN0aW9uSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcK
ICAgICAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAg
ICB0ZXh0Rm9yUmFuZ2UgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UuZ2V0
KCkpOworICAgICAgICB0ZXh0Rm9yUmFuZ2UgPSBwbGFpblRleHRGb3JDb250ZXh0KHJhbmdlLmdl
dCgpKTsKICAgICB9CiAKICAgICBpZiAoZm9sZFF1b3RlTWFya3ModGV4dEZvclJhbmdlKSAhPSBv
cmlnaW5hbFRleHRXaXRoRm9sZGVkUXVvdGVNYXJrcykKQEAgLTI0NTcsMTcgKzI0NzEsMTcgQEAg
V2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IFdlYlBhZ2U6OmF1dG9jb3JyZWN0aW9uQ29udGV4dCgp
CiAgICAgY29uc3QgdW5zaWduZWQgbWF4Q29udGV4dExlbmd0aCA9IDMwOwogCiAgICAgaWYgKGZy
YW1lLnNlbGVjdGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAgc2VsZWN0ZWRUZXh0ID0gcGxhaW5U
ZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnRv
Tm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgICAgICBzZWxlY3RlZFRleHQgPSBwbGFpblRl
eHRGb3JDb250ZXh0KGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJh
bmdlKCkuZ2V0KCkpOwogCiAgICAgaWYgKGF1dG8gY29tcG9zaXRpb25SYW5nZSA9IGZyYW1lLmVk
aXRvcigpLmNvbXBvc2l0aW9uUmFuZ2UoKSkgewogICAgICAgICByYW5nZSA9IFJhbmdlOjpjcmVh
dGUoKmZyYW1lLmRvY3VtZW50KCksIGNvbXBvc2l0aW9uUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwg
c3RhcnRQb3NpdGlvbik7CiAgICAgICAgIFN0cmluZyBtYXJrZWRUZXh0QmVmb3JlOwogICAgICAg
ICBpZiAocmFuZ2UpCi0gICAgICAgICAgICBtYXJrZWRUZXh0QmVmb3JlID0gcGxhaW5UZXh0UmVw
bGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLmdldCgpKTsKKyAgICAgICAgICAgIG1hcmtlZFRleHRC
ZWZvcmUgPSBwbGFpblRleHRGb3JDb250ZXh0KHJhbmdlLmdldCgpKTsKICAgICAgICAgcmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBlbmRQb3NpdGlvbiwgY29tcG9zaXRp
b25SYW5nZS0+ZW5kUG9zaXRpb24oKSk7CiAgICAgICAgIFN0cmluZyBtYXJrZWRUZXh0QWZ0ZXI7
CiAgICAgICAgIGlmIChyYW5nZSkKLSAgICAgICAgICAgIG1hcmtlZFRleHRBZnRlciA9IHBsYWlu
VGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBtYXJr
ZWRUZXh0QWZ0ZXIgPSBwbGFpblRleHRGb3JDb250ZXh0KHJhbmdlLmdldCgpKTsKICAgICAgICAg
bWFya2VkVGV4dCA9IG1hcmtlZFRleHRCZWZvcmUgKyBzZWxlY3RlZFRleHQgKyBtYXJrZWRUZXh0
QWZ0ZXI7CiAgICAgICAgIGlmICghbWFya2VkVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IG1hcmtlZFRleHRSYW5nZS5sb2NhdGlvbiA9IG1hcmtlZFRleHRCZWZvcmUubGVuZ3RoKCk7CkBA
IC0yNDg0LDE0ICsyNDk4LDE0IEBAIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCBXZWJQYWdlOjph
dXRvY29ycmVjdGlvbkNvbnRleHQoKQogICAgICAgICAgICAgICAgIHByZXZpb3VzUG9zaXRpb24g
PSBzdGFydE9mV29yZChwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjdXJyZW50
UG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uQmFja3dhcmQpKTsKICAgICAgICAg
ICAgICAgICBpZiAocHJldmlvdXNQb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxhaW5UZXh0
UmVwbGFjaW5nTm9CcmVha1NwYWNlKFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHBy
ZXZpb3VzUG9zaXRpb24sIGN1cnJlbnRQb3NpdGlvbikucHRyKCkpOworICAgICAgICAgICAgICAg
IFN0cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dEZvckNvbnRleHQoUmFuZ2U6OmNyZWF0ZSgq
ZnJhbWUuZG9jdW1lbnQoKSwgcHJldmlvdXNQb3NpdGlvbiwgY3VycmVudFBvc2l0aW9uKS5wdHIo
KSk7CiAgICAgICAgICAgICAgICAgdG90YWxDb250ZXh0TGVuZ3RoICs9IGN1cnJlbnRXb3JkLmxl
bmd0aCgpOwogICAgICAgICAgICAgICAgIGlmICh0b3RhbENvbnRleHRMZW5ndGggPj0gbWF4Q29u
dGV4dExlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
Y3VycmVudFBvc2l0aW9uID0gcHJldmlvdXNQb3NpdGlvbjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24uaXNOb3ROdWxsKCkgJiYgY3VycmVudFBvc2l0aW9u
ICE9IHN0YXJ0UG9zaXRpb24pIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0QmVmb3JlID0gcGxh
aW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50
KCksIGN1cnJlbnRQb3NpdGlvbiwgc3RhcnRQb3NpdGlvbikucHRyKCkpOworICAgICAgICAgICAg
ICAgIGNvbnRleHRCZWZvcmUgPSBwbGFpblRleHRGb3JDb250ZXh0KFJhbmdlOjpjcmVhdGUoKmZy
YW1lLmRvY3VtZW50KCksIGN1cnJlbnRQb3NpdGlvbiwgc3RhcnRQb3NpdGlvbikucHRyKCkpOwog
ICAgICAgICAgICAgICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRp
b24sIFBhcmFncmFwaEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCkpCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHRCZWZvcmUgPSBtYWtlU3RyaW5nKCJcbiAiX3MsIGNvbnRleHRCZWZv
cmUpOwogICAgICAgICAgICAgfQpAQCAtMjUwMiw3ICsyNTE2LDcgQEAgV2ViQXV0b2NvcnJlY3Rp
b25Db250ZXh0IFdlYlBhZ2U6OmF1dG9jb3JyZWN0aW9uQ29udGV4dCgpCiAgICAgICAgICAgICBp
ZiAoIWF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGVuZFBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHks
IERpcmVjdGlvbkZvcndhcmQpICYmIHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShlbmRQb3Np
dGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSkKICAgICAgICAgICAgICAg
ICBuZXh0UG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShlbmRQ
b3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKICAgICAgICAgICAg
IGlmIChuZXh0UG9zaXRpb24uaXNOb3ROdWxsKCkpCi0gICAgICAgICAgICAgICAgY29udGV4dEFm
dGVyID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKFJhbmdlOjpjcmVhdGUoKmZyYW1l
LmRvY3VtZW50KCksIGVuZFBvc2l0aW9uLCBuZXh0UG9zaXRpb24pLnB0cigpKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0QWZ0ZXIgPSBwbGFpblRleHRGb3JDb250ZXh0KFJhbmdlOjpjcmVhdGUo
KmZyYW1lLmRvY3VtZW50KCksIGVuZFBvc2l0aW9uLCBuZXh0UG9zaXRpb24pLnB0cigpKTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMjYzMSwxMCArMjY0NSwxMCBAQCBzdGF0aWMgdm9pZCBkYXRh
RGV0ZWN0b3JMaW5rUG9zaXRpb25JbmZvcm1hdGlvbihFbGVtZW50JiBlbGVtZW50LCBJbnRlcmFj
dGlvbkluZgogICAgIAogICAgIGF1dG8gbGlua1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShlbGVtZW50
LmRvY3VtZW50KCkpOwogICAgIGxpbmtSYW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKGVsZW1lbnQp
OwotICAgIGluZm8udGV4dEJlZm9yZSA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShy
YW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShsaW5rUmFu
Z2UtPnN0YXJ0UG9zaXRpb24oKSwKLSAgICAgICAgZGF0YURldGVjdGlvbkV4dGVuZGVkQ29udGV4
dExlbmd0aCwgRGlyZWN0aW9uQmFja3dhcmQpLmdldCgpLCBUZXh0SXRlcmF0b3JEZWZhdWx0QmVo
YXZpb3IsIHRydWUpOwotICAgIGluZm8udGV4dEFmdGVyID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9C
cmVha1NwYWNlKHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5k
YXJ5KGxpbmtSYW5nZS0+ZW5kUG9zaXRpb24oKSwKLSAgICAgICAgZGF0YURldGVjdGlvbkV4dGVu
ZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0aW9uRm9yd2FyZCkuZ2V0KCksIFRleHRJdGVyYXRvckRl
ZmF1bHRCZWhhdmlvciwgdHJ1ZSk7CisgICAgaW5mby50ZXh0QmVmb3JlID0gcGxhaW5UZXh0Rm9y
RGlzcGxheShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFy
eShsaW5rUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwKKyAgICAgICAgZGF0YURldGVjdGlvbkV4dGVu
ZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0aW9uQmFja3dhcmQpLmdldCgpKTsKKyAgICBpbmZvLnRl
eHRBZnRlciA9IHBsYWluVGV4dEZvckRpc3BsYXkocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0lu
RGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1JhbmdlLT5lbmRQb3NpdGlvbigpLAorICAgICAg
ICBkYXRhRGV0ZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25Gb3J3YXJkKS5n
ZXQoKSk7CiB9CiAjZW5kaWYKIApAQCAtNDE4NiwyMCArNDIwMCwyMSBAQCB2b2lkIFdlYlBhZ2U6
OnJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KERvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1
ZXN0IHJlcXVlcwogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byBtYWtlU3RyaW5nID0gWyZd
KFZpc2libGVQb3NpdGlvbiYgc3RhcnQsIFZpc2libGVQb3NpdGlvbiYgZW5kKSAtPiBOU0F0dHJp
YnV0ZWRTdHJpbmcgKiB7CisgICAgYXV0byBtYWtlU3RyaW5nID0gW10gKFZpc2libGVQb3NpdGlv
biYgc3RhcnQsIFZpc2libGVQb3NpdGlvbiYgZW5kKSAtPiBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVk
U3RyaW5nPiB7CiAgICAgICAgIGlmIChzdGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxsKCkgfHwg
c3RhcnQgPT0gZW5kKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgU2ltcGxlUmFu
Z2UgcmFuZ2UgeyBtYWtlQm91bmRhcnlQb2ludChzdGFydC5kZWVwRXF1aXZhbGVudCgpKSwgbWFr
ZUJvdW5kYXJ5UG9pbnQoZW5kLmRlZXBFcXVpdmFsZW50KCkpIH07CiAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCByZXR1cm4gZWRpdGluZy1vZmZzZXQtY29tcGF0aWJsZSBhdHRyaWJ1dGVk
IHN0cmluZ3MgaWYgdGhhdCBvcHRpb24gaXMgcmVxdWVzdGVkLgotICAgICAgICByZXR1cm4gYWRv
cHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6cGxhaW5UZXh0
UmVwbGFjaW5nTm9CcmVha1NwYWNlKHN0YXJ0LmRlZXBFcXVpdmFsZW50KCksIGVuZC5kZWVwRXF1
aXZhbGVudCgpKV0pLmF1dG9yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpXZWJDb3JlOjpwbGFpblRleHRS
ZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UpXSk7CiAgICAgfTsKIAotICAgIGNvbnRleHQuY29u
dGV4dEJlZm9yZSA9IG1ha2VTdHJpbmcoY29udGV4dEJlZm9yZVN0YXJ0LCBzdGFydE9mUmFuZ2VP
ZkludGVyZXN0SW5TZWxlY3Rpb24pOwotICAgIGNvbnRleHQuc2VsZWN0ZWRUZXh0ID0gbWFrZVN0
cmluZyhzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24sIGVuZE9mUmFuZ2VPZkludGVy
ZXN0SW5TZWxlY3Rpb24pOwotICAgIGNvbnRleHQuY29udGV4dEFmdGVyID0gbWFrZVN0cmluZyhl
bmRPZlJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0aW9uLCBjb250ZXh0QWZ0ZXJFbmQpOworICAgIGNv
bnRleHQuY29udGV4dEJlZm9yZSA9IG1ha2VTdHJpbmcoY29udGV4dEJlZm9yZVN0YXJ0LCBzdGFy
dE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24pLmdldCgpOworICAgIGNvbnRleHQuc2VsZWN0
ZWRUZXh0ID0gbWFrZVN0cmluZyhzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24sIGVu
ZE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24pLmdldCgpOworICAgIGNvbnRleHQuY29udGV4
dEFmdGVyID0gbWFrZVN0cmluZyhlbmRPZlJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0aW9uLCBjb250
ZXh0QWZ0ZXJFbmQpLmdldCgpOwogICAgIGlmIChjb21wb3NpdGlvblJhbmdlICYmIHJhbmdlc092
ZXJsYXAocmFuZ2VPZkludGVyZXN0LmdldCgpLCBjb21wb3NpdGlvblJhbmdlLmdldCgpKSkgewog
ICAgICAgICBWaXNpYmxlUG9zaXRpb24gY29tcG9zaXRpb25TdGFydChjb21wb3NpdGlvblJhbmdl
LT5zdGFydFBvc2l0aW9uKCkpOwogICAgICAgICBWaXNpYmxlUG9zaXRpb24gY29tcG9zaXRpb25F
bmQoY29tcG9zaXRpb25SYW5nZS0+ZW5kUG9zaXRpb24oKSk7Ci0gICAgICAgIGNvbnRleHQubWFy
a2VkVGV4dCA9IG1ha2VTdHJpbmcoY29tcG9zaXRpb25TdGFydCwgY29tcG9zaXRpb25FbmQpOwor
ICAgICAgICBjb250ZXh0Lm1hcmtlZFRleHQgPSBtYWtlU3RyaW5nKGNvbXBvc2l0aW9uU3RhcnQs
IGNvbXBvc2l0aW9uRW5kKS5nZXQoKTsKICAgICAgICAgY29udGV4dC5zZWxlY3RlZFJhbmdlSW5N
YXJrZWRUZXh0LmxvY2F0aW9uID0gZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKHN0YXJ0T2ZSYW5n
ZU9mSW50ZXJlc3RJblNlbGVjdGlvbiwgY29tcG9zaXRpb25TdGFydCk7CiAgICAgICAgIGNvbnRl
eHQuc2VsZWN0ZWRSYW5nZUluTWFya2VkVGV4dC5sZW5ndGggPSBbY29udGV4dC5zZWxlY3RlZFRl
eHQuc3RyaW5nIGxlbmd0aF07CiAgICAgfQpAQCAtNDIyNiw3ICs0MjQxLDggQEAgdm9pZCBXZWJQ
YWdlOjpyZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChEb2N1bWVudEVkaXRpbmdDb250ZXh0
UmVxdWVzdCByZXF1ZXMKICAgICAgICAgaWYgKGF1dG8gY29udGV4dFJhbmdlID0gbWFrZVJhbmdl
KGNvbnRleHRCZWZvcmVTdGFydCwgY29udGV4dEFmdGVyRW5kKSkKICAgICAgICAgICAgIGNvbnRl
eHQudGV4dFJlY3RzID0gY2hhcmFjdGVyUmVjdHNGb3JSYW5nZSgqY29udGV4dFJhbmdlLCAwKTsK
ICAgICB9IGVsc2UgaWYgKHdhbnRzTWFya2VkVGV4dFJlY3RzICYmIGNvbXBvc2l0aW9uUmFuZ2Up
IHsKLSAgICAgICAgYXV0byBjb21wb3NpdGlvblN0YXJ0T2Zmc2V0ID0gcGxhaW5UZXh0UmVwbGFj
aW5nTm9CcmVha1NwYWNlKGNvbnRleHRCZWZvcmVTdGFydC5kZWVwRXF1aXZhbGVudCgpLCBjb21w
b3NpdGlvblJhbmdlLT5zdGFydFBvc2l0aW9uKCkpLmxlbmd0aCgpOworICAgICAgICBTaW1wbGVS
YW5nZSByYW5nZSB7IG1ha2VCb3VuZGFyeVBvaW50KGNvbnRleHRCZWZvcmVTdGFydC5kZWVwRXF1
aXZhbGVudCgpKSwgbWFrZUJvdW5kYXJ5UG9pbnQoY29tcG9zaXRpb25SYW5nZS0+c3RhcnRQb3Np
dGlvbigpKSB9OworICAgICAgICBhdXRvIGNvbXBvc2l0aW9uU3RhcnRPZmZzZXQgPSBXZWJDb3Jl
OjpwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UpLmxlbmd0aCgpOwogICAgICAg
ICBjb250ZXh0LnRleHRSZWN0cyA9IGNoYXJhY3RlclJlY3RzRm9yUmFuZ2UoKmNvbXBvc2l0aW9u
UmFuZ2UsIGNvbXBvc2l0aW9uU3RhcnRPZmZzZXQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBkMjVkYmVm
YmVkZjg5NmE5ZmUyMjM4YWY4MzgxYmUxZTgyNmVmYTU4Li4zYTBkYzQ1MjAxNzZjNGNiMzlkMThj
ZDUxMDIyYTA0ZWIwN2NkNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtODYsNyArODYsNiBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9SZW5kZXJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxWaWV3Lmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1NpbXBsZVJhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlSW5oZXJpdGVkRGF0YS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJs
ZVVuaXRzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpp
bmRleCBlYjkyNjhjNWQ3OGQ1ZTA0ZDc3YjZhZWI1MGE1YzJjYzA5YzZhMTIyLi5iYzNiZWJkZjI2
MmZhNGVjZmIwMTg3OGIzYzJiMGM1NWMzZWE5MDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTEwMCw3ICsxMDAsNiBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0
Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgotI2ltcG9y
dCA8V2ViQ29yZS9TaW1wbGVSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TbWFydFJlcGxhY2Uu
aD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVQcm9wZXJ0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1N1YmZyYW1lTG9hZGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQppbmRleCBlZWFmMGEwOWU4YjkwNmQxNjVkYWExNDgxNDZjNGM4MzJjZTZi
YTJlLi41YmEyZTc4MDQ2ZjQ2ODA3ZDE4ZWI0MTg3NzNhZThiMjE0MjFmZmUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTcwMjMsOCAr
NzAyMyw4IEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKV9hdHRyaWJ1dGVkU3RyaW5nRnJvbURP
TVJhbmdlOihET01SYW5nZSAqKXJhbmdlCiAtIChOU0F0dHJpYnV0ZWRTdHJpbmcgKilfbGVnYWN5
QXR0cmlidXRlZFN0cmluZ0Zyb206KERPTU5vZGUqKXN0YXJ0Q29udGFpbmVyIG9mZnNldDooaW50
KXN0YXJ0T2Zmc2V0IHRvOihET01Ob2RlKillbmRDb250YWluZXIgb2Zmc2V0OihpbnQpZW5kT2Zm
c2V0CiB7CiAgICAgcmV0dXJuIGF0dHJpYnV0ZWRTdHJpbmdCZXR3ZWVuU3RhcnRBbmRFbmQoCi0g
ICAgICAgIFdlYkNvcmU6OlBvc2l0aW9uIHsgY29yZShzdGFydENvbnRhaW5lciksIHN0YXJ0T2Zm
c2V0LCBXZWJDb3JlOjpQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yIH0sCi0gICAg
ICAgIFdlYkNvcmU6OlBvc2l0aW9uIHsgY29yZShlbmRDb250YWluZXIpLCBlbmRPZmZzZXQsIFdl
YkNvcmU6OlBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IgfSk7CisgICAgICAgIFdl
YkNvcmU6OlBvc2l0aW9uIHsgY29yZShzdGFydENvbnRhaW5lciksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzdGFydE9mZnNldCksIFdlYkNvcmU6OlBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5B
bmNob3IgfSwKKyAgICAgICAgV2ViQ29yZTo6UG9zaXRpb24geyBjb3JlKGVuZENvbnRhaW5lciks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmRPZmZzZXQpLCBXZWJDb3JlOjpQb3NpdGlvbjo6UG9z
aXRpb25Jc09mZnNldEluQW5jaG9yIH0pOwogfQogCiAtIChOU0F0dHJpYnV0ZWRTdHJpbmcgKilh
dHRyaWJ1dGVkU3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlRleHRJdGVyYXRvci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVGV4dEl0ZXJhdG9yLm1tCmluZGV4IDM1N2M1MjgyODM2YWE4ZGJhZGEyMWVjZTQ5Mzg4NWU0
ZmU4YmIxYjIuLjZiODhiYmYxMTNjN2EwYWQzOTk1ODRhNTEwODU5YjA4Y2IyMWNlMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1t
CkBAIC0zMCw3ICszMCw2IEBACiAjaW1wb3J0ICJXZWJUeXBlc0ludGVybmFsLmgiCiAjaW1wb3J0
IDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1JhbmdlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1NpbXBsZVJhbmdlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RleHRJdGVyYXRvci5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQg
PHd0Zi9SdW5Mb29wLmg+CkBAIC03MCwzMiArNjksNDAgQEAgLSAoaWQpaW5pdFdpdGhSYW5nZToo
RE9NUmFuZ2UgKilyYW5nZQogICAgICAgICByZXR1cm4gc2VsZjsKICAgICAKICAgICBfcHJpdmF0
ZSA9IFtbV2ViVGV4dEl0ZXJhdG9yUHJpdmF0ZSBhbGxvY10gaW5pdF07Ci0gICAgX3ByaXZhdGUt
Pl90ZXh0SXRlcmF0b3IgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4oY29yZShy
YW5nZSkpOworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiBzZWxmOworCisgICAgX3By
aXZhdGUtPl90ZXh0SXRlcmF0b3IgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4o
KmNvcmUocmFuZ2UpKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAodm9pZClhZHZhbmNlCiB7
Ci0gICAgX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3ItPmFkdmFuY2UoKTsKKyAgICBpZiAoX3ByaXZh
dGUtPl90ZXh0SXRlcmF0b3IpCisgICAgICAgIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yLT5hZHZh
bmNlKCk7CiAgICAgX3ByaXZhdGUtPl91cGNvbnZlcnRlZFRleHQuc2hyaW5rKDApOwogfQogCiAt
IChCT09MKWF0RW5kCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yLT5hdEVu
ZCgpOworICAgIHJldHVybiBfcHJpdmF0ZS0+X3RleHRJdGVyYXRvciAmJiBfcHJpdmF0ZS0+X3Rl
eHRJdGVyYXRvci0+YXRFbmQoKTsKIH0KIAogLSAoRE9NUmFuZ2UgKiljdXJyZW50UmFuZ2UKIHsK
KyAgICBpZiAoIV9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yKQorICAgICAgICByZXR1cm4gbmlsOwog
ICAgIGF1dG8mIHRleHRJdGVyYXRvciA9ICpfcHJpdmF0ZS0+X3RleHRJdGVyYXRvcjsKICAgICBp
ZiAodGV4dEl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICByZXR1cm4gbmlsOwogICAgIHJldHVybiBraXQoY3JlYXRlTGl2ZVJhbmdlKHRleHRJdGVyYXRv
ci5yYW5nZSgpKS5wdHIoKSk7CiB9CiAKIC8vIEZJWE1FOiBDb25zaWRlciBkZXByZWNhdGluZyB0
aGlzIG1ldGhvZCBhbmQgY3JlYXRpbmcgb25lIHRoYXQgZG9lcyBub3QgcmVxdWlyZSBjb3B5aW5n
IDgtYml0IGNoYXJhY3RlcnMuCiAtIChjb25zdCB1bmljaGFyKiljdXJyZW50VGV4dFBvaW50ZXIK
IHsKKyAgICBpZiAoIV9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBTdHJpbmdWaWV3IHRleHQgPSBfcHJpdmF0ZS0+X3RleHRJdGVyYXRvci0+dGV4
dCgpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRleHQubGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5n
dGgpCkBAIC0xMTAsNyArMTE3LDcgQEAgLSAoY29uc3QgdW5pY2hhciopY3VycmVudFRleHRQb2lu
dGVyCiAKIC0gKE5TVUludGVnZXIpY3VycmVudFRleHRMZW5ndGgKIHsKLSAgICByZXR1cm4gX3By
aXZhdGUtPl90ZXh0SXRlcmF0b3ItPnRleHQoKS5sZW5ndGgoKTsKKyAgICByZXR1cm4gX3ByaXZh
dGUtPl90ZXh0SXRlcmF0b3IgPyBfcHJpdmF0ZS0+X3RleHRJdGVyYXRvci0+dGV4dCgpLmxlbmd0
aCgpIDogMDsKIH0KIAogQGVuZApAQCAtMTE5LDEyICsxMjYsMTIgQEAgQGltcGxlbWVudGF0aW9u
IFdlYlRleHRJdGVyYXRvciAoV2ViVGV4dEl0ZXJhdG9yRGVwcmVjYXRlZCkKIAogLSAoRE9NTm9k
ZSAqKWN1cnJlbnROb2RlCiB7Ci0gICAgcmV0dXJuIGtpdChfcHJpdmF0ZS0+X3RleHRJdGVyYXRv
ci0+bm9kZSgpKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3IgPyBraXQoX3By
aXZhdGUtPl90ZXh0SXRlcmF0b3ItPm5vZGUoKSkgOiBuaWw7CiB9CiAKIC0gKE5TU3RyaW5nICop
Y3VycmVudFRleHQKIHsKLSAgICByZXR1cm4gW1tfcHJpdmF0ZS0+X3RleHRJdGVyYXRvci0+dGV4
dCgpLmNyZWF0ZU5TU3RyaW5nKCkuZ2V0KCkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yID8gX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3ItPnRl
eHQoKS5jcmVhdGVOU1N0cmluZygpLmF1dG9yZWxlYXNlKCkgOiBAIiI7CiB9CiAKIEBlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393670</attachid>
            <date>2020-03-16 12:08:02 -0700</date>
            <delta_ts>2020-03-16 12:08:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209129-20200316120800.patch</filename>
            <type>text/plain</type>
            <size>116146</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTI4ZmRiMWU5ZDA2NmYw
NjJmODEyZTBhOWQ0NmU5YmFjNWIzZmY1ZC4uMjFhY2JhZGFkNmQ4NjZhMTQ2YWM1YTE5NGQyYTli
ZDdkZWQwN2ZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAyMC0wMy0xNSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBtb3N0IG9mIFRleHRJ
dGVyYXRvciBvZmYgb2YgbGl2ZSByYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwOTEyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIC0gQ2hhbmdlIGFsbW9zdCBhbGwgYXJndW1lbnRzIGFuZCByZXR1
cm4gdmFsdWVzIG9mIGZ1bmN0aW9ucyBpbiBUZXh0SXRlcmF0b3IuaAorICAgICAgICAgIHRvIHVz
ZSBTaW1wbGVSYW5nZSBpbnN0ZWFkIG9mIGxpdmUgcmFuZ2VzLiBFeGNlcHRpb25zIGFyZSBhbiBv
dmVybG9hZCBvZiBwbGFpblRleHQKKyAgICAgICAgICBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
LCBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoLAorICAgICAgICAgIFRl
eHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UsIGFuZCBUZXh0SXRlcmF0
b3I6OnN1YnJhbmdlLiBUaG9zZQorICAgICAgICAgIGZpdmUgYXJlIGEgbGl0dGxlIHRyaWNraWVy
IHRvIGNvbnZlcnQsIHNvIEkgd2lsbCBkbyB0aGVtIGVhY2ggaW4gc2VwYXJhdGUgcGF0Y2hlcy4K
KworICAgICAgICAtIEdvIHdpdGggdGhlIGZsb3cgaW4gYWRkaW5nIGFuIGluY2x1ZGUgb2YgTm9k
ZS5oIHRvIEJvdW5kYXJ5UG9pbnQuaC4gSSBoYWQgYXZvaWRlZAorICAgICAgICAgIHRoaXMgaW4g
dGhlIGluaXRpYWwgdmVyc2lvbiwgYnV0IG5vdyBpdCBzZWVtcyBwcmFjdGljYWwgdG8ganVzdCBs
ZWF2ZSBpdCB0aGF0IHdheS4KKyAgICAgICAgICBUaGlzIGxlZCB0byByZW1vdmluZyBCb3VuZGFy
eVBvaW50LmNwcCBhbmQgbW92aW5nIGFsbCBmdW5jdGlvbnMgdG8gdGhlIGhlYWRlci4KKworICAg
ICAgICAtIENvbnZlcnRlZCBtYW55IG1lbWJlciBmdW5jdGlvbnMgb2YgdGhlIFBvc2l0aW9uIGNs
YXNzIGZyb20gdXNpbmcgaW50IHRvIHVuc2lnbmVkCisgICAgICAgICAgZm9yIG9mZnNldHMuIFRo
ZSBET00gc3BlY2lmaWVzIHVuc2lnbmVkIGZvciBvZmZzZXRzLCBidXQgZm9yIHNvbWUgcmVhc29u
IHdlIHVzZWQKKyAgICAgICAgICBpbnQgZm9yIHRoZW0gYSBsb3QgaGlzdG9yaWNhbGx5LCBldmVu
IHRob3VnaCBuZWdhdGl2ZSBudW1iZXJzIGRvbid0IG1ha2Ugc2Vuc2UuCisgICAgICAgICAgTmV3
IGNsYXNzZXMgbGlrZSBTdGF0aWNSYW5nZSwgU2ltcGxlUmFuZ2UsIGFuZCBCb3VuZGFyeVBvaW50
IGFyZSBhbHJlYWR5IHVzaW5nCisgICAgICAgICAgdW5zaWduZWQgZXhjbHVzaXZlbHkgYW5kIHdl
J2xsIGV2ZW50dWFsbHkgY29udmVydCBldmVyeXRoaW5nLgorCisgICAgICAgIC0gUmVtb3ZlIGlu
Y2x1ZGVzIG9mIFNpbXBsZVJhbmdlLmggZnJvbSBmaWxlcyB0aGF0IGFsc28gaW5jbHVkZSBUZXh0
SXRlcmF0b3IuaCwKKyAgICAgICAgICBub3cgdGhhdCBUZXh0SXRlcmF0b3IuaCBwdWxscyBpdCBp
bi4KKworICAgICAgICAqIFNvdXJjZXMudHh0OiBSZW1vdmVkIEJvdW5kYXJ5UG9pbnQuY3BwLgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6dHJhdmVyc2VUb09mZnNldEluUmFuZ2UpOiBVcGRhdGVkIHRvIHBh
c3MgYSByZWZlcmVuY2UKKyAgICAgICAgdG8gYSByYW5nZSByYXRoZXIgdGhhbiBhIHBvaW50ZXIs
IGFmdGVyIG51bGwtY2hlY2tpbmcgaXQuCisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjpsZW5ndGhGb3JSYW5nZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6bmV4dEJvdW5kYXJ5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjpwcmV2aW91c0JvdW5kYXJ5KTogRGl0dG8uCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OnN0cmluZ0ZvclJhbmdlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzdHJpbmdGb3JWaXNpYmxlUG9zaXRpb25SYW5nZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGVuZ3RoRm9yVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgY29uc3QpOiBEaXR0by4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oOiBSZW1vdmVkIGFuIGV4dHJhIGluY2x1ZGUuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYXJyYXlP
ZlRleHRGb3JUZXh0TWFya2VyczphdHRyaWJ1dGVkOl0pOgorICAgICAgICBVcGRhdGVkIHRvIHBh
c3MgYSByZWZlcmVuY2UgdG8gYSByYW5nZSByYXRoZXIgdGhhbiBhIHBvaW50ZXIsIGFmdGVyIG51
bGwtY2hlY2tpbmcgaXQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIGRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlOnNwZWxsQ2hl
Y2s6XSk6IERpdHRvLgorCisgICAgICAgICogZG9tL0JvdW5kYXJ5UG9pbnQuY3BwOiBSZW1vdmVk
LgorCisgICAgICAgICogZG9tL0JvdW5kYXJ5UG9pbnQuaDogUmVtb3ZlZCByZWR1bmRhbnQgaW5j
bHVkZXMgYW5kIGZvcndhcmQgZGVjbGFyYXRpb25zCisgICAgICAgIHNpbmNlIHdlJ3JlIG5vdyBj
b21taXR0aW5nIHRvIGluY2x1ZGluZyAiTm9kZS5oIiBoZXJlLiBNb3ZlZCBmdW5jdGlvbnMKKyAg
ICAgICAgYWxsIG91dCBvZiB0aGUgLmNwcCBmaWxlIGFuZCBtYWRlIHRoZW0gaW5saW5lcy4KKwor
ICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4dFJhbmdlcyk6IFBhc3Mg
YSByZWZlcmVuY2UgdG8KKyAgICAgICAgYSByYW5nZSBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KKwor
ICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6
UG9zaXRpb24pOiBUYWtlIHVuc2lnbmVkLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246Om1v
dmVUb1Bvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6bW92ZVRv
T2Zmc2V0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6cGFyZW50QW5jaG9y
ZWRFcXVpdmFsZW50IGNvbnN0KTogQ2FzdCB0byB1bnNpZ25lZC4KKyAgICAgICAgKFdlYkNvcmU6
OlBvc2l0aW9uOjphbmNob3JUeXBlRm9yTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKTogVGFrZSB1bnNp
Z25lZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpwcmV2aW91cyBjb25zdCk6IFVzZSB1
bnNpZ25lZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpuZXh0IGNvbnN0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6dW5jaGVja2VkUHJldmlvdXNPZmZzZXQpOiBU
YWtlIHVuc2lnbmVkLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnVuY2hlY2tlZFByZXZp
b3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UG9zaXRpb246OnVuY2hlY2tlZE5leHRPZmZzZXQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlBvc2l0aW9uOjphdExhc3RFZGl0aW5nUG9zaXRpb25Gb3JOb2RlIGNvbnN0KTogQ2FzdCB0byB1
bnNpZ25lZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjphdEVuZE9mVHJlZSBjb25zdCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnJlbmRlcnNJbkRpZmZlcmVudFBv
c2l0aW9uIGNvbnN0KTogQWRkZWQgY2FzdHMgdG8KKyAgICAgICAgdW5zaWduZWQgYW5kIGFsc28g
cmVtb3ZlZCB1bm5lZWRlZCByZWR1bmRhbnQgY2hlY2tzLiBJbiBhIHBsYWNlIHdoZXJlCisgICAg
ICAgIHdlIGhhZCBhbHJlYWR5IGNoZWNrZWQgdGhhdCBib3RoIG5vZGVzIHdlcmUgdGhlIHNhbWUg
YW5kIGJvdGggb2Zmc2V0cworICAgICAgICB3ZXJlIGRpZmZlcmVudCwgd2Ugd2VyZSBjaGVja2lu
ZyB0aGUgdHlwZXMgb2YgYm90aCBub2RlcyAoYnV0IHRoZXkgYXJlCisgICAgICAgIHRoZSBzYW1l
IHNvIG9ubHkgbmVlZCB0byBjaGVjayBvbmUpIGFuZCB3ZSB3ZXJlIGNoZWNraW5nIHRoYXQgYm90
aAorICAgICAgICBvZmZzZXRzIHdlcmUgZGlmZmVyZW50IChidXQgd2UgYWxyZWFkeSBrbmV3IHRo
ZXkgd2VyZSBkaWZmZXJlbnQpLgorICAgICAgICAoV2ViQ29yZTo6c2VhcmNoQWhlYWRGb3JCZXR0
ZXJNYXRjaCk6IFVzZSB1bnNpZ25lZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpnZXRJ
bmxpbmVCb3hBbmRPZmZzZXQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0
aW9uOjplcXVhbHMgY29uc3QpOiBSZW1vdmVkIGEgY2FzdCB0byBpbnQuCisgICAgICAgIChXZWJD
b3JlOjptYWtlQm91bmRhcnlQb2ludCk6IE1vdmVkIHRoaXMgZnVuY3Rpb24gaGVyZSBzbyBub3cg
aXQgY2FuIGJlCisgICAgICAgIHVzZWQgaW4gbW9yZSBwbGFjZXMuCisKKyAgICAgICAgKiBkb20v
UG9zaXRpb24uaDogQ2hhbmdlZCBtYW55IGFyZ3VtZW50IHR5cGVzIHRvIHVuc2lnbmVkLiBNb3Zl
ZCBkZWNsYXJhdGlvbnMKKyAgICAgICAgb2YgYWxsIHRoZSBmdW5jdGlvbnMgdXAgYWJvdmUgYWxs
IHRoZSBpbmxpbmUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBmdW5jdGlvbnMKKyAgICAgICAgdG8g
c2VwYXJhdGUgaW50ZXJmYWNlIGZyb20gaW1wbGVtZW50YXRpb24gYSBiaXQgYmV0dGVyLiBXcm90
ZSBhIEZJWE1FIGFib3V0CisgICAgICAgIHRoZSBuYW1lIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3Np
dGlvbi4gTW92ZWQgbWFrZUJvdW5kYXJ5UG9pbnQgaGVyZSBhbmQgZXhwb3J0ZWQKKyAgICAgICAg
aXQgZnJvbSBXZWJDb3JlIHNvIHdlIGNhbiB1c2UgaXQgZnJvbSBtb3JlIHBsYWNlcy4KKworICAg
ICAgICAqIGRvbS9SYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVMaXZlUmFuZ2Up
OiBNb3ZlZCB0aGVzZSBmdW5jdGlvbnMgaGVyZSBmcm9tIFNpbXBsZVJhbmdlLmNwcAorICAgICAg
ICBiZWNhdXNlIGEgbGl2ZSByYW5nZSBpcyBtb3JlIGFkdmFuY2VkIGNvbmNlcHQsIHNvIG1ha2Vz
IG1vcmUgc2Vuc2UgZm9yIGxpdmUKKyAgICAgICAgcmFuZ2UgdG8ga25vdyBhYm91dCBzaW1wbGUg
cmFuZ2UgcmF0aGVyIHRoYW4gdmljZSB2ZXJzYS4KKworICAgICAgICAqIGRvbS9SYW5nZS5oOiBS
ZW1vdmVkIHNvbWUgdW5uZWVkZWQgaW5jbHVkZXMgYW5kIGZvcndhcmQgZGVjbGFyYXRpb25zLgor
ICAgICAgICBBZGRlZCBhIEZJWE1FIGFib3V0IHJlbmFtaW5nIHRvIExpdmVSYW5nZS4gTW92ZWQg
dGhlIGNyZWF0ZUxpdmVSYW5nZQorICAgICAgICBmdW5jdGlvbnMgaGVyZS4gTW92ZWQgZGVjbGFy
YXRpb25zIG9mIGZ1bmN0aW9ucyBhYm92ZSBpbmxpbmUgZnVuY3Rpb24gYm9kaWVzLgorCisgICAg
ICAgICogZG9tL1NpbXBsZVJhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUxpdmVS
YW5nZSk6IE1vdmVkIHRvIFJhbmdlLmNwcC4KKworICAgICAgICAqIGRvbS9TaW1wbGVSYW5nZS5o
OiBFeHBvcnRlZCB0aGUgY29uc3RydWN0b3IuIFJlbW92ZWQgdW5uZWVkZWQgb3ZlcmxvYWQKKyAg
ICAgICAgdGhhdCB0YWtlcyBhIFJhbmdlKi4KKworICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6Om1lcmdl
U3RhcnRXaXRoUHJldmlvdXNJZklkZW50aWNhbCk6CisgICAgICAgIFJlZmFjdG9yZWQgY29kZSBh
IGJpdCBhbmQgdXNlIHVuc2lnbmVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1h
bmQ6Om1lcmdlRW5kV2l0aE5leHRJZklkZW50aWNhbCk6IFVzZSB1bnNpZ25lZC4KKworICAgICAg
ICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2aXNpYmxlSW1hZ2VF
bGVtZW50c0luUmFuZ2VXaXRoTm9uTG9hZGVkSW1hZ2VzKTogVXNlIGEgcmVmZXJlbmNlCisgICAg
ICAgIHRvIGEgcmFuZ2UgcmF0aGVyIHRoYW4gYSBwb2ludGVyLgorCisgICAgICAgICogZWRpdGlu
Zy9FZGl0aW5nLmg6IEFkZGVkIGEgZm9yd2FyZCBkZWNsYXJhdGlvbiBvZiBSYW5nZSB0aGF0IG5v
dyBzZWVtcyB0bworICAgICAgICBiZSBuZWVkZWQgdG8gY29tcGlsZS4KKworICAgICAgICAqIGVk
aXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0ZWRUZXh0
IGNvbnN0KTogQ2FsbCBtYWtlQm91bmRhcnlQb2ludCB0d2ljZSBoZXJlIHRvCisgICAgICAgIGNv
bnZlcnQgdHdvIFBvc2l0aW9uIG9iamVjdHMgaW50byBhIFNpbXBsZVJhbmdlLgorCisgICAgICAg
ICogZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwOiBSZW1vdmVkIHNvbWUgZXh0cmEgaW5jbHVk
ZXMuCisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0
KTogVXNlIHZhcmlhZGljCisgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZC4KKworICAgICAg
ICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpcnN0Tm9k
ZSk6IEFkZGVkLiBXZSB1c2UgdGhpcyBpbnN0ZWFkIG9mIFJhbmdlOjpmaXJzdE5vZGUuCisgICAg
ICAgIElmIHdlIGZpbmQgd2UgbmVlZCBpdCBvdXRzaWRlIFRleHRJdGVyYXRvciB3ZSBjYW4gZmlu
ZCBhIGhlYWRlciBmb3IgaXQuCisgICAgICAgIE5vdCBzdXJlIGl0IHdvdWxkIGJlIGdyZWF0IHRv
IGFkZCBpdCB0byBpbiBCb3VuZGFyeVBvaW50LmgsIG5vciBpcyBpdAorICAgICAgICBvYnZpb3Vz
bHkgYmV0dGVyIGFzIGEgQm91bmRhcnlQb2ludCBtZW1iZXIgZnVuY3Rpb24uCisgICAgICAgIChX
ZWJDb3JlOjpUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcik6IEN1dCBkb3duIG9uIHRoZSBleHRy
YSBjb25zdHJ1Y3RvcnMKKyAgICAgICAgYW5kIGhhdmUgdGhlIHNpbmdsZSByZW1haW5pbmcgb25l
IHRha2UgYSBTaW1wbGVSYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2Fy
ZHNUZXh0SXRlcmF0b3I6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IpOgorICAgICAg
ICBEaXR0by4gQWxzbyBjaGFuZ2Ugc29tZSBpbnQgdG8gdW5zaWduZWQuCisgICAgICAgIChXZWJD
b3JlOjpDaGFyYWN0ZXJJdGVyYXRvcjo6Q2hhcmFjdGVySXRlcmF0b3IpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjpCYWNrd2FyZHNDaGFyYWN0
ZXJJdGVyYXRvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V29yZEF3YXJlSXRlcmF0b3I6
OldvcmRBd2FyZUl0ZXJhdG9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0
b3I6OnJhbmdlTGVuZ3RoKTogU2luY2UgdGhpcyBpcyBvbmUgb2YgdGhlIGZ1bmN0aW9ucworICAg
ICAgICB0aGF0IHN0aWxsIHRha2VzIGEgbGl2ZSByYW5nZSBwb2ludGVyLCB1cGRhdGVkIGl0IHRv
IGNoZWNrIGZvciBudWxsIGFuZAorICAgICAgICBwYXNzIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFu
IGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Omhhc0FueVBsYWluVGV4
dCk6IFJlbW92ZWQgbm93LXVubmVlZGVkIGNhbGwgdG8gY3JlYXRlTGl2ZVJhbmdlLgorICAgICAg
ICAoV2ViQ29yZTo6cGxhaW5UZXh0KTogVXBkYXRlZCB0aGUgbWFpbiBpbXBsZW1lbnRhdGlvbiB0
byB0YWtlIGEgU2ltcGxlUmFuZ2UsCisgICAgICAgIGVsaW1pbmF0aW5nIHRoZSB2ZXJzaW9uIHRo
YXQgdGFrZXMgdHdvIFBvc2l0aW9uIG9iamVjdHMsIGJ1dCBrZWVwaW5nIHRoZQorICAgICAgICBv
bmUgdGhhdCB0YWtlcyBhIGxpdmUgcmFuZ2UgcG9pbnRlciBmb3Igbm93LgorICAgICAgICAoV2Vi
Q29yZTo6cGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKTogUmVtb3ZlZCBhbGwgYnV0IHRo
ZSBvbmUsIGFuZAorICAgICAgICBoYXZlIHRoYXQgb25lIHRha2UgYSBTaW1wbGVSYW5nZS4KKwor
ICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6IFJlbW92ZWQgdGhlIGluY2x1ZGUgb2Yg
U2ltcGxlUmFuZ2UuaC4gQWxzbworICAgICAgICBVcGRhdGVkIGZvciB0aGUgY2hhbmdlcyBhYm92
ZSwgZWxpbWluYXRpbmcgZml2ZSBkaWZmZXJlbnQgY29uc3RydWN0b3JzCisgICAgICAgIHRoYXQg
dGFrZSBhIGxpdmUgcmFuZ2UgYW5kIGFsc28gb3ZlcmxvYWRzIHRoYXQgdGFrZSB0d28gUG9zaXRp
b24gb2JqZWN0cy4KKworICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWdyYXBoQ29udGVudEl0ZXJhdG9yOjpQYXJh
Z3JhcGhDb250ZW50SXRlcmF0b3IpOgorICAgICAgICBDYWxsIG1ha2VCb3VuZGFyeVBvaW50IHR3
aWNlIGhlcmUgdG8gY29udmVydCB0d28gUG9zaXRpb24gb2JqZWN0cyBpbnRvCisgICAgICAgIGEg
U2ltcGxlUmFuZ2UuCisKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwOiBS
ZW1vdmVkIGFuIGluY2x1ZGUuCisKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzdWZmaXhMZW5ndGhGb3JSYW5nZSk6IFBhc3MgYSByZWZlcmVu
Y2UgdG8gYSByYW5nZSBrbm93biB0bworICAgICAgICBub3QgYmUgbnVsbC4KKyAgICAgICAgKFdl
YkNvcmU6OnByZXZpb3VzQm91bmRhcnkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRC
b3VuZGFyeSk6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9u
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRRdWVyeSk6IFRha2UgYSBTaW1wbGVSYW5nZS4K
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKTog
QWRkZWQgYSBudWxsIGNoZWNrIG9uCisgICAgICAgIGEgbGl2ZSByYW5nZSBhbmQgcGFzcyBhIHJl
ZmVyZW5jZSB0byBpdC4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAu
bW06CisgICAgICAgIChXZWJDT3JlOjpEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJl
c3VsdCk6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6ZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UpOiBQ
YXNzIGEgcmVmZXJlbmNlIHRvIGEgcmFuZ2UKKyAgICAgICAga25vd24gdG8gbm90IGJlIG51bGwu
CisgICAgICAgICogcGFnZS9UZXh0SW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVz
dGltYXRlZFRleHRDb2xvcnNGb3JSYW5nZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y29u
dGFpbnNPbmx5V2hpdGVTcGFjZVRleHQpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL2lvcy9GcmFt
ZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbnRlcnByZXRhdGlvbnNGb3JDdXJy
ZW50Um9vdCBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6c2VsZWN0ZWRUZXh0IGNv
bnN0KTogQWRkZWQgYSBudWxsIGNoZWNrIG9uCisgICAgICAgIGEgbGl2ZSByYW5nZSBhbmQgcGFz
cyBhIHJlZmVyZW5jZSB0byBpdC4KKwogMjAyMC0wMy0xNiAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgRnJhbWVWaWV3OjpzY2hlZHVsZVJl
bmRlcmluZ1VwZGF0ZSgpCkBAIC0yMDMsNiArMzg3LDkgQEAgciAgICAgICBCeSBkZWZhdWx0LCB0
aGUgbWV0aG9kIGRvZXMgbm90aGluZyBhbmQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlIHdp
bGwKICAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHA6CiAgICAg
ICAgIChXZWJDb3JlOjpSVENSdHBTZW5kZXI6OmR0bWYpOgogCisgICAgICAgICogcmVuZGVyaW5n
L2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5oOiBSZW1vdmVkIHNvbWUgdW5uZWVkZWQgaW5jbHVk
ZXMuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOiBEaXR0by4KKwogMjAyMC0wMy0x
MyAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
V2ViWFJdIElETHMsIHN0dWJzIGFuZCBidWlsZCBjb25maWd1cmF0aW9uIGZvciBXUEUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggZmE3Yzc5MDhkZDdkMWFjYjI4MmUyYTllMTcwNTQxYTllMGI3OTI4NS4uNjkxNTgwYjkz
YTZjNDY5NGVlMGYxMWQxMTBhMDQzZWViNzJlM2UyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBA
QAorMjAyMC0wMy0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBtb3N0IG9mIFRleHRJdGVyYXRvciBvZmYgb2YgbGl2ZSByYW5nZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTEyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tOgorICAgICAgICAoLVtXS0RPTVRl
eHRJdGVyYXRvciBpbml0V2l0aFJhbmdlOl0pOiBMZWF2ZSBfdGV4dEl0ZXJhdG9yIGFzIGEgbnVs
bHB0cgorICAgICAgICBpZiB0aGUgcGFzc2VkLWluIHJhbmdlIGlzIG5pbCBzaW5jZSB3ZSBubyBs
b25nZXIgb2ZmZXIgYSB3YXkgdG8gY3JlYXRlCisgICAgICAgIGFuIGVtcHR5IFRleHRJdGVyYXRv
cjsgb3RoZXIgY2xpZW50cyBkb24ndCBzZWVtIHRvIG5lZWQgb25lLgorICAgICAgICAoLVtXS0RP
TVRleHRJdGVyYXRvciBhZHZhbmNlXSk6IEFkZCBhIG51bGwgY2hlY2suCisgICAgICAgICgtW1dL
RE9NVGV4dEl0ZXJhdG9yIGF0RW5kXSk6IERpdHRvLgorICAgICAgICAoLVtXS0RPTVRleHRJdGVy
YXRvciBjdXJyZW50UmFuZ2VdKTogRGl0dG8uCisgICAgICAgICgtW1dLRE9NVGV4dEl0ZXJhdG9y
IGN1cnJlbnRUZXh0UG9pbnRlcl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tET01UZXh0SXRlcmF0
b3IgY3VycmVudFRleHRMZW5ndGhdKTogRGl0dG8uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tOiBSZW1vdmVkIGluY2x1
ZGUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3I6OmNvbXB1dGVUZXh0TGVnaWJpbGl0eVNjYWxlcyk6IFBhc3MKKyAgICAgICAgYSByZWZlcmVu
Y2UgdG8gYSByYW5nZSBrbm93biBub3QgdG8gYmUgbnVsbC4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDogUmVtb3ZlZCBhbiBpbmNsdWRlLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOiBSZW1vdmVkIGEgInVzaW5nIG5h
ZW1zYXBjZSBXZWJDb3JlIi4KKyAgICAgICAgQWRkZWQgdHdvIGxvY2FsIGZ1bmN0aW9ucworICAg
ICAgICAoV2ViS2l0OjpwbGFpblRleHRGb3JDb250ZXh0KTogQWRkZWQuIEhlbHBlciBmb3IganVz
dCB0aGlzIGZpbGUgd2hlcmUgY2FsbGluZworICAgICAgICBwbGFpblRleHRSZXBsYWNpbmdOb0Jy
ZWFrU3BhY2Ugb24gYSBwb3NzaWJseSBudWxsIFJhbmdlIGlzIGNvbW1vbi4KKyAgICAgICAgKFdl
YktpdDo6cGxhaW5UZXh0Rm9yRGlzcGxheSk6IERpdHRvLiBUaGlzIG9uZSBwYXNzZXMgdHJ1ZSBm
b3IgaXNEaXNwbGF5U3RyaW5nLgorICAgICAgICBOb3QgZW50aXJlbHkgY2xlYXIgaG93IGNhcmVm
dWxseSB3ZSBjaG9zZSB3aGljaCBvZiB0aGUgdHdvIHRvIGNhbGwsIG9yIGlmIHRoZXJlCisgICAg
ICAgIGlzIHN1ZmZpY2llbnQgdGVzdCBjb3ZlcmFnZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IFVzZSBwbGFpblRleHRGb3JDb250ZXh0Cisg
ICAgICAgIGFuZCBwbGFpblRleHRGb3JEaXNwbGF5LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXRTZWxlY3Rpb25Db250ZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dCk6IFVzZSBwbGFpblRleHRGb3JEaXNw
bGF5LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0RGljdGF0aW9uQ29udGV4dCk6
IFVzZSBwbGFpblRleHRGb3JDb250ZXh0LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXBs
YWNlU2VsZWN0ZWRUZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxh
Y2VEaWN0YXRlZFRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVz
dEF1dG9jb3JyZWN0aW9uRGF0YSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjph
cHBseUF1dG9jb3JyZWN0aW9uSW50ZXJuYWwpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6YXV0b2NvcnJlY3Rpb25Db250ZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OmRh
dGFEZXRlY3RvckxpbmtQb3NpdGlvbkluZm9ybWF0aW9uKTogVXNlIHBsYWluVGV4dEZvckRpc3Bs
YXkuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250
ZXh0KTogVXNlIFJldGFpblB0ciBpbnN0ZWFkIG9mCisgICAgICAgIGF1dG9yZWxlYXNlLiBVc2Ug
bWFrZUJvdW5kYXJ5UG9pbnQgdG8gY29udmVydCBQb3NpdGlvbiBvYmplY3RzIHRvIFNpbXBsZVJh
bmdlLgorCiAyMDIwLTAzLTE2ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViUGFnZTo6R2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQgc2hvdWxkIHZh
bGlkYXRlIGl0cyBgc2l6ZWAgdmFyaWFibGUKQEAgLTM4LDYgKzg0LDggQEAKICAgICAgICAgKiBX
ZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcDoKICAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6c2V0U2hvdWxkQXBwbHlSb3Rh
dGlvbik6CiAKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06
IFJlbW92ZWQgYW4gaW5jbHVkZS4KKwogMjAyMC0wMy0xMyAgU2VyZ2lvIFZpbGxhciBTZW5pbiAg
PHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV2ViWFJdIElETHMsIHN0dWJzIGFuZCBi
dWlsZCBjb25maWd1cmF0aW9uIGZvciBXUEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRl
eCA0OWRmNWNmM2Q2Yzc5NDdjMWU3ZmVjZDYzOTI0MTQ0MTFmYjcxYWJkLi45NjYwMWNjNjVlZTY0
ZWNhMzAwYzI3OTMzNzBjMzZjMjkzOGU2ZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMDMtMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIE1vdmUgbW9zdCBvZiBUZXh0SXRlcmF0b3Igb2ZmIG9mIGxpdmUgcmFu
Z2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkx
MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViRnJhbWUubW06IFJlbW92ZWQgYW4gaW5jbHVkZS4KKworICAgICAgICAqIFdlYlZp
ZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9sZWdhY3lBdHRyaWJ1
dGVkU3RyaW5nRnJvbTpvZmZzZXQ6dG86b2Zmc2V0Ol0pOgorICAgICAgICBBZGQgY2FzdHMgdG8g
dW5zaWduZWQuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbToKKyAgICAg
ICAgKC1bV2ViVGV4dEl0ZXJhdG9yIGluaXRXaXRoUmFuZ2U6XSk6IExlYXZlIF9wcml2YXRlLT5f
dGV4dEl0ZXJhdG9yCisgICAgICAgIGFzIGEgbnVsbHB0ciBpZiB0aGUgcGFzc2VkLWluIHJhbmdl
IGlzIG5pbCBzaW5jZSB3ZSBubyBsb25nZXIgb2ZmZXIKKyAgICAgICAgYSB3YXkgdG8gY3JlYXRl
IGFuIGVtcHR5IFRleHRJdGVyYXRvcjsgb3RoZXIgY2xpZW50cyBkb24ndCBzZWVtIHRvCisgICAg
ICAgIG5lZWQgb25lLgorICAgICAgICAoLVtXZWJUZXh0SXRlcmF0b3IgYWR2YW5jZV0pOiBDaGVj
ayBfcHJpdmF0ZS0+X3RleHRJdGVyYXRvciBmb3IgbnVsbC4KKyAgICAgICAgKC1bV2ViVGV4dEl0
ZXJhdG9yIGF0RW5kXSk6IERpdHRvLgorICAgICAgICAoLVtXZWJUZXh0SXRlcmF0b3IgY3VycmVu
dFJhbmdlXSk6IERpdHRvLgorICAgICAgICAoLVtXZWJUZXh0SXRlcmF0b3IgY3VycmVudFRleHRQ
b2ludGVyXSk6IERpdHRvLgorICAgICAgICAoLVtXZWJUZXh0SXRlcmF0b3IgY3VycmVudFRleHRM
ZW5ndGhdKTogRGl0dG8uCisgICAgICAgICgtW1dlYlRleHRJdGVyYXRvciBjdXJyZW50Tm9kZV0p
OiBEaXR0by4KKyAgICAgICAgKC1bV2ViVGV4dEl0ZXJhdG9yIGN1cnJlbnRUZXh0XSk6IERpdHRv
LgorCiAyMDIwLTAzLTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSBGcmFtZVZpZXc6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKaW5kZXggNDAxY2FkNGFhNWY0MmI2M2I0NTkwYzUwZTQ4NDM1NTEzZTlkZmRiNy4u
Y2ZjZWZiOTM2M2FkY2VkZTM3Y2JhZDM4NTIwN2IxYWEzNGMxOGJlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
QEAgLTg1MCw3ICs4NTAsNiBAQCBkb20vQXR0ci5jcHAKIGRvbS9CZWZvcmVMb2FkRXZlbnQuY3Bw
CiBkb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuY3BwCiBkb20vQmVmb3JlVW5sb2FkRXZlbnQu
Y3BwCi1kb20vQm91bmRhcnlQb2ludC5jcHAKIGRvbS9DREFUQVNlY3Rpb24uY3BwCiBkb20vQ2hh
cmFjdGVyRGF0YS5jcHAKIGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZmYmM4
YjA3ZTgxZTEyMjRlOGVhNWEzMTQyYTQ1Y2Y4NTk0ZGUzYmYuLjc1M2Y3ZTQ5MWQ5MTFmYTY5OTg2
NGE5ZTliMWY0YzllYWNkZjVlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNzA4LDcgKzEwNzA4LDYgQEAKIAkJOTMxNTNC
RTExNDE5NUE1NzAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZS5wbmcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBtaXNzaW5n
SW1hZ2UucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzE2RERGODI0MEM2NEIz
MDA5MzQwQUEgLyogU2ltcGxlUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2ltcGxlUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxNkRERkEy
NDBDNjRCMzAwOTM0MEFBIC8qIFNpbXBsZVJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNpbXBsZVJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJOTMxNkRERkQyNDBDNjRGODAwOTM0MEFBIC8qIEJvdW5kYXJ5UG9pbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQm91bmRhcnlQb2ludC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMTZEREZFMjQwQzY0RjgwMDkzNDBBQSAvKiBCb3Vu
ZGFyeVBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJvdW5kYXJ5UG9p
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxQUUzQjgxRkI4MEVBRTAwRjVF
RkIyIC8qIEpTVmFsdWVJbldyYXBwZWRPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWYWx1ZUlu
V3JhcHBlZE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzFCQ0M2MDEx
MjRERkNCMDBCRTcwREQgLyogTWVkaWFDYW5TdGFydExpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjgzMjMsNyArMjgzMjIsNiBAQAogCQkJCTg1MDMxQjI2MEE0NEVG
QzcwMEY5OTJFMCAvKiBCZWZvcmVVbmxvYWRFdmVudC5jcHAgKi8sCiAJCQkJODUwMzFCMjcwQTQ0
RUZDNzAwRjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmggKi8sCiAJCQkJN0MxRThDRkYxRUQw
QzJCRTAwQjFEOTgzIC8qIEJlZm9yZVVubG9hZEV2ZW50LmlkbCAqLywKLQkJCQk5MzE2RERGRDI0
MEM2NEY4MDA5MzQwQUEgLyogQm91bmRhcnlQb2ludC5jcHAgKi8sCiAJCQkJOTMxNkRERkUyNDBD
NjRGODAwOTM0MEFBIC8qIEJvdW5kYXJ5UG9pbnQuaCAqLywKIAkJCQk3QzFFOEQwMDFFRDBDMkJF
MDBCMUQ5ODMgLyogQ2FsbGJhY2tSZXN1bHQuaCAqLywKIAkJCQk2NTUwQjY5MzA5OURGMDI3MDA5
MEQ3ODEgLyogQ0RBVEFTZWN0aW9uLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDFlYjYyNmI2YzliNzViYmIzZWQ2YzE5ZmZi
YmFkYWEwZjMyOGFhMDguLmQ0ZTVjOTg3ZDU4YjYyNTIxODY3ZTAyMGYzYThhN2FhZGU4OGMwMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApA
QCAtOTksNyArOTksNiBAQAogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTY3Jp
cHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCi0jaW5jbHVkZSAi
U2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0Qm91bmRhcmllcy5oIgogI2luY2x1ZGUgIlRl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgpAQCAt
MTc5MSw3ICsxNzkwLDcgQEAgQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OnRyYXZlcnNl
VG9PZmZzZXRJblJhbmdlKFJlZlB0cjxSYW5nZT5yYW5nZSwgaW50IG8KICAgICBib29sIGZpbmlz
aGVkID0gZmFsc2U7CiAgICAgaW50IGxhc3RTdGFydE9mZnNldCA9IDA7CiAgICAgCi0gICAgVGV4
dEl0ZXJhdG9yIGl0ZXJhdG9yKHJhbmdlLmdldCgpLCBkb05vdEVudGVyVGV4dENvbnRyb2xzID8g
VGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yIDogVGV4dEl0ZXJhdG9yRW50ZXJzVGV4dENvbnRy
b2xzKTsKKyAgICBUZXh0SXRlcmF0b3IgaXRlcmF0b3IoKnJhbmdlLCBkb05vdEVudGVyVGV4dENv
bnRyb2xzID8gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yIDogVGV4dEl0ZXJhdG9yRW50ZXJz
VGV4dENvbnRyb2xzKTsKICAgICAKICAgICAvLyBXaGVuIHRoZSByYW5nZSBoYXMgemVybyBsZW5n
dGgsIHRoZXJlIG1pZ2h0IGJlIHJlcGxhY2VkIG5vZGUgb3IgYnJUYWcgdGhhdCB3ZSBuZWVkIHRv
IGluY3JlbWVudCB0aGUgY2hhcmFjdGVyT2Zmc2V0LgogICAgIGlmIChpdGVyYXRvci5hdEVuZCgp
KSB7CkBAIC0xOTAyLDcgKzE5MDEsNyBAQCBpbnQgQVhPYmplY3RDYWNoZTo6bGVuZ3RoRm9yUmFu
Z2UoUmFuZ2UqIHJhbmdlKQogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiAtMTsKICAg
ICBpbnQgbGVuZ3RoID0gMDsKLSAgICBmb3IgKFRleHRJdGVyYXRvciBpdChyYW5nZSk7ICFpdC5h
dEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdCgqcmFuZ2Up
OyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CiAgICAgICAgIC8vIG5vbi16ZXJvIGxlbmd0
aCBtZWFucyB0ZXh0dWFsIG5vZGUsIHplcm8gbGVuZ3RoIG1lYW5zIHJlcGxhY2VkIG5vZGUgKEFL
QSAiYXR0YWNobWVudHMiIGluIEFYKQogICAgICAgICBpZiAoaXQudGV4dCgpLmxlbmd0aCgpKQog
ICAgICAgICAgICAgbGVuZ3RoICs9IGl0LnRleHQoKS5sZW5ndGgoKTsKQEAgLTI2MDIsNyArMjYw
MSw3IEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpuZXh0Qm91bmRhcnkoY29uc3Qg
Q2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzCiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
Q2hhcmFjdGVyT2Zmc2V0IGVuZCA9IHN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZShz
ZWFyY2hSYW5nZSwgZmFsc2UpOwogICAgIAotICAgIFRleHRJdGVyYXRvciBpdChzZWFyY2hSYW5n
ZS5nZXQoKSwgVGV4dEl0ZXJhdG9yRW1pdHNPYmplY3RSZXBsYWNlbWVudENoYXJhY3RlcnMpOwor
ICAgIFRleHRJdGVyYXRvciBpdCgqc2VhcmNoUmFuZ2UsIFRleHRJdGVyYXRvckVtaXRzT2JqZWN0
UmVwbGFjZW1lbnRDaGFyYWN0ZXJzKTsKICAgICB1bnNpZ25lZCBuZXh0ID0gZm9yd2FyZFNlYXJj
aEZvckJvdW5kYXJ5V2l0aFRleHRJdGVyYXRvcihpdCwgc3RyaW5nLCBwcmVmaXhMZW5ndGgsIHNl
YXJjaEZ1bmN0aW9uKTsKICAgICAKICAgICBpZiAoaXQuYXRFbmQoKSAmJiBuZXh0ID09IHN0cmlu
Zy5zaXplKCkpCkBAIC0yNjQzLDcgKzI2NDIsNyBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RD
YWNoZTo6cHJldmlvdXNCb3VuZGFyeShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlcgog
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgaWYgKCFzZXRSYW5nZVN0YXJ0T3JFbmRX
aXRoQ2hhcmFjdGVyT2Zmc2V0KGZvcndhcmRzU2NhblJhbmdlLCBlbmRPZkN1cnJlbnRQYXJhZ3Jh
cGgsIGZhbHNlKSkKICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIGZvciAoVGV4dEl0
ZXJhdG9yIGZvcndhcmRzSXRlcmF0b3IoZm9yd2FyZHNTY2FuUmFuZ2UucHRyKCkpOyAhZm9yd2Fy
ZHNJdGVyYXRvci5hdEVuZCgpOyBmb3J3YXJkc0l0ZXJhdG9yLmFkdmFuY2UoKSkKKyAgICAgICAg
Zm9yIChUZXh0SXRlcmF0b3IgZm9yd2FyZHNJdGVyYXRvcihmb3J3YXJkc1NjYW5SYW5nZSk7ICFm
b3J3YXJkc0l0ZXJhdG9yLmF0RW5kKCk7IGZvcndhcmRzSXRlcmF0b3IuYWR2YW5jZSgpKQogICAg
ICAgICAgICAgYXBwZW5kKHN0cmluZywgZm9yd2FyZHNJdGVyYXRvci50ZXh0KCkpOwogICAgICAg
ICBzdWZmaXhMZW5ndGggPSBzdHJpbmcuc2l6ZSgpOwogICAgIH0gZWxzZSBpZiAocmVxdWlyZXND
b250ZXh0Rm9yV29yZEJvdW5kYXJ5KGNoYXJhY3RlckJlZm9yZShjaGFyYWN0ZXJPZmZzZXQpKSkg
ewpAQCAtMjY2Niw3ICsyNjY1LDcgQEAgQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OnBy
ZXZpb3VzQm91bmRhcnkoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXIKICAgICAgICAg
cmV0dXJuIGl0LmF0RW5kKCkgPyBzdGFydCA6IGNoYXJhY3Rlck9mZnNldDsKICAgICAKICAgICBh
dXRvJiBub2RlID0gaXQuYXRFbmQoKSA/IHNlYXJjaFJhbmdlLT5zdGFydENvbnRhaW5lcigpIDog
aXQucmFuZ2UoKS5zdGFydC5jb250YWluZXIuZ2V0KCk7Ci0gICAgCisKICAgICAvLyBTaW1wbGlm
aWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIGlnbm9yZXMgcmVwbGFjZWQgZWxlbWVudHMuCiAgICAg
aWYgKEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlcGxhY2VkTm9kZU5lZWRzQ2hhcmFjdGVyKGNoYXJh
Y3Rlck9mZnNldC5ub2RlKSkKICAgICAgICAgcmV0dXJuIGNoYXJhY3Rlck9mZnNldEZvck5vZGVB
bmRPZmZzZXQoKmNoYXJhY3Rlck9mZnNldC5ub2RlLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDYxOTEyMWQ2
NjI3MTA2MjQ4OTIzNTUxMDE3MmRjZjkzYTVkNDk2MDkuLjQ1YzBiMDcwZmRkODBlODA4ZDEzMGUx
YzE3YzdiMjdiZmQyMGQ3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMTI2Nyw3ICsxMjY3LDcgQEAgU3RyaW5n
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN0cmluZ0ZvclJhbmdlKFJlZlB0cjxSYW5nZT4gcmFuZ2Up
IGNvbnN0CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIAot
ICAgIFRleHRJdGVyYXRvciBpdChyYW5nZS5nZXQoKSk7CisgICAgVGV4dEl0ZXJhdG9yIGl0KCpy
YW5nZSk7CiAgICAgaWYgKGl0LmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAg
ICAKQEAgLTEyOTYsNyArMTI5NiwxMCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3Ry
aW5nRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUgogCiAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBtYWtlUmFu
Z2UodmlzaWJsZVBvc2l0aW9uUmFuZ2Uuc3RhcnQsIHZpc2libGVQb3NpdGlvblJhbmdlLmVuZCk7
Ci0gICAgZm9yIChUZXh0SXRlcmF0b3IgaXQocmFuZ2UuZ2V0KCkpOyAhaXQuYXRFbmQoKTsgaXQu
YWR2YW5jZSgpKSB7CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
CisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXQoKnJhbmdlKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFu
Y2UoKSkgewogICAgICAgICAvLyBub24temVybyBsZW5ndGggbWVhbnMgdGV4dHVhbCBub2RlLCB6
ZXJvIGxlbmd0aCBtZWFucyByZXBsYWNlZCBub2RlIChBS0EgImF0dGFjaG1lbnRzIiBpbiBBWCkK
ICAgICAgICAgaWYgKGl0LnRleHQoKS5sZW5ndGgoKSkgewogICAgICAgICAgICAgLy8gQWRkIGEg
dGV4dHVhbCByZXByZXNlbnRhdGlvbiBmb3IgbGlzdCBtYXJrZXIgdGV4dC4KQEAgLTEzMTgsOSAr
MTMyMSwxMiBAQCBpbnQgQWNjZXNzaWJpbGl0eU9iamVjdDo6bGVuZ3RoRm9yVmlzaWJsZVBvc2l0
aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZwogICAgIGlmICh2aXNpYmxlUG9zaXRp
b25SYW5nZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaW50IGxlbmd0aCA9
IDA7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IG1ha2VSYW5nZSh2aXNpYmxlUG9zaXRpb25S
YW5nZS5zdGFydCwgdmlzaWJsZVBvc2l0aW9uUmFuZ2UuZW5kKTsKLSAgICBmb3IgKFRleHRJdGVy
YXRvciBpdChyYW5nZS5nZXQoKSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKKyAgICBp
ZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpbnQgbGVuZ3RoID0gMDsKKyAg
ICBmb3IgKFRleHRJdGVyYXRvciBpdCgqcmFuZ2UpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgp
KSB7CiAgICAgICAgIC8vIG5vbi16ZXJvIGxlbmd0aCBtZWFucyB0ZXh0dWFsIG5vZGUsIHplcm8g
bGVuZ3RoIG1lYW5zIHJlcGxhY2VkIG5vZGUgKEFLQSAiYXR0YWNobWVudHMiIGluIEFYKQogICAg
ICAgICBpZiAoaXQudGV4dCgpLmxlbmd0aCgpKQogICAgICAgICAgICAgbGVuZ3RoICs9IGl0LnRl
eHQoKS5sZW5ndGgoKTsKQEAgLTEzMjksNyArMTMzNSw2IEBAIGludCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpsZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25S
YW5nCiAgICAgICAgICAgICAgICAgKytsZW5ndGg7CiAgICAgICAgIH0KICAgICB9Ci0KICAgICBy
ZXR1cm4gbGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCmluZGV4IGU0ZDFkOWE4NWY5
Nzk3ZDk0YWNmNDNjYzgwMTFlMTQ2YTQzYTgzMGEuLmNiYjYyMDhkY2IxYTcyOTRjZTJmZTFiYWZl
NTU0ZWUzMjdkYzE2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCkBAIC0yOSw3ICsyOSw2IEBA
CiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAi
VGV4dEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaCIKICNpbmNs
dWRlICJWaXNpYmxlUG9zaXRpb24uaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW0KaW5kZXggYzMxMzA4ZTQwM2VhYzU5MDExYjJmMTNhYjdkMjljYzhjNmMyYjI4OC4u
MTAxZWIyZDgyNzk3OTRkYTkxMzRkMjgxMTgwZGVhNWNhYjgwZGM1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTU0LDcgKzU0LDYgQEAKICNpbXBvcnQgIlNW
R05hbWVzLmgiCiAjaW1wb3J0ICJTVkdFbGVtZW50LmgiCiAjaW1wb3J0ICJTZWxlY3Rpb25SZWN0
LmgiCi0jaW1wb3J0ICJTaW1wbGVSYW5nZS5oIgogI2ltcG9ydCAiVGV4dEl0ZXJhdG9yLmgiCiAj
aW1wb3J0ICJXQUtTY3JvbGxWaWV3LmgiCiAjaW1wb3J0ICJXQUtXaW5kb3cuaCIKQEAgLTIyNTMs
MTAgKzIyNTIsMTQgQEAgLSAoTlNBcnJheSAqKWFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6KE5T
QXJyYXkgKiltYXJrZXJzIGF0dHJpYnV0ZWQ6KEJPT0wpYXR0cmkKICAgICBWaXNpYmxlUG9zaXRp
b24gZW5kVmlzaWJsZVBvc2l0aW9uID0gW2VuZE1hcmtlciB2aXNpYmxlUG9zaXRpb25dOwogICAg
IGlmIChlbmRWaXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgCisKKyAgICBhdXRvIHJhbmdlID0gbWFrZVJhbmdlKHN0YXJ0VmlzaWJsZVBvc2l0aW9uLCBl
bmRWaXNpYmxlUG9zaXRpb24pOworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiBuaWw7
CisKICAgICAvLyBpdGVyYXRlIG92ZXIgdGhlIHJhbmdlIHRvIGJ1aWxkIHRoZSBBWCBhdHRyaWJ1
dGVkIHN0cmluZwogICAgIE5TTXV0YWJsZUFycmF5KiBhcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRdOwotICAgIFRleHRJdGVyYXRvciBpdChtYWtlUmFuZ2Uoc3RhcnRWaXNpYmxl
UG9zaXRpb24sIGVuZFZpc2libGVQb3NpdGlvbikuZ2V0KCkpOworICAgIFRleHRJdGVyYXRvciBp
dCgqcmFuZ2UpOwogICAgIGZvciAoOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CiAgICAg
ICAgIE5vZGUmIG5vZGUgPSBpdC5yYW5nZSgpLnN0YXJ0LmNvbnRhaW5lcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA4NTM1MWEyNzIwZGFmNjdmYzY1YTBh
M2I3MWMwNzUzMzc3NjE1MjBkLi4yYjA4NDU0ZDBjNDEzYzQzNGQ4NDZlZWNiMmI2ZTcwMWViYTkx
Y2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtNzAsNyAr
NzAsNiBAQAogI2ltcG9ydCAiUmVuZGVyVmlldy5oIgogI2ltcG9ydCAiUmVuZGVyV2lkZ2V0Lmgi
CiAjaW1wb3J0ICJTY3JvbGxWaWV3LmgiCi0jaW1wb3J0ICJTaW1wbGVSYW5nZS5oIgogI2ltcG9y
dCAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbXBvcnQgIlRleHRDaGVja2luZ0hlbHBlci5oIgog
I2ltcG9ydCAiVGV4dERlY29yYXRpb25QYWludGVyLmgiCkBAIC0xMjU1LDcgKzEyNTQsOSBAQCAt
IChOU0F0dHJpYnV0ZWRTdHJpbmcqKWRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlOihpZCl0ZXh0TWFya2VyUmFuZwogCiAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBb
cHJvdGVjdGVkU2VsZiByYW5nZUZvclRleHRNYXJrZXJSYW5nZTp0ZXh0TWFya2VyUmFuZ2VdOwog
ICAgICAgICBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nID0gW1tOU011dGFi
bGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XTsKLSAgICAgICAgVGV4dEl0ZXJhdG9yIGl0
KHJhbmdlLmdldCgpKTsKKyAgICAgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgICAgIHJldHVybiBu
aWw7CisgICAgICAgIFRleHRJdGVyYXRvciBpdCgqcmFuZ2UpOwogICAgICAgICB3aGlsZSAoIWl0
LmF0RW5kKCkpIHsKICAgICAgICAgICAgIE5vZGUmIG5vZGUgPSBpdC5yYW5nZSgpLnN0YXJ0LmNv
bnRhaW5lcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA4N2UwZjM2NDA3ZTc3ZWU4YmNkNTA5NTk4ZGJhYzQwZDM0OGNhNDM2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQm91bmRhcnlQ
b2ludC5oIgotCi0jaW5jbHVkZSAiTm9kZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUJv
dW5kYXJ5UG9pbnQ6OkJvdW5kYXJ5UG9pbnQoY29uc3QgQm91bmRhcnlQb2ludCYgb3RoZXIpCi0g
ICAgOiBjb250YWluZXIob3RoZXIuY29udGFpbmVyLmNvcHlSZWYoKSkKLSAgICAsIG9mZnNldChv
dGhlci5vZmZzZXQpCi17Ci19Ci0KLUJvdW5kYXJ5UG9pbnQmIEJvdW5kYXJ5UG9pbnQ6Om9wZXJh
dG9yPShjb25zdCBCb3VuZGFyeVBvaW50JiBvdGhlcikKLXsKLSAgICBjb250YWluZXIgPSBvdGhl
ci5jb250YWluZXIuY29weVJlZigpOwotICAgIG9mZnNldCA9IG90aGVyLm9mZnNldDsKLSAgICBy
ZXR1cm4gKnRoaXM7Ci19Ci0KLUJvdW5kYXJ5UG9pbnQmIEJvdW5kYXJ5UG9pbnQ6Om9wZXJhdG9y
PShCb3VuZGFyeVBvaW50JiYpID0gZGVmYXVsdDsKLQotRG9jdW1lbnQmIEJvdW5kYXJ5UG9pbnQ6
OmRvY3VtZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gY29udGFpbmVyLT5kb2N1bWVudCgpOwot
fQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuaAppbmRleCA2OTBmNmY5NjNhMDNmZDZm
YzQ2NmRlZGZlYWZmNjY4Y2JiYjE1NWU0Li5hNWQ4ZTNlMDEyZWVkYWE5Y2RmNzI5MzEwOGI0Mzky
N2JlMTI0ZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmgKQEAgLTI3LDEyICsyNyw4
IEBACiAKICNpbmNsdWRlICJOb2RlLmgiCiAKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRG9jdW1lbnQ7Ci0KIHN0cnVjdCBCb3VuZGFyeVBvaW50
IHsKICAgICBSZWY8Tm9kZT4gY29udGFpbmVyOwogICAgIHVuc2lnbmVkIG9mZnNldCB7IDAgfTsK
QEAgLTQzLDcgKzM5LDcgQEAgc3RydWN0IEJvdW5kYXJ5UG9pbnQgewogICAgIEJvdW5kYXJ5UG9p
bnQoY29uc3QgQm91bmRhcnlQb2ludCYpOwogICAgIEJvdW5kYXJ5UG9pbnQoQm91bmRhcnlQb2lu
dCYmKSA9IGRlZmF1bHQ7CiAgICAgQm91bmRhcnlQb2ludCYgb3BlcmF0b3I9KGNvbnN0IEJvdW5k
YXJ5UG9pbnQmKTsKLSAgICBCb3VuZGFyeVBvaW50JiBvcGVyYXRvcj0oQm91bmRhcnlQb2ludCYm
KTsKKyAgICBCb3VuZGFyeVBvaW50JiBvcGVyYXRvcj0oQm91bmRhcnlQb2ludCYmKSA9IGRlZmF1
bHQ7CiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdDsKIH07CkBAIC01Niw2ICs1Miwy
NCBAQCBpbmxpbmUgQm91bmRhcnlQb2ludDo6Qm91bmRhcnlQb2ludChSZWY8Tm9kZT4mJiBjb250
YWluZXIsIHVuc2lnbmVkIG9mZnNldCkKIHsKIH0KIAoraW5saW5lIEJvdW5kYXJ5UG9pbnQ6OkJv
dW5kYXJ5UG9pbnQoY29uc3QgQm91bmRhcnlQb2ludCYgb3RoZXIpCisgICAgOiBjb250YWluZXIo
b3RoZXIuY29udGFpbmVyLmNvcHlSZWYoKSkKKyAgICAsIG9mZnNldChvdGhlci5vZmZzZXQpCit7
Cit9CisKK2lubGluZSBCb3VuZGFyeVBvaW50JiBCb3VuZGFyeVBvaW50OjpvcGVyYXRvcj0oY29u
c3QgQm91bmRhcnlQb2ludCYgb3RoZXIpCit7CisgICAgY29udGFpbmVyID0gb3RoZXIuY29udGFp
bmVyLmNvcHlSZWYoKTsKKyAgICBvZmZzZXQgPSBvdGhlci5vZmZzZXQ7CisgICAgcmV0dXJuICp0
aGlzOworfQorCitpbmxpbmUgRG9jdW1lbnQmIEJvdW5kYXJ5UG9pbnQ6OmRvY3VtZW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gY29udGFpbmVyLT5kb2N1bWVudCgpOworfQorCiBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEJvdW5kYXJ5UG9pbnQmIGEsIGNvbnN0IEJvdW5kYXJ5UG9pbnQm
IGIpCiB7CiAgICAgcmV0dXJuIGEuY29udGFpbmVyLnB0cigpID09IGIuY29udGFpbmVyLnB0cigp
ICYmIGEub2Zmc2V0ID09IGIub2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcAppbmRleCBjYzcyODQ3NWM2YzE0OTFkOGEwNWNiMmY0ZDI0
YzU3MTc0ODBkNDg3Li5mNGU1MTc1MDExYTdhZjgwNDI5ZDYyZDYxMTljMDgzOTAzY2ZhM2Q4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApA
QCAtNjMsNyArNjMsNyBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6ZGV0YWNoKCkK
IFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmNvbGxlY3RU
ZXh0UmFuZ2VzKGNvbnN0IFJhbmdlJiByYW5nZSkKIHsKICAgICBWZWN0b3I8UmVmUHRyPFJhbmdl
Pj4gdGV4dFJhbmdlOwotICAgIGZvciAoVGV4dEl0ZXJhdG9yIHRleHRJdGVyYXRvcigmcmFuZ2Up
OyAhdGV4dEl0ZXJhdG9yLmF0RW5kKCk7IHRleHRJdGVyYXRvci5hZHZhbmNlKCkpCisgICAgZm9y
IChUZXh0SXRlcmF0b3IgdGV4dEl0ZXJhdG9yKHJhbmdlKTsgIXRleHRJdGVyYXRvci5hdEVuZCgp
OyB0ZXh0SXRlcmF0b3IuYWR2YW5jZSgpKQogICAgICAgICB0ZXh0UmFuZ2UuYXBwZW5kKGNyZWF0
ZUxpdmVSYW5nZSh0ZXh0SXRlcmF0b3IucmFuZ2UoKSkpOwogICAgIHJldHVybiB0ZXh0UmFuZ2U7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCBhODIwMDk4OGVjYzIxNjI2MjcxMGNjYjM1
NWJmYTFiMWExMTQzNjk4Li5hOTFiODIyNWMzNDkxMThjMjZkZmYxNDIzNzQzYjI2MzI1NTQ2YmNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTI1LDcg
KzEyNSw3IEBAIFBvc2l0aW9uOjpQb3NpdGlvbihOb2RlKiBhbmNob3JOb2RlLCBBbmNob3JUeXBl
IGFuY2hvclR5cGUpCiAgICAgICAgICYmIChpczxUZXh0PigqbV9hbmNob3JOb2RlKSB8fCBlZGl0
aW5nSWdub3Jlc0NvbnRlbnQoKm1fYW5jaG9yTm9kZSkpKSk7CiB9CiAKLVBvc2l0aW9uOjpQb3Np
dGlvbihOb2RlKiBhbmNob3JOb2RlLCBpbnQgb2Zmc2V0LCBBbmNob3JUeXBlIGFuY2hvclR5cGUp
CitQb3NpdGlvbjo6UG9zaXRpb24oTm9kZSogYW5jaG9yTm9kZSwgdW5zaWduZWQgb2Zmc2V0LCBB
bmNob3JUeXBlIGFuY2hvclR5cGUpCiAgICAgOiBtX2FuY2hvck5vZGUoYW5jaG9yTm9kZSkKICAg
ICAsIG1fb2Zmc2V0KG9mZnNldCkKICAgICAsIG1fYW5jaG9yVHlwZShhbmNob3JUeXBlKQpAQCAt
MTQ1LDcgKzE0NSw3IEBAIFBvc2l0aW9uOjpQb3NpdGlvbihUZXh0KiB0ZXh0Tm9kZSwgdW5zaWdu
ZWQgb2Zmc2V0KQogICAgIEFTU0VSVChtX2FuY2hvck5vZGUpOwogfQogCi12b2lkIFBvc2l0aW9u
Ojptb3ZlVG9Qb3NpdGlvbihOb2RlKiBub2RlLCBpbnQgb2Zmc2V0KQordm9pZCBQb3NpdGlvbjo6
bW92ZVRvUG9zaXRpb24oTm9kZSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0KQogewogICAgIEFTU0VS
VCghZWRpdGluZ0lnbm9yZXNDb250ZW50KCpub2RlKSk7CiAgICAgQVNTRVJUKGFuY2hvclR5cGUo
KSA9PSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IgfHwgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlv
bik7CkBAIC0xNTQsNyArMTU0LDggQEAgdm9pZCBQb3NpdGlvbjo6bW92ZVRvUG9zaXRpb24oTm9k
ZSogbm9kZSwgaW50IG9mZnNldCkKICAgICBpZiAobV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbikK
ICAgICAgICAgbV9hbmNob3JUeXBlID0gYW5jaG9yVHlwZUZvckxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihtX2FuY2hvck5vZGUuZ2V0KCksIG1fb2Zmc2V0KTsKIH0KLXZvaWQgUG9zaXRpb246Om1vdmVU
b09mZnNldChpbnQgb2Zmc2V0KQorCit2b2lkIFBvc2l0aW9uOjptb3ZlVG9PZmZzZXQodW5zaWdu
ZWQgb2Zmc2V0KQogewogICAgIEFTU0VSVChhbmNob3JUeXBlKCkgPT0gUG9zaXRpb25Jc09mZnNl
dEluQW5jaG9yIHx8IG1faXNMZWdhY3lFZGl0aW5nUG9zaXRpb24pOwogICAgIG1fb2Zmc2V0ID0g
b2Zmc2V0OwpAQCAtMjQ3LDcgKzI0OCw3IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjpwYXJlbnRBbmNo
b3JlZEVxdWl2YWxlbnQoKSBjb25zdAogICAgICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVudEFm
dGVyTm9kZShtX2FuY2hvck5vZGUuZ2V0KCkpOwogICAgIH0KIAotICAgIHJldHVybiB7IGNvbnRh
aW5lck5vZGUoKSwgY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBQb3NpdGlvbklzT2Zm
c2V0SW5BbmNob3IgfTsKKyAgICByZXR1cm4geyBjb250YWluZXJOb2RlKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkpLCBQb3NpdGlvbklzT2Zm
c2V0SW5BbmNob3IgfTsKIH0KIAogUmVmUHRyPE5vZGU+IFBvc2l0aW9uOjpmaXJzdE5vZGUoKSBj
b25zdApAQCAtMzA2LDcgKzMwNyw3IEBAIE5vZGUqIFBvc2l0aW9uOjpjb21wdXRlTm9kZUFmdGVy
UG9zaXRpb24oKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1Qb3NpdGlvbjo6QW5j
aG9yVHlwZSBQb3NpdGlvbjo6YW5jaG9yVHlwZUZvckxlZ2FjeUVkaXRpbmdQb3NpdGlvbihOb2Rl
KiBhbmNob3JOb2RlLCBpbnQgb2Zmc2V0KQorUG9zaXRpb246OkFuY2hvclR5cGUgUG9zaXRpb246
OmFuY2hvclR5cGVGb3JMZWdhY3lFZGl0aW5nUG9zaXRpb24oTm9kZSogYW5jaG9yTm9kZSwgdW5z
aWduZWQgb2Zmc2V0KQogewogICAgIGlmIChhbmNob3JOb2RlICYmIGVkaXRpbmdJZ25vcmVzQ29u
dGVudCgqYW5jaG9yTm9kZSkpIHsKICAgICAgICAgaWYgKG9mZnNldCA9PSAwKQpAQCAtMzMxLDkg
KzMzMiwxMCBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6cHJldmlvdXMoUG9zaXRpb25Nb3ZlVHlwZSBt
b3ZlVHlwZSkgY29uc3QKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiAqdGhpczsKIAot
ICAgIGludCBvZmZzZXQgPSBkZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogICAgIC8vIEZJWE1F
OiBOZWdhdGl2ZSBvZmZzZXRzIHNob3VsZG4ndCBiZSBhbGxvd2VkLiBXZSBzaG91bGQgY2F0Y2gg
dGhpcyBlYXJsaWVyLgotICAgIEFTU0VSVChvZmZzZXQgPj0gMCk7CisgICAgQVNTRVJUKGRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPj0gMCk7CisKKyAgICB1bnNpZ25lZCBvZmZzZXQgPSBkZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpOwogCiAgICAgaWYgKGFuY2hvclR5cGUoKSA9PSBQb3NpdGlv
bklzQmVmb3JlQW5jaG9yKSB7CiAgICAgICAgIG5vZGUgPSBjb250YWluZXJOb2RlKCk7CkBAIC0z
ODQsOSArMzg2LDEwIEBAIFBvc2l0aW9uIFBvc2l0aW9uOjpuZXh0KFBvc2l0aW9uTW92ZVR5cGUg
bW92ZVR5cGUpIGNvbnN0CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gKnRoaXM7CiAK
LSAgICBpbnQgb2Zmc2V0ID0gZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICAvLyBGSVhN
RTogTmVnYXRpdmUgb2Zmc2V0cyBzaG91bGRuJ3QgYmUgYWxsb3dlZC4gV2Ugc2hvdWxkIGNhdGNo
IHRoaXMgZWFybGllci4KLSAgICBBU1NFUlQob2Zmc2V0ID49IDApOworICAgIEFTU0VSVChkZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpID49IDApOworCisgICAgdW5zaWduZWQgb2Zmc2V0ID0gZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKIAogICAgIGlmIChhbmNob3JUeXBlKCkgPT0gUG9zaXRp
b25Jc0FmdGVyQW5jaG9yKSB7CiAgICAgICAgIG5vZGUgPSBjb250YWluZXJOb2RlKCk7CkBAIC0z
OTcsNyArNDAwLDcgQEAgUG9zaXRpb24gUG9zaXRpb246Om5leHQoUG9zaXRpb25Nb3ZlVHlwZSBt
b3ZlVHlwZSkgY29uc3QKICAgICB9CiAKICAgICBOb2RlKiBjaGlsZCA9IG5vZGUtPnRyYXZlcnNl
VG9DaGlsZEF0KG9mZnNldCk7Ci0gICAgaWYgKGNoaWxkIHx8ICghbm9kZS0+aGFzQ2hpbGROb2Rl
cygpICYmIG9mZnNldCA8IGxhc3RPZmZzZXRGb3JFZGl0aW5nKCpub2RlKSkpIHsKKyAgICBpZiAo
Y2hpbGQgfHwgKCFub2RlLT5oYXNDaGlsZE5vZGVzKCkgJiYgb2Zmc2V0IDwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGxhc3RPZmZzZXRGb3JFZGl0aW5nKCpub2RlKSkpKSB7CiAgICAgICAgIGlmIChj
aGlsZCkKICAgICAgICAgICAgIHJldHVybiBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUoY2hp
bGQpOwogCkBAIC00MjMsMTcgKzQyNiwxNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6bmV4dChQb3Np
dGlvbk1vdmVUeXBlIG1vdmVUeXBlKSBjb25zdAogICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0
aW5nUG9zaXRpb24ocGFyZW50LCBub2RlLT5jb21wdXRlTm9kZUluZGV4KCkgKyAxKTsKIH0KIAot
aW50IFBvc2l0aW9uOjp1bmNoZWNrZWRQcmV2aW91c09mZnNldChjb25zdCBOb2RlKiBuLCBpbnQg
Y3VycmVudCkKK2ludCBQb3NpdGlvbjo6dW5jaGVja2VkUHJldmlvdXNPZmZzZXQoY29uc3QgTm9k
ZSogbiwgdW5zaWduZWQgY3VycmVudCkKIHsKICAgICByZXR1cm4gbi0+cmVuZGVyZXIoKSA/IG4t
PnJlbmRlcmVyKCktPnByZXZpb3VzT2Zmc2V0KGN1cnJlbnQpIDogY3VycmVudCAtIDE7CiB9CiAK
LWludCBQb3NpdGlvbjo6dW5jaGVja2VkUHJldmlvdXNPZmZzZXRGb3JCYWNrd2FyZERlbGV0aW9u
KGNvbnN0IE5vZGUqIG4sIGludCBjdXJyZW50KQoraW50IFBvc2l0aW9uOjp1bmNoZWNrZWRQcmV2
aW91c09mZnNldEZvckJhY2t3YXJkRGVsZXRpb24oY29uc3QgTm9kZSogbiwgdW5zaWduZWQgY3Vy
cmVudCkKIHsKICAgICByZXR1cm4gbi0+cmVuZGVyZXIoKSA/IG4tPnJlbmRlcmVyKCktPnByZXZp
b3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbihjdXJyZW50KSA6IGN1cnJlbnQgLSAxOwogfQog
Ci1pbnQgUG9zaXRpb246OnVuY2hlY2tlZE5leHRPZmZzZXQoY29uc3QgTm9kZSogbiwgaW50IGN1
cnJlbnQpCitpbnQgUG9zaXRpb246OnVuY2hlY2tlZE5leHRPZmZzZXQoY29uc3QgTm9kZSogbiwg
dW5zaWduZWQgY3VycmVudCkKIHsKICAgICByZXR1cm4gbi0+cmVuZGVyZXIoKSA/IG4tPnJlbmRl
cmVyKCktPm5leHRPZmZzZXQoY3VycmVudCkgOiBjdXJyZW50ICsgMTsKIH0KQEAgLTQ2Miw5ICs0
NjUsOCBAQCBib29sIFBvc2l0aW9uOjphdExhc3RFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKCkgY29u
c3QKIHsKICAgICBpZiAoaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIC8vIEZJ
WE1FOiBQb3NpdGlvbiBhZnRlciBhbmNob3Igc2hvdWxkbid0IGJlIGNvbnNpZGVyZWQgYXMgYXQg
dGhlIGZpcnN0IGVkaXRpbmcgcG9zaXRpb24gZm9yIG5vZGUKLSAgICAvLyBzaW5jZSB0aGF0IHBv
c2l0aW9uIHJlc2lkZXMgb3V0c2lkZSBvZiB0aGUgbm9kZS4KLSAgICByZXR1cm4gbV9hbmNob3JU
eXBlID09IFBvc2l0aW9uSXNBZnRlckFuY2hvciB8fCBtX2FuY2hvclR5cGUgPT0gUG9zaXRpb25J
c0FmdGVyQ2hpbGRyZW4gfHwgbV9vZmZzZXQgPj0gbGFzdE9mZnNldEZvckVkaXRpbmcoKmRlcHJl
Y2F0ZWROb2RlKCkpOworICAgIC8vIEZJWE1FOiBQb3NpdGlvbiBhZnRlciBhbmNob3Igc2hvdWxk
bid0IGJlIGNvbnNpZGVyZWQgYXMgYXQgdGhlIGZpcnN0IGVkaXRpbmcgcG9zaXRpb24gZm9yIG5v
ZGUgc2luY2UgdGhhdCBwb3NpdGlvbiByZXNpZGVzIG91dHNpZGUgb2YgdGhlIG5vZGUuCisgICAg
cmV0dXJuIG1fYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzQWZ0ZXJBbmNob3IgfHwgbV9hbmNob3JU
eXBlID09IFBvc2l0aW9uSXNBZnRlckNoaWxkcmVuIHx8IG1fb2Zmc2V0ID49IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihsYXN0T2Zmc2V0Rm9yRWRpdGluZygqZGVwcmVjYXRlZE5vZGUoKSkpOwogfQog
CiAvLyBBIHBvc2l0aW9uIGlzIGNvbnNpZGVyZWQgYXQgZWRpdGluZyBib3VuZGFyeSBpZiBvbmUg
b2YgdGhlIGZvbGxvd2luZyBpcyB0cnVlOgpAQCAtNTQxLDcgKzU0Myw3IEBAIGJvb2wgUG9zaXRp
b246OmF0RW5kT2ZUcmVlKCkgY29uc3QKIAogICAgIHN3aXRjaCAobV9hbmNob3JUeXBlKSB7CiAg
ICAgY2FzZSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3I6Ci0gICAgICAgIHJldHVybiBtX29mZnNl
dCA+PSBsYXN0T2Zmc2V0Rm9yRWRpdGluZygqbV9hbmNob3JOb2RlKTsKKyAgICAgICAgcmV0dXJu
IG1fb2Zmc2V0ID49IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsYXN0T2Zmc2V0Rm9yRWRpdGluZygq
bV9hbmNob3JOb2RlKSk7CiAgICAgY2FzZSBQb3NpdGlvbklzQmVmb3JlQW5jaG9yOgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBQb3NpdGlvbklzQWZ0ZXJBbmNob3I6CkBAIC0xMDM4
LDEzICsxMDQwLDExIEBAIGJvb2wgUG9zaXRpb246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0aW9u
KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKICAgICAgICAgaWYgKGlzPEhUTUxCUkVs
ZW1lbnQ+KCpkZXByZWNhdGVkTm9kZSgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICBpZiAobV9vZmZzZXQgPT0gcG9zaXRpb24uZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSkKKyAgICAgICAgaWYgKG1fb2Zmc2V0ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3NpdGlv
bi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICBpZiAoIWlzPFRleHQ+KCpkZXByZWNhdGVkTm9kZSgpKSAmJiAhaXM8VGV4dD4o
KnBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCkpKSB7Ci0gICAgICAgICAgICBpZiAobV9vZmZzZXQg
IT0gcG9zaXRpb24uZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIWlzPFRleHQ+KCpkZXByZWNhdGVk
Tm9kZSgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGlmIChpczxI
VE1MQlJFbGVtZW50PigqZGVwcmVjYXRlZE5vZGUoKSkgJiYgcG9zaXRpb24uaXNDYW5kaWRhdGUo
KSkKQEAgLTEwNjIsOCArMTA2Miw4IEBAIGJvb2wgUG9zaXRpb246OnJlbmRlcnNJbkRpZmZlcmVu
dFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKICAgICBpZiAoaXM8UmVu
ZGVyVGV4dD4oKnBvc2l0aW9uUmVuZGVyZXIpICYmICFkb3duY2FzdDxSZW5kZXJUZXh0PigqcG9z
aXRpb25SZW5kZXJlcikuY29udGFpbnNDYXJldE9mZnNldChwb3NpdGlvbi5tX29mZnNldCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGludCB0aGlzUmVuZGVyZWRPZmZzZXQgPSBpczxS
ZW5kZXJUZXh0PigqcmVuZGVyZXIpID8gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKS5j
b3VudFJlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0c1VudGlsKG1fb2Zmc2V0KSA6IG1fb2Zmc2V0Owot
ICAgIGludCBwb3NpdGlvblJlbmRlcmVkT2Zmc2V0ID0gaXM8UmVuZGVyVGV4dD4oKnBvc2l0aW9u
UmVuZGVyZXIpID8gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnBvc2l0aW9uUmVuZGVyZXIpLmNvdW50
UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXRzVW50aWwocG9zaXRpb24ubV9vZmZzZXQpIDogcG9zaXRp
b24ubV9vZmZzZXQ7CisgICAgdW5zaWduZWQgdGhpc1JlbmRlcmVkT2Zmc2V0ID0gaXM8UmVuZGVy
VGV4dD4oKnJlbmRlcmVyKSA/IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlcikuY291bnRS
ZW5kZXJlZENoYXJhY3Rlck9mZnNldHNVbnRpbChtX29mZnNldCkgOiBtX29mZnNldDsKKyAgICB1
bnNpZ25lZCBwb3NpdGlvblJlbmRlcmVkT2Zmc2V0ID0gaXM8UmVuZGVyVGV4dD4oKnBvc2l0aW9u
UmVuZGVyZXIpID8gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnBvc2l0aW9uUmVuZGVyZXIpLmNvdW50
UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXRzVW50aWwocG9zaXRpb24ubV9vZmZzZXQpIDogcG9zaXRp
b24ubV9vZmZzZXQ7CiAKICAgICBpZiAocmVuZGVyZXIgPT0gcG9zaXRpb25SZW5kZXJlciAmJiB0
aGlzUmVuZGVyZWRPZmZzZXQgPT0gcG9zaXRpb25SZW5kZXJlZE9mZnNldCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTA5MSwxMiArMTA5MSwxMiBAQCBib29sIFBvc2l0aW9uOjpyZW5kZXJz
SW5EaWZmZXJlbnRQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CiAgICAg
fQogCiAgICAgaWYgKG5leHRSZW5kZXJlZEVkaXRhYmxlKGRlcHJlY2F0ZWROb2RlKCkpID09IHBv
c2l0aW9uLmRlcHJlY2F0ZWROb2RlKCkKLSAgICAgICAgJiYgdGhpc1JlbmRlcmVkT2Zmc2V0ID09
IGNhcmV0TWF4T2Zmc2V0KCpkZXByZWNhdGVkTm9kZSgpKSAmJiAhcG9zaXRpb25SZW5kZXJlZE9m
ZnNldCkgeworICAgICAgICAmJiB0aGlzUmVuZGVyZWRPZmZzZXQgPT0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGNhcmV0TWF4T2Zmc2V0KCpkZXByZWNhdGVkTm9kZSgpKSkgJiYgIXBvc2l0aW9uUmVu
ZGVyZWRPZmZzZXQpIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAgICBp
ZiAocHJldmlvdXNSZW5kZXJlZEVkaXRhYmxlKGRlcHJlY2F0ZWROb2RlKCkpID09IHBvc2l0aW9u
LmRlcHJlY2F0ZWROb2RlKCkKLSAgICAgICAgJiYgIXRoaXNSZW5kZXJlZE9mZnNldCAmJiBwb3Np
dGlvblJlbmRlcmVkT2Zmc2V0ID09IGNhcmV0TWF4T2Zmc2V0KCpwb3NpdGlvbi5kZXByZWNhdGVk
Tm9kZSgpKSkgeworICAgICAgICAmJiAhdGhpc1JlbmRlcmVkT2Zmc2V0ICYmIHBvc2l0aW9uUmVu
ZGVyZWRPZmZzZXQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhcmV0TWF4T2Zmc2V0KCpwb3Np
dGlvbi5kZXByZWNhdGVkTm9kZSgpKSkpIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IApAQCAtMTE2Nyw5ICsxMTY3LDkgQEAgc3RhdGljIElubGluZVRleHRCb3gqIHNlYXJjaEFoZWFk
Rm9yQmV0dGVyTWF0Y2goUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKm5leHQpKSB7CiAgICAgICAg
ICAgICBJbmxpbmVUZXh0Qm94KiBtYXRjaCA9IG51bGxwdHI7Ci0gICAgICAgICAgICBpbnQgbWlu
T2Zmc2V0ID0gSU5UX01BWDsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1pbk9mZnNldCA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsKICAgICAgICAgICAgIGZvciAoSW5saW5l
VGV4dEJveCogYm94ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKm5leHQpLmZpcnN0VGV4dEJveCgp
OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgewotICAgICAgICAgICAgICAgIGludCBj
YXJldE1pbk9mZnNldCA9IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKKyAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjYXJldE1pbk9mZnNldCA9IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKICAgICAgICAg
ICAgICAgICBpZiAoY2FyZXRNaW5PZmZzZXQgPCBtaW5PZmZzZXQpIHsKICAgICAgICAgICAgICAg
ICAgICAgbWF0Y2ggPSBib3g7CiAgICAgICAgICAgICAgICAgICAgIG1pbk9mZnNldCA9IGNhcmV0
TWluT2Zmc2V0OwpAQCAtMTIxOSwyMCArMTIxOSwyMCBAQCB2b2lkIFBvc2l0aW9uOjpnZXRJbmxp
bmVCb3hBbmRPZmZzZXQoRUFmZmluaXR5IGFmZmluaXR5LCBUZXh0RGlyZWN0aW9uIHByaW1hcnlE
aQogICAgICAgICBJbmxpbmVUZXh0Qm94KiBjYW5kaWRhdGUgPSBudWxscHRyOwogCiAgICAgICAg
IGZvciAoYm94ID0gdGV4dFJlbmRlcmVyLmZpcnN0VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+
bmV4dFRleHRCb3goKSkgewotICAgICAgICAgICAgaW50IGNhcmV0TWluT2Zmc2V0ID0gYm94LT5j
YXJldE1pbk9mZnNldCgpOwotICAgICAgICAgICAgaW50IGNhcmV0TWF4T2Zmc2V0ID0gYm94LT5j
YXJldE1heE9mZnNldCgpOworICAgICAgICAgICAgdW5zaWduZWQgY2FyZXRNaW5PZmZzZXQgPSBi
b3gtPmNhcmV0TWluT2Zmc2V0KCk7CisgICAgICAgICAgICB1bnNpZ25lZCBjYXJldE1heE9mZnNl
dCA9IGJveC0+Y2FyZXRNYXhPZmZzZXQoKTsKIAotICAgICAgICAgICAgaWYgKGNhcmV0T2Zmc2V0
IDwgY2FyZXRNaW5PZmZzZXQgfHwgY2FyZXRPZmZzZXQgPiBjYXJldE1heE9mZnNldCB8fCAoY2Fy
ZXRPZmZzZXQgPT0gY2FyZXRNYXhPZmZzZXQgJiYgYm94LT5pc0xpbmVCcmVhaygpKSkKKyAgICAg
ICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FyZXRPZmZzZXQpIDwgY2FyZXRNaW5P
ZmZzZXQgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhcmV0T2Zmc2V0KSA+IGNhcmV0TWF4T2Zm
c2V0IHx8IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FyZXRPZmZzZXQpID09IGNhcmV0TWF4T2Zm
c2V0ICYmIGJveC0+aXNMaW5lQnJlYWsoKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgICAgIGlmIChjYXJldE9mZnNldCA+IGNhcmV0TWluT2Zmc2V0ICYmIGNhcmV0T2Zm
c2V0IDwgY2FyZXRNYXhPZmZzZXQpIHsKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oY2FyZXRPZmZzZXQpID4gY2FyZXRNaW5PZmZzZXQgJiYgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNhcmV0T2Zmc2V0KSA8IGNhcmV0TWF4T2Zmc2V0KSB7CiAgICAgICAgICAgICAgICAgaW5s
aW5lQm94ID0gYm94OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgaWYgKCgoY2FyZXRPZmZzZXQgPT0gY2FyZXRNYXhPZmZzZXQpIF4gKGFmZmlu
aXR5ID09IERPV05TVFJFQU0pKQotICAgICAgICAgICAgICAgIHx8ICgoY2FyZXRPZmZzZXQgPT0g
Y2FyZXRNaW5PZmZzZXQpIF4gKGFmZmluaXR5ID09IFVQU1RSRUFNKSkKLSAgICAgICAgICAgICAg
ICB8fCAoY2FyZXRPZmZzZXQgPT0gY2FyZXRNYXhPZmZzZXQgJiYgYm94LT5uZXh0TGVhZk9uTGlu
ZSgpICYmIGJveC0+bmV4dExlYWZPbkxpbmUoKS0+aXNMaW5lQnJlYWsoKSkpCisgICAgICAgICAg
ICBpZiAoKChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FyZXRPZmZzZXQpID09IGNhcmV0TWF4T2Zm
c2V0KSBeIChhZmZpbml0eSA9PSBET1dOU1RSRUFNKSkKKyAgICAgICAgICAgICAgICB8fCAoKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjYXJldE9mZnNldCkgPT0gY2FyZXRNaW5PZmZzZXQpIF4gKGFm
ZmluaXR5ID09IFVQU1RSRUFNKSkKKyAgICAgICAgICAgICAgICB8fCAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGNhcmV0T2Zmc2V0KSA9PSBjYXJldE1heE9mZnNldCAmJiBib3gtPm5leHRMZWFmT25M
aW5lKCkgJiYgYm94LT5uZXh0TGVhZk9uTGluZSgpLT5pc0xpbmVCcmVhaygpKSkKICAgICAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FuZGlkYXRlID0gYm94OwpAQCAtMTQ3OCw3
ICsxNDc4LDcgQEAgYm9vbCBQb3NpdGlvbjo6ZXF1YWxzKGNvbnN0IFBvc2l0aW9uJiBvdGhlcikg
Y29uc3QKICAgICAgICAgICAgIHJldHVybiBtX2FuY2hvck5vZGUgPT0gb3RoZXIubV9hbmNob3JO
b2RlICYmICFtX29mZnNldDsKICAgICAgICAgY2FzZSBQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbjoK
ICAgICAgICAgICAgIEFTU0VSVCghaXM8VGV4dD4oKm90aGVyLm1fYW5jaG9yTm9kZSkpOwotICAg
ICAgICAgICAgcmV0dXJuIG1fYW5jaG9yTm9kZSA9PSBvdGhlci5tX2FuY2hvck5vZGUgJiYgbV9v
ZmZzZXQgPT0gc3RhdGljX2Nhc3Q8aW50PihvdGhlci5tX2FuY2hvck5vZGUtPmNvdW50Q2hpbGRO
b2RlcygpKTsKKyAgICAgICAgICAgIHJldHVybiBtX2FuY2hvck5vZGUgPT0gb3RoZXIubV9hbmNo
b3JOb2RlICYmIG1fb2Zmc2V0ID09IG90aGVyLm1fYW5jaG9yTm9kZS0+Y291bnRDaGlsZE5vZGVz
KCk7CiAgICAgICAgIGNhc2UgUG9zaXRpb25Jc09mZnNldEluQW5jaG9yOgogICAgICAgICAgICAg
cmV0dXJuIG1fYW5jaG9yTm9kZSA9PSBvdGhlci5tX2FuY2hvck5vZGUgJiYgbV9vZmZzZXQgPT0g
b3RoZXIubV9vZmZzZXQ7CiAgICAgICAgIGNhc2UgUG9zaXRpb25Jc0JlZm9yZUFuY2hvcjoKQEAg
LTE1OTgsNiArMTU5OCwxMiBAQCBQb3NpdGlvbiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24o
Y29uc3QgQm91bmRhcnlQb2ludCYgcG9pbnQpCiAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihwb2ludC5jb250YWluZXIucHRyKCksIHBvaW50Lm9mZnNldCk7CiB9CiAKK0Jv
dW5kYXJ5UG9pbnQgbWFrZUJvdW5kYXJ5UG9pbnQoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQor
eworICAgIEFTU0VSVChwb3NpdGlvbi5jb250YWluZXJOb2RlKCkpOworICAgIHJldHVybiB7ICpw
b3NpdGlvbi5jb250YWluZXJOb2RlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3NpdGlvbi5j
b21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkpIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKaW5k
ZXggNjRjMmQxOGUwZTFjYzkyNGFhM2UyYzM5MDk4YTNhYjQ1NDNlZmZhYS4uNDdjMDVjNzA4ZDc5
NjA4ZjZhNzM2N2ZiZDQzYTg0MTg5MGRiMzUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGb3IgY3JlYXRpbmcgb2Zmc2V0
IHBvc2l0aW9uczoKICAgICAvLyBGSVhNRTogVGhpcyBjb25zdHJ1Y3RvciBzaG91bGQgZXZlbnR1
YWxseSBnbyBhd2F5LiBTZWUgYnVnIDYzMDQwLgotICAgIFdFQkNPUkVfRVhQT1JUIFBvc2l0aW9u
KE5vZGUqIGFuY2hvck5vZGUsIGludCBvZmZzZXQsIEFuY2hvclR5cGUpOworICAgIFdFQkNPUkVf
RVhQT1JUIFBvc2l0aW9uKE5vZGUqIGFuY2hvck5vZGUsIHVuc2lnbmVkIG9mZnNldCwgQW5jaG9y
VHlwZSk7CiAKICAgICBBbmNob3JUeXBlIGFuY2hvclR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxBbmNob3JUeXBlPihtX2FuY2hvclR5cGUpOyB9CiAKQEAgLTEyMSw4ICsxMjEsOCBA
QCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBzaG91bGQgb25seSBiZSB1c2VkIGZvciBQb3NpdGlv
bklzT2Zmc2V0SW5BbmNob3IgcG9zaXRpb25zLCB1bmxlc3MKICAgICAvLyB0aGUgcG9zaXRpb24g
aXMgYSBsZWdhY3kgZWRpdGluZyBwb3NpdGlvbi4KLSAgICB2b2lkIG1vdmVUb1Bvc2l0aW9uKE5v
ZGUqIGFuY2hvck5vZGUsIGludCBvZmZzZXQpOwotICAgIHZvaWQgbW92ZVRvT2Zmc2V0KGludCBv
ZmZzZXQpOworICAgIHZvaWQgbW92ZVRvUG9zaXRpb24oTm9kZSogYW5jaG9yTm9kZSwgdW5zaWdu
ZWQgb2Zmc2V0KTsKKyAgICB2b2lkIG1vdmVUb09mZnNldCh1bnNpZ25lZCBvZmZzZXQpOwogCiAg
ICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9hbmNob3JOb2RlOyB9CiAgICAgYm9v
bCBpc05vdE51bGwoKSBjb25zdCB7IHJldHVybiBtX2FuY2hvck5vZGU7IH0KQEAgLTEzNSw5ICsx
MzUsOSBAQCBwdWJsaWM6CiAgICAgLy8gdXNpbmcgY29tcG9zZWQgY2hhcmFjdGVycywgdGhlIHJl
c3VsdCBtYXkgYmUgaW5zaWRlIGEgc2luZ2xlIHVzZXItdmlzaWJsZSBjaGFyYWN0ZXIgaWYgYSBs
aWdhdHVyZSBpcyBmb3JtZWQuCiAgICAgV0VCQ09SRV9FWFBPUlQgUG9zaXRpb24gcHJldmlvdXMo
UG9zaXRpb25Nb3ZlVHlwZSA9IENvZGVQb2ludCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
UG9zaXRpb24gbmV4dChQb3NpdGlvbk1vdmVUeXBlID0gQ29kZVBvaW50KSBjb25zdDsKLSAgICBz
dGF0aWMgaW50IHVuY2hlY2tlZFByZXZpb3VzT2Zmc2V0KGNvbnN0IE5vZGUqLCBpbnQgY3VycmVu
dCk7Ci0gICAgc3RhdGljIGludCB1bmNoZWNrZWRQcmV2aW91c09mZnNldEZvckJhY2t3YXJkRGVs
ZXRpb24oY29uc3QgTm9kZSosIGludCBjdXJyZW50KTsKLSAgICBzdGF0aWMgaW50IHVuY2hlY2tl
ZE5leHRPZmZzZXQoY29uc3QgTm9kZSosIGludCBjdXJyZW50KTsKKyAgICBzdGF0aWMgaW50IHVu
Y2hlY2tlZFByZXZpb3VzT2Zmc2V0KGNvbnN0IE5vZGUqLCB1bnNpZ25lZCBjdXJyZW50KTsKKyAg
ICBzdGF0aWMgaW50IHVuY2hlY2tlZFByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbihj
b25zdCBOb2RlKiwgdW5zaWduZWQgY3VycmVudCk7CisgICAgc3RhdGljIGludCB1bmNoZWNrZWRO
ZXh0T2Zmc2V0KGNvbnN0IE5vZGUqLCB1bnNpZ25lZCBjdXJyZW50KTsKIAogICAgIC8vIFRoZXNl
IGNhbiBiZSBlaXRoZXIgaW5zaWRlIG9yIGp1c3QgYmVmb3JlL2FmdGVyIHRoZSBub2RlLCBkZXBl
bmRpbmcgb24KICAgICAvLyBpZiB0aGUgbm9kZSBpcyBpZ25vcmVkIGJ5IGVkaXRpbmcgb3Igbm90
LgpAQCAtMjA2LDE5ICsyMDYsNTIgQEAgcHJpdmF0ZToKICAgICBQb3NpdGlvbiBwcmV2aW91c0No
YXJhY3RlclBvc2l0aW9uKEVBZmZpbml0eSkgY29uc3Q7CiAgICAgUG9zaXRpb24gbmV4dENoYXJh
Y3RlclBvc2l0aW9uKEVBZmZpbml0eSkgY29uc3Q7CiAKLSAgICBzdGF0aWMgQW5jaG9yVHlwZSBh
bmNob3JUeXBlRm9yTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKE5vZGUqIGFuY2hvck5vZGUsIGludCBv
ZmZzZXQpOworICAgIHN0YXRpYyBBbmNob3JUeXBlIGFuY2hvclR5cGVGb3JMZWdhY3lFZGl0aW5n
UG9zaXRpb24oTm9kZSogYW5jaG9yTm9kZSwgdW5zaWduZWQgb2Zmc2V0KTsKIAogICAgIFJlZlB0
cjxOb2RlPiBtX2FuY2hvck5vZGU7CiAgICAgLy8gbV9vZmZzZXQgY2FuIGJlIHRoZSBvZmZzZXQg
aW5zaWRlIG1fYW5jaG9yTm9kZSwgb3IgaWYgZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9y
Tm9kZSkKICAgICAvLyByZXR1cm5zIHRydWUsIHRoZW4gb3RoZXIgcGxhY2VzIGluIGVkaXRpbmcg
d2lsbCB0cmVhdCBtX29mZnNldCA9PSAwIGFzICJiZWZvcmUgdGhlIGFuY2hvciIKICAgICAvLyBh
bmQgbV9vZmZzZXQgPiAwIGFzICJhZnRlciB0aGUgYW5jaG9yIG5vZGUiLiAgU2VlIHBhcmVudEFu
Y2hvcmVkRXF1aXZhbGVudCBmb3IgbW9yZSBpbmZvLgotICAgIGludCBtX29mZnNldCB7IDAgfTsK
KyAgICB1bnNpZ25lZCBtX29mZnNldCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2FuY2hvclR5cGUg
OiAzOwogICAgIGJvb2wgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbiA6IDE7CiB9OwogCitib29s
IG9wZXJhdG9yPT0oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOworYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKK2Jvb2wgb3BlcmF0b3I8
KGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKK2Jvb2wgb3BlcmF0b3I+KGNvbnN0
IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKK2Jvb2wgb3BlcmF0b3I+PShjb25zdCBQb3Np
dGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7Citib29sIG9wZXJhdG9yPD0oY29uc3QgUG9zaXRpb24m
LCBjb25zdCBQb3NpdGlvbiYpOworCisvLyBGSVhNRTogQ29uc2lkZXIgcmVuYW1pbmcgdGhpcyB0
byAibWFrZSIgaW5zdGVhZCBvZiAiY3JlYXRlIiBzaW5jZSB3ZSBub3JtYWxseSB1c2UgImNyZWF0
ZSIgZm9yIGZ1bmN0aW9ucyB0aGF0IGFsbG9jYXRlIGhlYXAgb2JqZWN0cy4KK1Bvc2l0aW9uIGNy
ZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihOb2RlKiwgdW5zaWduZWQgb2Zmc2V0KTsKIFBvc2l0
aW9uIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihjb25zdCBCb3VuZGFyeVBvaW50Jik7CiAK
K1dFQkNPUkVfRVhQT1JUIEJvdW5kYXJ5UG9pbnQgbWFrZUJvdW5kYXJ5UG9pbnQoY29uc3QgUG9z
aXRpb24mKTsKKworUG9zaXRpb24gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoTm9kZSopOwor
UG9zaXRpb24gcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShOb2RlKik7CisKKy8vIHBvc2l0aW9u
QmVmb3JlTm9kZSBhbmQgcG9zaXRpb25BZnRlck5vZGUgcmV0dXJuIG5laWdoYm9yLWFuY2hvcmVk
IHBvc2l0aW9ucywgY29uc3RydWN0aW9uIGlzIE8oMSkKK1Bvc2l0aW9uIHBvc2l0aW9uQmVmb3Jl
Tm9kZShOb2RlKiBhbmNob3JOb2RlKTsKK1Bvc2l0aW9uIHBvc2l0aW9uQWZ0ZXJOb2RlKE5vZGUq
IGFuY2hvck5vZGUpOworCitpbnQgbGFzdE9mZnNldEluTm9kZShOb2RlKik7CisKKy8vIGZpcnN0
UG9zaXRpb25Jbk5vZGUgYW5kIGxhc3RQb3NpdGlvbkluTm9kZSByZXR1cm4gcGFyZW50LWFuY2hv
cmVkIHBvc2l0aW9ucywgbGFzdFBvc2l0aW9uSW5Ob2RlIGNvbnN0cnVjdGlvbiBpcyBPKG4pIGR1
ZSB0byBjb3VudENoaWxkTm9kZXMoKQorUG9zaXRpb24gZmlyc3RQb3NpdGlvbkluTm9kZShOb2Rl
KiBhbmNob3JOb2RlKTsKK1Bvc2l0aW9uIGxhc3RQb3NpdGlvbkluTm9kZShOb2RlKiBhbmNob3JO
b2RlKTsKKworaW50IG1pbk9mZnNldEZvck5vZGUoTm9kZSogYW5jaG9yTm9kZSwgdW5zaWduZWQg
b2Zmc2V0KTsKK2Jvb2wgb2Zmc2V0SXNCZWZvcmVMYXN0Tm9kZU9mZnNldCh1bnNpZ25lZCBvZmZz
ZXQsIE5vZGUqIGFuY2hvck5vZGUpOworCitSZWZQdHI8Tm9kZT4gY29tbW9uU2hhZG93SW5jbHVk
aW5nQW5jZXN0b3IoY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOworCitXVEY6OlRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgUG9zaXRpb24mKTsK
KworLy8gaW5saW5lcworCiBpbmxpbmUgUG9zaXRpb24gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKE5vZGUqIG5vZGUsIHVuc2lnbmVkIG9mZnNldCkKIHsKICAgICByZXR1cm4geyBub2RlLCBv
ZmZzZXQsIFBvc2l0aW9uOjpMZWdhY3lFZGl0aW5nUG9zaXRpb25GbGFnOjpPbiB9OwpAQCAtMjYw
LDkgKzI5Myw2IEBAIGlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgUG9zaXRpb24mIGEsIGNv
bnN0IFBvc2l0aW9uJiBiKQogICAgIHJldHVybiAhYS5pc051bGwoKSAmJiAhYi5pc051bGwoKSAm
JiAoYSA9PSBiIHx8IGEgPCBiKTsKIH0KIAotUG9zaXRpb24gcG9zaXRpb25JblBhcmVudEJlZm9y
ZU5vZGUoTm9kZSopOwotUG9zaXRpb24gcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShOb2RlKik7
Ci0KIC8vIHBvc2l0aW9uQmVmb3JlTm9kZSBhbmQgcG9zaXRpb25BZnRlck5vZGUgcmV0dXJuIG5l
aWdoYm9yLWFuY2hvcmVkIHBvc2l0aW9ucywgY29uc3RydWN0aW9uIGlzIE8oMSkKIGlubGluZSBQ
b3NpdGlvbiBwb3NpdGlvbkJlZm9yZU5vZGUoTm9kZSogYW5jaG9yTm9kZSkKIHsKQEAgLTI3OCw3
ICszMDgsNyBAQCBpbmxpbmUgUG9zaXRpb24gcG9zaXRpb25BZnRlck5vZGUoTm9kZSogYW5jaG9y
Tm9kZSkKIAogaW5saW5lIGludCBsYXN0T2Zmc2V0SW5Ob2RlKE5vZGUqIG5vZGUpCiB7Ci0gICAg
cmV0dXJuIG5vZGUtPmlzQ2hhcmFjdGVyRGF0YU5vZGUoKSA/IG5vZGUtPm1heENoYXJhY3Rlck9m
ZnNldCgpIDogc3RhdGljX2Nhc3Q8aW50Pihub2RlLT5jb3VudENoaWxkTm9kZXMoKSk7CisgICAg
cmV0dXJuIG5vZGUtPmlzQ2hhcmFjdGVyRGF0YU5vZGUoKSA/IG5vZGUtPm1heENoYXJhY3Rlck9m
ZnNldCgpIDogbm9kZS0+Y291bnRDaGlsZE5vZGVzKCk7CiB9CiAKIC8vIGZpcnN0UG9zaXRpb25J
bk5vZGUgYW5kIGxhc3RQb3NpdGlvbkluTm9kZSByZXR1cm4gcGFyZW50LWFuY2hvcmVkIHBvc2l0
aW9ucywgbGFzdFBvc2l0aW9uSW5Ob2RlIGNvbnN0cnVjdGlvbiBpcyBPKG4pIGR1ZSB0byBjb3Vu
dENoaWxkTm9kZXMoKQpAQCAtMjk2LDI0ICszMjYsMjQgQEAgaW5saW5lIFBvc2l0aW9uIGxhc3RQ
b3NpdGlvbkluTm9kZShOb2RlKiBhbmNob3JOb2RlKQogICAgIHJldHVybiBQb3NpdGlvbihhbmNo
b3JOb2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4pOwogfQogCi1pbmxpbmUg
aW50IG1pbk9mZnNldEZvck5vZGUoTm9kZSogYW5jaG9yTm9kZSwgaW50IG9mZnNldCkKK2lubGlu
ZSBpbnQgbWluT2Zmc2V0Rm9yTm9kZShOb2RlKiBhbmNob3JOb2RlLCB1bnNpZ25lZCBvZmZzZXQp
CiB7CiAgICAgaWYgKGFuY2hvck5vZGUtPmlzQ2hhcmFjdGVyRGF0YU5vZGUoKSkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWluKG9mZnNldCwgYW5jaG9yTm9kZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCkp
OworICAgICAgICByZXR1cm4gc3RkOjptaW48dW5zaWduZWQ+KG9mZnNldCwgYW5jaG9yTm9kZS0+
bWF4Q2hhcmFjdGVyT2Zmc2V0KCkpOwogCi0gICAgaW50IG5ld09mZnNldCA9IDA7CisgICAgdW5z
aWduZWQgbmV3T2Zmc2V0ID0gMDsKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBhbmNob3JOb2RlLT5m
aXJzdENoaWxkKCk7IG5vZGUgJiYgbmV3T2Zmc2V0IDwgb2Zmc2V0OyBub2RlID0gbm9kZS0+bmV4
dFNpYmxpbmcoKSkKICAgICAgICAgbmV3T2Zmc2V0Kys7CiAgICAgCiAgICAgcmV0dXJuIG5ld09m
ZnNldDsKIH0KIAotaW5saW5lIGJvb2wgb2Zmc2V0SXNCZWZvcmVMYXN0Tm9kZU9mZnNldChpbnQg
b2Zmc2V0LCBOb2RlKiBhbmNob3JOb2RlKQoraW5saW5lIGJvb2wgb2Zmc2V0SXNCZWZvcmVMYXN0
Tm9kZU9mZnNldCh1bnNpZ25lZCBvZmZzZXQsIE5vZGUqIGFuY2hvck5vZGUpCiB7CiAgICAgaWYg
KGFuY2hvck5vZGUtPmlzQ2hhcmFjdGVyRGF0YU5vZGUoKSkKLSAgICAgICAgcmV0dXJuIG9mZnNl
dCA8IGFuY2hvck5vZGUtPm1heENoYXJhY3Rlck9mZnNldCgpOworICAgICAgICByZXR1cm4gb2Zm
c2V0IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFuY2hvck5vZGUtPm1heENoYXJhY3Rlck9mZnNl
dCgpKTsKIAotICAgIGludCBjdXJyZW50T2Zmc2V0ID0gMDsKKyAgICB1bnNpZ25lZCBjdXJyZW50
T2Zmc2V0ID0gMDsKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBhbmNob3JOb2RlLT5maXJzdENoaWxk
KCk7IG5vZGUgJiYgY3VycmVudE9mZnNldCA8IG9mZnNldDsgbm9kZSA9IG5vZGUtPm5leHRTaWJs
aW5nKCkpCiAgICAgICAgIGN1cnJlbnRPZmZzZXQrKzsKICAgICAKQEAgLTMyMSwxMCArMzUxLDYg
QEAgaW5saW5lIGJvb2wgb2Zmc2V0SXNCZWZvcmVMYXN0Tm9kZU9mZnNldChpbnQgb2Zmc2V0LCBO
b2RlKiBhbmNob3JOb2RlKQogICAgIHJldHVybiBvZmZzZXQgPCBjdXJyZW50T2Zmc2V0OwogfQog
Ci1SZWZQdHI8Tm9kZT4gY29tbW9uU2hhZG93SW5jbHVkaW5nQW5jZXN0b3IoY29uc3QgUG9zaXRp
b24mLCBjb25zdCBQb3NpdGlvbiYpOwotCi1XVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RG
OjpUZXh0U3RyZWFtJiwgY29uc3QgUG9zaXRpb24mKTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5kZXggOWMx
MTM0MDVlMjc3NWNmN2YwNWM3ZjhhYzNmYTE4MDBiM2Q0NTk3Zi4uNDVjMWJjZmQwMmMxOThjZDhi
OTkwZWNhMDFlM2YwZTZhMzkzYjVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC0xODY5LDYgKzE4
NjksMTggQEAgRmxvYXRSZWN0IFJhbmdlOjphYnNvbHV0ZUJvdW5kaW5nUmVjdChPcHRpb25TZXQ8
Qm91bmRpbmdSZWN0QmVoYXZpb3I+IHJlY3RPcHRpb24KICAgICByZXR1cm4gYm91bmRpbmdSZWN0
KENvb3JkaW5hdGVTcGFjZTo6QWJzb2x1dGUsIHJlY3RPcHRpb25zKTsKIH0KIAorUmVmPFJhbmdl
PiBjcmVhdGVMaXZlUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVy
biBSYW5nZTo6Y3JlYXRlKHJhbmdlLnN0YXJ0LmRvY3VtZW50KCksIHJhbmdlLnN0YXJ0LmNvbnRh
aW5lci5wdHIoKSwgcmFuZ2Uuc3RhcnQub2Zmc2V0LCByYW5nZS5lbmQuY29udGFpbmVyLnB0cigp
LCByYW5nZS5lbmQub2Zmc2V0KTsKK30KKworUmVmUHRyPFJhbmdlPiBjcmVhdGVMaXZlUmFuZ2Uo
Y29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3sKKyAgICBpZiAoIXJhbmdlKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKCpyYW5n
ZSk7Cit9CisKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mIHRz
LCBjb25zdCBSYW5nZUJvdW5kYXJ5UG9pbnQmIHIpCiB7CiAgICAgcmV0dXJuIHRzIDw8IHIudG9Q
b3NpdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUmFuZ2UuaAppbmRleCBiNDkzYzdjZDQ2ZDU1MTk1OTBlZmQ5N2U1ZGVj
N2I5YzQ5YzQyYjZmLi42OWNmMmI5NzJlZGE4ZWY2MjNjNzQ0ZGU5MDMzY2JhNDZmYTNkN2I2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUmFuZ2UuaApAQCAtMyw3ICszLDcgQEAKICAqIChDKSAyMDAwIEd1bm5zdGVpbiBMeWUg
KGd1bm5zdGVpbkBuZXRjb20ubm8pCiAgKiAoQykgMjAwMCBGcmVkZXJpayBIb2xsamVuIChmcmVk
ZXJpay5ob2xsamVuQGhpZy5ubykKICAqIChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5j
b20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yNywyNiArMjcsMjMgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCiAjaW5jbHVkZSAiUmFuZ2VCb3VuZGFyeVBvaW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIERPTVJlY3Q7CiBjbGFzcyBET01SZWN0TGlz
dDsKLWNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEZsb2F0
UXVhZDsKLWNsYXNzIE5vZGU7CiBjbGFzcyBOb2RlV2l0aEluZGV4OwogY2xhc3MgUmVuZGVyVGV4
dDsKIGNsYXNzIFNlbGVjdGlvblJlY3Q7CiBjbGFzcyBUZXh0OwogY2xhc3MgVmlzaWJsZVBvc2l0
aW9uOwogCitzdHJ1Y3QgU2ltcGxlUmFuZ2U7CisKKy8vIEZJWE1FOiBSZW5hbWUgdG8gTGl2ZVJh
bmdlLCB3aGlsZSBsZWF2aW5nIHRoZSBET00tZXhwb3NlZCBuYW1lIGFzIFJhbmdlLgogY2xhc3Mg
UmFuZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSYW5nZT4gewogcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8UmFuZ2U+IGNyZWF0ZShEb2N1bWVudCYpOwpAQCAtMTg1LDE1ICsx
ODIsMjAgQEAgV0VCQ09SRV9FWFBPUlQgUmVmPFJhbmdlPiByYW5nZU9mQ29udGVudHMoTm9kZSYp
OwogV0VCQ09SRV9FWFBPUlQgYm9vbCBhcmVSYW5nZXNFcXVhbChjb25zdCBSYW5nZSosIGNvbnN0
IFJhbmdlKik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHJhbmdlc092ZXJsYXAoY29uc3QgUmFuZ2Uq
LCBjb25zdCBSYW5nZSopOwogCitXRUJDT1JFX0VYUE9SVCBSZWY8UmFuZ2U+IGNyZWF0ZUxpdmVS
YW5nZShjb25zdCBTaW1wbGVSYW5nZSYpOworV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFJhbmdlPiBj
cmVhdGVMaXZlUmFuZ2UoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jik7CisKK2Jvb2wgZG9j
dW1lbnRPcmRlckNvbXBhcmF0b3IoY29uc3QgTm9kZSosIGNvbnN0IE5vZGUqKTsKKworV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFJhbmdlQm91bmRh
cnlQb2ludCYpOworV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYs
IGNvbnN0IFJhbmdlJik7CisKIGlubGluZSBib29sIGRvY3VtZW50T3JkZXJDb21wYXJhdG9yKGNv
bnN0IE5vZGUqIGEsIGNvbnN0IE5vZGUqIGIpCiB7CiAgICAgcmV0dXJuIFJhbmdlOjpjb21wYXJl
Qm91bmRhcnlQb2ludHMoY29uc3RfY2FzdDxOb2RlKj4oYSksIDAsIGNvbnN0X2Nhc3Q8Tm9kZSo+
KGIpLCAwKS5yZWxlYXNlUmV0dXJuVmFsdWUoKSA8IDA7CiB9Ci0gICAgCi1XVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgUmFuZ2VCb3VuZGFyeVBvaW50
Jik7Ci1XVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3Qg
UmFuZ2UmKTsKIAotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2lm
IEVOQUJMRShUUkVFX0RFQlVHR0lORykKIC8vIE91dHNpZGUgdGhlIFdlYkNvcmUgbmFtZXNwYWNl
IGZvciBlYXNlIG9mIGludm9jYXRpb24gZnJvbSB0aGUgZGVidWdnZXIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Np
bXBsZVJhbmdlLmNwcAppbmRleCAwOWRmOTljODViZjFlODU3MWRiZWFhNTlhY2RlODVhMDU1ZTM5
NzY3Li5iNGZlMmI4NWQzYWY4NWNiODMwNzhkN2E5ZTUxMjE3ZjE0MDUwMzZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaW1wbGVSYW5nZS5jcHAKQEAgLTUzLDE2ICs1Myw0IEBAIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTaW1wbGVSYW5nZSYgYSwgY29uc3QgU2ltcGxlUmFuZ2UmIGIpCiAgICAgcmV0dXJuIGEu
c3RhcnQgPT0gYi5zdGFydCAmJiBhLmVuZCA9PSBiLmVuZDsKIH0KIAotUmVmPFJhbmdlPiBjcmVh
dGVMaXZlUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQotewotICAgIHJldHVybiBSYW5n
ZTo6Y3JlYXRlKHJhbmdlLnN0YXJ0LmRvY3VtZW50KCksIHJhbmdlLnN0YXJ0LmNvbnRhaW5lci5w
dHIoKSwgcmFuZ2Uuc3RhcnQub2Zmc2V0LCByYW5nZS5lbmQuY29udGFpbmVyLnB0cigpLCByYW5n
ZS5lbmQub2Zmc2V0KTsKLX0KLQotUmVmUHRyPFJhbmdlPiBjcmVhdGVMaXZlUmFuZ2UoY29uc3Qg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKLXsKLSAgICBpZiAoIXJhbmdlKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKCpyYW5nZSk7Ci19
Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKaW5kZXggNjY1YzliOGE0OTU3M2JmNWVkN2Jk
ZmJhODkzOTcxMDkyMTM5M2E1OS4uMTI3ZjJmMTg5NDY0YzEwYzQ5YTU1NDQ4NjZlYWM0OTRkNGU4
OGIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKQEAgLTQzLDI1ICs0MywxNiBAQCBzdHJ1
Y3QgU2ltcGxlUmFuZ2UgewogICAgIGJvb2wgY29sbGFwc2VkKCkgY29uc3QgeyByZXR1cm4gc3Rh
cnQgPT0gZW5kOyB9CiAKICAgICBTaW1wbGVSYW5nZShjb25zdCBCb3VuZGFyeVBvaW50JiwgY29u
c3QgQm91bmRhcnlQb2ludCYpOwotICAgIFNpbXBsZVJhbmdlKEJvdW5kYXJ5UG9pbnQmJiwgQm91
bmRhcnlQb2ludCYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZShCb3VuZGFyeVBv
aW50JiYsIEJvdW5kYXJ5UG9pbnQmJik7CiAKKyAgICAvLyBDb252ZW5pZW5jZSBvdmVybG9hZHMg
dG8gaGVscCB3aXRoIHRyYW5zaXRpb24gZnJvbSB1c2luZyBhIGxvdCBvZiBsaXZlIHJhbmdlcy4K
KyAgICAvLyBGSVhNRTogTW92ZSB0byB0aGUgUmFuZ2UgY2xhc3MgaGVhZGVyIGFzIGVpdGhlciBt
YWtlU2ltcGxlUmFuZ2Ugb3IgUmFuZ2U6Om9wZXJhdG9yIFNpbXBsZVJhbmdlLgogICAgIFdFQkNP
UkVfRVhQT1JUIFNpbXBsZVJhbmdlKGNvbnN0IFJhbmdlJik7Ci0KLSAgICAvLyBDb252ZW5pZW5j
ZSBvdmVybG9hZHMgdG8gaGVscCB3aXRoIHRyYW5zaXRpb24gZnJvbSB1c2luZyBhIGxvdCBvZiBs
aXZlIHJhbmdlcy4gQ29uc2lkZXIgcmVtb3ZpbmcgdGhlc2UgZXZlbnR1YWxseS4KLSAgICBTaW1w
bGVSYW5nZShjb25zdCBSYW5nZSopOyAvLyBDcmFzaGVzIGlmIHBhc3NlZCBhIG51bGxwdHIuCiAg
ICAgU2ltcGxlUmFuZ2UoY29uc3QgUmVmPFJhbmdlPiYpOwogfTsKIAogYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAotV0VCQ09SRV9FWFBP
UlQgUmVmPFJhbmdlPiBjcmVhdGVMaXZlUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmKTsKLVdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxSYW5nZT4gY3JlYXRlTGl2ZVJhbmdlKGNvbnN0IE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYpOwotCi1pbmxpbmUgU2ltcGxlUmFuZ2U6OlNpbXBsZVJhbmdlKGNvbnN0IFJh
bmdlKiByYW5nZSkKLSAgICA6IFNpbXBsZVJhbmdlKCpyYW5nZSkKLXsKLX0KLQogaW5saW5lIFNp
bXBsZVJhbmdlOjpTaW1wbGVSYW5nZShjb25zdCBSZWY8UmFuZ2U+JiByYW5nZSkKICAgICA6IFNp
bXBsZVJhbmdlKHJhbmdlLmdldCgpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcAppbmRleCA1MmU2ZTRlMGIxN2RkZjkwZGQxYmViNWVkZDkxYzAwMTVk
YTMyOTc0Li5lYTZmMjAxNTFkOWM5ZTIyMmZiODkxZjQxMTQxZjc1YjNjOWM5ODVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApAQCAtMTI2Niw4ICsx
MjY2LDcgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6aXNWYWxpZENhcmV0UG9zaXRpb25JblRl
eHROb2RlKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6
Om1lcmdlU3RhcnRXaXRoUHJldmlvdXNJZklkZW50aWNhbChjb25zdCBQb3NpdGlvbiYgc3RhcnQs
IGNvbnN0IFBvc2l0aW9uJiBlbmQpCiB7CiAgICAgYXV0byogc3RhcnROb2RlID0gc3RhcnQuY29u
dGFpbmVyTm9kZSgpOwotICAgIGludCBzdGFydE9mZnNldCA9IHN0YXJ0LmNvbXB1dGVPZmZzZXRJ
bkNvbnRhaW5lck5vZGUoKTsKLSAgICBpZiAoc3RhcnRPZmZzZXQpCisgICAgaWYgKHN0YXJ0LmNv
bXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKGlzQXRvbWljTm9kZShzdGFydE5vZGUpKSB7CkBAIC0xMjg5LDEwICsxMjg4LDExIEBA
IGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6Om1lcmdlU3RhcnRXaXRoUHJldmlvdXNJZklkZW50aWNh
bChjb25zdCBQb3NpdGlvbiYgc3RhcnQsCiAgICAgQVNTRVJUKHN0YXJ0Q2hpbGQpOwogICAgIG1l
cmdlSWRlbnRpY2FsRWxlbWVudHMocHJldmlvdXNFbGVtZW50LCBlbGVtZW50KTsKIAotICAgIGlu
dCBzdGFydE9mZnNldEFkanVzdG1lbnQgPSBzdGFydENoaWxkLT5jb21wdXRlTm9kZUluZGV4KCk7
Ci0gICAgaW50IGVuZE9mZnNldEFkanVzdG1lbnQgPSBzdGFydE5vZGUgPT0gZW5kLmRlcHJlY2F0
ZWROb2RlKCkgPyBzdGFydE9mZnNldEFkanVzdG1lbnQgOiAwOwotICAgIHVwZGF0ZVN0YXJ0RW5k
KHsgc3RhcnROb2RlLCBzdGFydE9mZnNldEFkanVzdG1lbnQsIFBvc2l0aW9uOjpQb3NpdGlvbklz
T2Zmc2V0SW5BbmNob3J9LAotICAgICAgICB7IGVuZC5kZXByZWNhdGVkTm9kZSgpLCBlbmQuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKSArIGVuZE9mZnNldEFkanVzdG1lbnQsIFBvc2l0aW9uOjpQ
b3NpdGlvbklzT2Zmc2V0SW5BbmNob3IgfSk7CisgICAgLy8gRklYTUU6IEluY29uc2lzdGVudCB0
aGF0IHdlIHVzZSBjb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlIGZvciBzdGFydCwgYnV0IGRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0IGZvciBlbmQuCisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQg
PSBzdGFydENoaWxkLT5jb21wdXRlTm9kZUluZGV4KCk7CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0
ID0gZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgKyAoc3RhcnROb2RlID09IGVuZC5kZXBy
ZWNhdGVkTm9kZSgpID8gc3RhcnRPZmZzZXQgOiAwKTsKKyAgICB1cGRhdGVTdGFydEVuZCh7IHN0
YXJ0Tm9kZSwgc3RhcnRPZmZzZXQsIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3Ig
fSwKKyAgICAgICAgeyBlbmQuZGVwcmVjYXRlZE5vZGUoKSwgZW5kT2Zmc2V0LCBQb3NpdGlvbjo6
UG9zaXRpb25Jc09mZnNldEluQW5jaG9yIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0x
MzIyLDcgKzEzMjIsNyBAQCBib29sIEFwcGx5U3R5bGVDb21tYW5kOjptZXJnZUVuZFdpdGhOZXh0
SWZJZGVudGljYWwoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdAogICAgIG1lcmdlSWRlbnRp
Y2FsRWxlbWVudHMoZWxlbWVudCwgbmV4dEVsZW1lbnQpOwogCiAgICAgYm9vbCBzaG91bGRVcGRh
dGVTdGFydCA9IHN0YXJ0LmNvbnRhaW5lck5vZGUoKSA9PSBlbmROb2RlOwotICAgIGludCBlbmRP
ZmZzZXQgPSBuZXh0Q2hpbGQgPyBuZXh0Q2hpbGQtPmNvbXB1dGVOb2RlSW5kZXgoKSA6IG5leHRF
bGVtZW50LmNvdW50Q2hpbGROb2RlcygpOworICAgIHVuc2lnbmVkIGVuZE9mZnNldCA9IG5leHRD
aGlsZCA/IG5leHRDaGlsZC0+Y29tcHV0ZU5vZGVJbmRleCgpIDogbmV4dEVsZW1lbnQuY291bnRD
aGlsZE5vZGVzKCk7CiAgICAgdXBkYXRlU3RhcnRFbmQoc2hvdWxkVXBkYXRlU3RhcnQgPyBQb3Np
dGlvbigmbmV4dEVsZW1lbnQsIHN0YXJ0Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBQb3NpdGlv
bjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKSA6IHN0YXJ0LAogICAgICAgICB7ICZuZXh0RWxl
bWVudCwgZW5kT2Zmc2V0LCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yIH0pOwog
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKaW5kZXggZmY5MWZl
MDA4ZWZiOTQ1ZThkNGE2YjVmYWYwYjE2YzAxMjUxM2JjMy4uOGQ2YmRmNDc4YWJmN2E4OWVlMDZk
MWYwYzVjNzI5YzBlYTVhNzQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCkBAIC01
MSw3ICs1MSw2IEBACiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRl
clRhYmxlQ2VsbC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJTaW1wbGVS
YW5nZS5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKQEAgLTEzMDgsNyArMTMwNyw3IEBAIEludFJlY3QgYWJz
b2x1dGVCb3VuZHNGb3JMb2NhbENhcmV0UmVjdChSZW5kZXJCbG9jayogcmVuZGVyZXJGb3JDYXJl
dFBhaW50aW5nLCBjCiBIYXNoU2V0PFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50Pj4gdmlzaWJsZUlt
YWdlRWxlbWVudHNJblJhbmdlV2l0aE5vbkxvYWRlZEltYWdlcyhjb25zdCBSYW5nZSYgcmFuZ2Up
CiB7CiAgICAgSGFzaFNldDxSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4+IHJlc3VsdDsKLSAgICBm
b3IgKFRleHRJdGVyYXRvciBpdGVyYXRvcigmcmFuZ2UpOyAhaXRlcmF0b3IuYXRFbmQoKTsgaXRl
cmF0b3IuYWR2YW5jZSgpKSB7CisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXRlcmF0b3IocmFuZ2Up
OyAhaXRlcmF0b3IuYXRFbmQoKTsgaXRlcmF0b3IuYWR2YW5jZSgpKSB7CiAgICAgICAgIGlmICgh
aXM8SFRNTEltYWdlRWxlbWVudD4oaXRlcmF0b3Iubm9kZSgpKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oCmluZGV4IDc0NWI3NjM4MWVlMjA3MzgwNWRl
N2ZkNDMyMWI5NDE0MTkzOTNmOTUuLmRlZDYzZGQzZTI3YmIxYTA5YTExOWRlYjY0YzRjN2Q3OTMw
YWZiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNz
IEhUTUxFbGVtZW50OwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIEhUTUxTcGFuRWxl
bWVudDsKIGNsYXNzIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OworY2xhc3MgUmFuZ2U7CiBj
bGFzcyBSZW5kZXJCbG9jazsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIGNsYXNzIFZpc2libGVT
ZWxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggN2RmNGFhYWE0MGM4OTZk
ODM2NDcyNDUzMjBjNjI1YmEwN2Y0MGQ0MS4uOWUxNGFlMjRlYTVhOTQwODdlMGRkMWRjNTU4OGMw
NjYyZGEzODBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzMxMyw3ICszMzEz
LDExIEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGVkVGV4dChUZXh0SXRlcmF0b3JCZWhhdmlvciBi
ZWhhdmlvcikgY29uc3QKIHsKICAgICAvLyBXZSByZW1vdmUgJ1wwJyBjaGFyYWN0ZXJzIGJlY2F1
c2UgdGhleSBhcmUgbm90IHZpc2libHkgcmVuZGVyZWQgdG8gdGhlIHVzZXIuCiAgICAgYXV0byYg
c2VsZWN0aW9uID0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKLSAgICByZXR1cm4g
cGxhaW5UZXh0KHNlbGVjdGlvbi5zdGFydCgpLCBzZWxlY3Rpb24uZW5kKCksIGJlaGF2aW9yKS5y
ZXBsYWNlV2l0aExpdGVyYWwoJ1wwJywgIiIpOworICAgIGF1dG8gc3RhcnQgPSBzZWxlY3Rpb24u
c3RhcnQoKTsKKyAgICBhdXRvIGVuZCA9IHNlbGVjdGlvbi5lbmQoKTsKKyAgICBpZiAoc3RhcnQu
aXNOdWxsKCkgfHwgc3RhcnQuaXNPcnBoYW4oKSB8fCBlbmQuaXNOdWxsKCkgfHwgZW5kLmlzT3Jw
aGFuKCkpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIHJldHVybiBwbGFpblRl
eHQoU2ltcGxlUmFuZ2UgeyBtYWtlQm91bmRhcnlQb2ludChzdGFydCksIG1ha2VCb3VuZGFyeVBv
aW50KGVuZCkgfSwgYmVoYXZpb3IpLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXDAnLCAiIik7CiB9CiAK
IFJlZlB0cjxUZXh0UGxhY2Vob2xkZXJFbGVtZW50PiBFZGl0b3I6Omluc2VydFRleHRQbGFjZWhv
bGRlcihjb25zdCBJbnRTaXplJiBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9IVE1MSW50
ZXJjaGFuZ2UuY3BwCmluZGV4IGIyMjM0M2IwMDlkMzdkNTUyOTYxNjcyOTZjZTI0ZTY2YmI4MTQ2
NmQuLjRiODRmYzc1NjllZDFhMzBmMTMyOGJhZTQyN2E1MTgyYWM4Y2VhYTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hhbmdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHAKQEAgLTI3LDEwICsyNyw4IEBACiAj
aW5jbHVkZSAiSFRNTEludGVyY2hhbmdlLmgiCiAKICNpbmNsdWRlICJFZGl0aW5nLmgiCi0jaW5j
bHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRl
ICJUZXh0LmgiCi0jaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+
CiAKQEAgLTYyLDkgKzYwLDcgQEAgU3RyaW5nIGNvbnZlcnRIVE1MVGV4dFRvSW50ZXJjaGFuZ2VG
b3JtYXQoY29uc3QgU3RyaW5nJiBpbiwgY29uc3QgVGV4dCogbm9kZSkKICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBhZGQgPSBjb3VudCAlIDM7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChhZGQp
IHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgotICAgICAgICAgICAgICAgICAgICAgICAg
cy5hcHBlbmRMaXRlcmFsKGNvbnZlcnRlZFNwYWNlU3RyaW5nKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHMuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZExp
dGVyYWwoY29udmVydGVkU3BhY2VTdHJpbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgcy5h
cHBlbmQoY29udmVydGVkU3BhY2VTdHJpbmcsICcgJywgY29udmVydGVkU3BhY2VTdHJpbmcpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkID0gMzsKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CkBAIC03NiwxNSArNzIsMTIgQEAg
U3RyaW5nIGNvbnZlcnRIVE1MVGV4dFRvSW50ZXJjaGFuZ2VGb3JtYXQoY29uc3QgU3RyaW5nJiBp
biwgY29uc3QgVGV4dCogbm9kZSkKICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBhdCBzdGFydCBvZiBzdHJpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
LmFwcGVuZExpdGVyYWwoY29udmVydGVkU3BhY2VTdHJpbmcpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHMuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5h
cHBlbmQoY29udmVydGVkU3BhY2VTdHJpbmcsICcgJyk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKGkgKyAyID09IGluLmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGF0IGVuZCBvZiBzdHJpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzLmFwcGVuZExpdGVyYWwoY29udmVydGVkU3BhY2VTdHJpbmcpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHMuYXBwZW5kTGl0ZXJhbChjb252ZXJ0ZWRTcGFjZVN0cmluZyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQoY29udmVydGVkU3BhY2VTdHJpbmcsIGNv
bnZlcnRlZFNwYWNlU3RyaW5nKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmRMaXRlcmFsKGNvbnZlcnRlZFNwYWNl
U3RyaW5nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZCgnICcpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKGNvbnZlcnRlZFNwYWNlU3RyaW5nLCAn
ICcpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCmluZGV4IGRiMjliOWJiODBlYjFhMTU5NTVlMjM0YTlhZGU5ZTc5OGRkMzAwYmMuLmU4
NDQxMmIyNzY4MzU2NmYzMDNhNmQxYjkyZTY3ZjMyMTJkOGQyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTMyOSw1MSArMzI5LDI4IEBAIHZvaWQgVGV4dEl0
ZXJhdG9yQ29weWFibGVUZXh0OjphcHBlbmRUb1N0cmluZ0J1aWxkZXIoU3RyaW5nQnVpbGRlciYg
YnVpbGRlcikgY29uCiAKIC8vIC0tLS0tLS0tCiAKLQotVGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0
b3IoUG9zaXRpb24gc3RhcnQsIFBvc2l0aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVo
YXZpb3IpCi0gICAgOiBtX2JlaGF2aW9yKGJlaGF2aW9yKQorc3RhdGljIE5vZGUqIGZpcnN0Tm9k
ZShjb25zdCBCb3VuZGFyeVBvaW50JiBwb2ludCkKIHsKLSAgICBpZiAoc3RhcnQuaXNOdWxsKCkg
fHwgZW5kLmlzTnVsbCgpKQotICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKGNvbXBhcmVQb3Np
dGlvbnMoc3RhcnQsIGVuZCkgPD0gMCk7Ci0KLSAgICBSRUxFQVNFX0FTU0VSVChiZWhhdmlvciAm
IFRleHRJdGVyYXRvclRyYXZlcnNlc0ZsYXRUcmVlIHx8IHN0YXJ0LnRyZWVTY29wZSgpID09IGVu
ZC50cmVlU2NvcGUoKSk7Ci0KLSAgICBzdGFydC5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLQotICAgIC8vIEZJWE1FOiBVc2UgUG9zaXRpb24gLyBQ
b3NpdGlvbkl0ZXJhdG9yIGluc3RlYWQgdG8gYXZvaWQgb2Zmc2V0IGNvbXB1dGF0aW9uLgotICAg
IG1fc3RhcnRDb250YWluZXIgPSBzdGFydC5jb250YWluZXJOb2RlKCk7Ci0gICAgbV9zdGFydE9m
ZnNldCA9IHN0YXJ0LmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKLQotICAgIG1fZW5k
Q29udGFpbmVyID0gZW5kLmNvbnRhaW5lck5vZGUoKTsKLSAgICBtX2VuZE9mZnNldCA9IGVuZC5j
b21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCk7Ci0KLSAgICBtX25vZGUgPSBzdGFydC5maXJz
dE5vZGUoKS5nZXQoKTsKLSAgICBpZiAoIW1fbm9kZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aW5pdCgpOworICAgIGlmIChwb2ludC5jb250YWluZXItPmlzQ2hhcmFjdGVyRGF0YU5vZGUoKSkK
KyAgICAgICAgcmV0dXJuIHBvaW50LmNvbnRhaW5lci5wdHIoKTsKKyAgICBpZiAoTm9kZSogY2hp
bGQgPSBwb2ludC5jb250YWluZXItPnRyYXZlcnNlVG9DaGlsZEF0KHBvaW50Lm9mZnNldCkpCisg
ICAgICAgIHJldHVybiBjaGlsZDsKKyAgICBpZiAoIXBvaW50Lm9mZnNldCkKKyAgICAgICAgcmV0
dXJuIHBvaW50LmNvbnRhaW5lci5wdHIoKTsKKyAgICByZXR1cm4gTm9kZVRyYXZlcnNhbDo6bmV4
dFNraXBwaW5nQ2hpbGRyZW4ocG9pbnQuY29udGFpbmVyKTsKIH0KIAotVGV4dEl0ZXJhdG9yOjpU
ZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhh
dmlvcikKK1RleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5n
ZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCiAgICAgOiBtX2JlaGF2aW9yKGJlaGF2
aW9yKQogewotICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybjsKKyAgICByYW5nZS5zdGFy
dC5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCi0g
ICAgcmFuZ2UtPm93bmVyRG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVz
aGVldHMoKTsKKyAgICBtX3N0YXJ0Q29udGFpbmVyID0gcmFuZ2Uuc3RhcnQuY29udGFpbmVyLnB0
cigpOworICAgIG1fc3RhcnRPZmZzZXQgPSByYW5nZS5zdGFydC5vZmZzZXQ7CisgICAgbV9lbmRD
b250YWluZXIgPSByYW5nZS5lbmQuY29udGFpbmVyLnB0cigpOworICAgIG1fZW5kT2Zmc2V0ID0g
cmFuZ2UuZW5kLm9mZnNldDsKIAotICAgIG1fc3RhcnRDb250YWluZXIgPSAmcmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCk7Ci0KLSAgICAvLyBDYWxsZXJzIHNob3VsZCBiZSBoYW5kaW5nIHVzIHdlbGwt
Zm9ybWVkIHJhbmdlcy4gSWYgd2UgZGlzY292ZXIgdGhhdCB0aGlzIGlzbid0Ci0gICAgLy8gdGhl
IGNhc2UsIHdlIGNvdWxkIGNvbnNpZGVyIGNoYW5naW5nIHRoaXMgYXNzZXJ0aW9uIHRvIGFuIGVh
cmx5IHJldHVybi4KLSAgICBBU1NFUlQocmFuZ2UtPmJvdW5kYXJ5UG9pbnRzVmFsaWQoKSk7Ci0K
LSAgICBtX3N0YXJ0T2Zmc2V0ID0gcmFuZ2UtPnN0YXJ0T2Zmc2V0KCk7Ci0gICAgbV9lbmRDb250
YWluZXIgPSAmcmFuZ2UtPmVuZENvbnRhaW5lcigpOwotICAgIG1fZW5kT2Zmc2V0ID0gcmFuZ2Ut
PmVuZE9mZnNldCgpOwotCi0gICAgbV9ub2RlID0gcmFuZ2UtPmZpcnN0Tm9kZSgpOworICAgIG1f
bm9kZSA9IGZpcnN0Tm9kZShyYW5nZS5zdGFydCk7CiAgICAgaWYgKCFtX25vZGUpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMTE0MCwyMyArMTExNywyMyBAQCBOb2RlKiBUZXh0SXRlcmF0b3I6Om5v
ZGUoKSBjb25zdAogCiAvLyAtLS0tLS0tLQogCi1TaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJh
dG9yOjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlJiByYW5nZSkK
K1NpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0
SXRlcmF0b3IoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewotICAgIHJhbmdlLm93bmVyRG9j
dW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICByYW5n
ZS5zdGFydC5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygp
OwogCi0gICAgTm9kZSogc3RhcnROb2RlID0gJnJhbmdlLnN0YXJ0Q29udGFpbmVyKCk7Ci0gICAg
Tm9kZSogZW5kTm9kZSA9ICZyYW5nZS5lbmRDb250YWluZXIoKTsKLSAgICBpbnQgc3RhcnRPZmZz
ZXQgPSByYW5nZS5zdGFydE9mZnNldCgpOwotICAgIGludCBlbmRPZmZzZXQgPSByYW5nZS5lbmRP
ZmZzZXQoKTsKKyAgICBOb2RlKiBzdGFydE5vZGUgPSByYW5nZS5zdGFydC5jb250YWluZXIucHRy
KCk7CisgICAgTm9kZSogZW5kTm9kZSA9IHJhbmdlLmVuZC5jb250YWluZXIucHRyKCk7CisgICAg
dW5zaWduZWQgc3RhcnRPZmZzZXQgPSByYW5nZS5zdGFydC5vZmZzZXQ7CisgICAgdW5zaWduZWQg
ZW5kT2Zmc2V0ID0gcmFuZ2UuZW5kLm9mZnNldDsKIAogICAgIGlmICghc3RhcnROb2RlLT5pc0No
YXJhY3RlckRhdGFOb2RlKCkpIHsKLSAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0ID49IDAgJiYgc3Rh
cnRPZmZzZXQgPCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0Tm9kZS0+Y291bnRDaGlsZE5vZGVzKCkp
KSB7CisgICAgICAgIGlmIChzdGFydE9mZnNldCA8IHN0YXJ0Tm9kZS0+Y291bnRDaGlsZE5vZGVz
KCkpIHsKICAgICAgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZS0+dHJhdmVyc2VUb0NoaWxk
QXQoc3RhcnRPZmZzZXQpOwogICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSAwOwogICAgICAgICB9
CiAgICAgfQogICAgIGlmICghZW5kTm9kZS0+aXNDaGFyYWN0ZXJEYXRhTm9kZSgpKSB7Ci0gICAg
ICAgIGlmIChlbmRPZmZzZXQgPiAwICYmIGVuZE9mZnNldCA8PSBzdGF0aWNfY2FzdDxpbnQ+KGVu
ZE5vZGUtPmNvdW50Q2hpbGROb2RlcygpKSkgeworICAgICAgICBpZiAoZW5kT2Zmc2V0ID4gMCAm
JiBlbmRPZmZzZXQgPD0gZW5kTm9kZS0+Y291bnRDaGlsZE5vZGVzKCkpIHsKICAgICAgICAgICAg
IGVuZE5vZGUgPSBlbmROb2RlLT50cmF2ZXJzZVRvQ2hpbGRBdChlbmRPZmZzZXQgLSAxKTsKICAg
ICAgICAgICAgIGVuZE9mZnNldCA9IGxhc3RPZmZzZXRJbk5vZGUoZW5kTm9kZSk7CiAgICAgICAg
IH0KQEAgLTEzOTEsMTUgKzEzNjgsOCBAQCBTaW1wbGVSYW5nZSBTaW1wbGlmaWVkQmFja3dhcmRz
VGV4dEl0ZXJhdG9yOjpyYW5nZSgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tCiAKLUNoYXJhY3Rlckl0
ZXJhdG9yOjpDaGFyYWN0ZXJJdGVyYXRvcihjb25zdCBSYW5nZSYgcmFuZ2UsIFRleHRJdGVyYXRv
ckJlaGF2aW9yIGJlaGF2aW9yKQotICAgIDogbV91bmRlcmx5aW5nSXRlcmF0b3IoJnJhbmdlLCBi
ZWhhdmlvcikKLXsKLSAgICB3aGlsZSAoIWF0RW5kKCkgJiYgIW1fdW5kZXJseWluZ0l0ZXJhdG9y
LnRleHQoKS5sZW5ndGgoKSkKLSAgICAgICAgbV91bmRlcmx5aW5nSXRlcmF0b3IuYWR2YW5jZSgp
OwotfQotCi1DaGFyYWN0ZXJJdGVyYXRvcjo6Q2hhcmFjdGVySXRlcmF0b3IoUG9zaXRpb24gc3Rh
cnQsIFBvc2l0aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCi0gICAgOiBt
X3VuZGVybHlpbmdJdGVyYXRvcihzdGFydCwgZW5kLCBiZWhhdmlvcikKK0NoYXJhY3Rlckl0ZXJh
dG9yOjpDaGFyYWN0ZXJJdGVyYXRvcihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFRleHRJdGVy
YXRvckJlaGF2aW9yIGJlaGF2aW9yKQorICAgIDogbV91bmRlcmx5aW5nSXRlcmF0b3IocmFuZ2Us
IGJlaGF2aW9yKQogewogICAgIHdoaWxlICghYXRFbmQoKSAmJiAhbV91bmRlcmx5aW5nSXRlcmF0
b3IudGV4dCgpLmxlbmd0aCgpKQogICAgICAgICBtX3VuZGVybHlpbmdJdGVyYXRvci5hZHZhbmNl
KCk7CkBAIC0xNDgzLDcgKzE0NTMsNyBAQCBzdGF0aWMgUmVmPFJhbmdlPiBjaGFyYWN0ZXJTdWJy
YW5nZShEb2N1bWVudCYgZG9jdW1lbnQsIENoYXJhY3Rlckl0ZXJhdG9yJiBpdCwgaQogICAgIHJl
dHVybiBjcmVhdGVMaXZlUmFuZ2UoU2ltcGxlUmFuZ2UgeyBzdGFydCwgZW5kIH0pOwogfQogCi1C
YWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcjo6QmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3IoY29u
c3QgUmFuZ2UmIHJhbmdlKQorQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3I6OkJhY2t3YXJkc0No
YXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKICAgICA6IG1fdW5kZXJs
eWluZ0l0ZXJhdG9yKHJhbmdlKQogewogICAgIHdoaWxlICghYXRFbmQoKSAmJiAhbV91bmRlcmx5
aW5nSXRlcmF0b3IudGV4dCgpLmxlbmd0aCgpKQpAQCAtMTU0Niw4ICsxNTE2LDggQEAgdm9pZCBC
YWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcjo6YWR2YW5jZShpbnQgY291bnQpCiAKIC8vIC0tLS0t
LS0tCiAKLVdvcmRBd2FyZUl0ZXJhdG9yOjpXb3JkQXdhcmVJdGVyYXRvcihjb25zdCBSYW5nZSYg
cmFuZ2UpCi0gICAgOiBtX3VuZGVybHlpbmdJdGVyYXRvcigmcmFuZ2UpCitXb3JkQXdhcmVJdGVy
YXRvcjo6V29yZEF3YXJlSXRlcmF0b3IoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQorICAgIDog
bV91bmRlcmx5aW5nSXRlcmF0b3IocmFuZ2UpCiB7CiAgICAgYWR2YW5jZSgpOyAvLyBnZXQgaW4g
cG9zaXRpb24gb3ZlciB0aGUgZmlyc3QgY2h1bmsgb2YgdGV4dAogfQpAQCAtMjM3NSw4ICsyMzQ1
LDEwIEBAIHNpemVfdCBTZWFyY2hCdWZmZXI6Omxlbmd0aCgpIGNvbnN0CiAKIGludCBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKGNvbnN0IFJhbmdlKiByYW5nZSwgYm9vbCBmb3JTZWxlY3Rpb25Q
cmVzZXJ2YXRpb24pCiB7CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIDA7CiAgICAg
dW5zaWduZWQgbGVuZ3RoID0gMDsKLSAgICBmb3IgKFRleHRJdGVyYXRvciBpdChyYW5nZSwgZm9y
U2VsZWN0aW9uUHJlc2VydmF0aW9uID8gVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2Vl
bkFsbFZpc2libGVQb3NpdGlvbnMgOiBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOyAhaXQu
YXRFbmQoKTsgaXQuYWR2YW5jZSgpKQorICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KCpyYW5nZSwg
Zm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uID8gVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0
d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgOiBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOyAh
aXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKQogICAgICAgICBsZW5ndGggKz0gaXQudGV4dCgpLmxl
bmd0aCgpOwogICAgIHJldHVybiBsZW5ndGg7CiB9CkBAIC0yNDA1LDcgKzIzNzcsNyBAQCBSZWZQ
dHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFp
bmVyTm9kZSogc2NvcGUsIGludAogCiAgICAgUmVmPFJhbmdlPiB0ZXh0UnVuUmFuZ2UgPSByYW5n
ZU9mQ29udGVudHMoKnNjb3BlKTsKIAotICAgIFRleHRJdGVyYXRvciBpdCh0ZXh0UnVuUmFuZ2Uu
cHRyKCksIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbiA/IFRleHRJdGVyYXRvckVtaXRzQ2hhcmFj
dGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zIDogVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2
aW9yKTsKKyAgICBUZXh0SXRlcmF0b3IgaXQodGV4dFJ1blJhbmdlLCBmb3JTZWxlY3Rpb25QcmVz
ZXJ2YXRpb24gPyBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBv
c2l0aW9ucyA6IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CiAgICAgCiAgICAgLy8gRklY
TUU6IHRoZSBhdEVuZCgpIGNoZWNrIHNob3VsZG4ndCBiZSBuZWNlc3NhcnksIHdvcmthcm91bmQg
Zm9yIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjg5Pi4KICAgICBp
ZiAoIXJhbmdlTG9jYXRpb24gJiYgIXJhbmdlTGVuZ3RoICYmIGl0LmF0RW5kKCkpIHsKQEAgLTI1
MDYsMjEgKzI0NzgsMTkgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3Ro
RnJvbVJhbmdlKE5vZGUqIHNjb3BlLCBjb25zdCBSYW5nZSogcmFuZ2UKIAogYm9vbCBoYXNBbnlQ
bGFpblRleHQoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBi
ZWhhdmlvcikKIHsKLSAgICBmb3IgKFRleHRJdGVyYXRvciBpdGVyYXRvciB7IGNyZWF0ZUxpdmVS
YW5nZShyYW5nZSkucHRyKCksIGJlaGF2aW9yIH07ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRv
ci5hZHZhbmNlKCkpIHsKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdGVyYXRvciB7IHJhbmdlLCBi
ZWhhdmlvciB9OyAhaXRlcmF0b3IuYXRFbmQoKTsgaXRlcmF0b3IuYWR2YW5jZSgpKSB7CiAgICAg
ICAgIGlmICghaXRlcmF0b3IudGV4dCgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBwbGFpblRleHQoUG9z
aXRpb24gc3RhcnQsIFBvc2l0aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgZGVmYXVsdEJl
aGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZykKK1N0cmluZyBwbGFpblRleHQoY29uc3QgU2lt
cGxlUmFuZ2UmIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBkZWZhdWx0QmVoYXZpb3IsIGJv
b2wgaXNEaXNwbGF5U3RyaW5nKQogewogICAgIC8vIFRoZSBpbml0aWFsIGJ1ZmZlciBzaXplIGNh
biBiZSBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2U6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MTE5MgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbml0aWFsQ2Fw
YWNpdHkgPSAxIDw8IDE1OwogCi0gICAgaWYgKCFzdGFydC5kb2N1bWVudCgpKQotICAgICAgICBy
ZXR1cm4geyB9OwotICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmKCpzdGFydC5kb2N1bWVudCgp
KTsKKyAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZihyYW5nZS5zdGFydC5kb2N1bWVudCgpKTsK
IAogICAgIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCA9IDA7CiAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwpAQCAtMjUyOSw3ICsyNDk5LDcgQEAgU3RyaW5nIHBsYWluVGV4dChQb3NpdGlvbiBzdGFy
dCwgUG9zaXRpb24gZW5kLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBkZWZhdWx0QmVoYXYKICAgICBp
ZiAoIWlzRGlzcGxheVN0cmluZykKICAgICAgICAgYmVoYXZpb3IgPSBzdGF0aWNfY2FzdDxUZXh0
SXRlcmF0b3JCZWhhdmlvcj4oYmVoYXZpb3IgfCBUZXh0SXRlcmF0b3JFbWl0c1RleHRzV2l0aG91
dFRyYW5zY29kaW5nKTsKIAotICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHN0YXJ0LCBlbmQsIGJl
aGF2aW9yKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgeworICAgIGZvciAoVGV4dEl0ZXJh
dG9yIGl0KHJhbmdlLCBiZWhhdmlvcik7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKICAg
ICAgICAgaXQuYXBwZW5kVGV4dFRvU3RyaW5nQnVpbGRlcihidWlsZGVyKTsKICAgICAgICAgYnVm
ZmVyTGVuZ3RoICs9IGl0LnRleHQoKS5sZW5ndGgoKTsKICAgICB9CkBAIC0yNTQ1LDE2ICsyNTE1
LDExIEBAIFN0cmluZyBwbGFpblRleHQoUG9zaXRpb24gc3RhcnQsIFBvc2l0aW9uIGVuZCwgVGV4
dEl0ZXJhdG9yQmVoYXZpb3IgZGVmYXVsdEJlaGF2CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
U3RyaW5nIHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShQb3NpdGlvbiBzdGFydCwgUG9z
aXRpb24gZW5kLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBkZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNE
aXNwbGF5U3RyaW5nKQotewotICAgIHJldHVybiBwbGFpblRleHQoc3RhcnQsIGVuZCwgZGVmYXVs
dEJlaGF2aW9yLCBpc0Rpc3BsYXlTdHJpbmcpLnJlcGxhY2Uobm9CcmVha1NwYWNlLCAnICcpOwot
fQotCiBTdHJpbmcgcGxhaW5UZXh0KGNvbnN0IFJhbmdlKiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVo
YXZpb3IgZGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZykKIHsKICAgICBpZiAo
IXJhbmdlKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICByZXR1cm4gcGxhaW5U
ZXh0KHJhbmdlLT5zdGFydFBvc2l0aW9uKCksIHJhbmdlLT5lbmRQb3NpdGlvbigpLCBkZWZhdWx0
QmVoYXZpb3IsIGlzRGlzcGxheVN0cmluZyk7CisgICAgcmV0dXJuIHBsYWluVGV4dCgqcmFuZ2Us
IGRlZmF1bHRCZWhhdmlvciwgaXNEaXNwbGF5U3RyaW5nKTsKIH0KIAogU3RyaW5nIHBsYWluVGV4
dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yRm9yVGVzdGluZyhjb25zdCBTaW1wbGVSYW5nZSYg
cmFuZ2UpCkBAIC0yNTY1LDcgKzI1MzAsNyBAQCBTdHJpbmcgcGxhaW5UZXh0VXNpbmdCYWNrd2Fy
ZHNUZXh0SXRlcmF0b3JGb3JUZXN0aW5nKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1TdHJpbmcgcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNl
KGNvbnN0IFJhbmdlKiByYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgZGVmYXVsdEJlaGF2aW9y
LCBib29sIGlzRGlzcGxheVN0cmluZykKK1N0cmluZyBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFr
U3BhY2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBkZWZh
dWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nKQogewogICAgIHJldHVybiBwbGFpblRl
eHQocmFuZ2UsIGRlZmF1bHRCZWhhdmlvciwgaXNEaXNwbGF5U3RyaW5nKS5yZXBsYWNlKG5vQnJl
YWtTcGFjZSwgJyAnKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCmluZGV4
IGE1ZDBlYTEyYWJhZmEyMjU4NGI5YThlYjA3MzQ0MzRmMjVjZTQ0YmMuLjE1N2YxZGExZDBlNmM5
NTNkOWRlZGM0ZWZhY2UxM2U5ODBlMzEzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuaApAQCAtMzAsMTkgKzMwLDE1IEBACiAjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNp
bmNsdWRlICJUZXh0SXRlcmF0b3JCZWhhdmlvci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUmFuZ2U7Ci1jbGFzcyBSZW5kZXJUZXh0OwogY2xhc3MgUmVuZGVyVGV4dEZyYWdt
ZW50OwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGxhaW5UZXh0KFBvc2l0aW9uIHN0YXJ0LCBQ
b3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJl
aGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZyA9IGZhbHNlKTsKLVdFQkNPUkVfRVhQT1JUIFN0
cmluZyBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoUG9zaXRpb24gc3RhcnQsIFBvc2l0
aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZp
b3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nID0gZmFsc2UpOwotCiBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgcGxhaW5UZXh0KGNvbnN0IFJhbmdlKiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRl
cmF0b3JEZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nID0gZmFsc2UpOwotV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShjb25zdCBS
YW5nZSosIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9y
LCBib29sIGlzRGlzcGxheVN0cmluZyA9IGZhbHNlKTsKK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBw
bGFpblRleHQoY29uc3QgU2ltcGxlUmFuZ2UmLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJ
dGVyYXRvckRlZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcgPSBmYWxzZSk7CitX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGNvbnN0
IFNpbXBsZVJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0
QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nID0gZmFsc2UpOwogV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHBsYWluVGV4dFVzaW5nQmFja3dhcmRzVGV4dEl0ZXJhdG9yRm9yVGVzdGluZyhjb25z
dCBTaW1wbGVSYW5nZSYpOwogCiBTaW1wbGVSYW5nZSBmaW5kUGxhaW5UZXh0KGNvbnN0IFNpbXBs
ZVJhbmdlJiwgY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMpOwpAQCAtOTEsOCArODcsNyBAQCBw
cml2YXRlOgogY2xhc3MgVGV4dEl0ZXJhdG9yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBUZXh0SXRlcmF0b3IoUG9zaXRpb24gc3Rh
cnQsIFBvc2l0aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZh
dWx0QmVoYXZpb3IpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFRleHRJdGVyYXRvcihj
b25zdCBSYW5nZSosIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJl
aGF2aW9yKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBUZXh0SXRlcmF0b3IoY29uc3Qg
U2ltcGxlUmFuZ2UmLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRC
ZWhhdmlvcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgflRleHRJdGVyYXRvcigpOwogCiAgICAgYm9v
bCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuICFtX3Bvc2l0aW9uTm9kZTsgfQpAQCAtMTc3LDcgKzE3
Miw3IEBAIHByaXZhdGU6CiAvLyBjaHVua3Mgc28gYXMgdG8gb3B0aW1pemUgZm9yIHBlcmZvcm1h
bmNlIG9mIHRoZSBpdGVyYXRpb24uCiBjbGFzcyBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJh
dG9yIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJh
dG9yKGNvbnN0IFJhbmdlJik7CisgICAgZXhwbGljaXQgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJ
dGVyYXRvcihjb25zdCBTaW1wbGVSYW5nZSYpOwogCiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsg
cmV0dXJuICFtX3Bvc2l0aW9uTm9kZTsgfQogICAgIHZvaWQgYWR2YW5jZSgpOwpAQCAtMjMyLDgg
KzIyNyw3IEBAIHByaXZhdGU6CiAvLyBjaGFyYWN0ZXIgYXQgYSB0aW1lLCBvciBmYXN0ZXIsIGFz
IG5lZWRlZC4gVXNlZnVsIGZvciBzZWFyY2hpbmcuCiBjbGFzcyBDaGFyYWN0ZXJJdGVyYXRvciB7
CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ2hhcmFjdGVySXRlcmF0b3Io
Y29uc3QgUmFuZ2UmLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRC
ZWhhdmlvcik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ2hhcmFjdGVySXRlcmF0b3Io
UG9zaXRpb24gc3RhcnQsIFBvc2l0aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0
SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENo
YXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3Ig
PSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogICAgIAogICAgIGJvb2wgYXRFbmQoKSBj
b25zdCB7IHJldHVybiBtX3VuZGVybHlpbmdJdGVyYXRvci5hdEVuZCgpOyB9CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhZHZhbmNlKGludCBudW1DaGFyYWN0ZXJzKTsKQEAgLTI1NCw3ICsyNDgs
NyBAQCBwcml2YXRlOgogICAgIAogY2xhc3MgQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3Igewog
cHVibGljOgotICAgIGV4cGxpY2l0IEJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFJh
bmdlJik7CisgICAgZXhwbGljaXQgQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3IoY29uc3QgU2lt
cGxlUmFuZ2UmKTsKIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiBtX3VuZGVybHlp
bmdJdGVyYXRvci5hdEVuZCgpOyB9CiAgICAgdm9pZCBhZHZhbmNlKGludCBudW1DaGFyYWN0ZXJz
KTsKQEAgLTI3Myw3ICsyNjcsNyBAQCBwcml2YXRlOgogLy8gdGhleSBuZXZlciBzcGxpdCB1cCBh
IHdvcmQuIFRoaXMgaXMgdXNlZnVsIGZvciBzcGVsbCBjaGVja2luZyBhbmQgcGVyaGFwcyBvbmUg
ZGF5IGZvciBzZWFyY2hpbmcgYXMgd2VsbC4KIGNsYXNzIFdvcmRBd2FyZUl0ZXJhdG9yIHsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBXb3JkQXdhcmVJdGVyYXRvcihjb25zdCBSYW5nZSYpOworICAg
IGV4cGxpY2l0IFdvcmRBd2FyZUl0ZXJhdG9yKGNvbnN0IFNpbXBsZVJhbmdlJik7CiAKICAgICBi
b29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gIW1fZGlkTG9va0FoZWFkICYmIG1fdW5kZXJseWlu
Z0l0ZXJhdG9yLmF0RW5kKCk7IH0KICAgICB2b2lkIGFkdmFuY2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXgg
YmIzNThhOWUzYmZkNDRkZGI3OTAyMTgzNTg5ZmU0ZDk3YTNhNzJjMy4uMDA5ZGE0OTE3MDNkZWM1
MDI2MTQ5ZTlmYWQ5YThlODMxMmVlOGQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBA
QCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpzdGFydE9ic2VydmluZ1BhcmFncmFw
aHMoTWFuaXB1bGF0aW9uSXRlbUNhbGxiYQogY2xhc3MgUGFyYWdyYXBoQ29udGVudEl0ZXJhdG9y
IHsKIHB1YmxpYzoKICAgICBQYXJhZ3JhcGhDb250ZW50SXRlcmF0b3IoY29uc3QgUG9zaXRpb24m
IHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKQotICAgICAgICA6IG1faXRlcmF0b3Ioc3RhcnQs
IGVuZCkKKyAgICAgICAgOiBtX2l0ZXJhdG9yKHsgbWFrZUJvdW5kYXJ5UG9pbnQoc3RhcnQpLCBt
YWtlQm91bmRhcnlQb2ludChlbmQpIH0pCiAgICAgICAgICwgbV9pdGVyYXRvck5vZGUobV9pdGVy
YXRvci5hdEVuZCgpID8gbnVsbHB0ciA6IGNyZWF0ZUxpdmVSYW5nZShtX2l0ZXJhdG9yLnJhbmdl
KCkpLT5maXJzdE5vZGUoKSkKICAgICAgICAgLCBtX2N1cnJlbnROb2RlRm9yRmluZGluZ0ludmlz
aWJsZUNvbnRlbnQoc3RhcnQuZmlyc3ROb2RlKCkpCiAgICAgICAgICwgbV9wYXN0RW5kTm9kZShl
bmQuZmlyc3ROb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9u
LmNwcAppbmRleCBiMzA2ZDQ3MGM5MGZlOWY5NmViMmZiYmRjNGIxYjY2NmJhMTQwOWNjLi4zM2Zj
ODUwMjVhOTQyZWIyZmZlYTY2NGNkNjBlYWIyZDUyZGIxMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRl
ICJSYW5nZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5o
IgotI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCA3NTIyYjEwOWI0MDlkMmJmZDU1Nzc2Njcz
ZjBhOTNlODQzNzRmYzllLi45MTA5YWI5NTQ5MDY5ZjM2MDRmMDk4NmFjOThlOGI5OTQ0OWExNGFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCkBAIC00ODksNyArNDg5
LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kUmVwZWF0ZWRDaGFyYWN0ZXIoVmVjdG9yPFVDaGFyLCAx
MDI0PiYgYnVmZmVyLCBVQ2hhciBjaGFyYWN0ZXIKIHVuc2lnbmVkIHN1ZmZpeExlbmd0aEZvclJh
bmdlKGNvbnN0IFJhbmdlJiBmb3J3YXJkc1NjYW5SYW5nZSwgVmVjdG9yPFVDaGFyLCAxMDI0PiYg
c3RyaW5nKQogewogICAgIHVuc2lnbmVkIHN1ZmZpeExlbmd0aCA9IDA7Ci0gICAgVGV4dEl0ZXJh
dG9yIGZvcndhcmRzSXRlcmF0b3IoJmZvcndhcmRzU2NhblJhbmdlKTsKKyAgICBUZXh0SXRlcmF0
b3IgZm9yd2FyZHNJdGVyYXRvcihmb3J3YXJkc1NjYW5SYW5nZSk7CiAgICAgd2hpbGUgKCFmb3J3
YXJkc0l0ZXJhdG9yLmF0RW5kKCkpIHsKICAgICAgICAgU3RyaW5nVmlldyB0ZXh0ID0gZm9yd2Fy
ZHNJdGVyYXRvci50ZXh0KCk7CiAgICAgICAgIHVuc2lnbmVkIGkgPSBlbmRPZkZpcnN0V29yZEJv
dW5kYXJ5Q29udGV4dCh0ZXh0KTsKQEAgLTYwOSw3ICs2MDksNyBAQCBzdGF0aWMgVmlzaWJsZVBv
c2l0aW9uIHByZXZpb3VzQm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBCb3VuZGFy
eVNlYXJjaAogICAgICAgICByZXN1bHQgPSBmb3J3YXJkc1NjYW5SYW5nZS0+c2V0U3RhcnQoc3Rh
cnQpOwogICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0
dXJuIHsgfTsKLSAgICAgICAgZm9yIChUZXh0SXRlcmF0b3IgZm9yd2FyZHNJdGVyYXRvcihmb3J3
YXJkc1NjYW5SYW5nZS5wdHIoKSk7ICFmb3J3YXJkc0l0ZXJhdG9yLmF0RW5kKCk7IGZvcndhcmRz
SXRlcmF0b3IuYWR2YW5jZSgpKQorICAgICAgICBmb3IgKFRleHRJdGVyYXRvciBmb3J3YXJkc0l0
ZXJhdG9yKGZvcndhcmRzU2NhblJhbmdlKTsgIWZvcndhcmRzSXRlcmF0b3IuYXRFbmQoKTsgZm9y
d2FyZHNJdGVyYXRvci5hZHZhbmNlKCkpCiAgICAgICAgICAgICBhcHBlbmQoc3RyaW5nLCBmb3J3
YXJkc0l0ZXJhdG9yLnRleHQoKSk7CiAgICAgICAgIHN1ZmZpeExlbmd0aCA9IHN0cmluZy5zaXpl
KCk7CiAgICAgfSBlbHNlIGlmIChyZXF1aXJlc0NvbnRleHRGb3JXb3JkQm91bmRhcnkoYy5jaGFy
YWN0ZXJCZWZvcmUoKSkpIHsKQEAgLTY3NCw3ICs2NzQsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0
aW9uIG5leHRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNo
RnVuYwogICAgIHNlYXJjaFJhbmdlLT5zZWxlY3ROb2RlQ29udGVudHMoKmJvdW5kYXJ5KTsKICAg
ICBpZiAoc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSkKICAgICAgICAgc2VhcmNoUmFuZ2UtPnNldFN0
YXJ0KCpzdGFydC5kZXByZWNhdGVkTm9kZSgpLCBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNl
dCgpKTsKLSAgICBUZXh0SXRlcmF0b3IgaXQoc2VhcmNoUmFuZ2UucHRyKCksIFRleHRJdGVyYXRv
ckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKKyAgICBUZXh0SXRl
cmF0b3IgaXQoc2VhcmNoUmFuZ2UsIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5B
bGxWaXNpYmxlUG9zaXRpb25zKTsKICAgICB1bnNpZ25lZCBuZXh0ID0gZm9yd2FyZFNlYXJjaEZv
ckJvdW5kYXJ5V2l0aFRleHRJdGVyYXRvcihpdCwgc3RyaW5nLCBwcmVmaXhMZW5ndGgsIHNlYXJj
aEZ1bmN0aW9uKTsKICAgICAKICAgICBpZiAoaXQuYXRFbmQoKSAmJiBuZXh0ID09IHN0cmluZy5z
aXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRl
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0K
aW5kZXggYzYxZTM1NjU4MjdkYjRlZWVmZmE3NjcwOGQ2YTA5NDE5NDNlODBlYS4uMTAzZTU1M2Iy
MzdhOTE5N2JjMzhkMjQyMTYwMjQ2YzZkMjMyMjYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtNDMsNyArNDMsNiBAQAogI2ltcG9ydCAi
Tm9kZVRyYXZlcnNhbC5oIgogI2ltcG9ydCAiUmFuZ2UuaCIKICNpbXBvcnQgIlJlbmRlck9iamVj
dC5oIgotI2ltcG9ydCAiU2ltcGxlUmFuZ2UuaCIKICNpbXBvcnQgIlN0eWxlUHJvcGVydGllcy5o
IgogI2ltcG9ydCAiVGV4dC5oIgogI2ltcG9ydCAiVGV4dEl0ZXJhdG9yLmgiCkBAIC0xNjIsNiAr
MTYxLDcgQEAgUmV0YWluUHRyPEREQWN0aW9uQ29udGV4dD4gRGF0YURldGVjdGlvbjo6ZGV0ZWN0
SXRlbUFyb3VuZEhpdFRlc3RSZXN1bHQoY29uc3QgSGkKIAogICAgIHJldHVybiBkZXRlY3RJdGVt
QXRQb3NpdGlvbldpdGhSYW5nZShwb3NpdGlvbiwgY29udGV4dFJhbmdlLCBkZXRlY3RlZERhdGFC
b3VuZGluZ0JveCwgZGV0ZWN0ZWREYXRhUmFuZ2UpOwogfQorCiAjZW5kaWYgLy8gUExBVEZPUk0o
TUFDKQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTM0NSw3ICszNDUsNyBAQCBzdGF0
aWMgU3RyaW5nIGRhdGFEZXRlY3RvclN0cmluZ0ZvclBhdGgoTlNJbmRleFBhdGggKnBhdGgpCiAg
ICAgfQogfQogCi1zdGF0aWMgdm9pZCBidWlsZFF1ZXJ5KEREU2NhblF1ZXJ5UmVmIHNjYW5RdWVy
eSwgUmFuZ2UqIGNvbnRleHRSYW5nZSkKK3N0YXRpYyB2b2lkIGJ1aWxkUXVlcnkoRERTY2FuUXVl
cnlSZWYgc2NhblF1ZXJ5LCBjb25zdCBTaW1wbGVSYW5nZSYgY29udGV4dFJhbmdlKQogewogICAg
IC8vIE9uY2Ugd2UncmUgb3ZlciB0aGlzIG51bWJlciBvZiBmcmFnbWVudHMsIHN0b3AgYXQgdGhl
IGZpcnN0IGhhcmQgYnJlYWsuCiAgICAgY29uc3QgQ0ZJbmRleCBtYXhGcmFnbWVudFdpdGhIYXJk
QnJlYWsgPSAxMDAwOwpAQCAtNDQ0LDkgKzQ0NCwxMiBAQCB2b2lkIERhdGFEZXRlY3Rpb246OnJl
bW92ZURhdGFEZXRlY3RlZExpbmtzSW5Eb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAKIE5T
QXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxSYW5nZT4m
IGNvbnRleHRSYW5nZSwgRGF0YURldGVjdG9yVHlwZXMgdHlwZXMsIE5TRGljdGlvbmFyeSAqY29u
dGV4dCkKIHsKKyAgICBpZiAoIWNvbnRleHRSYW5nZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwog
ICAgIFJldGFpblB0cjxERFNjYW5uZXJSZWY+IHNjYW5uZXIgPSBhZG9wdENGKHNvZnRMaW5rX0Rh
dGFEZXRlY3RvcnNDb3JlX0REU2Nhbm5lckNyZWF0ZShERFNjYW5uZXJUeXBlU3RhbmRhcmQsIDAs
IG51bGxwdHIpKTsKICAgICBSZXRhaW5QdHI8RERTY2FuUXVlcnlSZWY+IHNjYW5RdWVyeSA9IGFk
b3B0Q0Yoc29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTY2FuUXVlcnlDcmVhdGUoTlVMTCkp
OwotICAgIGJ1aWxkUXVlcnkoc2NhblF1ZXJ5LmdldCgpLCBjb250ZXh0UmFuZ2UuZ2V0KCkpOwor
ICAgIGJ1aWxkUXVlcnkoc2NhblF1ZXJ5LmdldCgpLCAqY29udGV4dFJhbmdlKTsKICAgICAKICAg
ICBpZiAodHlwZXMgJiBEYXRhRGV0ZWN0b3JUeXBlTG9va3VwU3VnZ2VzdGlvbikKICAgICAgICAg
c29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTY2FubmVyRW5hYmxlT3B0aW9uYWxTb3VyY2Uo
c2Nhbm5lci5nZXQoKSwgRERTY2FubmVyU291cmNlU3BvdGxpZ2h0LCB0cnVlKTsKQEAgLTQ4Nyw3
ICs0OTAsNyBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShS
ZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQogICAgIH0KIAogICAgIFZlY3RvcjxW
ZWN0b3I8UmVmUHRyPFJhbmdlPj4+IGFsbFJlc3VsdFJhbmdlczsKLSAgICBUZXh0SXRlcmF0b3Ig
aXRlcmF0b3IoY29udGV4dFJhbmdlLmdldCgpKTsKKyAgICBUZXh0SXRlcmF0b3IgaXRlcmF0b3Io
KmNvbnRleHRSYW5nZSk7CiAgICAgQ0ZJbmRleCBpdGVyYXRvckNvdW50ID0gMDsKIAogICAgIC8v
IEl0ZXJhdGUgdGhyb3VnaCB0aGUgYXJyYXkgb2YgdGhlIGV4cGFuZGVkIHJlc3VsdHMgdG8gY3Jl
YXRlIGEgdmVjdG9yIG9mIFJhbmdlIG9iamVjdHMgdGhhdCBpbmRpY2F0ZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCmluZGV4IGQzNTUzOWE5
ZGZkOGQ0N2VlNGUwMTE3MGQ1YjI4Y2YxNTEwM2VkNzIuLjg3OTcyMjAyODQ2OGYwM2UwMmVhZTU5
YjU1YTI5YTIzZGVjZTkyZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvRGljdGlvbmFyeUxvb2t1cC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0RpY3Rpb25hcnlMb29rdXAubW0KQEAgLTMzNyw3ICszMzcsOSBAQCBzdGQ6OnR1cGxlPFJlZlB0
cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVz
dFJlc3VsdAogICAgICAgICBhdXRvIHJhbmdlVG9TZWxlY3Rpb25FbmQgPSBtYWtlUmFuZ2UocGFy
YWdyYXBoU3RhcnQsIHNlbGVjdGlvbkVuZCk7CiAgICAgICAgIAogICAgICAgICBmdWxsQ2hhcmFj
dGVyUmFuZ2UgPSBtYWtlUmFuZ2UocGFyYWdyYXBoU3RhcnQsIHBhcmFncmFwaEVuZCk7Ci0gICAg
ICAgIAorICAgICAgICBpZiAoIWZ1bGxDaGFyYWN0ZXJSYW5nZSkKKyAgICAgICAgICAgIHJldHVy
biB7IG51bGxwdHIsIG5pbCB9OworCiAgICAgICAgIHNlbGVjdGlvblJhbmdlID0gTlNNYWtlUmFu
Z2UoVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZVRvU2VsZWN0aW9uU3RhcnQuZ2V0KCkp
LCBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1ha2VSYW5nZShzZWxlY3Rpb25TdGFydCwgc2Vs
ZWN0aW9uRW5kKS5nZXQoKSkpOwogICAgICAgICAKICAgICAgICAgaGl0SW5kZXggPSBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKG1ha2VSYW5nZShwYXJhZ3JhcGhTdGFydCwgcG9zaXRpb24pLmdl
dCgpKTsKQEAgLTM1Nyw3ICszNTksNyBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGlj
dGlvbmFyeSAqPiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdAogICAgIAog
ICAgIE5TUmFuZ2Ugc2VsZWN0ZWRSYW5nZSA9IFtnZXRSVlNlbGVjdGlvbkNsYXNzKCkgcmV2ZWFs
UmFuZ2VBdEluZGV4OmhpdEluZGV4IHNlbGVjdGVkUmFuZ2VzOkBbW05TVmFsdWUgdmFsdWVXaXRo
UmFuZ2U6c2VsZWN0aW9uUmFuZ2VdXSBzaG91bGRVcGRhdGVTZWxlY3Rpb246bmlsXTsKICAgICAK
LSAgICBTdHJpbmcgaXRlbVN0cmluZyA9IHBsYWluVGV4dChmdWxsQ2hhcmFjdGVyUmFuZ2UuZ2V0
KCkpOworICAgIFN0cmluZyBpdGVtU3RyaW5nID0gcGxhaW5UZXh0KCpmdWxsQ2hhcmFjdGVyUmFu
Z2UpOwogICAgIFJldGFpblB0cjxSVkl0ZW0+IGl0ZW0gPSBhZG9wdE5TKFthbGxvY1JWSXRlbUlu
c3RhbmNlKCkgaW5pdFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0ZWRSYW5nZTpzZWxlY3RlZFJh
bmdlXSk7CiAgICAgTlNSYW5nZSBoaWdobGlnaHRSYW5nZSA9IGl0ZW0uZ2V0KCkuaGlnaGxpZ2h0
UmFuZ2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bQppbmRleCA0ZjdmYWEwZTFjYTkxZDgzMmRlZTU3OWQ5M2FlZTNhYjFhOWUwYzIzLi5hNTQzYWMy
ZDFhZTJhYzM4ZjhjZDI3ZmIyNTdmZTJkMTYyNDBkY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC02MSw3ICs2MSw2IEBACiAjaW1wb3J0
ICJSYW5nZS5oIgogI2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKICNpbXBvcnQgIlJlbmRlclRleHQu
aCIKLSNpbXBvcnQgIlNpbXBsZVJhbmdlLmgiCiAjaW1wb3J0ICJTdHlsZVByb3BlcnRpZXMuaCIK
ICNpbXBvcnQgIlN0eWxlZEVsZW1lbnQuaCIKICNpbXBvcnQgIlRleHRJdGVyYXRvci5oIgpAQCAt
MjM5Niw3ICsyMzk1LDcgQEAgTlNBdHRyaWJ1dGVkU3RyaW5nICplZGl0aW5nQXR0cmlidXRlZFN0
cmluZ0Zyb21SYW5nZShSYW5nZSYgcmFuZ2UsIEluY2x1ZGVJbWFnZXMKICAgICBOU1VJbnRlZ2Vy
IHN0cmluZ0xlbmd0aCA9IDA7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGF0
dHJzID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKIAotICAg
IGZvciAoVGV4dEl0ZXJhdG9yIGl0KCZyYW5nZSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkp
IHsKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdChyYW5nZSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZh
bmNlKCkpIHsKICAgICAgICAgU2ltcGxlUmFuZ2UgY3VycmVudFRleHRSYW5nZSA9IGl0LnJhbmdl
KCk7CiAgICAgICAgIE5vZGUmIHN0YXJ0Q29udGFpbmVyID0gY3VycmVudFRleHRSYW5nZS5zdGFy
dC5jb250YWluZXI7CiAgICAgICAgIE5vZGUmIGVuZENvbnRhaW5lciA9IGN1cnJlbnRUZXh0UmFu
Z2UuZW5kLmNvbnRhaW5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dElu
ZGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCmluZGV4
IDJkMjExMDRiMzIxZTYzY2I4Yzg1OTc5NTI5MmYwMmIxZmNhZmVmMjUuLjQyZWZlYWRiMGQxYTY4
MzY1YzVjMzQzMDgwZTVmZmIyNjgwNjhiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVGV4dEluZGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNh
dG9yLmNwcApAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNp
bmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCi0jaW5jbHVk
ZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJU
ZXh0UGFpbnRTdHlsZS5oIgogCkBAIC0yMTMsNyArMjEyLDcgQEAgc3RhdGljIGJvb2wgc3R5bGVD
b250YWluc0NvbXBsZXhCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHN0YXRp
YyBIYXNoU2V0PENvbG9yPiBlc3RpbWF0ZWRUZXh0Q29sb3JzRm9yUmFuZ2UoY29uc3QgUmFuZ2Um
IHJhbmdlKQogewogICAgIEhhc2hTZXQ8Q29sb3I+IGNvbG9yczsKLSAgICBmb3IgKFRleHRJdGVy
YXRvciBpdGVyYXRvcigmcmFuZ2UpOyAhaXRlcmF0b3IuYXRFbmQoKTsgaXRlcmF0b3IuYWR2YW5j
ZSgpKSB7CisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXRlcmF0b3IocmFuZ2UpOyAhaXRlcmF0b3Iu
YXRFbmQoKTsgaXRlcmF0b3IuYWR2YW5jZSgpKSB7CiAgICAgICAgIGF1dG8qIG5vZGUgPSBpdGVy
YXRvci5ub2RlKCk7CiAgICAgICAgIGlmICghaXM8VGV4dD4obm9kZSkgfHwgIWlzPFJlbmRlclRl
eHQ+KG5vZGUtPnJlbmRlcmVyKCkpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yOTksNyAr
Mjk4LDcgQEAgc3RhdGljIGJvb2wgY29udGFpbnNPbmx5V2hpdGVTcGFjZVRleHQoY29uc3QgUmFu
Z2UmIHJhbmdlKQogICAgICAgICBpZiAoIWlzPFJlbmRlclRleHQ+KG5vZGUtPnJlbmRlcmVyKCkp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICByZXR1cm4gcGxhaW5UZXh0
UmVwbGFjaW5nTm9CcmVha1NwYWNlKCZyYW5nZSkuc3RyaXBXaGl0ZVNwYWNlKCkuaXNFbXB0eSgp
OworICAgIHJldHVybiBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UpLnN0cmlw
V2hpdGVTcGFjZSgpLmlzRW1wdHkoKTsKIH0KIAogc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUluZGlj
YXRvcihUZXh0SW5kaWNhdG9yRGF0YSYgZGF0YSwgRnJhbWUmIGZyYW1lLCBjb25zdCBSYW5nZSYg
cmFuZ2UsIEZsb2F0U2l6ZSBtYXJnaW4sIGJvb2wgaW5kaWNhdGVzQ3VycmVudFNlbGVjdGlvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KaW5kZXggMzAwOTEzOGYyZGMwMjRlYzc4Mjcy
OTIwYWUxZTQwMjlmMGU4NzMwNy4uNmVlNGZiNDQ1NWRjNjkwZDRlYjk5YzQzYTJiOTM4MTJmMTQx
NzJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KQEAgLTc2MCw3ICs3NjAsNyBA
QCBOU0FycmF5ICpGcmFtZTo6aW50ZXJwcmV0YXRpb25zRm9yQ3VycmVudFJvb3QoKSBjb25zdAog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBhdXRvIHJhbmdlRm9yTWFya2VyID0gUmFuZ2U6
OmNyZWF0ZSgqZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1h
cmtlci0+c3RhcnRPZmZzZXQoKSksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBt
YXJrZXItPmVuZE9mZnNldCgpKSk7Ci0gICAgICAgICAgICBTdHJpbmcgdmlzaWJsZVRleHRGb3JN
YXJrZXIgPSBwbGFpblRleHQocmFuZ2VGb3JNYXJrZXIucHRyKCkpOworICAgICAgICAgICAgU3Ry
aW5nIHZpc2libGVUZXh0Rm9yTWFya2VyID0gcGxhaW5UZXh0KHJhbmdlRm9yTWFya2VyKTsKICAg
ICAgICAgICAgIHNpemVfdCBpbnRlcnByZXRhdGlvbnNDb3VudEZvckN1cnJlbnRNYXJrZXIgPSBt
YXJrZXItPmFsdGVybmF0aXZlcygpLnNpemUoKSArIDE7CiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGludGVycHJldGF0aW9uc0NvdW50OyArK2kpIHsKICAgICAgICAgICAgICAg
ICAvLyBEZXRlcm1pbmUgdGV4dCBmb3IgdGhlIGl0aCBpbnRlcnByZXRhdGlvbi4gSXQgd2lsbCBl
aXRoZXIgYmUgdGhlIHZpc2libGUgdGV4dCwgb3Igb25lIG9mIGl0cwpAQCAtNzgxLDcgKzc4MSw3
IEBAIE5TQXJyYXkgKkZyYW1lOjppbnRlcnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0
CiAKICAgICAvLyBGaW5hbGx5LCBhZGQgYW55IHRleHQgYWZ0ZXIgdGhlIGxhc3QgbWFya2VyLgog
ICAgIGF1dG8gYWZ0ZXJMYXN0TWFya2VyUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCgp
LCBwcmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KHJvb3QsIHJvb3RDaGlsZENvdW50KSk7Ci0gICAgU3RyaW5nIHRleHRBZnRlckxhc3RNYXJrZXIg
PSBwbGFpblRleHQoYWZ0ZXJMYXN0TWFya2VyUmFuZ2UucHRyKCkpOworICAgIFN0cmluZyB0ZXh0
QWZ0ZXJMYXN0TWFya2VyID0gcGxhaW5UZXh0KGFmdGVyTGFzdE1hcmtlclJhbmdlKTsKICAgICBp
ZiAoIXRleHRBZnRlckxhc3RNYXJrZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgIGZvciAoYXV0byYg
aW50ZXJwcmV0YXRpb24gOiBpbnRlcnByZXRhdGlvbnMpCiAgICAgICAgICAgICBhcHBlbmQoaW50
ZXJwcmV0YXRpb24sIHRleHRBZnRlckxhc3RNYXJrZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IGMxNWM3NGQxMmZlNGM2YjgxMDRhOGY5YzUyZmJi
NzE5N2JmMWYwNjEuLjhkMjhkNzFjZWMwMjhmNTI0MjgxMzZmNzAxNmIwMGM1YjYxN2ZmZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTIwMiw4ICsy
MDIsMTIgQEAgU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnNlbGVjdGVkVGV4dCgpIGNvbnN0CiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICBhdXRvIHJh
bmdlID0gZnJhbWUtPnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgaWYgKCFy
YW5nZSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKICAgICAvLyBMb29rIGZvciBh
IGNoYXJhY3RlciB0aGF0J3Mgbm90IGp1c3QgYSBzZXBhcmF0b3IuCi0gICAgZm9yIChUZXh0SXRl
cmF0b3IgaXQoZnJhbWUtPnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOyAh
aXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXQoKnJh
bmdlKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgewogICAgICAgICBpbnQgbGVuZ3RoID0g
aXQudGV4dCgpLmxlbmd0aCgpOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICBpZiAoIShVX0dFVF9HQ19NQVNLKGl0LnRleHQoKVtpXSkgJiBV
X0dDX1pfTUFTSykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9M
aW5lTGF5b3V0VHJhdmVyc2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5l
TGF5b3V0VHJhdmVyc2FsLmgKaW5kZXggOTRhYjk2ZGVjM2NiZTMyMjlkZTBlMDg5ZTdjNTg3NDJl
MWJkMjBiNi4uYjk2OGVmNzA4OTAyM2MxYTExODE5YzFlMmFkYzk0NTcwYWZlZWEzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwu
aApAQCAtMjksMTUgKzI5LDEyIEBACiAjaW5jbHVkZSAiTGluZUxheW91dFRyYXZlcnNhbENvbXBs
ZXhQYXRoLmgiCiAjaW5jbHVkZSAiTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmgi
CiAjaW5jbHVkZSAiTGluZUxheW91dFRyYXZlcnNhbFNpbXBsZVBhdGguaCIKLSNpbmNsdWRlICJS
ZW5kZXJUZXh0LmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSXRl
cmF0b3JSYW5nZS5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nVmlldy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckxp
bmVCcmVhazsKK2NsYXNzIFJlbmRlclRleHQ7CiAKIG5hbWVzcGFjZSBMaW5lTGF5b3V0VHJhdmVy
c2FsIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDkyM2VlOTVlMDUw
Y2Y1YjFlYmMzNzczYzRiZTJjNDllNDVkMTUzY2MuLjJiOTg4MDAyYzhiYzFjMzIxNzU0NjEwZDMx
MTg4NjFmMzVmODQwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE3
NCw3ICsxNzQsNiBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVk
ZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJT
cGVsbENoZWNrZXIuaCIKICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0
SXRlcmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS0RPTVRleHRJdGVyYXRvci5tbQppbmRleCA3OWIyZTRmNTdmN2IxNWJlMGM5OWIzYjMx
ODY1ZWY4ZGM3YjQxNzllLi5iOTY5M2E4MGMzZmU1MTVhYWIzNjc4YTY4YzVkMGJlZmZmYjY4YWIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS0RPTVRleHRJdGVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbQpAQCAtMjgsNyArMjgs
NiBAQAogCiAjaW1wb3J0ICJXS0RPTUludGVybmFscy5oIgogI2ltcG9ydCAiV0tET01SYW5nZS5o
IgotI2ltcG9ydCA8V2ViQ29yZS9TaW1wbGVSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0
SXRlcmF0b3IuaD4KIAogQGludGVyZmFjZSBXS0RPTVRleHRJdGVyYXRvciAoKSB7CkBAIC00Niwy
OSArNDUsMzUgQEAgLSAoaWQpaW5pdFdpdGhSYW5nZTooV0tET01SYW5nZSAqKXJhbmdlCiAgICAg
aWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3RleHRJdGVyYXRvciA9IG1h
a2VVbmlxdWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihXZWJLaXQ6OnRvV2ViQ29yZVJhbmdlKHJh
bmdlKSk7CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIHNlbGY7CisKKyAgICBfdGV4
dEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+KCpXZWJLaXQ6OnRv
V2ViQ29yZVJhbmdlKHJhbmdlKSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpYWR2
YW5jZQogewotICAgIF90ZXh0SXRlcmF0b3ItPmFkdmFuY2UoKTsKKyAgICBpZiAoX3RleHRJdGVy
YXRvcikKKyAgICAgICAgX3RleHRJdGVyYXRvci0+YWR2YW5jZSgpOwogICAgIF91cGNvbnZlcnRl
ZFRleHQuc2hyaW5rKDApOwogfQogCiAtIChCT09MKWF0RW5kCiB7Ci0gICAgcmV0dXJuIF90ZXh0
SXRlcmF0b3ItPmF0RW5kKCk7CisgICAgcmV0dXJuIF90ZXh0SXRlcmF0b3IgJiYgX3RleHRJdGVy
YXRvci0+YXRFbmQoKTsKIH0KIAogLSAoV0tET01SYW5nZSAqKWN1cnJlbnRSYW5nZQogewotICAg
IHJldHVybiBXZWJLaXQ6OnRvV0tET01SYW5nZShjcmVhdGVMaXZlUmFuZ2UoX3RleHRJdGVyYXRv
ci0+cmFuZ2UoKSkucHRyKCkpOworICAgIHJldHVybiBfdGV4dEl0ZXJhdG9yID8gV2ViS2l0Ojp0
b1dLRE9NUmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKF90ZXh0SXRlcmF0b3ItPnJhbmdlKCkpLnB0cigp
KSA6IG5pbDsKIH0KIAogLy8gRklYTUU6IENvbnNpZGVyIGRlcHJlY2F0aW5nIHRoaXMgbWV0aG9k
IGFuZCBjcmVhdGluZyBvbmUgdGhhdCBkb2VzIG5vdCByZXF1aXJlIGNvcHlpbmcgOC1iaXQgY2hh
cmFjdGVycy4KIC0gKGNvbnN0IHVuaWNoYXIqKWN1cnJlbnRUZXh0UG9pbnRlcgogeworICAgIGlm
ICghX3RleHRJdGVyYXRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgU3RyaW5nVmll
dyB0ZXh0ID0gX3RleHRJdGVyYXRvci0+dGV4dCgpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRl
eHQubGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCkBAIC04Myw3ICs4OCw3IEBAIC0gKGNvbnN0
IHVuaWNoYXIqKWN1cnJlbnRUZXh0UG9pbnRlcgogCiAtIChOU1VJbnRlZ2VyKWN1cnJlbnRUZXh0
TGVuZ3RoCiB7Ci0gICAgcmV0dXJuIF90ZXh0SXRlcmF0b3ItPnRleHQoKS5sZW5ndGgoKTsKKyAg
ICByZXR1cm4gX3RleHRJdGVyYXRvciA/IF90ZXh0SXRlcmF0b3ItPnRleHQoKS5sZW5ndGgoKSA6
IDA7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQpp
bmRleCA3ZjNmNGQ5NjEzNzg5YTA4ZmNiNmRjM2RmM2Q3OTkwNWEyOTdhNDRlLi5kZWMzYWNhMGY0
ZGZmZDJhYjJhODdiZWYwMTcwYmIxMTQzNTlmMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5n
Q29udHJvbGxlclByb3h5Lm1tCkBAIC00MCw3ICs0MCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Zv
Y3VzQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUmVuZGVyZWREb2N1bWVudE1hcmtlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9T
aW1wbGVSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5j
cHAKaW5kZXggNWZiNTMyOTNhYTc0NGJmNjBkZGU2M2YxNzM3ZjdkNGUwZGFiMGRjMS4uMGQyNzZl
NGUxMzRmNGI4MzNhNjIyMTMzZTBiNDdmMTJhNzFkNGVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvci5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBPcHRpb25hbDxzdGQ6OnBhaXI8ZG91
YmxlLCBkb3VibGU+PiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb21wdXRlVGV4dExl
ZwogICAgIHVuc2lnbmVkIG51bWJlck9mSXRlcmF0aW9ucyA9IDA7CiAgICAgdW5zaWduZWQgdG90
YWxTYW1wbGVkVGV4dExlbmd0aCA9IDA7CiAKLSAgICBmb3IgKFRleHRJdGVyYXRvciBkb2N1bWVu
dFRleHRJdGVyYXRvciB7IGRvY3VtZW50UmFuZ2UucHRyKCksIFRleHRJdGVyYXRvckVudGVyc1Rl
eHRDb250cm9scyB9OyAhZG9jdW1lbnRUZXh0SXRlcmF0b3IuYXRFbmQoKTsgZG9jdW1lbnRUZXh0
SXRlcmF0b3IuYWR2YW5jZSgpKSB7CisgICAgZm9yIChUZXh0SXRlcmF0b3IgZG9jdW1lbnRUZXh0
SXRlcmF0b3IgeyBkb2N1bWVudFJhbmdlLmdldCgpLCBUZXh0SXRlcmF0b3JFbnRlcnNUZXh0Q29u
dHJvbHMgfTsgIWRvY3VtZW50VGV4dEl0ZXJhdG9yLmF0RW5kKCk7IGRvY3VtZW50VGV4dEl0ZXJh
dG9yLmFkdmFuY2UoKSkgewogICAgICAgICBpZiAoKytudW1iZXJPZkl0ZXJhdGlvbnMgPj0gbWF4
aW11bU51bWJlck9mVGV4dFJ1bnNUb0NvbnNpZGVyKQogICAgICAgICAgICAgYnJlYWs7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZjE2ZWUw
YzA5N2VjNWFiNTAwODE5YTA4NGVlYmQ0MGFjMjVkMWQ0Mi4uZDhkNThlNzc2NDRmN2IyYTBmZTQz
ZjM0NzUyZTlkNzIzMzMwZThjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTIyNiw3ICsyMjYsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2V0
dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYWRvd1Jvb3QuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2ltcGxlUmFuZ2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3Vi
ZnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1YnN0aXR1dGVEYXRhLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmlu
ZGV4IGZlZDZjMDRiZWM4YzVkYTI2ZTY1MTkzNTZjNjIwMGUyM2JlZTAzNTAuLjU5ZTBhNzZjNzlk
MzUyNzVkODUyZTAxZGMxYTIyZWJlZTA1ZmUxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xMjQsNyArMTI0LDYgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhZG93Um9v
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
U2ltcGxlUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVQcm9wZXJ0aWVzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEl0ZXJh
dG9yLmg+CkBAIC0xNDMsNyArMTQyLDIyIEBACiAjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBXZWJQYWdlOjoiIGZtdCwgdGhpcywg
IyNfX1ZBX0FSR1NfXykKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworLy8gRklYTUU6IFVuY2xlYXIgaWYgY2FsbGVycyBpbiB0aGlzIGZpbGUgYXJlIGNv
cnJlY3RseSBjaG9vc2luZyB3aGljaCBvZiB0aGVzZSB0d28gZnVuY3Rpb25zIHRvIHVzZS4KKwor
c3RhdGljIFN0cmluZyBwbGFpblRleHRGb3JDb250ZXh0KGNvbnN0IFJhbmdlKiByYW5nZSkKK3sK
KyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6cGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKCpyYW5nZSk7Cit9CisK
K3N0YXRpYyBTdHJpbmcgcGxhaW5UZXh0Rm9yRGlzcGxheShjb25zdCBSYW5nZSogcmFuZ2UpCit7
CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgcmV0
dXJuIFdlYkNvcmU6OnBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZSgqcmFuZ2UsIFRleHRJ
dGVyYXRvckRlZmF1bHRCZWhhdmlvciwgdHJ1ZSk7Cit9CiAKIHZvaWQgV2ViUGFnZTo6cGxhdGZv
cm1Jbml0aWFsaXplKCkKIHsKQEAgLTIyOCw3ICsyNDIsNyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRm
b3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRl
UG9zdAogICAgICAgICAgICAgICAgIHJlc3VsdC5sYXN0TWFya2VkUmVjdCA9IHZpZXctPmNvbnRl
bnRzVG9Sb290Vmlldyhjb21wb3NpdGlvblJlY3RzLmxhc3QoKS5yZWN0KCkpOwogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgIHJlc3VsdC5sYXN0TWFya2VkUmVjdCA9IHJlc3VsdC5m
aXJzdE1hcmtlZFJlY3Q7Ci0gICAgICAgICAgICByZXN1bHQubWFya2VkVGV4dCA9IHBsYWluVGV4
dFJlcGxhY2luZ05vQnJlYWtTcGFjZShjb21wb3NpdGlvblJhbmdlLmdldCgpKTsKKyAgICAgICAg
ICAgIHJlc3VsdC5tYXJrZWRUZXh0ID0gcGxhaW5UZXh0Rm9yQ29udGV4dChjb21wb3NpdGlvblJh
bmdlLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjU4LDcgKzI3Miw3IEBAIHZvaWQg
V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiBy
ZXN1bHQsIEluY2x1ZGVQb3N0CiAgICAgICAgIHBvc3RMYXlvdXREYXRhLmNhcmV0UmVjdEF0RW5k
ID0gcG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRTdGFydDsKICAgICAgICAgLy8gRklYTUU6IFRo
ZSBmb2xsb3dpbmcgY2hlY2sgc2hvdWxkIHRha2UgaW50byBhY2NvdW50IHdyaXRpbmcgZGlyZWN0
aW9uLgogICAgICAgICBwb3N0TGF5b3V0RGF0YS5pc1JlcGxhY2VBbGxvd2VkID0gcmVzdWx0Lmlz
Q29udGVudEVkaXRhYmxlICYmIGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHNlbGVjdGlvbi5zdGFy
dCgpLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOwotICAgICAgICBwb3N0TGF5
b3V0RGF0YS53b3JkQXRTZWxlY3Rpb24gPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2Uo
d29yZFJhbmdlRnJvbVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpKS5nZXQoKSk7CisgICAgICAg
IHBvc3RMYXlvdXREYXRhLndvcmRBdFNlbGVjdGlvbiA9IHBsYWluVGV4dEZvckNvbnRleHQod29y
ZFJhbmdlRnJvbVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpKS5nZXQoKSk7CiAgICAgICAgIGlm
IChzZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKSkKICAgICAgICAgICAgIGNoYXJhY3RlcnNB
cm91bmRQb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSwgcG9zdExheW91dERhdGEuY2hhcmFjdGVy
QWZ0ZXJTZWxlY3Rpb24sIHBvc3RMYXlvdXREYXRhLmNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbiwg
cG9zdExheW91dERhdGEudHdvQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uKTsKICAgICB9IGVsc2Ug
aWYgKHNlbGVjdGlvbi5pc1JhbmdlKCkpIHsKQEAgLTI2OSw3ICsyODMsNyBAQCB2b2lkIFdlYlBh
Z2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0
LCBJbmNsdWRlUG9zdAogICAgICAgICBpZiAoc2VsZWN0ZWRSYW5nZSkgewogICAgICAgICAgICAg
c2VsZWN0ZWRSYW5nZS0+Y29sbGVjdFNlbGVjdGlvblJlY3RzKHBvc3RMYXlvdXREYXRhLnNlbGVj
dGlvblJlY3RzKTsKICAgICAgICAgICAgIGNvbnZlcnRTZWxlY3Rpb25SZWN0c1RvUm9vdFZpZXco
dmlldywgcG9zdExheW91dERhdGEuc2VsZWN0aW9uUmVjdHMpOwotICAgICAgICAgICAgc2VsZWN0
ZWRUZXh0ID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHNlbGVjdGVkUmFuZ2UuZ2V0
KCksIFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgdHJ1ZSk7CisgICAgICAgICAgICBzZWxl
Y3RlZFRleHQgPSBwbGFpblRleHRGb3JEaXNwbGF5KHNlbGVjdGVkUmFuZ2UuZ2V0KCkpOwogICAg
ICAgICAgICAgcG9zdExheW91dERhdGEuc2VsZWN0ZWRUZXh0TGVuZ3RoID0gc2VsZWN0ZWRUZXh0
Lmxlbmd0aCgpOwogICAgICAgICAgICAgY29uc3QgaW50IG1heFNlbGVjdGVkVGV4dExlbmd0aCA9
IDIwMDsKICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLndvcmRBdFNlbGVjdGlvbiA9IHNlbGVj
dGVkVGV4dC5sZWZ0KG1heFNlbGVjdGVkVGV4dExlbmd0aCk7CkBAIC01MDIsOSArNTE2LDkgQEAg
dm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Db250ZXh0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICAgICB9CiAgICAgY29uc3QgaW50IHNlbGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCA9IDM1
MDsKICAgICAKLSAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0ID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9C
cmVha1NwYWNlKGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdl
KCkuZ2V0KCkpOwotICAgIFN0cmluZyB0ZXh0QmVmb3JlID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9C
cmVha1NwYWNlKHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5k
YXJ5KGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCksIHNlbGVjdGlvbkV4dGVu
ZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0aW9uQmFja3dhcmQpLmdldCgpLCBUZXh0SXRlcmF0b3JE
ZWZhdWx0QmVoYXZpb3IsIHRydWUpOwotICAgIFN0cmluZyB0ZXh0QWZ0ZXIgPSBwbGFpblRleHRS
ZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9u
QXRXb3JkQm91bmRhcnkoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZW5kKCksIHNlbGVj
dGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0aW9uRm9yd2FyZCkuZ2V0KCksIFRleHRJ
dGVyYXRvckRlZmF1bHRCZWhhdmlvciwgdHJ1ZSk7CisgICAgU3RyaW5nIHNlbGVjdGVkVGV4dCA9
IHBsYWluVGV4dEZvckNvbnRleHQoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3Jt
YWxpemVkUmFuZ2UoKS5nZXQoKSk7CisgICAgU3RyaW5nIHRleHRCZWZvcmUgPSBwbGFpblRleHRG
b3JEaXNwbGF5KHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5k
YXJ5KGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCksIHNlbGVjdGlvbkV4dGVu
ZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0aW9uQmFja3dhcmQpLmdldCgpKTsKKyAgICBTdHJpbmcg
dGV4dEFmdGVyID0gcGxhaW5UZXh0Rm9yRGlzcGxheShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJz
SW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5l
bmQoKSwgc2VsZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25Gb3J3YXJkKS5n
ZXQoKSk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNlbGVjdGlvbkNvbnRl
eHRDYWxsYmFjayhzZWxlY3RlZFRleHQsIHRleHRCZWZvcmUsIHRleHRBZnRlciwgY2FsbGJhY2tJ
RCkpOwogfQpAQCAtMjAwNiw3ICsyMDIwLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRSZWN0c0F0U2Vs
ZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGUKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFr
U3BhY2UocmFuZ2UucHRyKCksIFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgdHJ1ZSkgIT0g
dGV4dCkgeworICAgIGlmIChwbGFpblRleHRGb3JEaXNwbGF5KHJhbmdlLnB0cigpKSAhPSB0ZXh0
KSB7CiAgICAgICAgIC8vIFRyeSB0byBzZWFyY2ggZm9yIGEgcmFuZ2Ugd2hpY2ggaXMgdGhlIGNs
b3Nlc3QgdG8gdGhlIHBvc2l0aW9uIHdpdGhpbiB0aGUgc2VsZWN0aW9uIHJhbmdlIHRoYXQgbWF0
Y2hlcyB0aGUgcGFzc2VkIGluIHRleHQuCiAgICAgICAgIGlmIChhdXRvIHdvcmRSYW5nZSA9IHJh
bmdlTmVhclBvc2l0aW9uTWF0Y2hlc1RleHQoc3RhcnRQb3NpdGlvbiwgdGV4dCwgc2VsZWN0aW9u
LnRvTm9ybWFsaXplZFJhbmdlKCkpKSB7CiAgICAgICAgICAgICBpZiAoIXdvcmRSYW5nZS0+Y29s
bGFwc2VkKCkpCkBAIC0yMjI2LDcgKzIyNDAsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3REaWN0
YXRpb25Db250ZXh0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIAogICAgIFN0cmluZyBzZWxlY3Rl
ZFRleHQ7CiAgICAgaWYgKGZyYW1lLnNlbGVjdGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAgc2Vs
ZWN0ZWRUZXh0ID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGZyYW1lLnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgICAgICBzZWxl
Y3RlZFRleHQgPSBwbGFpblRleHRGb3JDb250ZXh0KGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogCiAgICAgU3RyaW5nIGNvbnRleHRCZWZv
cmU7CiAgICAgaWYgKHN0YXJ0UG9zaXRpb24gIT0gc3RhcnRPZkVkaXRhYmxlQ29udGVudChzdGFy
dFBvc2l0aW9uKSkgewpAQCAtMjIzOSw3ICsyMjUzLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0
RGljdGF0aW9uQ29udGV4dChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgICAgICAgICBsYXN0
UG9zaXRpb24gPSBjdXJyZW50UG9zaXRpb247CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxhc3RQ
b3NpdGlvbi5pc05vdE51bGwoKSAmJiBsYXN0UG9zaXRpb24gIT0gc3RhcnRQb3NpdGlvbikKLSAg
ICAgICAgICAgIGNvbnRleHRCZWZvcmUgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2Uo
UmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgbGFzdFBvc2l0aW9uLCBzdGFydFBvc2l0
aW9uKS5wdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0QmVmb3JlID0gcGxhaW5UZXh0Rm9yQ29u
dGV4dChSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBsYXN0UG9zaXRpb24sIHN0YXJ0
UG9zaXRpb24pLnB0cigpKTsKICAgICB9CiAKICAgICBTdHJpbmcgY29udGV4dEFmdGVyOwpAQCAt
MjI1Myw3ICsyMjY3LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0RGljdGF0aW9uQ29udGV4dChD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgICAgICAgICBsYXN0UG9zaXRpb24gPSBjdXJyZW50
UG9zaXRpb247CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxhc3RQb3NpdGlvbi5pc05vdE51bGwo
KSAmJiBsYXN0UG9zaXRpb24gIT0gZW5kUG9zaXRpb24pCi0gICAgICAgICAgICBjb250ZXh0QWZ0
ZXIgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUu
ZG9jdW1lbnQoKSwgZW5kUG9zaXRpb24sIGxhc3RQb3NpdGlvbikucHRyKCkpOworICAgICAgICAg
ICAgY29udGV4dEFmdGVyID0gcGxhaW5UZXh0Rm9yQ29udGV4dChSYW5nZTo6Y3JlYXRlKCpmcmFt
ZS5kb2N1bWVudCgpLCBlbmRQb3NpdGlvbiwgbGFzdFBvc2l0aW9uKS5wdHIoKSk7CiAgICAgfQog
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZWxlY3Rpb25Db250ZXh0Q2FsbGJh
Y2soc2VsZWN0ZWRUZXh0LCBjb250ZXh0QmVmb3JlLCBjb250ZXh0QWZ0ZXIsIGNhbGxiYWNrSUQp
KTsKQEAgLTIyNjMsNyArMjI3Nyw3IEBAIHZvaWQgV2ViUGFnZTo6cmVwbGFjZVNlbGVjdGVkVGV4
dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCkKIHsKICAgICBG
cmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpOwogICAgIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlID0gZnJhbWUuc2VsZWN0aW9uKCkuaXND
YXJldCgpID8gd29yZFJhbmdlRnJvbVBvc2l0aW9uKGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpLnN0YXJ0KCkpIDogZnJhbWUuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKLSAg
ICBpZiAocGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHdvcmRSYW5nZS5nZXQoKSkgIT0g
b2xkVGV4dCkKKyAgICBpZiAocGxhaW5UZXh0Rm9yQ29udGV4dCh3b3JkUmFuZ2UuZ2V0KCkpICE9
IG9sZFRleHQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBmcmFtZS5lZGl0b3IoKS5zZXRJ
Z25vcmVTZWxlY3Rpb25DaGFuZ2VzKHRydWUpOwpAQCAtMjI4OSw3ICsyMzAzLDcgQEAgdm9pZCBX
ZWJQYWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3Qg
U3RyaW5nJiBuZXdUZXh0KQogICAgICAgICBwb3NpdGlvbiA9IHN0YXJ0T2ZEb2N1bWVudChzdGF0
aWNfY2FzdDxOb2RlKj4oZnJhbWUuZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpKTsKICAg
ICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24s
IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwogCi0gICAgaWYgKHBsYWlu
VGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZS5wdHIoKSkgIT0gb2xkVGV4dCkKKyAgICBp
ZiAocGxhaW5UZXh0Rm9yQ29udGV4dChyYW5nZS5wdHIoKSkgIT0gb2xkVGV4dCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBub3RpZnkgdGhlIGNsaWVudCB0aGF0
IHRoZSBzZWxlY3Rpb24gaGFzIGNoYW5nZWQgdW50aWwgd2UgYXJlIGRvbmUgaW5zZXJ0aW5nIHRo
ZSBuZXcgdGV4dC4KQEAgLTIzMTQsNyArMjMyOCw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEF1
dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgQ29t
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHRleHRGb3JSYW5nZSA9IHBsYWlu
VGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZS5nZXQoKSk7CisgICAgYXV0byB0ZXh0Rm9y
UmFuZ2UgPSBwbGFpblRleHRGb3JDb250ZXh0KHJhbmdlLmdldCgpKTsKICAgICBjb25zdCB1bnNp
Z25lZCBtYXhTZWFyY2hBdHRlbXB0cyA9IDU7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7ICBpIDwg
bWF4U2VhcmNoQXR0ZW1wdHMgJiYgdGV4dEZvclJhbmdlICE9IHRleHRGb3JBdXRvY29ycmVjdGlv
bjsgKytpKQogICAgIHsKQEAgLTIzMjIsNyArMjMzNiw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVz
dEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwg
Q29tCiAgICAgICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSB8fCBwb3NpdGlvbiA9PSByYW5nZS0+
c3RhcnRQb3NpdGlvbigpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIHJhbmdlID0gUmFu
Z2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgd29yZFJhbmdlRnJvbVBvc2l0aW9uKHBvc2l0
aW9uKS0+c3RhcnRQb3NpdGlvbigpLCByYW5nZS0+ZW5kUG9zaXRpb24oKSk7Ci0gICAgICAgIHRl
eHRGb3JSYW5nZSA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZS5nZXQoKSk7
CisgICAgICAgIHRleHRGb3JSYW5nZSA9IHBsYWluVGV4dEZvckNvbnRleHQocmFuZ2UuZ2V0KCkp
OwogICAgIH0KIAogICAgIFZlY3RvcjxTZWxlY3Rpb25SZWN0PiBzZWxlY3Rpb25SZWN0czsKQEAg
LTIzODUsNyArMjM5OSw3IEBAIGJvb2wgV2ViUGFnZTo6YXBwbHlBdXRvY29ycmVjdGlvbkludGVy
bmFsKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nCiAgICAgaWYgKGZyYW1l
LnNlbGVjdGlvbigpLmlzQ2FyZXQoKSkgewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRp
b24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpOwogICAgICAgICByYW5n
ZSA9IHdvcmRSYW5nZUZyb21Qb3NpdGlvbihwb3NpdGlvbik7Ci0gICAgICAgIHRleHRGb3JSYW5n
ZSA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZS5nZXQoKSk7CisgICAgICAg
IHRleHRGb3JSYW5nZSA9IHBsYWluVGV4dEZvckNvbnRleHQocmFuZ2UuZ2V0KCkpOwogICAgICAg
ICAKICAgICAgICAgLy8gSWYgJ29yaWdpbmFsVGV4dCcgaXMgbm90IHRoZSBzYW1lIGFzICd0ZXh0
Rm9yUmFuZ2UnIHdlIG5lZWQgdG8gbW92ZSAncmFuZ2UnCiAgICAgICAgIC8vIGZvcndhcmQgc3Vj
aCB0aGF0IGl0IG1hdGNoZXMgdGhlIG9yaWdpbmFsIHNlbGVjdGlvbiBhcyBtdWNoIGFzIHBvc3Np
YmxlLgpAQCAtMjM5Niw3ICsyNDEwLDcgQEAgYm9vbCBXZWJQYWdlOjphcHBseUF1dG9jb3JyZWN0
aW9uSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcKICAgICAg
ICAgICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9
IHN0YXJ0T2ZEb2N1bWVudChzdGF0aWNfY2FzdDxOb2RlKj4oZnJhbWUuZG9jdW1lbnQoKS0+ZG9j
dW1lbnRFbGVtZW50KCkpKTsKICAgICAgICAgICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJh
bWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0
YXJ0KCkpOwotICAgICAgICAgICAgdGV4dEZvclJhbmdlID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9C
cmVha1NwYWNlKHJhbmdlLmdldCgpKTsKKyAgICAgICAgICAgIHRleHRGb3JSYW5nZSA9IHBsYWlu
VGV4dEZvckNvbnRleHQocmFuZ2UuZ2V0KCkpOwogICAgICAgICAgICAgdW5zaWduZWQgbG9vcENv
dW50ID0gMDsKICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIG1heFBvc2l0aW9uc0F0dGVtcHRz
ID0gMTA7CiAgICAgICAgICAgICB3aGlsZSAodGV4dEZvclJhbmdlLmxlbmd0aCgpICYmIHRleHRG
b3JSYW5nZS5sZW5ndGgoKSA+IG9yaWdpbmFsVGV4dC5sZW5ndGgoKSAmJiBsb29wQ291bnQgPCBt
YXhQb3NpdGlvbnNBdHRlbXB0cykgewpAQCAtMjQwNSw3ICsyNDE5LDcgQEAgYm9vbCBXZWJQYWdl
OjphcHBseUF1dG9jb3JyZWN0aW9uSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBj
b25zdCBTdHJpbmcKICAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBudWxscHRyOwogICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRl
KCpmcmFtZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCkuc3RhcnQoKSk7Ci0gICAgICAgICAgICAgICAgdGV4dEZvclJhbmdlID0gcGxhaW5UZXh0UmVw
bGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICB0ZXh0Rm9y
UmFuZ2UgPSBwbGFpblRleHRGb3JDb250ZXh0KHJhbmdlLmdldCgpKTsKICAgICAgICAgICAgICAg
ICBsb29wQ291bnQrKzsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmICh0ZXh0Rm9y
UmFuZ2UuaXNFbXB0eSgpICYmIHJhbmdlICYmICFyYW5nZS0+Y29sbGFwc2VkKCkpIHsKQEAgLTI0
MjEsNyArMjQzNSw3IEBAIGJvb2wgV2ViUGFnZTo6YXBwbHlBdXRvY29ycmVjdGlvbkludGVybmFs
KGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nCiAgICAgICAgIGlmICghcmFu
Z2UpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgdGV4dEZvclJhbmdlID0g
cGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLmdldCgpKTsKKyAgICAgICAgdGV4
dEZvclJhbmdlID0gcGxhaW5UZXh0Rm9yQ29udGV4dChyYW5nZS5nZXQoKSk7CiAgICAgfQogCiAg
ICAgaWYgKGZvbGRRdW90ZU1hcmtzKHRleHRGb3JSYW5nZSkgIT0gb3JpZ2luYWxUZXh0V2l0aEZv
bGRlZFF1b3RlTWFya3MpCkBAIC0yNDU3LDE3ICsyNDcxLDE3IEBAIFdlYkF1dG9jb3JyZWN0aW9u
Q29udGV4dCBXZWJQYWdlOjphdXRvY29ycmVjdGlvbkNvbnRleHQoKQogICAgIGNvbnN0IHVuc2ln
bmVkIG1heENvbnRleHRMZW5ndGggPSAzMDsKIAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5p
c1JhbmdlKCkpCi0gICAgICAgIHNlbGVjdGVkVGV4dCA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJl
YWtTcGFjZShmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgp
LmdldCgpKTsKKyAgICAgICAgc2VsZWN0ZWRUZXh0ID0gcGxhaW5UZXh0Rm9yQ29udGV4dChmcmFt
ZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKIAog
ICAgIGlmIChhdXRvIGNvbXBvc2l0aW9uUmFuZ2UgPSBmcmFtZS5lZGl0b3IoKS5jb21wb3NpdGlv
blJhbmdlKCkpIHsKICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVu
dCgpLCBjb21wb3NpdGlvblJhbmdlLT5zdGFydFBvc2l0aW9uKCksIHN0YXJ0UG9zaXRpb24pOwog
ICAgICAgICBTdHJpbmcgbWFya2VkVGV4dEJlZm9yZTsKICAgICAgICAgaWYgKHJhbmdlKQotICAg
ICAgICAgICAgbWFya2VkVGV4dEJlZm9yZSA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFj
ZShyYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBtYXJrZWRUZXh0QmVmb3JlID0gcGxhaW5UZXh0
Rm9yQ29udGV4dChyYW5nZS5nZXQoKSk7CiAgICAgICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgq
ZnJhbWUuZG9jdW1lbnQoKSwgZW5kUG9zaXRpb24sIGNvbXBvc2l0aW9uUmFuZ2UtPmVuZFBvc2l0
aW9uKCkpOwogICAgICAgICBTdHJpbmcgbWFya2VkVGV4dEFmdGVyOwogICAgICAgICBpZiAocmFu
Z2UpCi0gICAgICAgICAgICBtYXJrZWRUZXh0QWZ0ZXIgPSBwbGFpblRleHRSZXBsYWNpbmdOb0Jy
ZWFrU3BhY2UocmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgbWFya2VkVGV4dEFmdGVyID0gcGxh
aW5UZXh0Rm9yQ29udGV4dChyYW5nZS5nZXQoKSk7CiAgICAgICAgIG1hcmtlZFRleHQgPSBtYXJr
ZWRUZXh0QmVmb3JlICsgc2VsZWN0ZWRUZXh0ICsgbWFya2VkVGV4dEFmdGVyOwogICAgICAgICBp
ZiAoIW1hcmtlZFRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBtYXJrZWRUZXh0UmFuZ2Uu
bG9jYXRpb24gPSBtYXJrZWRUZXh0QmVmb3JlLmxlbmd0aCgpOwpAQCAtMjQ4NCwxNCArMjQ5OCwx
NCBAQCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgV2ViUGFnZTo6YXV0b2NvcnJlY3Rpb25Db250
ZXh0KCkKICAgICAgICAgICAgICAgICBwcmV2aW91c1Bvc2l0aW9uID0gc3RhcnRPZldvcmQocG9z
aXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY3VycmVudFBvc2l0aW9uLCBXb3JkR3Jh
bnVsYXJpdHksIERpcmVjdGlvbkJhY2t3YXJkKSk7CiAgICAgICAgICAgICAgICAgaWYgKHByZXZp
b3VzUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIFN0cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtT
cGFjZShSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwcmV2aW91c1Bvc2l0aW9uLCBj
dXJyZW50UG9zaXRpb24pLnB0cigpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgY3VycmVudFdv
cmQgPSBwbGFpblRleHRGb3JDb250ZXh0KFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCks
IHByZXZpb3VzUG9zaXRpb24sIGN1cnJlbnRQb3NpdGlvbikucHRyKCkpOwogICAgICAgICAgICAg
ICAgIHRvdGFsQ29udGV4dExlbmd0aCArPSBjdXJyZW50V29yZC5sZW5ndGgoKTsKICAgICAgICAg
ICAgICAgICBpZiAodG90YWxDb250ZXh0TGVuZ3RoID49IG1heENvbnRleHRMZW5ndGgpCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9
IHByZXZpb3VzUG9zaXRpb247CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY3VycmVu
dFBvc2l0aW9uLmlzTm90TnVsbCgpICYmIGN1cnJlbnRQb3NpdGlvbiAhPSBzdGFydFBvc2l0aW9u
KSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dEJlZm9yZSA9IHBsYWluVGV4dFJlcGxhY2luZ05v
QnJlYWtTcGFjZShSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBjdXJyZW50UG9zaXRp
b24sIHN0YXJ0UG9zaXRpb24pLnB0cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0QmVmb3Jl
ID0gcGxhaW5UZXh0Rm9yQ29udGV4dChSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBj
dXJyZW50UG9zaXRpb24sIHN0YXJ0UG9zaXRpb24pLnB0cigpKTsKICAgICAgICAgICAgICAgICBp
ZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY3VycmVudFBvc2l0aW9uLCBQYXJhZ3JhcGhHcmFu
dWxhcml0eSwgRGlyZWN0aW9uQmFja3dhcmQpKQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0
QmVmb3JlID0gbWFrZVN0cmluZygiXG4gIl9zLCBjb250ZXh0QmVmb3JlKTsKICAgICAgICAgICAg
IH0KQEAgLTI1MDIsNyArMjUxNiw3IEBAIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCBXZWJQYWdl
OjphdXRvY29ycmVjdGlvbkNvbnRleHQoKQogICAgICAgICAgICAgaWYgKCFhdEJvdW5kYXJ5T2ZH
cmFudWxhcml0eShlbmRQb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJk
KSAmJiB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkoZW5kUG9zaXRpb24sIFdvcmRHcmFudWxh
cml0eSwgRGlyZWN0aW9uRm9yd2FyZCkpCiAgICAgICAgICAgICAgICAgbmV4dFBvc2l0aW9uID0g
cG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZW5kUG9zaXRpb24sIFdvcmRHcmFu
dWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7CiAgICAgICAgICAgICBpZiAobmV4dFBvc2l0aW9u
LmlzTm90TnVsbCgpKQotICAgICAgICAgICAgICAgIGNvbnRleHRBZnRlciA9IHBsYWluVGV4dFJl
cGxhY2luZ05vQnJlYWtTcGFjZShSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBlbmRQ
b3NpdGlvbiwgbmV4dFBvc2l0aW9uKS5wdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dEFm
dGVyID0gcGxhaW5UZXh0Rm9yQ29udGV4dChSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgp
LCBlbmRQb3NpdGlvbiwgbmV4dFBvc2l0aW9uKS5wdHIoKSk7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTI2MzEsMTAgKzI2NDUsMTAgQEAgc3RhdGljIHZvaWQgZGF0YURldGVjdG9yTGlua1Bvc2l0
aW9uSW5mb3JtYXRpb24oRWxlbWVudCYgZWxlbWVudCwgSW50ZXJhY3Rpb25JbmYKICAgICAKICAg
ICBhdXRvIGxpbmtSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZWxlbWVudC5kb2N1bWVudCgpKTsKICAg
ICBsaW5rUmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cyhlbGVtZW50KTsKLSAgICBpbmZvLnRleHRC
ZWZvcmUgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2VFeHBhbmRlZEJ5Q2hh
cmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1JhbmdlLT5zdGFydFBvc2l0aW9u
KCksCi0gICAgICAgIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVjdGlv
bkJhY2t3YXJkKS5nZXQoKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKLSAg
ICBpbmZvLnRleHRBZnRlciA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZUV4
cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShsaW5rUmFuZ2UtPmVu
ZFBvc2l0aW9uKCksCi0gICAgICAgIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgs
IERpcmVjdGlvbkZvcndhcmQpLmdldCgpLCBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIHRy
dWUpOworICAgIGluZm8udGV4dEJlZm9yZSA9IHBsYWluVGV4dEZvckRpc3BsYXkocmFuZ2VFeHBh
bmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1JhbmdlLT5zdGFy
dFBvc2l0aW9uKCksCisgICAgICAgIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgs
IERpcmVjdGlvbkJhY2t3YXJkKS5nZXQoKSk7CisgICAgaW5mby50ZXh0QWZ0ZXIgPSBwbGFpblRl
eHRGb3JEaXNwbGF5KHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJv
dW5kYXJ5KGxpbmtSYW5nZS0+ZW5kUG9zaXRpb24oKSwKKyAgICAgICAgZGF0YURldGVjdGlvbkV4
dGVuZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0aW9uRm9yd2FyZCkuZ2V0KCkpOwogfQogI2VuZGlm
CiAKQEAgLTQxODYsMjAgKzQyMDAsMjEgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0RG9jdW1lbnRF
ZGl0aW5nQ29udGV4dChEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCByZXF1ZXMKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGF1dG8gbWFrZVN0cmluZyA9IFsmXShWaXNpYmxlUG9zaXRpb24m
IHN0YXJ0LCBWaXNpYmxlUG9zaXRpb24mIGVuZCkgLT4gTlNBdHRyaWJ1dGVkU3RyaW5nICogewor
ICAgIGF1dG8gbWFrZVN0cmluZyA9IFtdIChWaXNpYmxlUG9zaXRpb24mIHN0YXJ0LCBWaXNpYmxl
UG9zaXRpb24mIGVuZCkgLT4gUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gewogICAgICAg
ICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpIHx8IHN0YXJ0ID09IGVuZCkKICAg
ICAgICAgICAgIHJldHVybiBuaWw7CisgICAgICAgIFNpbXBsZVJhbmdlIHJhbmdlIHsgbWFrZUJv
dW5kYXJ5UG9pbnQoc3RhcnQuZGVlcEVxdWl2YWxlbnQoKSksIG1ha2VCb3VuZGFyeVBvaW50KGVu
ZC5kZWVwRXF1aXZhbGVudCgpKSB9OwogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmV0
dXJuIGVkaXRpbmctb2Zmc2V0LWNvbXBhdGlibGUgYXR0cmlidXRlZCBzdHJpbmdzIGlmIHRoYXQg
b3B0aW9uIGlzIHJlcXVlc3RlZC4KLSAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtT
cGFjZShzdGFydC5kZWVwRXF1aXZhbGVudCgpLCBlbmQuZGVlcEVxdWl2YWxlbnQoKSldKS5hdXRv
cmVsZWFzZSgpOworICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdFdpdGhTdHJpbmc6V2ViQ29yZTo6cGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1Nw
YWNlKHJhbmdlKV0pOwogICAgIH07CiAKLSAgICBjb250ZXh0LmNvbnRleHRCZWZvcmUgPSBtYWtl
U3RyaW5nKGNvbnRleHRCZWZvcmVTdGFydCwgc3RhcnRPZlJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0
aW9uKTsKLSAgICBjb250ZXh0LnNlbGVjdGVkVGV4dCA9IG1ha2VTdHJpbmcoc3RhcnRPZlJhbmdl
T2ZJbnRlcmVzdEluU2VsZWN0aW9uLCBlbmRPZlJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0aW9uKTsK
LSAgICBjb250ZXh0LmNvbnRleHRBZnRlciA9IG1ha2VTdHJpbmcoZW5kT2ZSYW5nZU9mSW50ZXJl
c3RJblNlbGVjdGlvbiwgY29udGV4dEFmdGVyRW5kKTsKKyAgICBjb250ZXh0LmNvbnRleHRCZWZv
cmUgPSBtYWtlU3RyaW5nKGNvbnRleHRCZWZvcmVTdGFydCwgc3RhcnRPZlJhbmdlT2ZJbnRlcmVz
dEluU2VsZWN0aW9uKS5nZXQoKTsKKyAgICBjb250ZXh0LnNlbGVjdGVkVGV4dCA9IG1ha2VTdHJp
bmcoc3RhcnRPZlJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0aW9uLCBlbmRPZlJhbmdlT2ZJbnRlcmVz
dEluU2VsZWN0aW9uKS5nZXQoKTsKKyAgICBjb250ZXh0LmNvbnRleHRBZnRlciA9IG1ha2VTdHJp
bmcoZW5kT2ZSYW5nZU9mSW50ZXJlc3RJblNlbGVjdGlvbiwgY29udGV4dEFmdGVyRW5kKS5nZXQo
KTsKICAgICBpZiAoY29tcG9zaXRpb25SYW5nZSAmJiByYW5nZXNPdmVybGFwKHJhbmdlT2ZJbnRl
cmVzdC5nZXQoKSwgY29tcG9zaXRpb25SYW5nZS5nZXQoKSkpIHsKICAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIGNvbXBvc2l0aW9uU3RhcnQoY29tcG9zaXRpb25SYW5nZS0+c3RhcnRQb3NpdGlvbigp
KTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGNvbXBvc2l0aW9uRW5kKGNvbXBvc2l0aW9uUmFu
Z2UtPmVuZFBvc2l0aW9uKCkpOwotICAgICAgICBjb250ZXh0Lm1hcmtlZFRleHQgPSBtYWtlU3Ry
aW5nKGNvbXBvc2l0aW9uU3RhcnQsIGNvbXBvc2l0aW9uRW5kKTsKKyAgICAgICAgY29udGV4dC5t
YXJrZWRUZXh0ID0gbWFrZVN0cmluZyhjb21wb3NpdGlvblN0YXJ0LCBjb21wb3NpdGlvbkVuZCku
Z2V0KCk7CiAgICAgICAgIGNvbnRleHQuc2VsZWN0ZWRSYW5nZUluTWFya2VkVGV4dC5sb2NhdGlv
biA9IGRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyhzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxl
Y3Rpb24sIGNvbXBvc2l0aW9uU3RhcnQpOwogICAgICAgICBjb250ZXh0LnNlbGVjdGVkUmFuZ2VJ
bk1hcmtlZFRleHQubGVuZ3RoID0gW2NvbnRleHQuc2VsZWN0ZWRUZXh0LnN0cmluZyBsZW5ndGhd
OwogICAgIH0KQEAgLTQyMjYsNyArNDI0MSw4IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdERvY3Vt
ZW50RWRpdGluZ0NvbnRleHQoRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgcmVxdWVzCiAg
ICAgICAgIGlmIChhdXRvIGNvbnRleHRSYW5nZSA9IG1ha2VSYW5nZShjb250ZXh0QmVmb3JlU3Rh
cnQsIGNvbnRleHRBZnRlckVuZCkpCiAgICAgICAgICAgICBjb250ZXh0LnRleHRSZWN0cyA9IGNo
YXJhY3RlclJlY3RzRm9yUmFuZ2UoKmNvbnRleHRSYW5nZSwgMCk7CiAgICAgfSBlbHNlIGlmICh3
YW50c01hcmtlZFRleHRSZWN0cyAmJiBjb21wb3NpdGlvblJhbmdlKSB7Ci0gICAgICAgIGF1dG8g
Y29tcG9zaXRpb25TdGFydE9mZnNldCA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShj
b250ZXh0QmVmb3JlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKSwgY29tcG9zaXRpb25SYW5nZS0+c3Rh
cnRQb3NpdGlvbigpKS5sZW5ndGgoKTsKKyAgICAgICAgU2ltcGxlUmFuZ2UgcmFuZ2UgeyBtYWtl
Qm91bmRhcnlQb2ludChjb250ZXh0QmVmb3JlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKSksIG1ha2VC
b3VuZGFyeVBvaW50KGNvbXBvc2l0aW9uUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSkgfTsKKyAgICAg
ICAgYXV0byBjb21wb3NpdGlvblN0YXJ0T2Zmc2V0ID0gV2ViQ29yZTo6cGxhaW5UZXh0UmVwbGFj
aW5nTm9CcmVha1NwYWNlKHJhbmdlKS5sZW5ndGgoKTsKICAgICAgICAgY29udGV4dC50ZXh0UmVj
dHMgPSBjaGFyYWN0ZXJSZWN0c0ZvclJhbmdlKCpjb21wb3NpdGlvblJhbmdlLCBjb21wb3NpdGlv
blN0YXJ0T2Zmc2V0KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggZDI1ZGJlZmJlZGY4OTZhOWZlMjIzOGFm
ODM4MWJlMWU4MjZlZmE1OC4uM2EwZGM0NTIwMTc2YzRjYjM5ZDE4Y2Q1MTAyMmEwNGViMDdjZDc4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KQEAgLTg2LDcgKzg2LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVmlldy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU2Nyb2xsVmlldy5oPgotI2ltcG9ydCA8V2ViQ29yZS9TaW1wbGVSYW5nZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9TdHlsZUluaGVyaXRlZERhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGV4dEl0ZXJhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Zpc2libGVVbml0cy5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggZWI5MjY4YzVkNzhk
NWUwNGQ3N2I2YWViNTBhNWMyY2MwOWM2YTEyMi4uYmMzYmViZGYyNjJmYTRlY2ZiMDE4NzhiM2My
YjBjNTVjM2VhOTAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCkBAIC0xMDAsNyArMTAwLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KLSNpbXBvcnQgPFdlYkNvcmUvU2ltcGxl
UmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU21hcnRSZXBsYWNlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdWJmcmFtZUxvYWRlci5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5k
ZXggZWVhZjBhMDllOGI5MDZkMTY1ZGFhMTQ4MTQ2YzRjODMyY2U2YmEyZS4uNWJhMmU3ODA0NmY0
NjgwN2QxOGViNDE4NzczYWU4YjIxNDIxZmZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC03MDIzLDggKzcwMjMsOCBAQCAtIChOU0F0
dHJpYnV0ZWRTdHJpbmcgKilfYXR0cmlidXRlZFN0cmluZ0Zyb21ET01SYW5nZTooRE9NUmFuZ2Ug
KilyYW5nZQogLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopX2xlZ2FjeUF0dHJpYnV0ZWRTdHJpbmdG
cm9tOihET01Ob2RlKilzdGFydENvbnRhaW5lciBvZmZzZXQ6KGludClzdGFydE9mZnNldCB0bzoo
RE9NTm9kZSopZW5kQ29udGFpbmVyIG9mZnNldDooaW50KWVuZE9mZnNldAogewogICAgIHJldHVy
biBhdHRyaWJ1dGVkU3RyaW5nQmV0d2VlblN0YXJ0QW5kRW5kKAotICAgICAgICBXZWJDb3JlOjpQ
b3NpdGlvbiB7IGNvcmUoc3RhcnRDb250YWluZXIpLCBzdGFydE9mZnNldCwgV2ViQ29yZTo6UG9z
aXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciB9LAotICAgICAgICBXZWJDb3JlOjpQb3Np
dGlvbiB7IGNvcmUoZW5kQ29udGFpbmVyKSwgZW5kT2Zmc2V0LCBXZWJDb3JlOjpQb3NpdGlvbjo6
UG9zaXRpb25Jc09mZnNldEluQW5jaG9yIH0pOworICAgICAgICBXZWJDb3JlOjpQb3NpdGlvbiB7
IGNvcmUoc3RhcnRDb250YWluZXIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnRPZmZzZXQp
LCBXZWJDb3JlOjpQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yIH0sCisgICAgICAg
IFdlYkNvcmU6OlBvc2l0aW9uIHsgY29yZShlbmRDb250YWluZXIpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZW5kT2Zmc2V0KSwgV2ViQ29yZTo6UG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFu
Y2hvciB9KTsKIH0KIAogLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFN0cmluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0
b3IubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5t
bQppbmRleCAzNTdjNTI4MjgzNmFhOGRiYWRhMjFlY2U0OTM4ODVlNGZlOGJiMWIyLi42Yjg4YmJm
MTEzYzdhMGFkMzk5NTg0YTUxMDg1OWIwOGNiMjFjZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQpAQCAtMzAsNyArMzAsNiBA
QAogI2ltcG9ydCAiV2ViVHlwZXNJbnRlcm5hbC5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUv
SW5pdGlhbGl6ZVRocmVhZGluZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9SYW5nZS5oPgotI2ltcG9y
dCA8V2ViQ29yZS9TaW1wbGVSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0b3Iu
aD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgpA
QCAtNzAsMzIgKzY5LDQwIEBAIC0gKGlkKWluaXRXaXRoUmFuZ2U6KERPTVJhbmdlICopcmFuZ2UK
ICAgICAgICAgcmV0dXJuIHNlbGY7CiAgICAgCiAgICAgX3ByaXZhdGUgPSBbW1dlYlRleHRJdGVy
YXRvclByaXZhdGUgYWxsb2NdIGluaXRdOwotICAgIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+KGNvcmUocmFuZ2UpKTsKKyAgICBpZiAo
IXJhbmdlKQorICAgICAgICByZXR1cm4gc2VsZjsKKworICAgIF9wcml2YXRlLT5fdGV4dEl0ZXJh
dG9yID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+KCpjb3JlKHJhbmdlKSk7CiAg
ICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpYWR2YW5jZQogewotICAgIF9wcml2YXRlLT5f
dGV4dEl0ZXJhdG9yLT5hZHZhbmNlKCk7CisgICAgaWYgKF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9y
KQorICAgICAgICBfcHJpdmF0ZS0+X3RleHRJdGVyYXRvci0+YWR2YW5jZSgpOwogICAgIF9wcml2
YXRlLT5fdXBjb252ZXJ0ZWRUZXh0LnNocmluaygwKTsKIH0KIAogLSAoQk9PTClhdEVuZAogewot
ICAgIHJldHVybiBfcHJpdmF0ZS0+X3RleHRJdGVyYXRvci0+YXRFbmQoKTsKKyAgICByZXR1cm4g
X3ByaXZhdGUtPl90ZXh0SXRlcmF0b3IgJiYgX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3ItPmF0RW5k
KCk7CiB9CiAKIC0gKERPTVJhbmdlICopY3VycmVudFJhbmdlCiB7CisgICAgaWYgKCFfcHJpdmF0
ZS0+X3RleHRJdGVyYXRvcikKKyAgICAgICAgcmV0dXJuIG5pbDsKICAgICBhdXRvJiB0ZXh0SXRl
cmF0b3IgPSAqX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3I7CiAgICAgaWYgKHRleHRJdGVyYXRvci5h
dEVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICByZXR1cm4ga2l0KGNyZWF0ZUxpdmVSYW5nZSh0ZXh0SXRlcmF0b3IucmFuZ2UoKSkucHRyKCkp
OwogfQogCiAvLyBGSVhNRTogQ29uc2lkZXIgZGVwcmVjYXRpbmcgdGhpcyBtZXRob2QgYW5kIGNy
ZWF0aW5nIG9uZSB0aGF0IGRvZXMgbm90IHJlcXVpcmUgY29weWluZyA4LWJpdCBjaGFyYWN0ZXJz
LgogLSAoY29uc3QgdW5pY2hhciopY3VycmVudFRleHRQb2ludGVyCiB7CisgICAgaWYgKCFfcHJp
dmF0ZS0+X3RleHRJdGVyYXRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgU3RyaW5n
VmlldyB0ZXh0ID0gX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3ItPnRleHQoKTsKICAgICB1bnNpZ25l
ZCBsZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoKQpAQCAtMTEwLDcgKzEx
Nyw3IEBAIC0gKGNvbnN0IHVuaWNoYXIqKWN1cnJlbnRUZXh0UG9pbnRlcgogCiAtIChOU1VJbnRl
Z2VyKWN1cnJlbnRUZXh0TGVuZ3RoCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5fdGV4dEl0ZXJh
dG9yLT50ZXh0KCkubGVuZ3RoKCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9y
ID8gX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3ItPnRleHQoKS5sZW5ndGgoKSA6IDA7CiB9CiAKIEBl
bmQKQEAgLTExOSwxMiArMTI2LDEyIEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJUZXh0SXRlcmF0b3Ig
KFdlYlRleHRJdGVyYXRvckRlcHJlY2F0ZWQpCiAKIC0gKERPTU5vZGUgKiljdXJyZW50Tm9kZQog
ewotICAgIHJldHVybiBraXQoX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3ItPm5vZGUoKSk7CisgICAg
cmV0dXJuIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yID8ga2l0KF9wcml2YXRlLT5fdGV4dEl0ZXJh
dG9yLT5ub2RlKCkpIDogbmlsOwogfQogCiAtIChOU1N0cmluZyAqKWN1cnJlbnRUZXh0CiB7Ci0g
ICAgcmV0dXJuIFtbX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3ItPnRleHQoKS5jcmVhdGVOU1N0cmlu
ZygpLmdldCgpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBfcHJpdmF0ZS0+X3Rl
eHRJdGVyYXRvciA/IF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yLT50ZXh0KCkuY3JlYXRlTlNTdHJp
bmcoKS5hdXRvcmVsZWFzZSgpIDogQCIiOwogfQogCiBAZW5kCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>