<?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>100927</bug_id>
          
          <creation_ts>2012-11-01 01:32:06 -0700</creation_ts>
          <short_desc>Improve ContentTypeParser, so that it could be used to validate mime type according to RFC</short_desc>
          <delta_ts>2012-11-19 10:58:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>XML</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>99983</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Shalamov">alexander.shalamov</reporter>
          <assigned_to name="Alexander Shalamov">alexander.shalamov</assigned_to>
          <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>755981</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-11-01 01:32:06 -0700</bug_when>
    <thetext>At the moment ContentTypeParser contains validation and tokenization logic.
HTTPValidation::isValidHTTPHeader provides basic validation, but that is not enough to validate Content-Type value for XHR request.

It would be beneficial to make ContentTypeParser more flexible and add e.g. ContentTypeValidator that would only validate mime types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755989</commentid>
    <comment_count>1</comment_count>
      <attachid>171796</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-11-01 01:44:22 -0700</bug_when>
    <thetext>Created attachment 171796
Patch 1

- Added ContentTypeValidator. Content type string could be validated using ContentTypeValidator&lt;&gt;(contentTypeString).isValid()
- Removed StringBuilder usage that was inefficient.
- Removed &quot;Content-Type&quot; prefix that is not required to validate and parse mime type value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756404</commentid>
    <comment_count>2</comment_count>
      <attachid>171796</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-11-01 10:16:07 -0700</bug_when>
    <thetext>Comment on attachment 171796
Patch 1

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

This interface seems overly complicated. The task is to tell if a string is valid, so the client should just call a function. Figuring out how to combine the templates into something usable is an unnecessary complication in this case.

If templates are desired for implementation, that could be an implementation detail, no need to expose that at call sites.

&gt; Source/WebCore/platform/network/ContentTypeParser.cpp:186
&gt; +    const unsigned contentTypeLength = contentType.length();

As a matter of coding style, we don&apos;t use const with local variables.

&gt; Source/WebCore/platform/network/ContentTypeParser.h:82
&gt; -    KeyValuePairs m_parameters;
&gt; -    String m_mimeType;
&gt; +    String m_contentType;
&gt; +    mutable KeyValuePairs m_parameters;
&gt; +    mutable String m_mimeType;

If &quot;ContentTypeParser&quot; encapsulates parsed results, then it&apos;s not a parser, but a &quot;ParsedContentType&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757096</commentid>
    <comment_count>3</comment_count>
      <attachid>172034</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-11-02 04:40:54 -0700</bug_when>
    <thetext>Created attachment 172034
Patch 2

- Renamed ContentTypeParser to ParsedContentType.
- Moved implementation details to cpp.
- const unsigned contentTypeLength ... =&gt; unsigned contentTypeLength ...
- Added isValidContentType function that could be used to validate content type strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757099</commentid>
    <comment_count>4</comment_count>
      <attachid>172037</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-11-02 04:51:33 -0700</bug_when>
    <thetext>Created attachment 172037
Patch 3

- rebased to master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757376</commentid>
    <comment_count>5</comment_count>
      <attachid>172037</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-02 11:27:14 -0700</bug_when>
    <thetext>Comment on attachment 172037
Patch 3

Attachment 172037 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14687918

New failing tests:
mhtml/shared_buffer_bug.mht
mhtml/simple_page_unmht.mht
mhtml/page_with_image_ie.mht
mhtml/multi_frames_ie.mht
mhtml/multi_frames_binary.mht
mhtml/check_domain.mht
mhtml/page_with_image_unmht.mht
mhtml/multi_frames_unmht.mht
mhtml/page_with_css_and_js_ie.mht
mhtml/page_with_css_and_js_unmht.mht</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758312</commentid>
    <comment_count>6</comment_count>
      <attachid>172289</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-11-05 00:59:29 -0800</bug_when>
    <thetext>Created attachment 172289
Patch 4

- Check for \r \n characters inside isValidContentType(const String&amp;) function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758343</commentid>
    <comment_count>7</comment_count>
      <attachid>172289</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-05 01:52:56 -0800</bug_when>
    <thetext>Comment on attachment 172289
Patch 4

Attachment 172289 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14722695

New failing tests:
mhtml/shared_buffer_bug.mht
mhtml/simple_page_unmht.mht
mhtml/page_with_image_ie.mht
mhtml/multi_frames_ie.mht
mhtml/multi_frames_binary.mht
mhtml/check_domain.mht
mhtml/page_with_image_unmht.mht
mhtml/multi_frames_unmht.mht
mhtml/page_with_css_and_js_ie.mht
mhtml/page_with_css_and_js_unmht.mht</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758442</commentid>
    <comment_count>8</comment_count>
      <attachid>172318</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-11-05 05:24:34 -0800</bug_when>
    <thetext>Created attachment 172318
Patch 5

- fixed typo lenght =&gt; length
- fixed token length calculation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758523</commentid>
    <comment_count>9</comment_count>
      <attachid>172318</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-05 07:41:03 -0800</bug_when>
    <thetext>Comment on attachment 172318
Patch 5

Attachment 172318 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14748040

New failing tests:
mhtml/shared_buffer_bug.mht
mhtml/simple_page_unmht.mht
mhtml/page_with_image_ie.mht
mhtml/multi_frames_ie.mht
mhtml/multi_frames_binary.mht
mhtml/check_domain.mht
mhtml/page_with_image_unmht.mht
mhtml/multi_frames_unmht.mht
mhtml/page_with_css_and_js_ie.mht
mhtml/page_with_css_and_js_unmht.mht</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758704</commentid>
    <comment_count>10</comment_count>
      <attachid>172365</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-11-05 10:59:11 -0800</bug_when>
    <thetext>Created attachment 172365
Patch 6

- exclude quotes from parsed value</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769419</commentid>
    <comment_count>11</comment_count>
      <attachid>172365</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-11-16 10:24:25 -0800</bug_when>
    <thetext>Comment on attachment 172365
Patch 6

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

Looks good to me. A few nits below.

&gt; Source/WebCore/platform/network/ParsedContentType.cpp:2
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

Is it intentional that you did not add your copyright, or update the date if you work for Google?

&gt; Source/WebCore/platform/network/ParsedContentType.cpp:39
&gt; +class EmptyParsedContentType {

We normally use &quot;dummy&quot; for unused variables. Perhaps it would be more understandable here, too.

&gt; Source/WebCore/platform/network/ParsedContentType.cpp:59
&gt; +    const unsigned inputLength = input.length();
&gt; +    const unsigned index = startIndex;

As a matter of coding style, we don&apos;t use const with local variables.

&gt; Source/WebCore/platform/network/ParsedContentType.cpp:77
&gt; +    const unsigned inputLength = input.length();
&gt; +    const unsigned index = startIndex + 1;

Ditto.

&quot;index&quot; is not a good name for a variable other than a loop one.

&gt; Source/WebCore/platform/network/ParsedContentType.cpp:153
&gt; +bool parseContentType(const String&amp; contentType, T&amp; parserType)

parserTyoe does not seem to be accurate. I think that this should be &quot;ReceiverType&amp; receiver&quot;.

&gt; Source/WebCore/platform/network/ParsedContentType.h:36
&gt; +#include &lt;wtf/text/WTFString.h&gt;

This include should not be needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770512</commentid>
    <comment_count>12</comment_count>
      <attachid>174924</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-11-19 02:25:44 -0800</bug_when>
    <thetext>Created attachment 174924
Patch 7

- fixes according to review comments
- rebased to master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770598</commentid>
    <comment_count>13</comment_count>
      <attachid>174950</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-11-19 04:27:23 -0800</bug_when>
    <thetext>Created attachment 174950
Patch 8

- fixed typo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770864</commentid>
    <comment_count>14</comment_count>
      <attachid>174950</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 10:58:18 -0800</bug_when>
    <thetext>Comment on attachment 174950
Patch 8

Clearing flags on attachment: 174950

Committed r135176: &lt;http://trac.webkit.org/changeset/135176&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770865</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 10:58:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171796</attachid>
            <date>2012-11-01 01:44:22 -0700</date>
            <delta_ts>2012-11-02 04:40:54 -0700</delta_ts>
            <desc>Patch 1</desc>
            <filename>webcore_contenttypevalidator_1.patch</filename>
            <type>text/plain</type>
            <size>12366</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5YjM3NTQ0Li4wNzBmN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTItMTEtMDEgIEFsZXhhbmRlciBTaGFsYW1vdiAgPGFsZXhhbmRlci5zaGFsYW1vdkBp
bnRlbC5jb20+CisKKyAgICAgICAgSW1wcm92ZSBDb250ZW50VHlwZVBhcnNlciwgc28gdGhhdCBp
dCBjb3VsZCBiZSB1c2VkIHRvIHZhbGlkYXRlIG1pbWUgdHlwZSBhY2NvcmRpbmcgdG8gUkZDCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA5MjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGFkZHMgQ29udGVudFR5cGVWYWxpZGF0b3IgdGhhdCBjb3VsZCBiZSB1c2VkIHRvIHZhbGlkYXRl
IG1pbWUgdHlwZQorICAgICAgICBhY2NvcmRpbmcgdG8gUkZDIDI2MTYgc2VjdGlvbiA0LjIuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6c2tpcFNwYWNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpwYXJzZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlUXVvdGVkU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OnN1YnN0cmluZ0ZvclJhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRUeXBlUGFyc2VyOjpDb250ZW50VHlwZVBhcnNlcik6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50VHlwZVBhcnNlcjo6c2V0Q29udGVudFR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFR5cGVQYXJzZXI6OnNldENvbnRlbnRUeXBlUGFyYW1ldGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ojo6Q29udGVudFR5cGVWYWxpZGF0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvQ29udGVudFR5cGVQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
VmFsaWRhdGlvblBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uUGFyc2VyOjpz
ZXRDb250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uUGFyc2VyOjpzZXRD
b250ZW50VHlwZVBhcmFtZXRlcik6CisgICAgICAgIChDb250ZW50VHlwZVZhbGlkYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50VHlwZVZhbGlkYXRvcjo6aXNWYWxpZCk6CisgICAgICAg
IChDb250ZW50VHlwZVBhcnNlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9NSU1FSGVh
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVIZWFkZXI6OnBhcnNlSGVhZGVyKToKKwog
MjAxMi0xMC0yOSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFr
ZSByZW5kZXJpbmcgdGFibGVzIHdpdGggPGNvbGdyb3Vwcz4gdHdpY2UgYXMgZmFzdCBieSBhdm9p
ZGluZyB3YWxraW5nIHRoZSBET00gZm9yIGNvbGdyb3VwcyA0IHRpbWVzIGZvciBlYWNoIGNlbGwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBh
cnNlci5jcHAKaW5kZXggZGRhNDU4OC4uNzYwM2IwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBhcnNlci5jcHAKQEAgLTM2LDcgKzM2
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCBza2lwU3BhY2VzKGNv
bnN0IFN0cmluZyYgaW5wdXQsIHNpemVfdCYgc3RhcnRJbmRleCkKK3RlbXBsYXRlIGNsYXNzIENv
bnRlbnRUeXBlVmFsaWRhdG9yPFZhbGlkYXRpb25QYXJzZXI+OworCitzdGF0aWMgdm9pZCBza2lw
U3BhY2VzKGNvbnN0IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkJiBzdGFydEluZGV4KQogewogICAg
IHdoaWxlIChzdGFydEluZGV4IDwgaW5wdXQubGVuZ3RoKCkgJiYgaW5wdXRbc3RhcnRJbmRleF0g
PT0gJyAnKQogICAgICAgICArK3N0YXJ0SW5kZXg7CkBAIC00Nyw1MSArNDksNjAgQEAgc3RhdGlj
IGJvb2wgaXNUb2tlbkNoYXJhY3RlcihjaGFyIGMpCiAgICAgcmV0dXJuIGlzQVNDSUkoYykgJiYg
YyA+ICcgJyAmJiBjICE9ICciJyAmJiBjICE9ICcoJyAmJiBjICE9ICcpJyAmJiBjICE9ICcsJyAm
JiBjICE9ICcvJyAmJiAoYyA8ICc6JyB8fCBjID4gJ0AnKSAmJiAoYyA8ICdbJyB8fCBjID4gJ10n
KTsKIH0KIAotc3RhdGljIFN0cmluZyBwYXJzZVRva2VuKGNvbnN0IFN0cmluZyYgaW5wdXQsIHNp
emVfdCYgc3RhcnRJbmRleCkKK3N0YXRpYyBTdWJzdHJpbmdSYW5nZSBwYXJzZVRva2VuKGNvbnN0
IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkJiBzdGFydEluZGV4KQogewotICAgIGlmIChzdGFydElu
ZGV4ID49IGlucHV0Lmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBT
dHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgd2hpbGUgKHN0YXJ0SW5kZXggPCBpbnB1
dC5sZW5ndGgoKSkgewotICAgICAgICBjaGFyIGN1cnJlbnRDaGFyYWN0ZXIgPSBpbnB1dFtzdGFy
dEluZGV4XTsKLSAgICAgICAgaWYgKCFpc1Rva2VuQ2hhcmFjdGVyKGN1cnJlbnRDaGFyYWN0ZXIp
KQotICAgICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoY3VycmVudENoYXJhY3Rlcik7Ci0gICAgICAgICsrc3RhcnRJ
bmRleDsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnB1dExlbmdodCA9IGlucHV0Lmxlbmd0aCgpOwor
ICAgIGNvbnN0IHVuc2lnbmVkIGluZGV4ID0gc3RhcnRJbmRleDsKKyAgICB1bnNpZ25lZCYgdG9r
ZW5MZW5ndGggPSBzdGFydEluZGV4OworCisgICAgaWYgKHRva2VuTGVuZ3RoID49IGlucHV0TGVu
Z2h0KQorICAgICAgICByZXR1cm4gU3Vic3RyaW5nUmFuZ2UoKTsKKworICAgIHdoaWxlICh0b2tl
bkxlbmd0aCA8IGlucHV0TGVuZ2h0KSB7CisgICAgICAgIGlmICghaXNUb2tlbkNoYXJhY3Rlcihp
bnB1dFt0b2tlbkxlbmd0aF0pKQorICAgICAgICAgICAgcmV0dXJuIFN1YnN0cmluZ1JhbmdlKGlu
ZGV4LCB0b2tlbkxlbmd0aCk7CisgICAgICAgICsrdG9rZW5MZW5ndGg7CiAgICAgfQotICAgIHJl
dHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CisKKyAgICByZXR1cm4gU3Vic3RyaW5nUmFu
Z2UoaW5kZXgsIHRva2VuTGVuZ3RoKTsKIH0KIAotc3RhdGljIFN0cmluZyBwYXJzZVF1b3RlZFN0
cmluZyhjb25zdCBTdHJpbmcmIGlucHV0LCBzaXplX3QmIHN0YXJ0SW5kZXgpCitzdGF0aWMgU3Vi
c3RyaW5nUmFuZ2UgcGFyc2VRdW90ZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWdu
ZWQmIHN0YXJ0SW5kZXgpCiB7Ci0gICAgaWYgKHN0YXJ0SW5kZXggPj0gaW5wdXQubGVuZ3RoKCkp
Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnB1dExlbmdo
dCA9IGlucHV0Lmxlbmd0aCgpOworICAgIGNvbnN0IHVuc2lnbmVkIGluZGV4ID0gc3RhcnRJbmRl
eDsKKyAgICB1bnNpZ25lZCYgc3RyaW5nTGVuZ3RoID0gc3RhcnRJbmRleDsKIAotICAgIGlmIChp
bnB1dFtzdGFydEluZGV4KytdICE9ICciJyB8fCBzdGFydEluZGV4ID49IGlucHV0Lmxlbmd0aCgp
KQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgaWYgKHN0cmluZ0xlbmd0aCA+PSBpbnB1
dExlbmdodCkKKyAgICAgICAgcmV0dXJuIFN1YnN0cmluZ1JhbmdlKCk7CisKKyAgICBpZiAoaW5w
dXRbc3RyaW5nTGVuZ3RoKytdICE9ICciJyB8fCBzdHJpbmdMZW5ndGggPj0gaW5wdXRMZW5naHQp
CisgICAgICAgIHJldHVybiBTdWJzdHJpbmdSYW5nZSgpOwogCi0gICAgU3RyaW5nQnVpbGRlciBz
dHJpbmdCdWlsZGVyOwogICAgIGJvb2wgbGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IGZhbHNl
OwogICAgIGNoYXIgY3VycmVudENoYXJhY3RlcjsKLSAgICB3aGlsZSAoKGN1cnJlbnRDaGFyYWN0
ZXIgPSBpbnB1dFtzdGFydEluZGV4KytdKSAhPSAnIicgfHwgbGFzdENoYXJhY3Rlcldhc0JhY2tz
bGFzaCkgewotICAgICAgICBpZiAoc3RhcnRJbmRleCA+PSBpbnB1dC5sZW5ndGgoKSkKLSAgICAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB3aGlsZSAoKGN1cnJlbnRDaGFyYWN0ZXIgPSBp
bnB1dFtzdHJpbmdMZW5ndGgrK10pICE9ICciJyB8fCBsYXN0Q2hhcmFjdGVyV2FzQmFja3NsYXNo
KSB7CisgICAgICAgIGlmIChzdHJpbmdMZW5ndGggPj0gaW5wdXRMZW5naHQpCisgICAgICAgICAg
ICByZXR1cm4gU3Vic3RyaW5nUmFuZ2UoKTsKICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIg
PT0gJ1xcJyAmJiAhbGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCkgewogICAgICAgICAgICAgbGFz
dENoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IHRydWU7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogICAgICAgICBpZiAobGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCkKICAgICAgICAg
ICAgIGxhc3RDaGFyYWN0ZXJXYXNCYWNrc2xhc2ggPSBmYWxzZTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoY3VycmVudENoYXJhY3Rlcik7CiAgICAgfQotICAgIHJldHVybiBzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIFN1YnN0cmluZ1JhbmdlKGluZGV4LCBzdHJp
bmdMZW5ndGgpOworfQorCitzdGF0aWMgU3RyaW5nIHN1YnN0cmluZ0ZvclJhbmdlKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBjb25zdCBTdWJzdHJpbmdSYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJu
IHN0cmluZy5zdWJzdHJpbmcocmFuZ2UuZmlyc3QsIHJhbmdlLnNlY29uZCk7CiB9CiAKIENvbnRl
bnRUeXBlUGFyc2VyOjpDb250ZW50VHlwZVBhcnNlcihjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQogICAgIDogbV9jb250ZW50VHlwZShjb250ZW50VHlwZS5zdHJpcFdoaXRlU3BhY2UoKSkKIHsK
LSAgICBwYXJzZSgpOworICAgIENvbnRlbnRUeXBlVmFsaWRhdG9yPENvbnRlbnRUeXBlUGFyc2Vy
PihtX2NvbnRlbnRUeXBlLCAqdGhpcyk7CiB9CiAKIFN0cmluZyBDb250ZW50VHlwZVBhcnNlcjo6
Y2hhcnNldCgpIGNvbnN0CkBAIC0xMDksNiArMTIwLDE2IEBAIHNpemVfdCBDb250ZW50VHlwZVBh
cnNlcjo6cGFyYW1ldGVyQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX3BhcmFtZXRlcnMuc2l6
ZSgpOwogfQogCit2b2lkIENvbnRlbnRUeXBlUGFyc2VyOjpzZXRDb250ZW50VHlwZShjb25zdCBT
dWJzdHJpbmdSYW5nZSYgY29udGVudFJhbmdlKSBjb25zdAoreworICAgIG1fbWltZVR5cGUgPSBz
dWJzdHJpbmdGb3JSYW5nZShtX2NvbnRlbnRUeXBlLCBjb250ZW50UmFuZ2UpLnN0cmlwV2hpdGVT
cGFjZSgpOworfQorCit2b2lkIENvbnRlbnRUeXBlUGFyc2VyOjpzZXRDb250ZW50VHlwZVBhcmFt
ZXRlcihjb25zdCBTdWJzdHJpbmdSYW5nZSYga2V5LCBjb25zdCBTdWJzdHJpbmdSYW5nZSYgdmFs
dWUpIGNvbnN0Cit7CisgICAgbV9wYXJhbWV0ZXJzLnNldChzdWJzdHJpbmdGb3JSYW5nZShtX2Nv
bnRlbnRUeXBlLCBrZXkpLCBzdWJzdHJpbmdGb3JSYW5nZShtX2NvbnRlbnRUeXBlLCB2YWx1ZSkp
OworfQorCiAvLyBGcm9tIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzIwNDUjc2VjdGlv
bi01LjE6CiAvLwogLy8gY29udGVudCA6PSAiQ29udGVudC1UeXBlIiAiOiIgdHlwZSAiLyIgc3Vi
dHlwZQpAQCAtMTU1LDY2ICsxNzYsNjkgQEAgc2l6ZV90IENvbnRlbnRUeXBlUGFyc2VyOjpwYXJh
bWV0ZXJDb3VudCgpIGNvbnN0CiAvLyAgICAgICAgICAgICAgIDsgTXVzdCBiZSBpbiBxdW90ZWQt
c3RyaW5nLAogLy8gICAgICAgICAgICAgICA7IHRvIHVzZSB3aXRoaW4gcGFyYW1ldGVyIHZhbHVl
cwogCi12b2lkIENvbnRlbnRUeXBlUGFyc2VyOjpwYXJzZSgpCit0ZW1wbGF0ZSA8Y2xhc3MgVD4K
K0NvbnRlbnRUeXBlVmFsaWRhdG9yPFQ+OjpDb250ZW50VHlwZVZhbGlkYXRvcihjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBjb25zdCBUJiBwYXJzZXJUeXBlKQogewotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgU3RyaW5nLCBjb250ZW50VHlwZVBhcmFtZXRlck5hbWUsIChBU0NJSUxp
dGVyYWwoIkNvbnRlbnQtVHlwZSIpKSk7Ci0KLSAgICBpZiAoIW1fY29udGVudFR5cGUuc3RhcnRz
V2l0aChjb250ZW50VHlwZVBhcmFtZXRlck5hbWUpKSB7Ci0gICAgICAgIExPR19FUlJPUigiSW52
YWxpZCBDb250ZW50LVR5cGUgc3RyaW5nICclcyciLCBtX2NvbnRlbnRUeXBlLmFzY2lpKCkuZGF0
YSgpKTsKKyAgICBpZiAoY29udGVudFR5cGUuY29udGFpbnMoJ1xyJykgfHwgY29udGVudFR5cGUu
Y29udGFpbnMoJ1xuJykpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc2l6ZV90IGNvbnRl
bnRUeXBlTGVuZ3RoID0gbV9jb250ZW50VHlwZS5sZW5ndGgoKTsKLSAgICBzaXplX3QgaW5kZXgg
PSBjb250ZW50VHlwZVBhcmFtZXRlck5hbWUubGVuZ3RoKCk7Ci0gICAgc2tpcFNwYWNlcyhtX2Nv
bnRlbnRUeXBlLCBpbmRleCk7Ci0gICAgaWYgKGluZGV4ID49IGNvbnRlbnRUeXBlTGVuZ3RoIHx8
IG1fY29udGVudFR5cGVbaW5kZXhdICE9ICc6JyB8fCArK2luZGV4ID49IGNvbnRlbnRUeXBlTGVu
Z3RoKSAgewotICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgQ29udGVudC1UeXBlIHN0cmluZyAn
JXMnIiwgbV9jb250ZW50VHlwZS5hc2NpaSgpLmRhdGEoKSk7CisKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IDA7CisgICAgY29uc3QgdW5zaWduZWQgY29udGVudFR5cGVMZW5ndGggPSBjb250ZW50VHlw
ZS5sZW5ndGgoKTsKKyAgICBza2lwU3BhY2VzKGNvbnRlbnRUeXBlLCBpbmRleCk7CisgICAgaWYg
KGluZGV4ID49IGNvbnRlbnRUeXBlTGVuZ3RoKSAgeworICAgICAgICBMT0dfRVJST1IoIkludmFs
aWQgQ29udGVudC1UeXBlIHN0cmluZyAnJXMnIiwgY29udGVudFR5cGUuYXNjaWkoKS5kYXRhKCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gVGhlcmUgc2hvdWxkIG5vdCBiZSBh
bnkgcXVvdGVkIHN0cmluZ3MgdW50aWwgd2UgcmVhY2ggdGhlIHBhcmFtZXRlcnMuCi0gICAgc2l6
ZV90IHNlbWlDb2xvbkluZGV4ID0gbV9jb250ZW50VHlwZS5maW5kKCc7JywgaW5kZXgpOworICAg
IHNpemVfdCBzZW1pQ29sb25JbmRleCA9IGNvbnRlbnRUeXBlLmZpbmQoJzsnLCBpbmRleCk7CiAg
ICAgaWYgKHNlbWlDb2xvbkluZGV4ID09IG5vdEZvdW5kKSB7Ci0gICAgICAgIG1fbWltZVR5cGUg
PSBtX2NvbnRlbnRUeXBlLnN1YnN0cmluZyhpbmRleCkuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAg
ICAgIHBhcnNlclR5cGUuc2V0Q29udGVudFR5cGUoU3Vic3RyaW5nUmFuZ2UoaW5kZXgsIGNvbnRl
bnRUeXBlTGVuZ3RoKSk7CisgICAgICAgIG1faXNWYWxpZCA9IHRydWU7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX21pbWVUeXBlID0gbV9jb250ZW50VHlwZS5zdWJzdHJpbmcoaW5k
ZXgsIHNlbWlDb2xvbkluZGV4IC0gaW5kZXgpLnN0cmlwV2hpdGVTcGFjZSgpOworICAgIHBhcnNl
clR5cGUuc2V0Q29udGVudFR5cGUoU3Vic3RyaW5nUmFuZ2UoaW5kZXgsIHNlbWlDb2xvbkluZGV4
IC0gaW5kZXgpKTsKICAgICBpbmRleCA9IHNlbWlDb2xvbkluZGV4ICsgMTsKICAgICB3aGlsZSAo
dHJ1ZSkgewotICAgICAgICBza2lwU3BhY2VzKG1fY29udGVudFR5cGUsIGluZGV4KTsKLSAgICAg
ICAgU3RyaW5nIGtleSA9IHBhcnNlVG9rZW4obV9jb250ZW50VHlwZSwgaW5kZXgpOwotICAgICAg
ICBpZiAoa2V5LmlzRW1wdHkoKSB8fCBpbmRleCA+PSBjb250ZW50VHlwZUxlbmd0aCkgeworICAg
ICAgICBza2lwU3BhY2VzKGNvbnRlbnRUeXBlLCBpbmRleCk7CisgICAgICAgIFN1YnN0cmluZ1Jh
bmdlIGtleVJhbmdlID0gcGFyc2VUb2tlbihjb250ZW50VHlwZSwgaW5kZXgpOworICAgICAgICBp
ZiAoIWtleVJhbmdlLnNlY29uZCB8fCBpbmRleCA+PSBjb250ZW50VHlwZUxlbmd0aCkgewogICAg
ICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIENvbnRlbnQtVHlwZSBwYXJhbWV0ZXIgbmFtZS4i
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorCiAgICAgICAgIC8vIFNob3VsZCB3
ZSB0b2xlcmF0ZSBzcGFjZXMgaGVyZT8KLSAgICAgICAgaWYgKG1fY29udGVudFR5cGVbaW5kZXgr
K10gIT0gJz0nIHx8IGluZGV4ID49IGNvbnRlbnRUeXBlTGVuZ3RoKSB7CisgICAgICAgIGlmIChj
b250ZW50VHlwZVtpbmRleCsrXSAhPSAnPScgfHwgaW5kZXggPj0gY29udGVudFR5cGVMZW5ndGgp
IHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUgbWFsZm9ybWVk
IHBhcmFtZXRlci4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIFNob3VsZCB3ZSB0b2xlcmF0ZSBzcGFjZXMgaGVyZT8KICAgICAgICAgU3RyaW5nIHZhbHVl
OwotICAgICAgICBpZiAobV9jb250ZW50VHlwZVtpbmRleF0gPT0gJyInKQotICAgICAgICAgICAg
dmFsdWUgPSBwYXJzZVF1b3RlZFN0cmluZyhtX2NvbnRlbnRUeXBlLCBpbmRleCk7CisgICAgICAg
IFN1YnN0cmluZ1JhbmdlIHZhbHVlUmFuZ2U7CisgICAgICAgIGlmIChjb250ZW50VHlwZVtpbmRl
eF0gPT0gJyInKQorICAgICAgICAgICAgdmFsdWVSYW5nZSA9IHBhcnNlUXVvdGVkU3RyaW5nKGNv
bnRlbnRUeXBlLCBpbmRleCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZhbHVlID0gcGFy
c2VUb2tlbihtX2NvbnRlbnRUeXBlLCBpbmRleCk7CisgICAgICAgICAgICB2YWx1ZVJhbmdlID0g
cGFyc2VUb2tlbihjb250ZW50VHlwZSwgaW5kZXgpOwogCi0gICAgICAgIGlmICh2YWx1ZS5pc051
bGwoKSkgeworICAgICAgICBpZiAoIXZhbHVlUmFuZ2Uuc2Vjb25kKSB7CiAgICAgICAgICAgICBM
T0dfRVJST1IoIkludmFsaWQgQ29udGVudC1UeXBlLCBpbnZhbGlkIHBhcmFtZXRlciB2YWx1ZS4i
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNob3VsZCB3
ZSB0b2xlcmF0ZSBzcGFjZXMgaGVyZT8KLSAgICAgICAgaWYgKGluZGV4IDwgY29udGVudFR5cGVM
ZW5ndGggJiYgbV9jb250ZW50VHlwZVtpbmRleCsrXSAhPSAnOycpIHsKKyAgICAgICAgaWYgKGlu
ZGV4IDwgY29udGVudFR5cGVMZW5ndGggJiYgY29udGVudFR5cGVbaW5kZXgrK10gIT0gJzsnKSB7
CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgQ29udGVudC1UeXBlLCBpbnZhbGlkIGNo
YXJhY3RlciBhdCB0aGUgZW5kIG9mIGtleS92YWx1ZSBwYXJhbWV0ZXIuIik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBtX3BhcmFtZXRlcnMuc2V0KGtleSwgdmFs
dWUpOworICAgICAgICBwYXJzZXJUeXBlLnNldENvbnRlbnRUeXBlUGFyYW1ldGVyKGtleVJhbmdl
LCB2YWx1ZVJhbmdlKTsKIAotICAgICAgICBpZiAoaW5kZXggPj0gY29udGVudFR5cGVMZW5ndGgp
CisgICAgICAgIGlmIChpbmRleCA+PSBjb250ZW50VHlwZUxlbmd0aCkgeworICAgICAgICAgICAg
bV9pc1ZhbGlkID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50
VHlwZVBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlw
ZVBhcnNlci5oCmluZGV4IDA2NTdiMDEuLjE0MjMyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2VyLmgKQEAgLTM3LDYgKzM3LDI3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gPGluZGV4LCBsZW5ndGg+Cit0eXBlZGVm
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IFN1YnN0cmluZ1JhbmdlOworCisvLyBEZWZh
dWx0IHBhcnNlciB0aGF0IGRvZXNuJ3Qgc3RvcmUgYW55IHRva2Vucy4KK2NsYXNzIFZhbGlkYXRp
b25QYXJzZXIgeworcHVibGljOgorICAgIHZvaWQgc2V0Q29udGVudFR5cGUoY29uc3QgU3Vic3Ry
aW5nUmFuZ2UmKSBjb25zdCB7IH0KKyAgICB2b2lkIHNldENvbnRlbnRUeXBlUGFyYW1ldGVyKGNv
bnN0IFN1YnN0cmluZ1JhbmdlJiwgY29uc3QgU3Vic3RyaW5nUmFuZ2UmKSBjb25zdCB7IH0KK307
CisKKy8vIENvbnRlbnQgdHlwZSB2YWxpZGF0b3IgdGhhdCBjaGVja3MgaWYgc3RyaW5nIGlzIGZv
cm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIFJGQyBzcGVjLgordGVtcGxhdGUgPGNsYXNzIFQgPSBW
YWxpZGF0aW9uUGFyc2VyPgorY2xhc3MgQ29udGVudFR5cGVWYWxpZGF0b3IgeworcHVibGljOgor
ICAgIGV4cGxpY2l0IENvbnRlbnRUeXBlVmFsaWRhdG9yPFQ+KGNvbnN0IFN0cmluZyYsIGNvbnN0
IFQmIHBhcnNlclR5cGUgPSBUKCkpOworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNWYWxpZDsgfQorCitwcml2YXRlOgorICAgIGJvb2wgbV9pc1ZhbGlkOworfTsKKwogLy8g
RklYTUU6IGFkZCBzdXBwb3J0IGZvciBjb21tZW50cy4KIGNsYXNzIENvbnRlbnRUeXBlUGFyc2Vy
IHsKIHB1YmxpYzoKQEAgLTUwLDEzICs3MSwxNSBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHBhcmFt
ZXRlckNvdW50KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBwYXJzZSgpOworICAgIGZy
aWVuZCBjbGFzcyBDb250ZW50VHlwZVZhbGlkYXRvcjxDb250ZW50VHlwZVBhcnNlcj47CiAKLSAg
ICBTdHJpbmcgbV9jb250ZW50VHlwZTsKKyAgICB2b2lkIHNldENvbnRlbnRUeXBlKGNvbnN0IFN1
YnN0cmluZ1JhbmdlJikgY29uc3Q7CisgICAgdm9pZCBzZXRDb250ZW50VHlwZVBhcmFtZXRlcihj
b25zdCBTdWJzdHJpbmdSYW5nZSYsIGNvbnN0IFN1YnN0cmluZ1JhbmdlJikgY29uc3Q7CiAKICAg
ICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEtleVZhbHVlUGFpcnM7Ci0gICAgS2V5
VmFsdWVQYWlycyBtX3BhcmFtZXRlcnM7Ci0gICAgU3RyaW5nIG1fbWltZVR5cGU7CisgICAgU3Ry
aW5nIG1fY29udGVudFR5cGU7CisgICAgbXV0YWJsZSBLZXlWYWx1ZVBhaXJzIG1fcGFyYW1ldGVy
czsKKyAgICBtdXRhYmxlIFN0cmluZyBtX21pbWVUeXBlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKaW5kZXggZjRlM2ViZi4uNTU4
Mjc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVh
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIu
Y3BwCkBAIC04NSw4ICs4NSw3IEBAIFBhc3NSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6
cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIqIGJ1ZmZlcikKICAgICBLZXlWYWx1
ZU1hcCBrZXlWYWx1ZVBhaXJzID0gcmV0cmlldmVLZXlWYWx1ZVBhaXJzKGJ1ZmZlcik7CiAgICAg
S2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBh
aXJzLmZpbmQoImNvbnRlbnQtdHlwZSIpOwogICAgIGlmIChtaW1lUGFyYW1ldGVyc0l0ZXJhdG9y
ICE9IGtleVZhbHVlUGFpcnMuZW5kKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IG1ha2UgQ29udGVu
dFR5cGVQYXJzZXIgbW9yZSBmbGV4aWJsZSBzbyB3ZSBkb24ndCBoYXZlIHRvIHN5bnRoZXNpemUg
dGhlICJDb250ZW50LVR5cGU6Ii4KLSAgICAgICAgQ29udGVudFR5cGVQYXJzZXIgY29udGVudFR5
cGVQYXJzZXIobWFrZVN0cmluZygiQ29udGVudC1UeXBlOiIsIG1pbWVQYXJhbWV0ZXJzSXRlcmF0
b3ItPnZhbHVlKSk7CisgICAgICAgIENvbnRlbnRUeXBlUGFyc2VyIGNvbnRlbnRUeXBlUGFyc2Vy
KG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3ItPnZhbHVlKTsKICAgICAgICAgbWltZUhlYWRlci0+bV9j
b250ZW50VHlwZSA9IGNvbnRlbnRUeXBlUGFyc2VyLm1pbWVUeXBlKCk7CiAgICAgICAgIGlmICgh
bWltZUhlYWRlci0+aXNNdWx0aXBhcnQoKSkKICAgICAgICAgICAgIG1pbWVIZWFkZXItPm1fY2hh
cnNldCA9IGNvbnRlbnRUeXBlUGFyc2VyLmNoYXJzZXQoKS5zdHJpcFdoaXRlU3BhY2UoKTsK
</data>
<flag name="review"
          id="185848"
          type_id="1"
          status="-"
          setter="ap"
    />
    <flag name="commit-queue"
          id="185849"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172034</attachid>
            <date>2012-11-02 04:40:54 -0700</date>
            <delta_ts>2012-11-02 04:51:33 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>webcore_parsedcontenttype_2.patch</filename>
            <type>text/plain</type>
            <size>40127</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTFiOWVkZC4uNjE0ZDcwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE5ODcsNyArMTk4Nyw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L0NyZWRlbnRpYWwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5j
cHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2VyLmNwcAogICAgIHBsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVR
dWV1ZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKQEAgLTE5
OTgsNiArMTk5Nyw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBWYWxpZGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcAorICAgIHBsYXRm
b3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Q
cm90ZWN0aW9uU3BhY2UuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDliMzc1NDQuLmJjMzczNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMi0xMS0w
MiAgQWxleGFuZGVyIFNoYWxhbW92ICA8YWxleGFuZGVyLnNoYWxhbW92QGludGVsLmNvbT4KKwor
ICAgICAgICBJbXByb3ZlIENvbnRlbnRUeXBlUGFyc2VyLCBzbyB0aGF0IGl0IGNvdWxkIGJlIHVz
ZWQgdG8gdmFsaWRhdGUgbWltZSB0eXBlIGFjY29yZGluZyB0byBSRkMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDkyNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBQYXJzZWRD
b250ZW50VHlwZSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgY29udGVudHMgb2YgcGFyc2VkCisgICAg
ICAgIGNvbnRlbnQgdHlwZSBzdHJpbmcuIGlzVmFsaWRDb250ZW50VHlwZSBmdW5jdGlvbiBjb3Vs
ZCBiZSB1c2VkIHRvIGNoZWNrIGlmCisgICAgICAgIGZvcm1hdCBvZiB0aGUgY29udGVudCB0eXBl
IHN0cmluZyBpcyBhY29ycmRpbmcgdG8gUkZDIDI2MTYgc2VjdGlvbiA0LjIuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAg
ICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L01JTUVIZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUlNRUhlYWRlcjo6cGFyc2VIZWFk
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBh
cnNlci5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEVtcHR5UGFyc2VkQ29udGVu
dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlQYXJzZWRDb250ZW50VHlwZTo6c2V0Q29u
dGVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlQYXJzZWRDb250ZW50VHlwZTo6c2V0
Q29udGVudFR5cGVQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2tpcFNwYWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjppc1Rva2VuQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VRdW90ZWRTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6c3Vic3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VD
b250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkQ29udGVudFR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OlBhcnNlZENvbnRlbnRUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhcnNlZENvbnRlbnRUeXBlOjpjaGFyc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBhcnNlZENvbnRlbnRUeXBlOjpwYXJhbWV0ZXJWYWx1ZUZvck5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OnBhcmFtZXRlckNvdW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhcnNlZENvbnRlbnRUeXBlOjpzZXRDb250ZW50VHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXJzZWRDb250ZW50VHlwZTo6c2V0Q29udGVudFR5cGVQYXJhbWV0ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuaDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuaC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGFyc2VkQ29udGVudFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6Om1pbWVUeXBlKToKKwogMjAxMi0xMC0yOSAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSByZW5kZXJpbmcgdGFi
bGVzIHdpdGggPGNvbGdyb3Vwcz4gdHdpY2UgYXMgZmFzdCBieSBhdm9pZGluZyB3YWxraW5nIHRo
ZSBET00gZm9yIGNvbGdyb3VwcyA0IHRpbWVzIGZvciBlYWNoIGNlbGwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDFhMDVhMDkuLjdiMWY1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQpAQCAtNDY4Myw4ICs0NjgzLDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlN0b3JhZ2VEYXRhLmggXAotCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuY3BwIFwKLQlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2VyLmggXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llU3RvcmFnZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaCBcCkBAIC00NzA4LDYgKzQ3MDYsOCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlN
RUhlYWRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRl
ci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0
LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBl
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCmluZGV4IDJhZTUwMjIuLmM3N2ViMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTA0MSw3ICsx
MDQxLDYgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuY3BwIFwKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcCBcCi0gICAgcGxhdGZvcm0vbmV0
d29yay9Db250ZW50VHlwZVBhcnNlci5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAgXAogICAg
IHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAgXApAQCAtMTA1MCw2ICsxMDQ5LDcg
QEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9IVFRQVmFsaWRhdGlvbi5jcHAg
XAogICAgIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgXAogICAgIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwIFwKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL1Bh
cnNlZENvbnRlbnRUeXBlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3Bh
Y2UuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcCBcCiAgICAgcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAgXApAQCAtMjIxOCw3ICsyMjE4LDYg
QEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmggXAog
ICAgIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L0NyZWRlbnRpYWxTdG9yYWdlLmggXAotICAgIHBsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQ
YXJzZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaCBcCiAgICAg
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5oIFwKQEAgLTIyMzAsNiArMjIyOSw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBs
YXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmaW5nLmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0
d29ya2luZ0NvbnRleHQuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3Rp
Zmllci5oIFwKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmggXAogICAg
IHBsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmggXAogICAgIHBsYXRmb3JtL25ldHdv
cmsvUHJveHlTZXJ2ZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9xdC9RdE1JTUVUeXBlU25p
ZmZlci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxOTM5MGI2Li4zOTAyZDQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC01NTMxLDggKzU1MzEsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdv
cmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVzb3VyY2VIYW5kbGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9C
bG9iU3RvcmFnZURhdGEuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9Db250ZW50
VHlwZVBhcnNlci5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5
cGVQYXJzZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvRE5TLmgnLApAQCAtNTU1MSw2ICs1NTQ5
LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTM4ZDNmOC4uN2FlYzRlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtOTY2LDggKzk2Niw2IEBACiAJCTMzQzBDQ0Q0MTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1
cmVUZXh0SW5wdXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzNDMENDRDIxMTJDNUU2MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1dC5jcHAgKi87
IH07CiAJCTMzQzBDQ0Q1MTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzQzBDQ0QzMTEyQzVF
NjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCAqLzsgfTsKIAkJMzNEMDIxMkQxMzFEQjM3
QjAwNDA5MUE4IC8qIENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxM0YwMUVBMTI3MEUxMEQwMERGQkE3MSAvKiBDb29raWVTdG9y
YWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
MzcwRDZFREExMzg0NTQ1NTAwNDQxMDNFIC8qIENvbnRlbnRUeXBlUGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MEQ2RUQ4MTM4NDU0NTUw
MDQ0MTAzRSAvKiBDb250ZW50VHlwZVBhcnNlci5jcHAgKi87IH07Ci0JCTM3MEQ2RURCMTM4NDU0
NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlwZVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcwRDZFRDkxMzg0NTQ1NTAwNDQxMDNFIC8qIENvbnRl
bnRUeXBlUGFyc2VyLmggKi87IH07CiAJCTM3MTk0MTk2MTU2NkIzNzIwMEEyNzZEOCAvKiBXZWJD
b3JlTlNDZWxsRXh0cmFzLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzNzE5NDE5NDE1NjZCMzcyMDBBMjc2RDggLyogV2ViQ29yZU5TQ2VsbEV4dHJhcy5t
ICovOyB9OwogCQkzNzE5NDE5NzE1NjZCMzcyMDBBMjc2RDggLyogV2ViQ29yZU5TQ2VsbEV4dHJh
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxOTQx
OTUxNTY2QjM3MjAwQTI3NkQ4IC8qIFdlYkNvcmVOU0NlbGxFeHRyYXMuaCAqLzsgfTsKIAkJMzcx
QTY3Q0IxMUM2QzdEQjAwMDQ3QjhCIC8qIEh5cGhlbmF0aW9uQ0YuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxQTY3Q0ExMUM2QzdEQjAwMDQ3QjhC
IC8qIEh5cGhlbmF0aW9uQ0YuY3BwICovOyB9OwpAQCAtMTIwMCw2ICsxMTk4LDggQEAKIAkJNDQz
MTFDRDgxMkU0RTI0QjAwMEE4RDE5IC8qIERPTURvY3VtZW50UHJpdmF0ZS5oIGluIENvcHkgR2Vu
ZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQzMTFD
RDUxMkU0RTIyRDAwMEE4RDE5IC8qIERPTURvY3VtZW50UHJpdmF0ZS5oICovOyB9OwogCQk0NDMx
MUNEOTEyRTRFMjU3MDAwQThEMTkgLyogRE9NRG9jdW1lbnRGcmFnbWVudFByaXZhdGUuaCBpbiBD
b3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0MzExQ0Q0MTJFNEUyMkQwMDBBOEQxOSAvKiBET01Eb2N1bWVudEZyYWdtZW50UHJpdmF0ZS5o
ICovOyB9OwogCQk0NDMxMUY4MjEyRTRFNjZDMDAwQThEMTkgLyogRE9NRG9jdW1lbnRGcmFnbWVu
dEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NUU3MTE0NTBBQzVENTM0MDA1MzI3MEYgLyogRE9NRG9jdW1lbnRGcmFnbWVudEludGVybmFs
LmggKi87IH07CisJCTQ0Nzk1ODA0MTY0M0I0OUEwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ3OTU4
MDMxNjQzQjQ3QjAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDQ3OTU4MDUxNjQzQjRCMjAwMUUw
QTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Nzk1ODAyMTY0M0I0N0IwMDFFMEE3RiAvKiBQYXJzZWRDb250
ZW50VHlwZS5jcHAgKi87IH07CiAJCTQ0OEEyOUJGMEE0NkQ5Q0IwMDMwNzU5RiAvKiBKU0hUTUxP
cHRpb25zQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDQ4QTI5QkQwQTQ2RDlDQjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLmggKi87IH07CiAJCTQ0OEEyOUMwMEE0NkQ5Q0IwMDMwNzU5RiAvKiBKU0hUTUxPcHRpb25z
Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NDhBMjlCRTBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24u
Y3BwICovOyB9OwogCQk0NDhBRDI3QzBBNDgxMzdBMDAyM0QxNzkgLyogSlNIVE1MT3B0aW9uc0Nv
bGxlY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDQ4QUQyN0EwQTQ4MTM3OTAwMjNEMTc5IC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0
aW9uQ3VzdG9tLmNwcCAqLzsgfTsKQEAgLTgxMTAsOCArODExMCw2IEBACiAJCTMzOUI1QjYyMTMx
REFBMzIwMEY0OEQwMiAvKiBDb29raWVzU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29va2llc1N0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTMzQzBDQ0QyMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjdXJlVGV4dElucHV0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzNDMENDRDMxMTJDNUU2MjAwQ0UwNTdEIC8qIFNl
Y3VyZVRleHRJbnB1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWN1cmVU
ZXh0SW5wdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzcwRDZFRDgxMzg0NTQ1
NTAwNDQxMDNFIC8qIENvbnRlbnRUeXBlUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENvbnRlbnRUeXBlUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMzcwRDZFRDkxMzg0NTQ1NTAwNDQxMDNFIC8qIENvbnRlbnRUeXBlUGFyc2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRUeXBlUGFyc2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MTk0MTk0MTU2NkIzNzIwMEEyNzZEOCAv
KiBXZWJDb3JlTlNDZWxsRXh0cmFzLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0
aCA9IFdlYkNvcmVOU0NlbGxFeHRyYXMubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzcxOTQxOTUxNTY2QjM3MjAwQTI3NkQ4IC8qIFdlYkNvcmVOU0NlbGxFeHRyYXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZU5TQ2VsbEV4dHJhcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFBNjdDQTExQzZDN0RCMDAwNDdCOEIgLyogSHlwaGVu
YXRpb25DRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIeXBoZW5h
dGlvbkNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgzNzYsNiArODM3NCw4
IEBACiAJCTQ0MjlBQjA3MENCODRGODEwMDc2NDdDNSAvKiBET01UZXh0RXZlbnRJbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVGV4dEV2ZW50SW50ZXJuYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQzMTFDRDQxMkU0RTIyRDAwMEE4RDE5
IC8qIERPTURvY3VtZW50RnJhZ21lbnRQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTURvY3VtZW50RnJhZ21lbnRQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ0MzExQ0Q1MTJFNEUyMkQwMDBBOEQxOSAvKiBET01Eb2N1bWVudFByaXZh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRG9jdW1lbnRQcml2YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0Nzk1ODAyMTY0M0I0N0IwMDFFMEE3
RiAvKiBQYXJzZWRDb250ZW50VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQYXJzZWRDb250ZW50VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQ0Nzk1ODAzMTY0M0I0N0IwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZWRDb250ZW50VHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NDhBMjlCRDBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1M
T3B0aW9uc0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0
OEEyOUJFMEE0NkQ5Q0IwMDMwNzU5RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3B0aW9uc0NvbGxlY3Rp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDhBRDI3QTBBNDgxMzc5MDAy
M0QxNzkgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU2MjksOCArMTU2MjksNiBAQAogCQkJ
CTJFQjRCQ0QwMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5kbGUuY3BwICovLAog
CQkJCTJFQjRCQ0QxMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5kbGUuaCAqLywK
IAkJCQkyRURFRjFGMjEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYlN0b3JhZ2VEYXRhLmggKi8sCi0J
CQkJMzcwRDZFRDgxMzg0NTQ1NTAwNDQxMDNFIC8qIENvbnRlbnRUeXBlUGFyc2VyLmNwcCAqLywK
LQkJCQkzNzBENkVEOTEzODQ1NDU1MDA0NDEwM0UgLyogQ29udGVudFR5cGVQYXJzZXIuaCAqLywK
IAkJCQlFMTNGMDFFQTEyNzBFMTBEMDBERkJBNzEgLyogQ29va2llU3RvcmFnZS5oICovLAogCQkJ
CTUxNEM3NjU4MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmNwcCAqLywKIAkJCQk1MTRD
NzY1OTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oICovLApAQCAtMTU2NTYsNiArMTU2
NTQsOCBAQAogCQkJCTYyOEQyMTRCMTIxMzFFRDEwMDU1RENGQyAvKiBOZXR3b3JraW5nQ29udGV4
dC5oICovLAogCQkJCTFBN0ZBNjFBMEREQTNCQkUwMDI4RjhBNSAvKiBOZXR3b3JrU3RhdGVOb3Rp
Zmllci5jcHAgKi8sCiAJCQkJMUE3RkE2MTgwRERBM0IzQTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0
ZU5vdGlmaWVyLmggKi8sCisJCQkJNDQ3OTU4MDIxNjQzQjQ3QjAwMUUwQTdGIC8qIFBhcnNlZENv
bnRlbnRUeXBlLmNwcCAqLywKKwkJCQk0NDc5NTgwMzE2NDNCNDdCMDAxRTBBN0YgLyogUGFyc2Vk
Q29udGVudFR5cGUuaCAqLywKIAkJCQk1MTRDNzY1RjBDRTkyM0ExMDA3RUYzQ0QgLyogUHJvdGVj
dGlvblNwYWNlLmNwcCAqLywKIAkJCQk1MTRDNzY2MDBDRTkyM0ExMDA3RUYzQ0QgLyogUHJvdGVj
dGlvblNwYWNlLmggKi8sCiAJCQkJNTFBMDUyNTUxMDU4ODc0MDAwQ0M5RTk1IC8qIFByb3RlY3Rp
b25TcGFjZUhhc2guaCAqLywKQEAgLTIyNTk4LDcgKzIyNTk4LDYgQEAKIAkJCQk5N0M0NzFEQzEy
RjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1N0I3OTFBNjE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9yUXVlcnkuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxRDAxNUNBMEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlw
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzcwRDZFREIxMzg0NTQ1NTAwNDQxMDNFIC8qIENvbnRl
bnRUeXBlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzYyN0I4RTE0RkIzQ0VFMDAyQ0RD
QTEgLyogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
RDNDQTExMTU3REY4RTkwMDg2MEE5NyAvKiBDb250ZXh0RmVhdHVyZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzQjZBMEU2MEIwQkNBNUMwMEY1MDI3QSAvKiBDb250ZXh0TWVudS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNTY3MSw2ICsyNTY3MCw3IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVB
OTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYw
RkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTM3MzUz
MTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDQ3OTU4
MDQxNjQzQjQ5QTAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTI2MjEzLDcgKzI2MjEzLDYgQEAKIAkJCQk5N0M0NzFEQjEyRjkyNUJEMDA4NjM1NEIgLyog
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3Qjc5MUE1MTRD
NkE2MjkwMEYyMDJEMSAvKiBDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0MUQwMTVDQjBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJMzcwRDZFREExMzg0NTQ1NTAwNDQxMDNFIC8qIENvbnRlbnRUeXBlUGFyc2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NjI3QjhEMTRGQjNDRUUwMDJDRENBMSAvKiBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0QzQ0ExMDE1
N0RGOEU5MDA4NjBBOTcgLyogQ29udGV4dEZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTA2NUFENEY2MEIwQzJFREEwMDVBMkIxRCAvKiBDb250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0yODc4NCw2ICsyODc4Myw3IEBACiAJCQkJOTc3RTJFMEUxMkYwRkM5
QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIx
MzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQUJG
NjREMTYzOTJFMjgwMDEzMkE3QSAvKiBMb2FkZXJTdHJhdGVneS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk0NDc5NTgwNTE2NDNCNEIyMDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0NvbnRlbnRUeXBlUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Q29udGVudFR5cGVQYXJzZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGE0
NTg4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVu
dFR5cGVQYXJzZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjIxICswLDAgQEAKLSAvKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkNvbnRlbnRUeXBlUGFyc2VyLmgiCi0KLSNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyB2b2lkIHNraXBTcGFjZXMoY29uc3QgU3Ry
aW5nJiBpbnB1dCwgc2l6ZV90JiBzdGFydEluZGV4KQotewotICAgIHdoaWxlIChzdGFydEluZGV4
IDwgaW5wdXQubGVuZ3RoKCkgJiYgaW5wdXRbc3RhcnRJbmRleF0gPT0gJyAnKQotICAgICAgICAr
K3N0YXJ0SW5kZXg7Ci19Ci0KLXN0YXRpYyBib29sIGlzVG9rZW5DaGFyYWN0ZXIoY2hhciBjKQot
ewotICAgIHJldHVybiBpc0FTQ0lJKGMpICYmIGMgPiAnICcgJiYgYyAhPSAnIicgJiYgYyAhPSAn
KCcgJiYgYyAhPSAnKScgJiYgYyAhPSAnLCcgJiYgYyAhPSAnLycgJiYgKGMgPCAnOicgfHwgYyA+
ICdAJykgJiYgKGMgPCAnWycgfHwgYyA+ICddJyk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgcGFyc2VU
b2tlbihjb25zdCBTdHJpbmcmIGlucHV0LCBzaXplX3QmIHN0YXJ0SW5kZXgpCi17Ci0gICAgaWYg
KHN0YXJ0SW5kZXggPj0gaW5wdXQubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LQotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICB3aGlsZSAoc3RhcnRJbmRl
eCA8IGlucHV0Lmxlbmd0aCgpKSB7Ci0gICAgICAgIGNoYXIgY3VycmVudENoYXJhY3RlciA9IGlu
cHV0W3N0YXJ0SW5kZXhdOwotICAgICAgICBpZiAoIWlzVG9rZW5DaGFyYWN0ZXIoY3VycmVudENo
YXJhY3RlcikpCi0gICAgICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChjdXJyZW50Q2hhcmFjdGVyKTsKLSAgICAgICAg
KytzdGFydEluZGV4OwotICAgIH0KLSAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygp
OwotfQotCi1zdGF0aWMgU3RyaW5nIHBhcnNlUXVvdGVkU3RyaW5nKGNvbnN0IFN0cmluZyYgaW5w
dXQsIHNpemVfdCYgc3RhcnRJbmRleCkKLXsKLSAgICBpZiAoc3RhcnRJbmRleCA+PSBpbnB1dC5s
ZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgaWYgKGlucHV0W3N0YXJ0
SW5kZXgrK10gIT0gJyInIHx8IHN0YXJ0SW5kZXggPj0gaW5wdXQubGVuZ3RoKCkpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLQotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAg
ICBib29sIGxhc3RDaGFyYWN0ZXJXYXNCYWNrc2xhc2ggPSBmYWxzZTsKLSAgICBjaGFyIGN1cnJl
bnRDaGFyYWN0ZXI7Ci0gICAgd2hpbGUgKChjdXJyZW50Q2hhcmFjdGVyID0gaW5wdXRbc3RhcnRJ
bmRleCsrXSkgIT0gJyInIHx8IGxhc3RDaGFyYWN0ZXJXYXNCYWNrc2xhc2gpIHsKLSAgICAgICAg
aWYgKHN0YXJ0SW5kZXggPj0gaW5wdXQubGVuZ3RoKCkpCi0gICAgICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09ICdcXCcgJiYgIWxhc3RDaGFy
YWN0ZXJXYXNCYWNrc2xhc2gpIHsKLSAgICAgICAgICAgIGxhc3RDaGFyYWN0ZXJXYXNCYWNrc2xh
c2ggPSB0cnVlOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KGxhc3RDaGFyYWN0ZXJXYXNCYWNrc2xhc2gpCi0gICAgICAgICAgICBsYXN0Q2hhcmFjdGVyV2Fz
QmFja3NsYXNoID0gZmFsc2U7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGN1cnJlbnRD
aGFyYWN0ZXIpOwotICAgIH0KLSAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwot
fQotCi1Db250ZW50VHlwZVBhcnNlcjo6Q29udGVudFR5cGVQYXJzZXIoY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkKLSAgICA6IG1fY29udGVudFR5cGUoY29udGVudFR5cGUuc3RyaXBXaGl0ZVNw
YWNlKCkpCi17Ci0gICAgcGFyc2UoKTsKLX0KLQotU3RyaW5nIENvbnRlbnRUeXBlUGFyc2VyOjpj
aGFyc2V0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gcGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJjaGFy
c2V0Iik7Ci19Ci0KLVN0cmluZyBDb250ZW50VHlwZVBhcnNlcjo6cGFyYW1ldGVyVmFsdWVGb3JO
YW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXJhbWV0ZXJz
LmdldChuYW1lKTsKLX0KLQotc2l6ZV90IENvbnRlbnRUeXBlUGFyc2VyOjpwYXJhbWV0ZXJDb3Vu
dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFyYW1ldGVycy5zaXplKCk7Ci19Ci0KLS8vIEZy
b20gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjA0NSNzZWN0aW9uLTUuMToKLS8vCi0v
LyBjb250ZW50IDo9ICJDb250ZW50LVR5cGUiICI6IiB0eXBlICIvIiBzdWJ0eXBlCi0vLyAgICAg
ICAgICAgICooIjsiIHBhcmFtZXRlcikKLS8vICAgICAgICAgICAgOyBNYXRjaGluZyBvZiBtZWRp
YSB0eXBlIGFuZCBzdWJ0eXBlCi0vLyAgICAgICAgICAgIDsgaXMgQUxXQVlTIGNhc2UtaW5zZW5z
aXRpdmUuCi0vLwotLy8gdHlwZSA6PSBkaXNjcmV0ZS10eXBlIC8gY29tcG9zaXRlLXR5cGUKLS8v
Ci0vLyBkaXNjcmV0ZS10eXBlIDo9ICJ0ZXh0IiAvICJpbWFnZSIgLyAiYXVkaW8iIC8gInZpZGVv
IiAvCi0vLyAgICAgICAgICAgICAgICAgICJhcHBsaWNhdGlvbiIgLyBleHRlbnNpb24tdG9rZW4K
LS8vCi0vLyBjb21wb3NpdGUtdHlwZSA6PSAibWVzc2FnZSIgLyAibXVsdGlwYXJ0IiAvIGV4dGVu
c2lvbi10b2tlbgotLy8KLS8vIGV4dGVuc2lvbi10b2tlbiA6PSBpZXRmLXRva2VuIC8geC10b2tl
bgotLy8KLS8vIGlldGYtdG9rZW4gOj0gPEFuIGV4dGVuc2lvbiB0b2tlbiBkZWZpbmVkIGJ5IGEK
LS8vICAgICAgICAgICAgICAgIHN0YW5kYXJkcy10cmFjayBSRkMgYW5kIHJlZ2lzdGVyZWQKLS8v
ICAgICAgICAgICAgICAgIHdpdGggSUFOQS4+Ci0vLwotLy8geC10b2tlbiA6PSA8VGhlIHR3byBj
aGFyYWN0ZXJzICJYLSIgb3IgIngtIiBmb2xsb3dlZCwgd2l0aAotLy8gICAgICAgICAgICAgbm8g
aW50ZXJ2ZW5pbmcgd2hpdGUgc3BhY2UsIGJ5IGFueSB0b2tlbj4KLS8vCi0vLyBzdWJ0eXBlIDo9
IGV4dGVuc2lvbi10b2tlbiAvIGlhbmEtdG9rZW4KLS8vCi0vLyBpYW5hLXRva2VuIDo9IDxBIHB1
YmxpY2x5LWRlZmluZWQgZXh0ZW5zaW9uIHRva2VuLiBUb2tlbnMKLS8vICAgICAgICAgICAgICAg
IG9mIHRoaXMgZm9ybSBtdXN0IGJlIHJlZ2lzdGVyZWQgd2l0aCBJQU5BCi0vLyAgICAgICAgICAg
ICAgICBhcyBzcGVjaWZpZWQgaW4gUkZDIDIwNDguPgotLy8KLS8vIHBhcmFtZXRlciA6PSBhdHRy
aWJ1dGUgIj0iIHZhbHVlCi0vLwotLy8gYXR0cmlidXRlIDo9IHRva2VuCi0vLyAgICAgICAgICAg
ICAgOyBNYXRjaGluZyBvZiBhdHRyaWJ1dGVzCi0vLyAgICAgICAgICAgICAgOyBpcyBBTFdBWVMg
Y2FzZS1pbnNlbnNpdGl2ZS4KLS8vCi0vLyB2YWx1ZSA6PSB0b2tlbiAvIHF1b3RlZC1zdHJpbmcK
LS8vCi0vLyB0b2tlbiA6PSAxKjxhbnkgKFVTLUFTQ0lJKSBDSEFSIGV4Y2VwdCBTUEFDRSwgQ1RM
cywKLS8vICAgICAgICAgICAgIG9yIHRzcGVjaWFscz4KLS8vCi0vLyB0c3BlY2lhbHMgOj0gICIo
IiAvICIpIiAvICI8IiAvICI+IiAvICJAIiAvCi0vLyAgICAgICAgICAgICAgICIsIiAvICI7IiAv
ICI6IiAvICJcIiAvIDwiPgotLy8gICAgICAgICAgICAgICAiLyIgLyAiWyIgLyAiXSIgLyAiPyIg
LyAiPSIKLS8vICAgICAgICAgICAgICAgOyBNdXN0IGJlIGluIHF1b3RlZC1zdHJpbmcsCi0vLyAg
ICAgICAgICAgICAgIDsgdG8gdXNlIHdpdGhpbiBwYXJhbWV0ZXIgdmFsdWVzCi0KLXZvaWQgQ29u
dGVudFR5cGVQYXJzZXI6OnBhcnNlKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IFN0cmluZywgY29udGVudFR5cGVQYXJhbWV0ZXJOYW1lLCAoQVNDSUlMaXRlcmFsKCJDb250ZW50
LVR5cGUiKSkpOwotCi0gICAgaWYgKCFtX2NvbnRlbnRUeXBlLnN0YXJ0c1dpdGgoY29udGVudFR5
cGVQYXJhbWV0ZXJOYW1lKSkgewotICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgQ29udGVudC1U
eXBlIHN0cmluZyAnJXMnIiwgbV9jb250ZW50VHlwZS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgc2l6ZV90IGNvbnRlbnRUeXBlTGVuZ3RoID0gbV9jb250ZW50
VHlwZS5sZW5ndGgoKTsKLSAgICBzaXplX3QgaW5kZXggPSBjb250ZW50VHlwZVBhcmFtZXRlck5h
bWUubGVuZ3RoKCk7Ci0gICAgc2tpcFNwYWNlcyhtX2NvbnRlbnRUeXBlLCBpbmRleCk7Ci0gICAg
aWYgKGluZGV4ID49IGNvbnRlbnRUeXBlTGVuZ3RoIHx8IG1fY29udGVudFR5cGVbaW5kZXhdICE9
ICc6JyB8fCArK2luZGV4ID49IGNvbnRlbnRUeXBlTGVuZ3RoKSAgewotICAgICAgICBMT0dfRVJS
T1IoIkludmFsaWQgQ29udGVudC1UeXBlIHN0cmluZyAnJXMnIiwgbV9jb250ZW50VHlwZS5hc2Np
aSgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBUaGVyZSBzaG91
bGQgbm90IGJlIGFueSBxdW90ZWQgc3RyaW5ncyB1bnRpbCB3ZSByZWFjaCB0aGUgcGFyYW1ldGVy
cy4KLSAgICBzaXplX3Qgc2VtaUNvbG9uSW5kZXggPSBtX2NvbnRlbnRUeXBlLmZpbmQoJzsnLCBp
bmRleCk7Ci0gICAgaWYgKHNlbWlDb2xvbkluZGV4ID09IG5vdEZvdW5kKSB7Ci0gICAgICAgIG1f
bWltZVR5cGUgPSBtX2NvbnRlbnRUeXBlLnN1YnN0cmluZyhpbmRleCkuc3RyaXBXaGl0ZVNwYWNl
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX21pbWVUeXBlID0gbV9jb250ZW50
VHlwZS5zdWJzdHJpbmcoaW5kZXgsIHNlbWlDb2xvbkluZGV4IC0gaW5kZXgpLnN0cmlwV2hpdGVT
cGFjZSgpOwotICAgIGluZGV4ID0gc2VtaUNvbG9uSW5kZXggKyAxOwotICAgIHdoaWxlICh0cnVl
KSB7Ci0gICAgICAgIHNraXBTcGFjZXMobV9jb250ZW50VHlwZSwgaW5kZXgpOwotICAgICAgICBT
dHJpbmcga2V5ID0gcGFyc2VUb2tlbihtX2NvbnRlbnRUeXBlLCBpbmRleCk7Ci0gICAgICAgIGlm
IChrZXkuaXNFbXB0eSgpIHx8IGluZGV4ID49IGNvbnRlbnRUeXBlTGVuZ3RoKSB7Ci0gICAgICAg
ICAgICBMT0dfRVJST1IoIkludmFsaWQgQ29udGVudC1UeXBlIHBhcmFtZXRlciBuYW1lLiIpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIFNob3VsZCB3ZSB0b2xl
cmF0ZSBzcGFjZXMgaGVyZT8KLSAgICAgICAgaWYgKG1fY29udGVudFR5cGVbaW5kZXgrK10gIT0g
Jz0nIHx8IGluZGV4ID49IGNvbnRlbnRUeXBlTGVuZ3RoKSB7Ci0gICAgICAgICAgICBMT0dfRVJS
T1IoIkludmFsaWQgQ29udGVudC1UeXBlIG1hbGZvcm1lZCBwYXJhbWV0ZXIuIik7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTaG91bGQgd2UgdG9sZXJhdGUg
c3BhY2VzIGhlcmU/Ci0gICAgICAgIFN0cmluZyB2YWx1ZTsKLSAgICAgICAgaWYgKG1fY29udGVu
dFR5cGVbaW5kZXhdID09ICciJykKLSAgICAgICAgICAgIHZhbHVlID0gcGFyc2VRdW90ZWRTdHJp
bmcobV9jb250ZW50VHlwZSwgaW5kZXgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWx1
ZSA9IHBhcnNlVG9rZW4obV9jb250ZW50VHlwZSwgaW5kZXgpOwotCi0gICAgICAgIGlmICh2YWx1
ZS5pc051bGwoKSkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIENvbnRlbnQtVHlw
ZSwgaW52YWxpZCBwYXJhbWV0ZXIgdmFsdWUuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBTaG91bGQgd2UgdG9sZXJhdGUgc3BhY2VzIGhlcmU/Ci0gICAg
ICAgIGlmIChpbmRleCA8IGNvbnRlbnRUeXBlTGVuZ3RoICYmIG1fY29udGVudFR5cGVbaW5kZXgr
K10gIT0gJzsnKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgQ29udGVudC1UeXBl
LCBpbnZhbGlkIGNoYXJhY3RlciBhdCB0aGUgZW5kIG9mIGtleS92YWx1ZSBwYXJhbWV0ZXIuIik7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtX3BhcmFtZXRlcnMu
c2V0KGtleSwgdmFsdWUpOwotCi0gICAgICAgIGlmIChpbmRleCA+PSBjb250ZW50VHlwZUxlbmd0
aCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDY1N2IwMS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2
NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBDb250ZW50VHlwZVBhcnNlcl9oCi0jZGVmaW5lIENvbnRlbnRUeXBl
UGFyc2VyX2gKLQotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLS8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgY29tbWVudHMuCi1jbGFz
cyBDb250ZW50VHlwZVBhcnNlciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgQ29udGVudFR5cGVQ
YXJzZXIoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBTdHJpbmcgbWltZVR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX21pbWVUeXBlOyB9Ci0gICAgU3RyaW5nIGNoYXJzZXQoKSBjb25zdDsKLQotICAgIC8v
IE5vdGUgdGhhdCBpbiB0aGUgY2FzZSBvZiBtdWx0aXBsZSB2YWx1ZXMgZm9yIHRoZSBzYW1lIG5h
bWUsIHRoZSBsYXN0IHZhbHVlIGlzIHJldHVybmVkLgotICAgIFN0cmluZyBwYXJhbWV0ZXJWYWx1
ZUZvck5hbWUoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgc2l6ZV90IHBhcmFtZXRlckNvdW50
KCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBwYXJzZSgpOwotCi0gICAgU3RyaW5nIG1f
Y29udGVudFR5cGU7Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEtleVZh
bHVlUGFpcnM7Ci0gICAgS2V5VmFsdWVQYWlycyBtX3BhcmFtZXRlcnM7Ci0gICAgU3RyaW5nIG1f
bWltZVR5cGU7Ci19OwotCi19Ci0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IGY0ZTNlYmYuLjA0OGFiZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcApAQCAtMzEs
NyArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1JTUVIZWFkZXIuaCIK
IAotI2luY2x1ZGUgIkNvbnRlbnRUeXBlUGFyc2VyLmgiCisjaW5jbHVkZSAiUGFyc2VkQ29udGVu
dFR5cGUuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtODUsMTQg
Kzg1LDEzIEBAIFBhc3NSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VIZWFkZXIo
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIqIGJ1ZmZlcikKICAgICBLZXlWYWx1ZU1hcCBrZXlWYWx1
ZVBhaXJzID0gcmV0cmlldmVLZXlWYWx1ZVBhaXJzKGJ1ZmZlcik7CiAgICAgS2V5VmFsdWVNYXA6
Oml0ZXJhdG9yIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNv
bnRlbnQtdHlwZSIpOwogICAgIGlmIChtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yICE9IGtleVZhbHVl
UGFpcnMuZW5kKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IG1ha2UgQ29udGVudFR5cGVQYXJzZXIg
bW9yZSBmbGV4aWJsZSBzbyB3ZSBkb24ndCBoYXZlIHRvIHN5bnRoZXNpemUgdGhlICJDb250ZW50
LVR5cGU6Ii4KLSAgICAgICAgQ29udGVudFR5cGVQYXJzZXIgY29udGVudFR5cGVQYXJzZXIobWFr
ZVN0cmluZygiQ29udGVudC1UeXBlOiIsIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3ItPnZhbHVlKSk7
Ci0gICAgICAgIG1pbWVIZWFkZXItPm1fY29udGVudFR5cGUgPSBjb250ZW50VHlwZVBhcnNlci5t
aW1lVHlwZSgpOworICAgICAgICBQYXJzZWRDb250ZW50VHlwZSBwYXJzZWRDb250ZW50VHlwZSht
aW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CisgICAgICAgIG1pbWVIZWFkZXItPm1fY29u
dGVudFR5cGUgPSBwYXJzZWRDb250ZW50VHlwZS5taW1lVHlwZSgpOwogICAgICAgICBpZiAoIW1p
bWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgICAgICBtaW1lSGVhZGVyLT5tX2NoYXJz
ZXQgPSBjb250ZW50VHlwZVBhcnNlci5jaGFyc2V0KCkuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAg
ICAgICAgICBtaW1lSGVhZGVyLT5tX2NoYXJzZXQgPSBwYXJzZWRDb250ZW50VHlwZS5jaGFyc2V0
KCkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgbWltZUhl
YWRlci0+bV9tdWx0aXBhcnRUeXBlID0gY29udGVudFR5cGVQYXJzZXIucGFyYW1ldGVyVmFsdWVG
b3JOYW1lKCJ0eXBlIik7Ci0gICAgICAgICAgICBtaW1lSGVhZGVyLT5tX2VuZE9mUGFydEJvdW5k
YXJ5ID0gY29udGVudFR5cGVQYXJzZXIucGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3VuZGFyeSIp
OworICAgICAgICAgICAgbWltZUhlYWRlci0+bV9tdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVu
dFR5cGUucGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJ0eXBlIik7CisgICAgICAgICAgICBtaW1lSGVh
ZGVyLT5tX2VuZE9mUGFydEJvdW5kYXJ5ID0gcGFyc2VkQ29udGVudFR5cGUucGFyYW1ldGVyVmFs
dWVGb3JOYW1lKCJib3VuZGFyeSIpOwogICAgICAgICAgICAgaWYgKG1pbWVIZWFkZXItPm1fZW5k
T2ZQYXJ0Qm91bmRhcnkuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIk5v
IGJvdW5kYXJ5IGZvdW5kIGluIG11bHRpcGFydCBNSU1FIGhlYWRlci4iKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUGFyc2VkQ29udGVudFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9QYXJzZWRDb250ZW50VHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uODE1ZWZkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwCkBAIC0wLDAgKzEsMjU0IEBACisgLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQYXJzZWRDb250ZW50VHlwZS5oIgorCisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFbXB0eVBhcnNlZENvbnRlbnRUeXBlIHsKK3B1
YmxpYzoKKyAgICB2b2lkIHNldENvbnRlbnRUeXBlKGNvbnN0IFN1YnN0cmluZ1JhbmdlJikgY29u
c3QgeyB9CisgICAgdm9pZCBzZXRDb250ZW50VHlwZVBhcmFtZXRlcihjb25zdCBTdWJzdHJpbmdS
YW5nZSYsIGNvbnN0IFN1YnN0cmluZ1JhbmdlJikgY29uc3QgeyB9Cit9OworCitzdGF0aWMgdm9p
ZCBza2lwU3BhY2VzKGNvbnN0IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkJiBzdGFydEluZGV4KQor
eworICAgIHdoaWxlIChzdGFydEluZGV4IDwgaW5wdXQubGVuZ3RoKCkgJiYgaW5wdXRbc3RhcnRJ
bmRleF0gPT0gJyAnKQorICAgICAgICArK3N0YXJ0SW5kZXg7Cit9CisKK3N0YXRpYyBib29sIGlz
VG9rZW5DaGFyYWN0ZXIoY2hhciBjKQoreworICAgIHJldHVybiBpc0FTQ0lJKGMpICYmIGMgPiAn
ICcgJiYgYyAhPSAnIicgJiYgYyAhPSAnKCcgJiYgYyAhPSAnKScgJiYgYyAhPSAnLCcgJiYgYyAh
PSAnLycgJiYgKGMgPCAnOicgfHwgYyA+ICdAJykgJiYgKGMgPCAnWycgfHwgYyA+ICddJyk7Cit9
CisKK3N0YXRpYyBTdWJzdHJpbmdSYW5nZSBwYXJzZVRva2VuKGNvbnN0IFN0cmluZyYgaW5wdXQs
IHVuc2lnbmVkJiBzdGFydEluZGV4KQoreworICAgIGNvbnN0IHVuc2lnbmVkIGlucHV0TGVuZ2h0
ID0gaW5wdXQubGVuZ3RoKCk7CisgICAgY29uc3QgdW5zaWduZWQgaW5kZXggPSBzdGFydEluZGV4
OworICAgIHVuc2lnbmVkJiB0b2tlbkxlbmd0aCA9IHN0YXJ0SW5kZXg7CisKKyAgICBpZiAodG9r
ZW5MZW5ndGggPj0gaW5wdXRMZW5naHQpCisgICAgICAgIHJldHVybiBTdWJzdHJpbmdSYW5nZSgp
OworCisgICAgd2hpbGUgKHRva2VuTGVuZ3RoIDwgaW5wdXRMZW5naHQpIHsKKyAgICAgICAgaWYg
KCFpc1Rva2VuQ2hhcmFjdGVyKGlucHV0W3Rva2VuTGVuZ3RoXSkpCisgICAgICAgICAgICByZXR1
cm4gU3Vic3RyaW5nUmFuZ2UoaW5kZXgsIHRva2VuTGVuZ3RoKTsKKyAgICAgICAgKyt0b2tlbkxl
bmd0aDsKKyAgICB9CisKKyAgICByZXR1cm4gU3Vic3RyaW5nUmFuZ2UoaW5kZXgsIHRva2VuTGVu
Z3RoKTsKK30KKworc3RhdGljIFN1YnN0cmluZ1JhbmdlIHBhcnNlUXVvdGVkU3RyaW5nKGNvbnN0
IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkJiBzdGFydEluZGV4KQoreworICAgIGNvbnN0IHVuc2ln
bmVkIGlucHV0TGVuZ2h0ID0gaW5wdXQubGVuZ3RoKCk7CisgICAgY29uc3QgdW5zaWduZWQgaW5k
ZXggPSBzdGFydEluZGV4OworICAgIHVuc2lnbmVkJiBzdHJpbmdMZW5ndGggPSBzdGFydEluZGV4
OworCisgICAgaWYgKHN0cmluZ0xlbmd0aCA+PSBpbnB1dExlbmdodCkKKyAgICAgICAgcmV0dXJu
IFN1YnN0cmluZ1JhbmdlKCk7CisKKyAgICBpZiAoaW5wdXRbc3RyaW5nTGVuZ3RoKytdICE9ICci
JyB8fCBzdHJpbmdMZW5ndGggPj0gaW5wdXRMZW5naHQpCisgICAgICAgIHJldHVybiBTdWJzdHJp
bmdSYW5nZSgpOworCisgICAgYm9vbCBsYXN0Q2hhcmFjdGVyV2FzQmFja3NsYXNoID0gZmFsc2U7
CisgICAgY2hhciBjdXJyZW50Q2hhcmFjdGVyOworICAgIHdoaWxlICgoY3VycmVudENoYXJhY3Rl
ciA9IGlucHV0W3N0cmluZ0xlbmd0aCsrXSkgIT0gJyInIHx8IGxhc3RDaGFyYWN0ZXJXYXNCYWNr
c2xhc2gpIHsKKyAgICAgICAgaWYgKHN0cmluZ0xlbmd0aCA+PSBpbnB1dExlbmdodCkKKyAgICAg
ICAgICAgIHJldHVybiBTdWJzdHJpbmdSYW5nZSgpOworICAgICAgICBpZiAoY3VycmVudENoYXJh
Y3RlciA9PSAnXFwnICYmICFsYXN0Q2hhcmFjdGVyV2FzQmFja3NsYXNoKSB7CisgICAgICAgICAg
ICBsYXN0Q2hhcmFjdGVyV2FzQmFja3NsYXNoID0gdHJ1ZTsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisgICAgICAgIGlmIChsYXN0Q2hhcmFjdGVyV2FzQmFja3NsYXNoKQorICAg
ICAgICAgICAgbGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IGZhbHNlOworICAgIH0KKyAgICBy
ZXR1cm4gU3Vic3RyaW5nUmFuZ2UoaW5kZXgsIHN0cmluZ0xlbmd0aCk7Cit9CisKK3N0YXRpYyBT
dHJpbmcgc3Vic3RyaW5nRm9yUmFuZ2UoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFN1YnN0
cmluZ1JhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gc3RyaW5nLnN1YnN0cmluZyhyYW5nZS5m
aXJzdCwgcmFuZ2Uuc2Vjb25kKTsKK30KKworLy8gRnJvbSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcv
aHRtbC9yZmMyMDQ1I3NlY3Rpb24tNS4xOgorLy8KKy8vIGNvbnRlbnQgOj0gIkNvbnRlbnQtVHlw
ZSIgIjoiIHR5cGUgIi8iIHN1YnR5cGUKKy8vICAgICAgICAgICAgKigiOyIgcGFyYW1ldGVyKQor
Ly8gICAgICAgICAgICA7IE1hdGNoaW5nIG9mIG1lZGlhIHR5cGUgYW5kIHN1YnR5cGUKKy8vICAg
ICAgICAgICAgOyBpcyBBTFdBWVMgY2FzZS1pbnNlbnNpdGl2ZS4KKy8vCisvLyB0eXBlIDo9IGRp
c2NyZXRlLXR5cGUgLyBjb21wb3NpdGUtdHlwZQorLy8KKy8vIGRpc2NyZXRlLXR5cGUgOj0gInRl
eHQiIC8gImltYWdlIiAvICJhdWRpbyIgLyAidmlkZW8iIC8KKy8vICAgICAgICAgICAgICAgICAg
ImFwcGxpY2F0aW9uIiAvIGV4dGVuc2lvbi10b2tlbgorLy8KKy8vIGNvbXBvc2l0ZS10eXBlIDo9
ICJtZXNzYWdlIiAvICJtdWx0aXBhcnQiIC8gZXh0ZW5zaW9uLXRva2VuCisvLworLy8gZXh0ZW5z
aW9uLXRva2VuIDo9IGlldGYtdG9rZW4gLyB4LXRva2VuCisvLworLy8gaWV0Zi10b2tlbiA6PSA8
QW4gZXh0ZW5zaW9uIHRva2VuIGRlZmluZWQgYnkgYQorLy8gICAgICAgICAgICAgICAgc3RhbmRh
cmRzLXRyYWNrIFJGQyBhbmQgcmVnaXN0ZXJlZAorLy8gICAgICAgICAgICAgICAgd2l0aCBJQU5B
Lj4KKy8vCisvLyB4LXRva2VuIDo9IDxUaGUgdHdvIGNoYXJhY3RlcnMgIlgtIiBvciAieC0iIGZv
bGxvd2VkLCB3aXRoCisvLyAgICAgICAgICAgICBubyBpbnRlcnZlbmluZyB3aGl0ZSBzcGFjZSwg
YnkgYW55IHRva2VuPgorLy8KKy8vIHN1YnR5cGUgOj0gZXh0ZW5zaW9uLXRva2VuIC8gaWFuYS10
b2tlbgorLy8KKy8vIGlhbmEtdG9rZW4gOj0gPEEgcHVibGljbHktZGVmaW5lZCBleHRlbnNpb24g
dG9rZW4uIFRva2VucworLy8gICAgICAgICAgICAgICAgb2YgdGhpcyBmb3JtIG11c3QgYmUgcmVn
aXN0ZXJlZCB3aXRoIElBTkEKKy8vICAgICAgICAgICAgICAgIGFzIHNwZWNpZmllZCBpbiBSRkMg
MjA0OC4+CisvLworLy8gcGFyYW1ldGVyIDo9IGF0dHJpYnV0ZSAiPSIgdmFsdWUKKy8vCisvLyBh
dHRyaWJ1dGUgOj0gdG9rZW4KKy8vICAgICAgICAgICAgICA7IE1hdGNoaW5nIG9mIGF0dHJpYnV0
ZXMKKy8vICAgICAgICAgICAgICA7IGlzIEFMV0FZUyBjYXNlLWluc2Vuc2l0aXZlLgorLy8KKy8v
IHZhbHVlIDo9IHRva2VuIC8gcXVvdGVkLXN0cmluZworLy8KKy8vIHRva2VuIDo9IDEqPGFueSAo
VVMtQVNDSUkpIENIQVIgZXhjZXB0IFNQQUNFLCBDVExzLAorLy8gICAgICAgICAgICAgb3IgdHNw
ZWNpYWxzPgorLy8KKy8vIHRzcGVjaWFscyA6PSAgIigiIC8gIikiIC8gIjwiIC8gIj4iIC8gIkAi
IC8KKy8vICAgICAgICAgICAgICAgIiwiIC8gIjsiIC8gIjoiIC8gIlwiIC8gPCI+CisvLyAgICAg
ICAgICAgICAgICIvIiAvICJbIiAvICJdIiAvICI/IiAvICI9IgorLy8gICAgICAgICAgICAgICA7
IE11c3QgYmUgaW4gcXVvdGVkLXN0cmluZywKKy8vICAgICAgICAgICAgICAgOyB0byB1c2Ugd2l0
aGluIHBhcmFtZXRlciB2YWx1ZXMKKwordGVtcGxhdGUgPGNsYXNzIFQ+Citib29sIHBhcnNlQ29u
dGVudFR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgVCYgcGFyc2VyVHlwZSkKK3sKKyAg
ICBpZiAoY29udGVudFR5cGUuY29udGFpbnMoJ1xyJykgfHwgY29udGVudFR5cGUuY29udGFpbnMo
J1xuJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsK
KyAgICB1bnNpZ25lZCBjb250ZW50VHlwZUxlbmd0aCA9IGNvbnRlbnRUeXBlLmxlbmd0aCgpOwor
ICAgIHNraXBTcGFjZXMoY29udGVudFR5cGUsIGluZGV4KTsKKyAgICBpZiAoaW5kZXggPj0gY29u
dGVudFR5cGVMZW5ndGgpICB7CisgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5
cGUgc3RyaW5nICclcyciLCBjb250ZW50VHlwZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBUaGVyZSBzaG91bGQgbm90IGJlIGFueSBxdW90
ZWQgc3RyaW5ncyB1bnRpbCB3ZSByZWFjaCB0aGUgcGFyYW1ldGVycy4KKyAgICBzaXplX3Qgc2Vt
aUNvbG9uSW5kZXggPSBjb250ZW50VHlwZS5maW5kKCc7JywgaW5kZXgpOworICAgIGlmIChzZW1p
Q29sb25JbmRleCA9PSBub3RGb3VuZCkgeworICAgICAgICBwYXJzZXJUeXBlLnNldENvbnRlbnRU
eXBlKFN1YnN0cmluZ1JhbmdlKGluZGV4LCBjb250ZW50VHlwZUxlbmd0aCkpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwYXJzZXJUeXBlLnNldENvbnRlbnRUeXBlKFN1YnN0
cmluZ1JhbmdlKGluZGV4LCBzZW1pQ29sb25JbmRleCAtIGluZGV4KSk7CisgICAgaW5kZXggPSBz
ZW1pQ29sb25JbmRleCArIDE7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgc2tpcFNwYWNl
cyhjb250ZW50VHlwZSwgaW5kZXgpOworICAgICAgICBTdWJzdHJpbmdSYW5nZSBrZXlSYW5nZSA9
IHBhcnNlVG9rZW4oY29udGVudFR5cGUsIGluZGV4KTsKKyAgICAgICAgaWYgKCFrZXlSYW5nZS5z
ZWNvbmQgfHwgaW5kZXggPj0gY29udGVudFR5cGVMZW5ndGgpIHsKKyAgICAgICAgICAgIExPR19F
UlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUgcGFyYW1ldGVyIG5hbWUuIik7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICAvLyBTaG91bGQgd2UgdG9sZXJh
dGUgc3BhY2VzIGhlcmU/CisgICAgICAgIGlmIChjb250ZW50VHlwZVtpbmRleCsrXSAhPSAnPScg
fHwgaW5kZXggPj0gY29udGVudFR5cGVMZW5ndGgpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigi
SW52YWxpZCBDb250ZW50LVR5cGUgbWFsZm9ybWVkIHBhcmFtZXRlci4iKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNob3VsZCB3ZSB0b2xlcmF0
ZSBzcGFjZXMgaGVyZT8KKyAgICAgICAgU3RyaW5nIHZhbHVlOworICAgICAgICBTdWJzdHJpbmdS
YW5nZSB2YWx1ZVJhbmdlOworICAgICAgICBpZiAoY29udGVudFR5cGVbaW5kZXhdID09ICciJykK
KyAgICAgICAgICAgIHZhbHVlUmFuZ2UgPSBwYXJzZVF1b3RlZFN0cmluZyhjb250ZW50VHlwZSwg
aW5kZXgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2YWx1ZVJhbmdlID0gcGFyc2VUb2tl
bihjb250ZW50VHlwZSwgaW5kZXgpOworCisgICAgICAgIGlmICghdmFsdWVSYW5nZS5zZWNvbmQp
IHsKKyAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUsIGludmFsaWQg
cGFyYW1ldGVyIHZhbHVlLiIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgLy8gU2hvdWxkIHdlIHRvbGVyYXRlIHNwYWNlcyBoZXJlPworICAgICAgICBp
ZiAoaW5kZXggPCBjb250ZW50VHlwZUxlbmd0aCAmJiBjb250ZW50VHlwZVtpbmRleCsrXSAhPSAn
OycpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUsIGludmFs
aWQgY2hhcmFjdGVyIGF0IHRoZSBlbmQgb2Yga2V5L3ZhbHVlIHBhcmFtZXRlci4iKTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHBhcnNlclR5cGUuc2V0
Q29udGVudFR5cGVQYXJhbWV0ZXIoa2V5UmFuZ2UsIHZhbHVlUmFuZ2UpOworCisgICAgICAgIGlm
IChpbmRleCA+PSBjb250ZW50VHlwZUxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIGlzVmFsaWRDb250ZW50VHlwZShj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQoreworICAgIEVtcHR5UGFyc2VkQ29udGVudFR5cGUg
cGFyc2VkQ29udGVudFR5cGUgPSBFbXB0eVBhcnNlZENvbnRlbnRUeXBlKCk7CisgICAgcmV0dXJu
IHBhcnNlQ29udGVudFR5cGU8RW1wdHlQYXJzZWRDb250ZW50VHlwZT4oY29udGVudFR5cGUsIHBh
cnNlZENvbnRlbnRUeXBlKTsKK30KKworUGFyc2VkQ29udGVudFR5cGU6OlBhcnNlZENvbnRlbnRU
eXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCisgICAgOiBtX2NvbnRlbnRUeXBlKGNvbnRl
bnRUeXBlLnN0cmlwV2hpdGVTcGFjZSgpKQoreworICAgIHBhcnNlQ29udGVudFR5cGU8UGFyc2Vk
Q29udGVudFR5cGU+KG1fY29udGVudFR5cGUsICp0aGlzKTsKK30KKworU3RyaW5nIFBhcnNlZENv
bnRlbnRUeXBlOjpjaGFyc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGFyYW1ldGVyVmFsdWVG
b3JOYW1lKCJjaGFyc2V0Iik7Cit9CisKK1N0cmluZyBQYXJzZWRDb250ZW50VHlwZTo6cGFyYW1l
dGVyVmFsdWVGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9wYXJhbWV0ZXJzLmdldChuYW1lKTsKK30KKworc2l6ZV90IFBhcnNlZENvbnRlbnRUeXBlOjpw
YXJhbWV0ZXJDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFyYW1ldGVycy5zaXplKCk7
Cit9CisKK3ZvaWQgUGFyc2VkQ29udGVudFR5cGU6OnNldENvbnRlbnRUeXBlKGNvbnN0IFN1YnN0
cmluZ1JhbmdlJiBjb250ZW50UmFuZ2UpCit7CisgICAgbV9taW1lVHlwZSA9IHN1YnN0cmluZ0Zv
clJhbmdlKG1fY29udGVudFR5cGUsIGNvbnRlbnRSYW5nZSkuc3RyaXBXaGl0ZVNwYWNlKCk7Cit9
CisKK3ZvaWQgUGFyc2VkQ29udGVudFR5cGU6OnNldENvbnRlbnRUeXBlUGFyYW1ldGVyKGNvbnN0
IFN1YnN0cmluZ1JhbmdlJiBrZXksIGNvbnN0IFN1YnN0cmluZ1JhbmdlJiB2YWx1ZSkKK3sKKyAg
ICBtX3BhcmFtZXRlcnMuc2V0KHN1YnN0cmluZ0ZvclJhbmdlKG1fY29udGVudFR5cGUsIGtleSks
IHN1YnN0cmluZ0ZvclJhbmdlKG1fY29udGVudFR5cGUsIHZhbHVlKSk7Cit9CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTE5MDM1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBhcnNlZENvbnRlbnRUeXBlX2gKKyNkZWZpbmUgUGFy
c2VkQ29udGVudFR5cGVfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gPGluZGV4LCBsZW5ndGg+Cit0eXBlZGVmIHN0ZDo6
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IFN1YnN0cmluZ1JhbmdlOworYm9vbCBpc1ZhbGlkQ29u
dGVudFR5cGUoY29uc3QgU3RyaW5nJik7CisKKy8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgY29t
bWVudHMuCitjbGFzcyBQYXJzZWRDb250ZW50VHlwZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
UGFyc2VkQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgbWltZVR5cGUo
KSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9CisgICAgU3RyaW5nIGNoYXJzZXQoKSBjb25z
dDsKKworICAgIC8vIE5vdGUgdGhhdCBpbiB0aGUgY2FzZSBvZiBtdWx0aXBsZSB2YWx1ZXMgZm9y
IHRoZSBzYW1lIG5hbWUsIHRoZSBsYXN0IHZhbHVlIGlzIHJldHVybmVkLgorICAgIFN0cmluZyBw
YXJhbWV0ZXJWYWx1ZUZvck5hbWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgc2l6ZV90IHBh
cmFtZXRlckNvdW50KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8Y2xhc3MgVD4K
KyAgICBmcmllbmQgYm9vbCBwYXJzZUNvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYsIFQmKTsKKyAg
ICB2b2lkIHNldENvbnRlbnRUeXBlKGNvbnN0IFN1YnN0cmluZ1JhbmdlJik7CisgICAgdm9pZCBz
ZXRDb250ZW50VHlwZVBhcmFtZXRlcihjb25zdCBTdWJzdHJpbmdSYW5nZSYsIGNvbnN0IFN1YnN0
cmluZ1JhbmdlJik7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEtleVZh
bHVlUGFpcnM7CisgICAgU3RyaW5nIG1fY29udGVudFR5cGU7CisgICAgS2V5VmFsdWVQYWlycyBt
X3BhcmFtZXRlcnM7CisgICAgU3RyaW5nIG1fbWltZVR5cGU7Cit9OworCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172037</attachid>
            <date>2012-11-02 04:51:33 -0700</date>
            <delta_ts>2012-11-05 00:59:29 -0800</delta_ts>
            <desc>Patch 3</desc>
            <filename>webcore_parsedcontenttype_3.patch</filename>
            <type>text/plain</type>
            <size>40157</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNjU4NjBkMS4uNWRhYjZjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE5OTUsNyArMTk5NSw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L0NyZWRlbnRpYWwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5j
cHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2VyLmNwcAogICAgIHBsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVR
dWV1ZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKQEAgLTIw
MDYsNiArMjAwNSw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBWYWxpZGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcAorICAgIHBsYXRm
b3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Q
cm90ZWN0aW9uU3BhY2UuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDcwNjBjNTQuLjI0ZjA1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMi0xMS0w
MiAgQWxleGFuZGVyIFNoYWxhbW92ICA8YWxleGFuZGVyLnNoYWxhbW92QGludGVsLmNvbT4KKwor
ICAgICAgICBJbXByb3ZlIENvbnRlbnRUeXBlUGFyc2VyLCBzbyB0aGF0IGl0IGNvdWxkIGJlIHVz
ZWQgdG8gdmFsaWRhdGUgbWltZSB0eXBlIGFjY29yZGluZyB0byBSRkMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDkyNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBQYXJzZWRD
b250ZW50VHlwZSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgY29udGVudHMgb2YgcGFyc2VkCisgICAg
ICAgIGNvbnRlbnQgdHlwZSBzdHJpbmcuIGlzVmFsaWRDb250ZW50VHlwZSBmdW5jdGlvbiBjb3Vs
ZCBiZSB1c2VkIHRvIGNoZWNrIGlmCisgICAgICAgIGZvcm1hdCBvZiB0aGUgY29udGVudCB0eXBl
IHN0cmluZyBpcyBhY29ycmRpbmcgdG8gUkZDIDI2MTYgc2VjdGlvbiA0LjIuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAg
ICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L01JTUVIZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUlNRUhlYWRlcjo6cGFyc2VIZWFk
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBh
cnNlci5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEVtcHR5UGFyc2VkQ29udGVu
dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlQYXJzZWRDb250ZW50VHlwZTo6c2V0Q29u
dGVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlQYXJzZWRDb250ZW50VHlwZTo6c2V0
Q29udGVudFR5cGVQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2tpcFNwYWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjppc1Rva2VuQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VRdW90ZWRTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6c3Vic3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VD
b250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkQ29udGVudFR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OlBhcnNlZENvbnRlbnRUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhcnNlZENvbnRlbnRUeXBlOjpjaGFyc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBhcnNlZENvbnRlbnRUeXBlOjpwYXJhbWV0ZXJWYWx1ZUZvck5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OnBhcmFtZXRlckNvdW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhcnNlZENvbnRlbnRUeXBlOjpzZXRDb250ZW50VHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXJzZWRDb250ZW50VHlwZTo6c2V0Q29udGVudFR5cGVQYXJhbWV0ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuaDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuaC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGFyc2VkQ29udGVudFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6Om1pbWVUeXBlKToKKwogMjAxMi0xMS0wMSAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW50cm9kdWNlIEVOQUJM
RV9EQVRFX0FORF9USU1FX0lOUFVUX1RZUEVTLCBhbmQgY2xhcmlmeSB1c2FnZSBvZiBvdGhlciBy
ZWxhdGVkIGZsYWdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxMmJjOGY1Li44
MTdmMjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ2OTcsOCArNDY5Nyw2
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JTdG9yYWdlRGF0YS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0NvbnRlbnRUeXBlUGFyc2VyLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Db250ZW50VHlwZVBhcnNlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Nvb2tpZVN0b3JhZ2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVk
ZW50aWFsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFs
LmggXApAQCAtNDcyMiw2ICs0NzIwLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Qcm94eVNlcnZlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA0ODU5MjEwLi41YzY4N2Ix
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKQEAgLTEwNDUsNyArMTA0NSw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHBs
YXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9DcmVkZW50aWFsLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3Rv
cmFnZS5jcHAgXAotICAgIHBsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuY3BwIFwK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YUJ1aWxkZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJN
YXAuY3BwIFwKQEAgLTEwNTQsNiArMTA1Myw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvSFRUUFZhbGlkYXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVI
ZWFkZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNw
cCBcCisgICAgcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAgXAogICAgIHBs
YXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9Qcm94eVNlcnZlci5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJh
c2UuY3BwIFwKQEAgLTIyMjcsNyArMjIyNyw2IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvQ29va2llU3RvcmFnZS5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRp
YWwuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oIFwKLSAgICBw
bGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2VyLmggXAogICAgIHBsYXRmb3JtL25ldHdv
cmsvRE5TUmVzb2x2ZVF1ZXVlLmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWls
ZGVyLmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBcCkBAIC0yMjM5LDYgKzIy
MzgsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmluZy5o
IFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmggXAogICAgIHBsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaCBcCisgICAgcGxhdGZvcm0vbmV0d29y
ay9QYXJzZWRDb250ZW50VHlwZS5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25T
cGFjZS5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmggXAogICAgIHBsYXRm
b3JtL25ldHdvcmsvcXQvUXRNSU1FVHlwZVNuaWZmZXIuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
NTI0MjlmNS4uZDViMDI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTU0NSw4ICs1NTQ1LDYgQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvQmxvYlN0b3JhZ2VEYXRhLmgnLAotICAgICAgICAg
ICAgJ3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuY3BwJywKLSAgICAgICAgICAg
ICdwbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2VyLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25l
dHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3
b3JrL0ROUy5oJywKQEAgLTU1NjUsNiArNTU2Myw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0v
bmV0d29yay9NSU1FSGVhZGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RhdGVOb3RpZmllci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0YXRlTm90aWZpZXIuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9Q
YXJzZWRDb250ZW50VHlwZS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUGFy
c2VkQ29udGVudFR5cGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0
aW9uU3BhY2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVy
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDdkMjYxN2YuLmZiZDhlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk2Nyw4ICs5NjcsNiBAQAogCQkzM0Mw
Q0NENDExMkM1RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4dElucHV0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzQzBDQ0QyMTEyQzVFNjIwMENFMDU3
RCAvKiBTZWN1cmVUZXh0SW5wdXQuY3BwICovOyB9OwogCQkzM0MwQ0NENTExMkM1RTYyMDBDRTA1
N0QgLyogU2VjdXJlVGV4dElucHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzM0MwQ0NEMzExMkM1RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4dElucHV0
LmggKi87IH07CiAJCTMzRDAyMTJEMTMxREIzN0IwMDQwOTFBOCAvKiBDb29raWVTdG9yYWdlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTNGMDFFQTEy
NzBFMTBEMDBERkJBNzEgLyogQ29va2llU3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTM3MEQ2RURBMTM4NDU0NTUwMDQ0MTAzRSAvKiBD
b250ZW50VHlwZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzNzBENkVEODEzODQ1NDU1MDA0NDEwM0UgLyogQ29udGVudFR5cGVQYXJzZXIu
Y3BwICovOyB9OwotCQkzNzBENkVEQjEzODQ1NDU1MDA0NDEwM0UgLyogQ29udGVudFR5cGVQYXJz
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MEQ2
RUQ5MTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlwZVBhcnNlci5oICovOyB9OwogCQkzNzE5
NDE5NjE1NjZCMzcyMDBBMjc2RDggLyogV2ViQ29yZU5TQ2VsbEV4dHJhcy5tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxOTQxOTQxNTY2QjM3MjAwQTI3
NkQ4IC8qIFdlYkNvcmVOU0NlbGxFeHRyYXMubSAqLzsgfTsKIAkJMzcxOTQxOTcxNTY2QjM3MjAw
QTI3NkQ4IC8qIFdlYkNvcmVOU0NlbGxFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MTk0MTk1MTU2NkIzNzIwMEEyNzZEOCAvKiBXZWJDb3Jl
TlNDZWxsRXh0cmFzLmggKi87IH07CiAJCTM3MUE2N0NCMTFDNkM3REIwMDA0N0I4QiAvKiBIeXBo
ZW5hdGlvbkNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3MUE2N0NBMTFDNkM3REIwMDA0N0I4QiAvKiBIeXBoZW5hdGlvbkNGLmNwcCAqLzsgfTsK
QEAgLTEyMDMsNiArMTIwMSw4IEBACiAJCTQ0MzExQ0Q4MTJFNEUyNEIwMDBBOEQxOSAvKiBET01E
b2N1bWVudFByaXZhdGUuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MzExQ0Q1MTJFNEUyMkQwMDBBOEQxOSAvKiBET01Eb2N1
bWVudFByaXZhdGUuaCAqLzsgfTsKIAkJNDQzMTFDRDkxMkU0RTI1NzAwMEE4RDE5IC8qIERPTURv
Y3VtZW50RnJhZ21lbnRQcml2YXRlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDMxMUNENDEyRTRFMjJEMDAwQThEMTkgLyog
RE9NRG9jdW1lbnRGcmFnbWVudFByaXZhdGUuaCAqLzsgfTsKIAkJNDQzMTFGODIxMkU0RTY2QzAw
MEE4RDE5IC8qIERPTURvY3VtZW50RnJhZ21lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFNzExNDUwQUM1RDUzNDAwNTMyNzBGIC8q
IERPTURvY3VtZW50RnJhZ21lbnRJbnRlcm5hbC5oICovOyB9OworCQk0NDc5NTgwNDE2NDNCNDlB
MDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Nzk1ODAzMTY0M0I0N0IwMDFFMEE3RiAvKiBQYXJzZWRD
b250ZW50VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTQ0Nzk1ODA1MTY0M0I0QjIwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDc5NTgwMjE2
NDNCNDdCMDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwICovOyB9OwogCQk0NDhBMjlC
RjBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0OEEyOUJEMEE0NkQ5Q0IwMDMw
NzU5RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oICovOyB9OwogCQk0NDhBMjlDMDBBNDZE
OUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ4QTI5QkUwQTQ2RDlDQjAwMzA3NTlG
IC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcCAqLzsgfTsKIAkJNDQ4QUQyN0MwQTQ4MTM3
QTAwMjNEMTc5IC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0OEFEMjdBMEE0ODEzNzkwMDIz
RDE3OSAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgKi87IH07CkBAIC04MTI2
LDggKzgxMjYsNiBAQAogCQkzMzlCNUI2MjEzMURBQTMyMDBGNDhEMDIgLyogQ29va2llc1N0cmF0
ZWd5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tpZXNTdHJhdGVneS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzM0MwQ0NEMjExMkM1RTYyMDBDRTA1N0Qg
LyogU2VjdXJlVGV4dElucHV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNlY3VyZVRleHRJbnB1dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMz
QzBDQ0QzMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjdXJlVGV4dElucHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTM3MEQ2RUQ4MTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlwZVBhcnNl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50VHlwZVBh
cnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM3MEQ2RUQ5MTM4NDU0NTUw
MDQ0MTAzRSAvKiBDb250ZW50VHlwZVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb250ZW50VHlwZVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzNzE5NDE5NDE1NjZCMzcyMDBBMjc2RDggLyogV2ViQ29yZU5TQ2VsbEV4dHJhcy5tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJDb3JlTlNDZWxsRXh0cmFzLm07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MTk0MTk1MTU2NkIzNzIwMEEyNzZEOCAvKiBX
ZWJDb3JlTlNDZWxsRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkNvcmVOU0NlbGxFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxQTY3
Q0ExMUM2QzdEQjAwMDQ3QjhCIC8qIEh5cGhlbmF0aW9uQ0YuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSHlwaGVuYXRpb25DRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC04Mzk0LDYgKzgzOTIsOCBAQAogCQk0NDI5QUIwNzBDQjg0RjgxMDA3NjQ3
QzUgLyogRE9NVGV4dEV2ZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTVRleHRFdmVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ0MzExQ0Q0MTJFNEUyMkQwMDBBOEQxOSAvKiBET01Eb2N1bWVudEZyYWdtZW50UHJpdmF0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01Eb2N1bWVudEZyYWdtZW50
UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDMxMUNENTEyRTRFMjJE
MDAwQThEMTkgLyogRE9NRG9jdW1lbnRQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTURvY3VtZW50UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NDc5NTgwMjE2NDNCNDdCMDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyc2VkQ29udGVudFR5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NDc5NTgwMzE2NDNCNDdCMDAxRTBBN0Yg
LyogUGFyc2VkQ29udGVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGFyc2VkQ29udGVudFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ4QTI5
QkQwQTQ2RDlDQjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDhBMjlCRTBBNDZEOUNCMDAzMDc1OUYgLyogSlNI
VE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDQ4QUQyN0EwQTQ4MTM3OTAwMjNEMTc5IC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0
aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRN
TE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE1NjYwLDggKzE1NjYwLDYgQEAKIAkJCQkyRUI0QkNEMDEyMUYwM0UzMDBFQzQ4ODUgLyog
QmxvYlJlc291cmNlSGFuZGxlLmNwcCAqLywKIAkJCQkyRUI0QkNEMTEyMUYwM0UzMDBFQzQ4ODUg
LyogQmxvYlJlc291cmNlSGFuZGxlLmggKi8sCiAJCQkJMkVERUYxRjIxMjFCMEVGQzAwNzI2REIy
IC8qIEJsb2JTdG9yYWdlRGF0YS5oICovLAotCQkJCTM3MEQ2RUQ4MTM4NDU0NTUwMDQ0MTAzRSAv
KiBDb250ZW50VHlwZVBhcnNlci5jcHAgKi8sCi0JCQkJMzcwRDZFRDkxMzg0NTQ1NTAwNDQxMDNF
IC8qIENvbnRlbnRUeXBlUGFyc2VyLmggKi8sCiAJCQkJRTEzRjAxRUExMjcwRTEwRDAwREZCQTcx
IC8qIENvb2tpZVN0b3JhZ2UuaCAqLywKIAkJCQk1MTRDNzY1ODBDRTkyM0ExMDA3RUYzQ0QgLyog
Q3JlZGVudGlhbC5jcHAgKi8sCiAJCQkJNTE0Qzc2NTkwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRl
bnRpYWwuaCAqLywKQEAgLTE1Njg3LDYgKzE1Njg1LDggQEAKIAkJCQk2MjhEMjE0QjEyMTMxRUQx
MDA1NURDRkMgLyogTmV0d29ya2luZ0NvbnRleHQuaCAqLywKIAkJCQkxQTdGQTYxQTBEREEzQkJF
MDAyOEY4QTUgLyogTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwICovLAogCQkJCTFBN0ZBNjE4MERE
QTNCM0EwMDI4RjhBNSAvKiBOZXR3b3JrU3RhdGVOb3RpZmllci5oICovLAorCQkJCTQ0Nzk1ODAy
MTY0M0I0N0IwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5jcHAgKi8sCisJCQkJNDQ3OTU4
MDMxNjQzQjQ3QjAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmggKi8sCiAJCQkJNTE0Qzc2
NUYwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5jcHAgKi8sCiAJCQkJNTE0Qzc2
NjAwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5oICovLAogCQkJCTUxQTA1MjU1
MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3BhY2VIYXNoLmggKi8sCkBAIC0yMjY0OCw3
ICsyMjY0OCw2IEBACiAJCQkJOTdDNDcxREMxMkY5MjVCRDAwODYzNTRCIC8qIENvbnRlbnRTZWN1
cml0eVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdCNzkxQTYxNEM2QTYyOTAwRjIwMkQx
IC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUQwMTVDQTBG
NEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTM3MEQ2
RURCMTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlwZVBhcnNlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTc2MjdCOEUxNEZCM0NFRTAwMkNEQ0ExIC8qIENvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0QzQ0ExMTE1N0RGOEU5MDA4NjBBOTcgLyogQ29u
dGV4dEZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0I2QTBFNjBCMEJDQTVDMDBGNTAy
N0EgLyogQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovLApAQCAtMjU3MjMsNiArMjU3MjIsNyBA
QAogCQkJCTUwOTMzMzUwMTYzQjBFNDMwMDA5OUE2MCAvKiBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MEQzMjg1ODE2M0IzMTNGMDAxNjExMUUgLyogVmFs
aWRhdGVkQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzRkZGRjlB
OTE1OUQ5QTU1MDAyMEJCRDUgLyogV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0NDc5NTgwNDE2NDNCNDlBMDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtMjYyMzQsNyArMjYyMzQsNiBAQAogCQkJCTk3QzQ3MURCMTJGOTI1
QkQwMDg2MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTdCNzkxQTUxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQxRDAxNUNCMEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkzNzBENkVEQTEzODQ1NDU1MDA0NDEwM0UgLyogQ29u
dGVudFR5cGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc2MjdCOEQxNEZCM0NFRTAw
MkNEQ0ExIC8qIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE3RDNDQTEwMTU3REY4RTkwMDg2MEE5NyAvKiBDb250ZXh0RmVhdHVyZXMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMDY1QUQ0RjYwQjBDMkVEQTAwNUEyQjFEIC8qIENvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4ODEyLDYgKzI4ODExLDcgQEAKIAkJCQkz
RkZGRjlBODE1OUQ5QTU1MDAyMEJCRDUgLyogV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTRGRkMwMjJCMTY0M0I3MTAwMDRFMTYzOCAvKiBOb2RlUmFyZURhdGEu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEZGQzAyMkQxNjQzQjcyNjAwNEUxNjM4IC8qIEVsZW1l
bnRSYXJlRGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0NDc5NTgwNTE2NDNCNEIyMDAxRTBB
N0YgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGE0NTg4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMjIxICswLDAgQEAKLSAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNvbnRl
bnRUeXBlUGFyc2VyLmgiCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0
YXRpYyB2b2lkIHNraXBTcGFjZXMoY29uc3QgU3RyaW5nJiBpbnB1dCwgc2l6ZV90JiBzdGFydElu
ZGV4KQotewotICAgIHdoaWxlIChzdGFydEluZGV4IDwgaW5wdXQubGVuZ3RoKCkgJiYgaW5wdXRb
c3RhcnRJbmRleF0gPT0gJyAnKQotICAgICAgICArK3N0YXJ0SW5kZXg7Ci19Ci0KLXN0YXRpYyBi
b29sIGlzVG9rZW5DaGFyYWN0ZXIoY2hhciBjKQotewotICAgIHJldHVybiBpc0FTQ0lJKGMpICYm
IGMgPiAnICcgJiYgYyAhPSAnIicgJiYgYyAhPSAnKCcgJiYgYyAhPSAnKScgJiYgYyAhPSAnLCcg
JiYgYyAhPSAnLycgJiYgKGMgPCAnOicgfHwgYyA+ICdAJykgJiYgKGMgPCAnWycgfHwgYyA+ICdd
Jyk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgcGFyc2VUb2tlbihjb25zdCBTdHJpbmcmIGlucHV0LCBz
aXplX3QmIHN0YXJ0SW5kZXgpCi17Ci0gICAgaWYgKHN0YXJ0SW5kZXggPj0gaW5wdXQubGVuZ3Ro
KCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5n
QnVpbGRlcjsKLSAgICB3aGlsZSAoc3RhcnRJbmRleCA8IGlucHV0Lmxlbmd0aCgpKSB7Ci0gICAg
ICAgIGNoYXIgY3VycmVudENoYXJhY3RlciA9IGlucHV0W3N0YXJ0SW5kZXhdOwotICAgICAgICBp
ZiAoIWlzVG9rZW5DaGFyYWN0ZXIoY3VycmVudENoYXJhY3RlcikpCi0gICAgICAgICAgICByZXR1
cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChjdXJyZW50Q2hhcmFjdGVyKTsKLSAgICAgICAgKytzdGFydEluZGV4OwotICAgIH0KLSAgICBy
ZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwotfQotCi1zdGF0aWMgU3RyaW5nIHBhcnNl
UXVvdGVkU3RyaW5nKGNvbnN0IFN0cmluZyYgaW5wdXQsIHNpemVfdCYgc3RhcnRJbmRleCkKLXsK
LSAgICBpZiAoc3RhcnRJbmRleCA+PSBpbnB1dC5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotCi0gICAgaWYgKGlucHV0W3N0YXJ0SW5kZXgrK10gIT0gJyInIHx8IHN0YXJ0SW5k
ZXggPj0gaW5wdXQubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIFN0
cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBib29sIGxhc3RDaGFyYWN0ZXJXYXNCYWNr
c2xhc2ggPSBmYWxzZTsKLSAgICBjaGFyIGN1cnJlbnRDaGFyYWN0ZXI7Ci0gICAgd2hpbGUgKChj
dXJyZW50Q2hhcmFjdGVyID0gaW5wdXRbc3RhcnRJbmRleCsrXSkgIT0gJyInIHx8IGxhc3RDaGFy
YWN0ZXJXYXNCYWNrc2xhc2gpIHsKLSAgICAgICAgaWYgKHN0YXJ0SW5kZXggPj0gaW5wdXQubGVu
Z3RoKCkpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgICAgIGlmIChjdXJyZW50
Q2hhcmFjdGVyID09ICdcXCcgJiYgIWxhc3RDaGFyYWN0ZXJXYXNCYWNrc2xhc2gpIHsKLSAgICAg
ICAgICAgIGxhc3RDaGFyYWN0ZXJXYXNCYWNrc2xhc2ggPSB0cnVlOwotICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxhc3RDaGFyYWN0ZXJXYXNCYWNrc2xhc2gp
Ci0gICAgICAgICAgICBsYXN0Q2hhcmFjdGVyV2FzQmFja3NsYXNoID0gZmFsc2U7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKGN1cnJlbnRDaGFyYWN0ZXIpOwotICAgIH0KLSAgICByZXR1
cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwotfQotCi1Db250ZW50VHlwZVBhcnNlcjo6Q29u
dGVudFR5cGVQYXJzZXIoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKLSAgICA6IG1fY29udGVu
dFR5cGUoY29udGVudFR5cGUuc3RyaXBXaGl0ZVNwYWNlKCkpCi17Ci0gICAgcGFyc2UoKTsKLX0K
LQotU3RyaW5nIENvbnRlbnRUeXBlUGFyc2VyOjpjaGFyc2V0KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gcGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJjaGFyc2V0Iik7Ci19Ci0KLVN0cmluZyBDb250ZW50
VHlwZVBhcnNlcjo6cGFyYW1ldGVyVmFsdWVGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldChuYW1lKTsKLX0KLQotc2l6ZV90IENv
bnRlbnRUeXBlUGFyc2VyOjpwYXJhbWV0ZXJDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
cGFyYW1ldGVycy5zaXplKCk7Ci19Ci0KLS8vIEZyb20gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0
bWwvcmZjMjA0NSNzZWN0aW9uLTUuMToKLS8vCi0vLyBjb250ZW50IDo9ICJDb250ZW50LVR5cGUi
ICI6IiB0eXBlICIvIiBzdWJ0eXBlCi0vLyAgICAgICAgICAgICooIjsiIHBhcmFtZXRlcikKLS8v
ICAgICAgICAgICAgOyBNYXRjaGluZyBvZiBtZWRpYSB0eXBlIGFuZCBzdWJ0eXBlCi0vLyAgICAg
ICAgICAgIDsgaXMgQUxXQVlTIGNhc2UtaW5zZW5zaXRpdmUuCi0vLwotLy8gdHlwZSA6PSBkaXNj
cmV0ZS10eXBlIC8gY29tcG9zaXRlLXR5cGUKLS8vCi0vLyBkaXNjcmV0ZS10eXBlIDo9ICJ0ZXh0
IiAvICJpbWFnZSIgLyAiYXVkaW8iIC8gInZpZGVvIiAvCi0vLyAgICAgICAgICAgICAgICAgICJh
cHBsaWNhdGlvbiIgLyBleHRlbnNpb24tdG9rZW4KLS8vCi0vLyBjb21wb3NpdGUtdHlwZSA6PSAi
bWVzc2FnZSIgLyAibXVsdGlwYXJ0IiAvIGV4dGVuc2lvbi10b2tlbgotLy8KLS8vIGV4dGVuc2lv
bi10b2tlbiA6PSBpZXRmLXRva2VuIC8geC10b2tlbgotLy8KLS8vIGlldGYtdG9rZW4gOj0gPEFu
IGV4dGVuc2lvbiB0b2tlbiBkZWZpbmVkIGJ5IGEKLS8vICAgICAgICAgICAgICAgIHN0YW5kYXJk
cy10cmFjayBSRkMgYW5kIHJlZ2lzdGVyZWQKLS8vICAgICAgICAgICAgICAgIHdpdGggSUFOQS4+
Ci0vLwotLy8geC10b2tlbiA6PSA8VGhlIHR3byBjaGFyYWN0ZXJzICJYLSIgb3IgIngtIiBmb2xs
b3dlZCwgd2l0aAotLy8gICAgICAgICAgICAgbm8gaW50ZXJ2ZW5pbmcgd2hpdGUgc3BhY2UsIGJ5
IGFueSB0b2tlbj4KLS8vCi0vLyBzdWJ0eXBlIDo9IGV4dGVuc2lvbi10b2tlbiAvIGlhbmEtdG9r
ZW4KLS8vCi0vLyBpYW5hLXRva2VuIDo9IDxBIHB1YmxpY2x5LWRlZmluZWQgZXh0ZW5zaW9uIHRv
a2VuLiBUb2tlbnMKLS8vICAgICAgICAgICAgICAgIG9mIHRoaXMgZm9ybSBtdXN0IGJlIHJlZ2lz
dGVyZWQgd2l0aCBJQU5BCi0vLyAgICAgICAgICAgICAgICBhcyBzcGVjaWZpZWQgaW4gUkZDIDIw
NDguPgotLy8KLS8vIHBhcmFtZXRlciA6PSBhdHRyaWJ1dGUgIj0iIHZhbHVlCi0vLwotLy8gYXR0
cmlidXRlIDo9IHRva2VuCi0vLyAgICAgICAgICAgICAgOyBNYXRjaGluZyBvZiBhdHRyaWJ1dGVz
Ci0vLyAgICAgICAgICAgICAgOyBpcyBBTFdBWVMgY2FzZS1pbnNlbnNpdGl2ZS4KLS8vCi0vLyB2
YWx1ZSA6PSB0b2tlbiAvIHF1b3RlZC1zdHJpbmcKLS8vCi0vLyB0b2tlbiA6PSAxKjxhbnkgKFVT
LUFTQ0lJKSBDSEFSIGV4Y2VwdCBTUEFDRSwgQ1RMcywKLS8vICAgICAgICAgICAgIG9yIHRzcGVj
aWFscz4KLS8vCi0vLyB0c3BlY2lhbHMgOj0gICIoIiAvICIpIiAvICI8IiAvICI+IiAvICJAIiAv
Ci0vLyAgICAgICAgICAgICAgICIsIiAvICI7IiAvICI6IiAvICJcIiAvIDwiPgotLy8gICAgICAg
ICAgICAgICAiLyIgLyAiWyIgLyAiXSIgLyAiPyIgLyAiPSIKLS8vICAgICAgICAgICAgICAgOyBN
dXN0IGJlIGluIHF1b3RlZC1zdHJpbmcsCi0vLyAgICAgICAgICAgICAgIDsgdG8gdXNlIHdpdGhp
biBwYXJhbWV0ZXIgdmFsdWVzCi0KLXZvaWQgQ29udGVudFR5cGVQYXJzZXI6OnBhcnNlKCkKLXsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgY29udGVudFR5cGVQYXJhbWV0
ZXJOYW1lLCAoQVNDSUlMaXRlcmFsKCJDb250ZW50LVR5cGUiKSkpOwotCi0gICAgaWYgKCFtX2Nv
bnRlbnRUeXBlLnN0YXJ0c1dpdGgoY29udGVudFR5cGVQYXJhbWV0ZXJOYW1lKSkgewotICAgICAg
ICBMT0dfRVJST1IoIkludmFsaWQgQ29udGVudC1UeXBlIHN0cmluZyAnJXMnIiwgbV9jb250ZW50
VHlwZS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc2l6ZV90
IGNvbnRlbnRUeXBlTGVuZ3RoID0gbV9jb250ZW50VHlwZS5sZW5ndGgoKTsKLSAgICBzaXplX3Qg
aW5kZXggPSBjb250ZW50VHlwZVBhcmFtZXRlck5hbWUubGVuZ3RoKCk7Ci0gICAgc2tpcFNwYWNl
cyhtX2NvbnRlbnRUeXBlLCBpbmRleCk7Ci0gICAgaWYgKGluZGV4ID49IGNvbnRlbnRUeXBlTGVu
Z3RoIHx8IG1fY29udGVudFR5cGVbaW5kZXhdICE9ICc6JyB8fCArK2luZGV4ID49IGNvbnRlbnRU
eXBlTGVuZ3RoKSAgewotICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgQ29udGVudC1UeXBlIHN0
cmluZyAnJXMnIiwgbV9jb250ZW50VHlwZS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICAvLyBUaGVyZSBzaG91bGQgbm90IGJlIGFueSBxdW90ZWQgc3RyaW5n
cyB1bnRpbCB3ZSByZWFjaCB0aGUgcGFyYW1ldGVycy4KLSAgICBzaXplX3Qgc2VtaUNvbG9uSW5k
ZXggPSBtX2NvbnRlbnRUeXBlLmZpbmQoJzsnLCBpbmRleCk7Ci0gICAgaWYgKHNlbWlDb2xvbklu
ZGV4ID09IG5vdEZvdW5kKSB7Ci0gICAgICAgIG1fbWltZVR5cGUgPSBtX2NvbnRlbnRUeXBlLnN1
YnN0cmluZyhpbmRleCkuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBtX21pbWVUeXBlID0gbV9jb250ZW50VHlwZS5zdWJzdHJpbmcoaW5kZXgsIHNlbWlD
b2xvbkluZGV4IC0gaW5kZXgpLnN0cmlwV2hpdGVTcGFjZSgpOwotICAgIGluZGV4ID0gc2VtaUNv
bG9uSW5kZXggKyAxOwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIHNraXBTcGFjZXMobV9j
b250ZW50VHlwZSwgaW5kZXgpOwotICAgICAgICBTdHJpbmcga2V5ID0gcGFyc2VUb2tlbihtX2Nv
bnRlbnRUeXBlLCBpbmRleCk7Ci0gICAgICAgIGlmIChrZXkuaXNFbXB0eSgpIHx8IGluZGV4ID49
IGNvbnRlbnRUeXBlTGVuZ3RoKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgQ29u
dGVudC1UeXBlIHBhcmFtZXRlciBuYW1lLiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIC8vIFNob3VsZCB3ZSB0b2xlcmF0ZSBzcGFjZXMgaGVyZT8KLSAgICAgICAg
aWYgKG1fY29udGVudFR5cGVbaW5kZXgrK10gIT0gJz0nIHx8IGluZGV4ID49IGNvbnRlbnRUeXBl
TGVuZ3RoKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgQ29udGVudC1UeXBlIG1h
bGZvcm1lZCBwYXJhbWV0ZXIuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBTaG91bGQgd2UgdG9sZXJhdGUgc3BhY2VzIGhlcmU/Ci0gICAgICAgIFN0cmlu
ZyB2YWx1ZTsKLSAgICAgICAgaWYgKG1fY29udGVudFR5cGVbaW5kZXhdID09ICciJykKLSAgICAg
ICAgICAgIHZhbHVlID0gcGFyc2VRdW90ZWRTdHJpbmcobV9jb250ZW50VHlwZSwgaW5kZXgpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWx1ZSA9IHBhcnNlVG9rZW4obV9jb250ZW50VHlw
ZSwgaW5kZXgpOwotCi0gICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkgewotICAgICAgICAgICAg
TE9HX0VSUk9SKCJJbnZhbGlkIENvbnRlbnQtVHlwZSwgaW52YWxpZCBwYXJhbWV0ZXIgdmFsdWUu
Iik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTaG91bGQg
d2UgdG9sZXJhdGUgc3BhY2VzIGhlcmU/Ci0gICAgICAgIGlmIChpbmRleCA8IGNvbnRlbnRUeXBl
TGVuZ3RoICYmIG1fY29udGVudFR5cGVbaW5kZXgrK10gIT0gJzsnKSB7Ci0gICAgICAgICAgICBM
T0dfRVJST1IoIkludmFsaWQgQ29udGVudC1UeXBlLCBpbnZhbGlkIGNoYXJhY3RlciBhdCB0aGUg
ZW5kIG9mIGtleS92YWx1ZSBwYXJhbWV0ZXIuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBtX3BhcmFtZXRlcnMuc2V0KGtleSwgdmFsdWUpOwotCi0gICAgICAg
IGlmIChpbmRleCA+PSBjb250ZW50VHlwZUxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICB9Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Q29udGVudFR5cGVQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29u
dGVudFR5cGVQYXJzZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY1N2IwMS4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBl
UGFyc2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDb250ZW50VHlw
ZVBhcnNlcl9oCi0jZGVmaW5lIENvbnRlbnRUeXBlUGFyc2VyX2gKLQotI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEZJWE1FOiBh
ZGQgc3VwcG9ydCBmb3IgY29tbWVudHMuCi1jbGFzcyBDb250ZW50VHlwZVBhcnNlciB7Ci1wdWJs
aWM6Ci0gICAgZXhwbGljaXQgQ29udGVudFR5cGVQYXJzZXIoY29uc3QgU3RyaW5nJik7Ci0KLSAg
ICBTdHJpbmcgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9Ci0gICAgU3Ry
aW5nIGNoYXJzZXQoKSBjb25zdDsKLQotICAgIC8vIE5vdGUgdGhhdCBpbiB0aGUgY2FzZSBvZiBt
dWx0aXBsZSB2YWx1ZXMgZm9yIHRoZSBzYW1lIG5hbWUsIHRoZSBsYXN0IHZhbHVlIGlzIHJldHVy
bmVkLgotICAgIFN0cmluZyBwYXJhbWV0ZXJWYWx1ZUZvck5hbWUoY29uc3QgU3RyaW5nJikgY29u
c3Q7Ci0gICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAg
dm9pZCBwYXJzZSgpOwotCi0gICAgU3RyaW5nIG1fY29udGVudFR5cGU7Ci0KLSAgICB0eXBlZGVm
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEtleVZhbHVlUGFpcnM7Ci0gICAgS2V5VmFsdWVQYWly
cyBtX3BhcmFtZXRlcnM7Ci0gICAgU3RyaW5nIG1fbWltZVR5cGU7Ci19OwotCi19Ci0KLSNlbmRp
ZgotCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhl
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3Bw
CmluZGV4IGY0ZTNlYmYuLjA0OGFiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9NSU1FSGVhZGVyLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIk1JTUVIZWFkZXIuaCIKIAotI2luY2x1ZGUgIkNvbnRlbnRUeXBlUGFy
c2VyLmgiCisjaW5jbHVkZSAiUGFyc2VkQ29udGVudFR5cGUuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXJDaHVua1JlYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtODUsMTQgKzg1LDEzIEBAIFBhc3NSZWZQdHI8TUlNRUhl
YWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIqIGJ1
ZmZlcikKICAgICBLZXlWYWx1ZU1hcCBrZXlWYWx1ZVBhaXJzID0gcmV0cmlldmVLZXlWYWx1ZVBh
aXJzKGJ1ZmZlcik7CiAgICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQYXJhbWV0ZXJzSXRl
cmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSIpOwogICAgIGlmIChtaW1l
UGFyYW1ldGVyc0l0ZXJhdG9yICE9IGtleVZhbHVlUGFpcnMuZW5kKCkpIHsKLSAgICAgICAgLy8g
RklYTUU6IG1ha2UgQ29udGVudFR5cGVQYXJzZXIgbW9yZSBmbGV4aWJsZSBzbyB3ZSBkb24ndCBo
YXZlIHRvIHN5bnRoZXNpemUgdGhlICJDb250ZW50LVR5cGU6Ii4KLSAgICAgICAgQ29udGVudFR5
cGVQYXJzZXIgY29udGVudFR5cGVQYXJzZXIobWFrZVN0cmluZygiQ29udGVudC1UeXBlOiIsIG1p
bWVQYXJhbWV0ZXJzSXRlcmF0b3ItPnZhbHVlKSk7Ci0gICAgICAgIG1pbWVIZWFkZXItPm1fY29u
dGVudFR5cGUgPSBjb250ZW50VHlwZVBhcnNlci5taW1lVHlwZSgpOworICAgICAgICBQYXJzZWRD
b250ZW50VHlwZSBwYXJzZWRDb250ZW50VHlwZShtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1
ZSk7CisgICAgICAgIG1pbWVIZWFkZXItPm1fY29udGVudFR5cGUgPSBwYXJzZWRDb250ZW50VHlw
ZS5taW1lVHlwZSgpOwogICAgICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCi0g
ICAgICAgICAgICBtaW1lSGVhZGVyLT5tX2NoYXJzZXQgPSBjb250ZW50VHlwZVBhcnNlci5jaGFy
c2V0KCkuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgICAgICAgICBtaW1lSGVhZGVyLT5tX2NoYXJz
ZXQgPSBwYXJzZWRDb250ZW50VHlwZS5jaGFyc2V0KCkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgbWltZUhlYWRlci0+bV9tdWx0aXBhcnRUeXBlID0gY29u
dGVudFR5cGVQYXJzZXIucGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJ0eXBlIik7Ci0gICAgICAgICAg
ICBtaW1lSGVhZGVyLT5tX2VuZE9mUGFydEJvdW5kYXJ5ID0gY29udGVudFR5cGVQYXJzZXIucGFy
YW1ldGVyVmFsdWVGb3JOYW1lKCJib3VuZGFyeSIpOworICAgICAgICAgICAgbWltZUhlYWRlci0+
bV9tdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVudFR5cGUucGFyYW1ldGVyVmFsdWVGb3JOYW1l
KCJ0eXBlIik7CisgICAgICAgICAgICBtaW1lSGVhZGVyLT5tX2VuZE9mUGFydEJvdW5kYXJ5ID0g
cGFyc2VkQ29udGVudFR5cGUucGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3VuZGFyeSIpOwogICAg
ICAgICAgICAgaWYgKG1pbWVIZWFkZXItPm1fZW5kT2ZQYXJ0Qm91bmRhcnkuaXNOdWxsKCkpIHsK
ICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIk5vIGJvdW5kYXJ5IGZvdW5kIGluIG11bHRpcGFy
dCBNSU1FIGhlYWRlci4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE1ZWZkNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3Bw
CkBAIC0wLDAgKzEsMjU0IEBACisgLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQYXJzZWRD
b250ZW50VHlwZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBFbXB0eVBhcnNlZENvbnRlbnRUeXBlIHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldENvbnRlbnRU
eXBlKGNvbnN0IFN1YnN0cmluZ1JhbmdlJikgY29uc3QgeyB9CisgICAgdm9pZCBzZXRDb250ZW50
VHlwZVBhcmFtZXRlcihjb25zdCBTdWJzdHJpbmdSYW5nZSYsIGNvbnN0IFN1YnN0cmluZ1Jhbmdl
JikgY29uc3QgeyB9Cit9OworCitzdGF0aWMgdm9pZCBza2lwU3BhY2VzKGNvbnN0IFN0cmluZyYg
aW5wdXQsIHVuc2lnbmVkJiBzdGFydEluZGV4KQoreworICAgIHdoaWxlIChzdGFydEluZGV4IDwg
aW5wdXQubGVuZ3RoKCkgJiYgaW5wdXRbc3RhcnRJbmRleF0gPT0gJyAnKQorICAgICAgICArK3N0
YXJ0SW5kZXg7Cit9CisKK3N0YXRpYyBib29sIGlzVG9rZW5DaGFyYWN0ZXIoY2hhciBjKQorewor
ICAgIHJldHVybiBpc0FTQ0lJKGMpICYmIGMgPiAnICcgJiYgYyAhPSAnIicgJiYgYyAhPSAnKCcg
JiYgYyAhPSAnKScgJiYgYyAhPSAnLCcgJiYgYyAhPSAnLycgJiYgKGMgPCAnOicgfHwgYyA+ICdA
JykgJiYgKGMgPCAnWycgfHwgYyA+ICddJyk7Cit9CisKK3N0YXRpYyBTdWJzdHJpbmdSYW5nZSBw
YXJzZVRva2VuKGNvbnN0IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkJiBzdGFydEluZGV4KQorewor
ICAgIGNvbnN0IHVuc2lnbmVkIGlucHV0TGVuZ2h0ID0gaW5wdXQubGVuZ3RoKCk7CisgICAgY29u
c3QgdW5zaWduZWQgaW5kZXggPSBzdGFydEluZGV4OworICAgIHVuc2lnbmVkJiB0b2tlbkxlbmd0
aCA9IHN0YXJ0SW5kZXg7CisKKyAgICBpZiAodG9rZW5MZW5ndGggPj0gaW5wdXRMZW5naHQpCisg
ICAgICAgIHJldHVybiBTdWJzdHJpbmdSYW5nZSgpOworCisgICAgd2hpbGUgKHRva2VuTGVuZ3Ro
IDwgaW5wdXRMZW5naHQpIHsKKyAgICAgICAgaWYgKCFpc1Rva2VuQ2hhcmFjdGVyKGlucHV0W3Rv
a2VuTGVuZ3RoXSkpCisgICAgICAgICAgICByZXR1cm4gU3Vic3RyaW5nUmFuZ2UoaW5kZXgsIHRv
a2VuTGVuZ3RoKTsKKyAgICAgICAgKyt0b2tlbkxlbmd0aDsKKyAgICB9CisKKyAgICByZXR1cm4g
U3Vic3RyaW5nUmFuZ2UoaW5kZXgsIHRva2VuTGVuZ3RoKTsKK30KKworc3RhdGljIFN1YnN0cmlu
Z1JhbmdlIHBhcnNlUXVvdGVkU3RyaW5nKGNvbnN0IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkJiBz
dGFydEluZGV4KQoreworICAgIGNvbnN0IHVuc2lnbmVkIGlucHV0TGVuZ2h0ID0gaW5wdXQubGVu
Z3RoKCk7CisgICAgY29uc3QgdW5zaWduZWQgaW5kZXggPSBzdGFydEluZGV4OworICAgIHVuc2ln
bmVkJiBzdHJpbmdMZW5ndGggPSBzdGFydEluZGV4OworCisgICAgaWYgKHN0cmluZ0xlbmd0aCA+
PSBpbnB1dExlbmdodCkKKyAgICAgICAgcmV0dXJuIFN1YnN0cmluZ1JhbmdlKCk7CisKKyAgICBp
ZiAoaW5wdXRbc3RyaW5nTGVuZ3RoKytdICE9ICciJyB8fCBzdHJpbmdMZW5ndGggPj0gaW5wdXRM
ZW5naHQpCisgICAgICAgIHJldHVybiBTdWJzdHJpbmdSYW5nZSgpOworCisgICAgYm9vbCBsYXN0
Q2hhcmFjdGVyV2FzQmFja3NsYXNoID0gZmFsc2U7CisgICAgY2hhciBjdXJyZW50Q2hhcmFjdGVy
OworICAgIHdoaWxlICgoY3VycmVudENoYXJhY3RlciA9IGlucHV0W3N0cmluZ0xlbmd0aCsrXSkg
IT0gJyInIHx8IGxhc3RDaGFyYWN0ZXJXYXNCYWNrc2xhc2gpIHsKKyAgICAgICAgaWYgKHN0cmlu
Z0xlbmd0aCA+PSBpbnB1dExlbmdodCkKKyAgICAgICAgICAgIHJldHVybiBTdWJzdHJpbmdSYW5n
ZSgpOworICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PSAnXFwnICYmICFsYXN0Q2hhcmFj
dGVyV2FzQmFja3NsYXNoKSB7CisgICAgICAgICAgICBsYXN0Q2hhcmFjdGVyV2FzQmFja3NsYXNo
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChs
YXN0Q2hhcmFjdGVyV2FzQmFja3NsYXNoKQorICAgICAgICAgICAgbGFzdENoYXJhY3Rlcldhc0Jh
Y2tzbGFzaCA9IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gU3Vic3RyaW5nUmFuZ2UoaW5kZXgs
IHN0cmluZ0xlbmd0aCk7Cit9CisKK3N0YXRpYyBTdHJpbmcgc3Vic3RyaW5nRm9yUmFuZ2UoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFN1YnN0cmluZ1JhbmdlJiByYW5nZSkKK3sKKyAgICBy
ZXR1cm4gc3RyaW5nLnN1YnN0cmluZyhyYW5nZS5maXJzdCwgcmFuZ2Uuc2Vjb25kKTsKK30KKwor
Ly8gRnJvbSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyMDQ1I3NlY3Rpb24tNS4xOgor
Ly8KKy8vIGNvbnRlbnQgOj0gIkNvbnRlbnQtVHlwZSIgIjoiIHR5cGUgIi8iIHN1YnR5cGUKKy8v
ICAgICAgICAgICAgKigiOyIgcGFyYW1ldGVyKQorLy8gICAgICAgICAgICA7IE1hdGNoaW5nIG9m
IG1lZGlhIHR5cGUgYW5kIHN1YnR5cGUKKy8vICAgICAgICAgICAgOyBpcyBBTFdBWVMgY2FzZS1p
bnNlbnNpdGl2ZS4KKy8vCisvLyB0eXBlIDo9IGRpc2NyZXRlLXR5cGUgLyBjb21wb3NpdGUtdHlw
ZQorLy8KKy8vIGRpc2NyZXRlLXR5cGUgOj0gInRleHQiIC8gImltYWdlIiAvICJhdWRpbyIgLyAi
dmlkZW8iIC8KKy8vICAgICAgICAgICAgICAgICAgImFwcGxpY2F0aW9uIiAvIGV4dGVuc2lvbi10
b2tlbgorLy8KKy8vIGNvbXBvc2l0ZS10eXBlIDo9ICJtZXNzYWdlIiAvICJtdWx0aXBhcnQiIC8g
ZXh0ZW5zaW9uLXRva2VuCisvLworLy8gZXh0ZW5zaW9uLXRva2VuIDo9IGlldGYtdG9rZW4gLyB4
LXRva2VuCisvLworLy8gaWV0Zi10b2tlbiA6PSA8QW4gZXh0ZW5zaW9uIHRva2VuIGRlZmluZWQg
YnkgYQorLy8gICAgICAgICAgICAgICAgc3RhbmRhcmRzLXRyYWNrIFJGQyBhbmQgcmVnaXN0ZXJl
ZAorLy8gICAgICAgICAgICAgICAgd2l0aCBJQU5BLj4KKy8vCisvLyB4LXRva2VuIDo9IDxUaGUg
dHdvIGNoYXJhY3RlcnMgIlgtIiBvciAieC0iIGZvbGxvd2VkLCB3aXRoCisvLyAgICAgICAgICAg
ICBubyBpbnRlcnZlbmluZyB3aGl0ZSBzcGFjZSwgYnkgYW55IHRva2VuPgorLy8KKy8vIHN1YnR5
cGUgOj0gZXh0ZW5zaW9uLXRva2VuIC8gaWFuYS10b2tlbgorLy8KKy8vIGlhbmEtdG9rZW4gOj0g
PEEgcHVibGljbHktZGVmaW5lZCBleHRlbnNpb24gdG9rZW4uIFRva2VucworLy8gICAgICAgICAg
ICAgICAgb2YgdGhpcyBmb3JtIG11c3QgYmUgcmVnaXN0ZXJlZCB3aXRoIElBTkEKKy8vICAgICAg
ICAgICAgICAgIGFzIHNwZWNpZmllZCBpbiBSRkMgMjA0OC4+CisvLworLy8gcGFyYW1ldGVyIDo9
IGF0dHJpYnV0ZSAiPSIgdmFsdWUKKy8vCisvLyBhdHRyaWJ1dGUgOj0gdG9rZW4KKy8vICAgICAg
ICAgICAgICA7IE1hdGNoaW5nIG9mIGF0dHJpYnV0ZXMKKy8vICAgICAgICAgICAgICA7IGlzIEFM
V0FZUyBjYXNlLWluc2Vuc2l0aXZlLgorLy8KKy8vIHZhbHVlIDo9IHRva2VuIC8gcXVvdGVkLXN0
cmluZworLy8KKy8vIHRva2VuIDo9IDEqPGFueSAoVVMtQVNDSUkpIENIQVIgZXhjZXB0IFNQQUNF
LCBDVExzLAorLy8gICAgICAgICAgICAgb3IgdHNwZWNpYWxzPgorLy8KKy8vIHRzcGVjaWFscyA6
PSAgIigiIC8gIikiIC8gIjwiIC8gIj4iIC8gIkAiIC8KKy8vICAgICAgICAgICAgICAgIiwiIC8g
IjsiIC8gIjoiIC8gIlwiIC8gPCI+CisvLyAgICAgICAgICAgICAgICIvIiAvICJbIiAvICJdIiAv
ICI/IiAvICI9IgorLy8gICAgICAgICAgICAgICA7IE11c3QgYmUgaW4gcXVvdGVkLXN0cmluZywK
Ky8vICAgICAgICAgICAgICAgOyB0byB1c2Ugd2l0aGluIHBhcmFtZXRlciB2YWx1ZXMKKwordGVt
cGxhdGUgPGNsYXNzIFQ+Citib29sIHBhcnNlQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgVCYgcGFyc2VyVHlwZSkKK3sKKyAgICBpZiAoY29udGVudFR5cGUuY29udGFpbnMo
J1xyJykgfHwgY29udGVudFR5cGUuY29udGFpbnMoJ1xuJykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICB1bnNpZ25lZCBjb250ZW50VHlwZUxl
bmd0aCA9IGNvbnRlbnRUeXBlLmxlbmd0aCgpOworICAgIHNraXBTcGFjZXMoY29udGVudFR5cGUs
IGluZGV4KTsKKyAgICBpZiAoaW5kZXggPj0gY29udGVudFR5cGVMZW5ndGgpICB7CisgICAgICAg
IExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUgc3RyaW5nICclcyciLCBjb250ZW50VHlw
ZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAv
LyBUaGVyZSBzaG91bGQgbm90IGJlIGFueSBxdW90ZWQgc3RyaW5ncyB1bnRpbCB3ZSByZWFjaCB0
aGUgcGFyYW1ldGVycy4KKyAgICBzaXplX3Qgc2VtaUNvbG9uSW5kZXggPSBjb250ZW50VHlwZS5m
aW5kKCc7JywgaW5kZXgpOworICAgIGlmIChzZW1pQ29sb25JbmRleCA9PSBub3RGb3VuZCkgewor
ICAgICAgICBwYXJzZXJUeXBlLnNldENvbnRlbnRUeXBlKFN1YnN0cmluZ1JhbmdlKGluZGV4LCBj
b250ZW50VHlwZUxlbmd0aCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBw
YXJzZXJUeXBlLnNldENvbnRlbnRUeXBlKFN1YnN0cmluZ1JhbmdlKGluZGV4LCBzZW1pQ29sb25J
bmRleCAtIGluZGV4KSk7CisgICAgaW5kZXggPSBzZW1pQ29sb25JbmRleCArIDE7CisgICAgd2hp
bGUgKHRydWUpIHsKKyAgICAgICAgc2tpcFNwYWNlcyhjb250ZW50VHlwZSwgaW5kZXgpOworICAg
ICAgICBTdWJzdHJpbmdSYW5nZSBrZXlSYW5nZSA9IHBhcnNlVG9rZW4oY29udGVudFR5cGUsIGlu
ZGV4KTsKKyAgICAgICAgaWYgKCFrZXlSYW5nZS5zZWNvbmQgfHwgaW5kZXggPj0gY29udGVudFR5
cGVMZW5ndGgpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUg
cGFyYW1ldGVyIG5hbWUuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KworICAgICAgICAvLyBTaG91bGQgd2UgdG9sZXJhdGUgc3BhY2VzIGhlcmU/CisgICAgICAgIGlm
IChjb250ZW50VHlwZVtpbmRleCsrXSAhPSAnPScgfHwgaW5kZXggPj0gY29udGVudFR5cGVMZW5n
dGgpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUgbWFsZm9y
bWVkIHBhcmFtZXRlci4iKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFNob3VsZCB3ZSB0b2xlcmF0ZSBzcGFjZXMgaGVyZT8KKyAgICAgICAgU3Ry
aW5nIHZhbHVlOworICAgICAgICBTdWJzdHJpbmdSYW5nZSB2YWx1ZVJhbmdlOworICAgICAgICBp
ZiAoY29udGVudFR5cGVbaW5kZXhdID09ICciJykKKyAgICAgICAgICAgIHZhbHVlUmFuZ2UgPSBw
YXJzZVF1b3RlZFN0cmluZyhjb250ZW50VHlwZSwgaW5kZXgpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICB2YWx1ZVJhbmdlID0gcGFyc2VUb2tlbihjb250ZW50VHlwZSwgaW5kZXgpOworCisg
ICAgICAgIGlmICghdmFsdWVSYW5nZS5zZWNvbmQpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigi
SW52YWxpZCBDb250ZW50LVR5cGUsIGludmFsaWQgcGFyYW1ldGVyIHZhbHVlLiIpOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLy8gU2hvdWxkIHdlIHRv
bGVyYXRlIHNwYWNlcyBoZXJlPworICAgICAgICBpZiAoaW5kZXggPCBjb250ZW50VHlwZUxlbmd0
aCAmJiBjb250ZW50VHlwZVtpbmRleCsrXSAhPSAnOycpIHsKKyAgICAgICAgICAgIExPR19FUlJP
UigiSW52YWxpZCBDb250ZW50LVR5cGUsIGludmFsaWQgY2hhcmFjdGVyIGF0IHRoZSBlbmQgb2Yg
a2V5L3ZhbHVlIHBhcmFtZXRlci4iKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorCisgICAgICAgIHBhcnNlclR5cGUuc2V0Q29udGVudFR5cGVQYXJhbWV0ZXIoa2V5UmFu
Z2UsIHZhbHVlUmFuZ2UpOworCisgICAgICAgIGlmIChpbmRleCA+PSBjb250ZW50VHlwZUxlbmd0
aCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIGlzVmFsaWRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQor
eworICAgIEVtcHR5UGFyc2VkQ29udGVudFR5cGUgcGFyc2VkQ29udGVudFR5cGUgPSBFbXB0eVBh
cnNlZENvbnRlbnRUeXBlKCk7CisgICAgcmV0dXJuIHBhcnNlQ29udGVudFR5cGU8RW1wdHlQYXJz
ZWRDb250ZW50VHlwZT4oY29udGVudFR5cGUsIHBhcnNlZENvbnRlbnRUeXBlKTsKK30KKworUGFy
c2VkQ29udGVudFR5cGU6OlBhcnNlZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCisgICAgOiBtX2NvbnRlbnRUeXBlKGNvbnRlbnRUeXBlLnN0cmlwV2hpdGVTcGFjZSgpKQor
eworICAgIHBhcnNlQ29udGVudFR5cGU8UGFyc2VkQ29udGVudFR5cGU+KG1fY29udGVudFR5cGUs
ICp0aGlzKTsKK30KKworU3RyaW5nIFBhcnNlZENvbnRlbnRUeXBlOjpjaGFyc2V0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gcGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJjaGFyc2V0Iik7Cit9CisKK1N0
cmluZyBQYXJzZWRDb250ZW50VHlwZTo6cGFyYW1ldGVyVmFsdWVGb3JOYW1lKGNvbnN0IFN0cmlu
ZyYgbmFtZSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldChuYW1lKTsKK30K
Kworc2l6ZV90IFBhcnNlZENvbnRlbnRUeXBlOjpwYXJhbWV0ZXJDb3VudCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcGFyYW1ldGVycy5zaXplKCk7Cit9CisKK3ZvaWQgUGFyc2VkQ29udGVudFR5
cGU6OnNldENvbnRlbnRUeXBlKGNvbnN0IFN1YnN0cmluZ1JhbmdlJiBjb250ZW50UmFuZ2UpCit7
CisgICAgbV9taW1lVHlwZSA9IHN1YnN0cmluZ0ZvclJhbmdlKG1fY29udGVudFR5cGUsIGNvbnRl
bnRSYW5nZSkuc3RyaXBXaGl0ZVNwYWNlKCk7Cit9CisKK3ZvaWQgUGFyc2VkQ29udGVudFR5cGU6
OnNldENvbnRlbnRUeXBlUGFyYW1ldGVyKGNvbnN0IFN1YnN0cmluZ1JhbmdlJiBrZXksIGNvbnN0
IFN1YnN0cmluZ1JhbmdlJiB2YWx1ZSkKK3sKKyAgICBtX3BhcmFtZXRlcnMuc2V0KHN1YnN0cmlu
Z0ZvclJhbmdlKG1fY29udGVudFR5cGUsIGtleSksIHN1YnN0cmluZ0ZvclJhbmdlKG1fY29udGVu
dFR5cGUsIHZhbHVlKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi42MTE5MDM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBh
cnNlZENvbnRlbnRUeXBlX2gKKyNkZWZpbmUgUGFyc2VkQ29udGVudFR5cGVfaAorCisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8g
PGluZGV4LCBsZW5ndGg+Cit0eXBlZGVmIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IFN1
YnN0cmluZ1JhbmdlOworYm9vbCBpc1ZhbGlkQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJik7CisK
Ky8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgY29tbWVudHMuCitjbGFzcyBQYXJzZWRDb250ZW50
VHlwZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUGFyc2VkQ29udGVudFR5cGUoY29uc3QgU3Ry
aW5nJik7CisKKyAgICBTdHJpbmcgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBl
OyB9CisgICAgU3RyaW5nIGNoYXJzZXQoKSBjb25zdDsKKworICAgIC8vIE5vdGUgdGhhdCBpbiB0
aGUgY2FzZSBvZiBtdWx0aXBsZSB2YWx1ZXMgZm9yIHRoZSBzYW1lIG5hbWUsIHRoZSBsYXN0IHZh
bHVlIGlzIHJldHVybmVkLgorICAgIFN0cmluZyBwYXJhbWV0ZXJWYWx1ZUZvck5hbWUoY29uc3Qg
U3RyaW5nJikgY29uc3Q7CisgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3Q7CisKK3By
aXZhdGU6CisgICAgdGVtcGxhdGU8Y2xhc3MgVD4KKyAgICBmcmllbmQgYm9vbCBwYXJzZUNvbnRl
bnRUeXBlKGNvbnN0IFN0cmluZyYsIFQmKTsKKyAgICB2b2lkIHNldENvbnRlbnRUeXBlKGNvbnN0
IFN1YnN0cmluZ1JhbmdlJik7CisgICAgdm9pZCBzZXRDb250ZW50VHlwZVBhcmFtZXRlcihjb25z
dCBTdWJzdHJpbmdSYW5nZSYsIGNvbnN0IFN1YnN0cmluZ1JhbmdlJik7CisKKyAgICB0eXBlZGVm
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEtleVZhbHVlUGFpcnM7CisgICAgU3RyaW5nIG1fY29u
dGVudFR5cGU7CisgICAgS2V5VmFsdWVQYWlycyBtX3BhcmFtZXRlcnM7CisgICAgU3RyaW5nIG1f
bWltZVR5cGU7Cit9OworCit9CisKKyNlbmRpZgo=
</data>
<flag name="commit-queue"
          id="186197"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172289</attachid>
            <date>2012-11-05 00:59:29 -0800</date>
            <delta_ts>2012-11-05 05:24:34 -0800</delta_ts>
            <desc>Patch 4</desc>
            <filename>webcore_parsedcontenttype_4.patch</filename>
            <type>text/plain</type>
            <size>40147</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNjM2ZjY1YS4uZGUxYWQ5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE5OTAsNyArMTk5MCw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L0NyZWRlbnRpYWwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5j
cHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2VyLmNwcAogICAgIHBsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVR
dWV1ZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKQEAgLTIw
MDEsNiArMjAwMCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBWYWxpZGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcAorICAgIHBsYXRm
b3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Q
cm90ZWN0aW9uU3BhY2UuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGQ5YzljOGIuLjU5YjA4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMi0xMS0w
MiAgQWxleGFuZGVyIFNoYWxhbW92ICA8YWxleGFuZGVyLnNoYWxhbW92QGludGVsLmNvbT4KKwor
ICAgICAgICBJbXByb3ZlIENvbnRlbnRUeXBlUGFyc2VyLCBzbyB0aGF0IGl0IGNvdWxkIGJlIHVz
ZWQgdG8gdmFsaWRhdGUgbWltZSB0eXBlIGFjY29yZGluZyB0byBSRkMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDkyNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBQYXJzZWRD
b250ZW50VHlwZSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgY29udGVudHMgb2YgcGFyc2VkCisgICAg
ICAgIGNvbnRlbnQgdHlwZSBzdHJpbmcuIGlzVmFsaWRDb250ZW50VHlwZSBmdW5jdGlvbiBjb3Vs
ZCBiZSB1c2VkIHRvIGNoZWNrIGlmCisgICAgICAgIGZvcm1hdCBvZiB0aGUgY29udGVudCB0eXBl
IHN0cmluZyBpcyBhY29ycmRpbmcgdG8gUkZDIDI2MTYgc2VjdGlvbiA0LjIuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAg
ICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L01JTUVIZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUlNRUhlYWRlcjo6cGFyc2VIZWFk
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBh
cnNlci5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEVtcHR5UGFyc2VkQ29udGVu
dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlQYXJzZWRDb250ZW50VHlwZTo6c2V0Q29u
dGVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlQYXJzZWRDb250ZW50VHlwZTo6c2V0
Q29udGVudFR5cGVQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2tpcFNwYWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjppc1Rva2VuQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VRdW90ZWRTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6c3Vic3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VD
b250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkQ29udGVudFR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OlBhcnNlZENvbnRlbnRUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhcnNlZENvbnRlbnRUeXBlOjpjaGFyc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBhcnNlZENvbnRlbnRUeXBlOjpwYXJhbWV0ZXJWYWx1ZUZvck5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OnBhcmFtZXRlckNvdW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhcnNlZENvbnRlbnRUeXBlOjpzZXRDb250ZW50VHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXJzZWRDb250ZW50VHlwZTo6c2V0Q29udGVudFR5cGVQYXJhbWV0ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuaDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuaC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGFyc2VkQ29udGVudFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6Om1pbWVUeXBlKToKKwogMjAxMi0xMS0wNSAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQmFzZUNob29zZXJPbmx5
RGF0ZUFuZFRpbWVJbnB1dFR5cGUgc2hvdWxkIGltcGxlbWVudCBEYXRlVGltZUNob29zZXJDbGll
bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDNkYzJmMmUuLmQ2MWVlYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDY4NCw4ICs0Njg0LDYgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNv
dXJjZUhhbmRsZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
c291cmNlSGFuZGxlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlN0
b3JhZ2VEYXRhLmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5
cGVQYXJzZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRU
eXBlUGFyc2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llU3Rv
cmFnZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaCBcCkBAIC00
NzA5LDYgKzQ3MDcsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTUlNRUhlYWRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtpbmdDb250ZXh0LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UGFyc2VkQ29udGVudFR5cGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1BhcnNlZENvbnRlbnRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UHJveHlTZXJ2ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5
U2VydmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRl
Tm90aWZpZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGY0MGMyZTkuLjU5MjhmMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQpAQCAtMTA0Myw3ICsxMDQzLDYgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRl
bnRpYWwuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcCBc
Ci0gICAgcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBhcnNlci5jcHAgXAogICAgIHBsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
QnVpbGRlci5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAgXApA
QCAtMTA1Miw2ICsxMDUxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9I
VFRQVmFsaWRhdGlvbi5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAg
XAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwIFwKKyAgICBw
bGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2Vy
dmVyLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAgXApA
QCAtMjIyNCw3ICsyMjI0LDYgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9D
b29raWVTdG9yYWdlLmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5oIFwKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmggXAotICAgIHBsYXRmb3JtL25l
dHdvcmsvQ29udGVudFR5cGVQYXJzZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9ETlNSZXNv
bHZlUXVldWUuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuaCBcCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIFwKQEAgLTIyMzYsNiArMjIzNSw3IEBAIEhF
QURFUlMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmaW5nLmggXAogICAgIHBs
YXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RhdGVOb3RpZmllci5oIFwKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENv
bnRlbnRUeXBlLmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmggXAog
ICAgIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9xdC9RdE1JTUVUeXBlU25pZmZlci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxODIwNTQ5Li4w
OWU0YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01NTMyLDggKzU1MzIsNiBAQAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vbmV0d29yay9CbG9iU3RvcmFnZURhdGEuaCcsCi0gICAgICAgICAgICAncGxhdGZv
cm0vbmV0d29yay9Db250ZW50VHlwZVBhcnNlci5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3Jt
L25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0
d29yay9DcmVkZW50aWFsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9DcmVk
ZW50aWFsU3RvcmFnZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvRE5TLmgn
LApAQCAtNTU1Miw2ICs1NTUwLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0
ZU5vdGlmaWVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rh
dGVOb3RpZmllci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRl
bnRUeXBlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50
VHlwZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZmUxOGYyOS4uNTczOGExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTY3LDggKzk2Nyw2IEBACiAJCTMzQzBDQ0Q0MTEyQzVF
NjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNDMENDRDIxMTJDNUU2MjAwQ0UwNTdEIC8qIFNlY3Vy
ZVRleHRJbnB1dC5jcHAgKi87IH07CiAJCTMzQzBDQ0Q1MTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1
cmVUZXh0SW5wdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMzQzBDQ0QzMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCAqLzsgfTsK
IAkJMzNEMDIxMkQxMzFEQjM3QjAwNDA5MUE4IC8qIENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxM0YwMUVBMTI3MEUxMEQwMERG
QkE3MSAvKiBDb29raWVTdG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJMzcwRDZFREExMzg0NTQ1NTAwNDQxMDNFIC8qIENvbnRlbnRUeXBl
UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3MEQ2RUQ4MTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlwZVBhcnNlci5jcHAgKi87IH07
Ci0JCTM3MEQ2RURCMTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlwZVBhcnNlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcwRDZFRDkxMzg0NTQ1
NTAwNDQxMDNFIC8qIENvbnRlbnRUeXBlUGFyc2VyLmggKi87IH07CiAJCTM3MTk0MTk2MTU2NkIz
NzIwMEEyNzZEOCAvKiBXZWJDb3JlTlNDZWxsRXh0cmFzLm0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzE5NDE5NDE1NjZCMzcyMDBBMjc2RDggLyogV2Vi
Q29yZU5TQ2VsbEV4dHJhcy5tICovOyB9OwogCQkzNzE5NDE5NzE1NjZCMzcyMDBBMjc2RDggLyog
V2ViQ29yZU5TQ2VsbEV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzcxOTQxOTUxNTY2QjM3MjAwQTI3NkQ4IC8qIFdlYkNvcmVOU0NlbGxFeHRy
YXMuaCAqLzsgfTsKIAkJMzcxQTY3Q0IxMUM2QzdEQjAwMDQ3QjhCIC8qIEh5cGhlbmF0aW9uQ0Yu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxQTY3
Q0ExMUM2QzdEQjAwMDQ3QjhCIC8qIEh5cGhlbmF0aW9uQ0YuY3BwICovOyB9OwpAQCAtMTIwMyw2
ICsxMjAxLDggQEAKIAkJNDQzMTFDRDgxMkU0RTI0QjAwMEE4RDE5IC8qIERPTURvY3VtZW50UHJp
dmF0ZS5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDQzMTFDRDUxMkU0RTIyRDAwMEE4RDE5IC8qIERPTURvY3VtZW50UHJpdmF0
ZS5oICovOyB9OwogCQk0NDMxMUNEOTEyRTRFMjU3MDAwQThEMTkgLyogRE9NRG9jdW1lbnRGcmFn
bWVudFByaXZhdGUuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MzExQ0Q0MTJFNEUyMkQwMDBBOEQxOSAvKiBET01Eb2N1bWVu
dEZyYWdtZW50UHJpdmF0ZS5oICovOyB9OwogCQk0NDMxMUY4MjEyRTRFNjZDMDAwQThEMTkgLyog
RE9NRG9jdW1lbnRGcmFnbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NUU3MTE0NTBBQzVENTM0MDA1MzI3MEYgLyogRE9NRG9jdW1l
bnRGcmFnbWVudEludGVybmFsLmggKi87IH07CisJCTQ0Nzk1ODA0MTY0M0I0OUEwMDFFMEE3RiAv
KiBQYXJzZWRDb250ZW50VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDQ3OTU4MDMxNjQzQjQ3QjAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDQ3
OTU4MDUxNjQzQjRCMjAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Nzk1ODAyMTY0M0I0N0IwMDFF
MEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5jcHAgKi87IH07CiAJCTQ0OEEyOUJGMEE0NkQ5Q0Iw
MDMwNzU5RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ4QTI5QkQwQTQ2RDlDQjAwMzA3NTlGIC8qIEpT
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ0OEEyOUMwMEE0NkQ5Q0IwMDMwNzU5
RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDhBMjlCRTBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1M
T3B0aW9uc0NvbGxlY3Rpb24uY3BwICovOyB9OwogCQk0NDhBRDI3QzBBNDgxMzdBMDAyM0QxNzkg
LyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ4QUQyN0EwQTQ4MTM3OTAwMjNEMTc5IC8qIEpT
SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKQEAgLTgxMTUsOCArODExNSw2
IEBACiAJCTMzOUI1QjYyMTMxREFBMzIwMEY0OEQwMiAvKiBDb29raWVzU3RyYXRlZ3kuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29va2llc1N0cmF0ZWd5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzQzBDQ0QyMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVU
ZXh0SW5wdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjdXJl
VGV4dElucHV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzNDMENDRDMxMTJD
NUU2MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTZWN1cmVUZXh0SW5wdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMzcwRDZFRDgxMzg0NTQ1NTAwNDQxMDNFIC8qIENvbnRlbnRUeXBlUGFyc2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRUeXBlUGFyc2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzcwRDZFRDkxMzg0NTQ1NTAwNDQxMDNFIC8q
IENvbnRlbnRUeXBlUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bnRlbnRUeXBlUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MTk0MTk0
MTU2NkIzNzIwMEEyNzZEOCAvKiBXZWJDb3JlTlNDZWxsRXh0cmFzLm0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdlYkNvcmVOU0NlbGxFeHRyYXMubTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzcxOTQxOTUxNTY2QjM3MjAwQTI3NkQ4IC8qIFdlYkNvcmVOU0Nl
bGxFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZU5TQ2Vs
bEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFBNjdDQTExQzZDN0RC
MDAwNDdCOEIgLyogSHlwaGVuYXRpb25DRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBIeXBoZW5hdGlvbkNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTgzODMsNiArODM4MSw4IEBACiAJCTQ0MjlBQjA3MENCODRGODEwMDc2NDdDNSAvKiBET01U
ZXh0RXZlbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
VGV4dEV2ZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQzMTFD
RDQxMkU0RTIyRDAwMEE4RDE5IC8qIERPTURvY3VtZW50RnJhZ21lbnRQcml2YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTURvY3VtZW50RnJhZ21lbnRQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MzExQ0Q1MTJFNEUyMkQwMDBBOEQxOSAv
KiBET01Eb2N1bWVudFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NRG9jdW1lbnRQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0Nzk1
ODAyMTY0M0I0N0IwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJzZWRDb250ZW50VHlwZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0Nzk1ODAzMTY0M0I0N0IwMDFFMEE3RiAvKiBQYXJzZWRD
b250ZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZWRDb250
ZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDhBMjlCRDBBNDZEOUNC
MDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ0OEEyOUJFMEE0NkQ5Q0IwMDMwNzU5RiAvKiBKU0hUTUxPcHRpb25z
Q29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNI
VE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NDhBRDI3QTBBNDgxMzc5MDAyM0QxNzkgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3B0aW9uc0Nv
bGxlY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU2MzUs
OCArMTU2MzUsNiBAQAogCQkJCTJFQjRCQ0QwMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3Vy
Y2VIYW5kbGUuY3BwICovLAogCQkJCTJFQjRCQ0QxMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVz
b3VyY2VIYW5kbGUuaCAqLywKIAkJCQkyRURFRjFGMjEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYlN0
b3JhZ2VEYXRhLmggKi8sCi0JCQkJMzcwRDZFRDgxMzg0NTQ1NTAwNDQxMDNFIC8qIENvbnRlbnRU
eXBlUGFyc2VyLmNwcCAqLywKLQkJCQkzNzBENkVEOTEzODQ1NDU1MDA0NDEwM0UgLyogQ29udGVu
dFR5cGVQYXJzZXIuaCAqLywKIAkJCQlFMTNGMDFFQTEyNzBFMTBEMDBERkJBNzEgLyogQ29va2ll
U3RvcmFnZS5oICovLAogCQkJCTUxNEM3NjU4MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFs
LmNwcCAqLywKIAkJCQk1MTRDNzY1OTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oICov
LApAQCAtMTU2NjIsNiArMTU2NjAsOCBAQAogCQkJCTYyOEQyMTRCMTIxMzFFRDEwMDU1RENGQyAv
KiBOZXR3b3JraW5nQ29udGV4dC5oICovLAogCQkJCTFBN0ZBNjFBMEREQTNCQkUwMDI4RjhBNSAv
KiBOZXR3b3JrU3RhdGVOb3RpZmllci5jcHAgKi8sCiAJCQkJMUE3RkE2MTgwRERBM0IzQTAwMjhG
OEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmggKi8sCisJCQkJNDQ3OTU4MDIxNjQzQjQ3QjAw
MUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmNwcCAqLywKKwkJCQk0NDc5NTgwMzE2NDNCNDdC
MDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuaCAqLywKIAkJCQk1MTRDNzY1RjBDRTkyM0Ex
MDA3RUYzQ0QgLyogUHJvdGVjdGlvblNwYWNlLmNwcCAqLywKIAkJCQk1MTRDNzY2MDBDRTkyM0Ex
MDA3RUYzQ0QgLyogUHJvdGVjdGlvblNwYWNlLmggKi8sCiAJCQkJNTFBMDUyNTUxMDU4ODc0MDAw
Q0M5RTk1IC8qIFByb3RlY3Rpb25TcGFjZUhhc2guaCAqLywKQEAgLTIyNjAzLDcgKzIyNjAzLDYg
QEAKIAkJCQk5N0M0NzFEQzEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I3OTFBNjE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVu
dFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRDAxNUNBMEY0QjVDNzEwMDRB
NjYyRiAvKiBDb250ZW50VHlwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzcwRDZFREIxMzg0NTQ1
NTAwNDQxMDNFIC8qIENvbnRlbnRUeXBlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzYy
N0I4RTE0RkIzQ0VFMDAyQ0RDQTEgLyogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3RDNDQTExMTU3REY4RTkwMDg2MEE5NyAvKiBDb250ZXh0RmVhdHVy
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQjZBMEU2MEIwQkNBNUMwMEY1MDI3QSAvKiBDb250
ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTY3Myw2ICsyNTY3Miw3IEBACiAJCQkJNTA5
MzMzNTAxNjNCMEU0MzAwMDk5QTYwIC8qIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUwRDMyODU4MTYzQjMxM0YwMDE2MTExRSAvKiBWYWxpZGF0ZWRDdXN0
b21GaWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTNGRkZGOUE5MTU5RDlBNTUw
MDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ0
Nzk1ODA0MTY0M0I0OUEwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yNjE4NCw3ICsyNjE4NCw2IEBACiAJCQkJOTdDNDcxREIxMkY5MjVCRDAwODYzNTRC
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1N0I3OTFB
NTE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDFEMDE1Q0IwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTM3MEQ2RURBMTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlwZVBh
cnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzYyN0I4RDE0RkIzQ0VFMDAyQ0RDQTEgLyog
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEM0NB
MTAxNTdERjhFOTAwODYwQTk3IC8qIENvbnRleHRGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwNjVBRDRGNjBCMEMyRURBMDA1QTJCMUQgLyogQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjg3NTYsNiArMjg3NTUsNyBAQAogCQkJCTNGRkZGOUE4MTU5
RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNEZGQzAyMkIxNjQzQjcxMDAwNEUxNjM4IC8qIE5vZGVSYXJlRGF0YS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0RkZDMDIyRDE2NDNCNzI2MDA0RTE2MzggLyogRWxlbWVudFJhcmVEYXRh
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ0Nzk1ODA1MTY0M0I0QjIwMDFFMEE3RiAvKiBQYXJz
ZWRDb250ZW50VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBhcnNlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGRkYTQ1ODguLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBhcnNlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwy
MjEgKzAsMCBAQAotIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ29udGVudFR5cGVQYXJz
ZXIuaCIKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIHZvaWQg
c2tpcFNwYWNlcyhjb25zdCBTdHJpbmcmIGlucHV0LCBzaXplX3QmIHN0YXJ0SW5kZXgpCi17Ci0g
ICAgd2hpbGUgKHN0YXJ0SW5kZXggPCBpbnB1dC5sZW5ndGgoKSAmJiBpbnB1dFtzdGFydEluZGV4
XSA9PSAnICcpCi0gICAgICAgICsrc3RhcnRJbmRleDsKLX0KLQotc3RhdGljIGJvb2wgaXNUb2tl
bkNoYXJhY3RlcihjaGFyIGMpCi17Ci0gICAgcmV0dXJuIGlzQVNDSUkoYykgJiYgYyA+ICcgJyAm
JiBjICE9ICciJyAmJiBjICE9ICcoJyAmJiBjICE9ICcpJyAmJiBjICE9ICcsJyAmJiBjICE9ICcv
JyAmJiAoYyA8ICc6JyB8fCBjID4gJ0AnKSAmJiAoYyA8ICdbJyB8fCBjID4gJ10nKTsKLX0KLQot
c3RhdGljIFN0cmluZyBwYXJzZVRva2VuKGNvbnN0IFN0cmluZyYgaW5wdXQsIHNpemVfdCYgc3Rh
cnRJbmRleCkKLXsKLSAgICBpZiAoc3RhcnRJbmRleCA+PSBpbnB1dC5sZW5ndGgoKSkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwot
ICAgIHdoaWxlIChzdGFydEluZGV4IDwgaW5wdXQubGVuZ3RoKCkpIHsKLSAgICAgICAgY2hhciBj
dXJyZW50Q2hhcmFjdGVyID0gaW5wdXRbc3RhcnRJbmRleF07Ci0gICAgICAgIGlmICghaXNUb2tl
bkNoYXJhY3RlcihjdXJyZW50Q2hhcmFjdGVyKSkKLSAgICAgICAgICAgIHJldHVybiBzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGN1cnJlbnRD
aGFyYWN0ZXIpOwotICAgICAgICArK3N0YXJ0SW5kZXg7Ci0gICAgfQotICAgIHJldHVybiBzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgcGFyc2VRdW90ZWRTdHJp
bmcoY29uc3QgU3RyaW5nJiBpbnB1dCwgc2l6ZV90JiBzdGFydEluZGV4KQotewotICAgIGlmIChz
dGFydEluZGV4ID49IGlucHV0Lmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0K
LSAgICBpZiAoaW5wdXRbc3RhcnRJbmRleCsrXSAhPSAnIicgfHwgc3RhcnRJbmRleCA+PSBpbnB1
dC5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgU3RyaW5nQnVpbGRl
ciBzdHJpbmdCdWlsZGVyOwotICAgIGJvb2wgbGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IGZh
bHNlOwotICAgIGNoYXIgY3VycmVudENoYXJhY3RlcjsKLSAgICB3aGlsZSAoKGN1cnJlbnRDaGFy
YWN0ZXIgPSBpbnB1dFtzdGFydEluZGV4KytdKSAhPSAnIicgfHwgbGFzdENoYXJhY3Rlcldhc0Jh
Y2tzbGFzaCkgewotICAgICAgICBpZiAoc3RhcnRJbmRleCA+PSBpbnB1dC5sZW5ndGgoKSkKLSAg
ICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIg
PT0gJ1xcJyAmJiAhbGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCkgewotICAgICAgICAgICAgbGFz
dENoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IHRydWU7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgfQotICAgICAgICBpZiAobGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCkKLSAgICAgICAg
ICAgIGxhc3RDaGFyYWN0ZXJXYXNCYWNrc2xhc2ggPSBmYWxzZTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoY3VycmVudENoYXJhY3Rlcik7Ci0gICAgfQotICAgIHJldHVybiBzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLUNvbnRlbnRUeXBlUGFyc2VyOjpDb250ZW50VHlwZVBh
cnNlcihjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQotICAgIDogbV9jb250ZW50VHlwZShjb250
ZW50VHlwZS5zdHJpcFdoaXRlU3BhY2UoKSkKLXsKLSAgICBwYXJzZSgpOwotfQotCi1TdHJpbmcg
Q29udGVudFR5cGVQYXJzZXI6OmNoYXJzZXQoKSBjb25zdAotewotICAgIHJldHVybiBwYXJhbWV0
ZXJWYWx1ZUZvck5hbWUoImNoYXJzZXQiKTsKLX0KLQotU3RyaW5nIENvbnRlbnRUeXBlUGFyc2Vy
OjpwYXJhbWV0ZXJWYWx1ZUZvck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAotewotICAg
IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KG5hbWUpOwotfQotCi1zaXplX3QgQ29udGVudFR5cGVQ
YXJzZXI6OnBhcmFtZXRlckNvdW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXJhbWV0ZXJz
LnNpemUoKTsKLX0KLQotLy8gRnJvbSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyMDQ1
I3NlY3Rpb24tNS4xOgotLy8KLS8vIGNvbnRlbnQgOj0gIkNvbnRlbnQtVHlwZSIgIjoiIHR5cGUg
Ii8iIHN1YnR5cGUKLS8vICAgICAgICAgICAgKigiOyIgcGFyYW1ldGVyKQotLy8gICAgICAgICAg
ICA7IE1hdGNoaW5nIG9mIG1lZGlhIHR5cGUgYW5kIHN1YnR5cGUKLS8vICAgICAgICAgICAgOyBp
cyBBTFdBWVMgY2FzZS1pbnNlbnNpdGl2ZS4KLS8vCi0vLyB0eXBlIDo9IGRpc2NyZXRlLXR5cGUg
LyBjb21wb3NpdGUtdHlwZQotLy8KLS8vIGRpc2NyZXRlLXR5cGUgOj0gInRleHQiIC8gImltYWdl
IiAvICJhdWRpbyIgLyAidmlkZW8iIC8KLS8vICAgICAgICAgICAgICAgICAgImFwcGxpY2F0aW9u
IiAvIGV4dGVuc2lvbi10b2tlbgotLy8KLS8vIGNvbXBvc2l0ZS10eXBlIDo9ICJtZXNzYWdlIiAv
ICJtdWx0aXBhcnQiIC8gZXh0ZW5zaW9uLXRva2VuCi0vLwotLy8gZXh0ZW5zaW9uLXRva2VuIDo9
IGlldGYtdG9rZW4gLyB4LXRva2VuCi0vLwotLy8gaWV0Zi10b2tlbiA6PSA8QW4gZXh0ZW5zaW9u
IHRva2VuIGRlZmluZWQgYnkgYQotLy8gICAgICAgICAgICAgICAgc3RhbmRhcmRzLXRyYWNrIFJG
QyBhbmQgcmVnaXN0ZXJlZAotLy8gICAgICAgICAgICAgICAgd2l0aCBJQU5BLj4KLS8vCi0vLyB4
LXRva2VuIDo9IDxUaGUgdHdvIGNoYXJhY3RlcnMgIlgtIiBvciAieC0iIGZvbGxvd2VkLCB3aXRo
Ci0vLyAgICAgICAgICAgICBubyBpbnRlcnZlbmluZyB3aGl0ZSBzcGFjZSwgYnkgYW55IHRva2Vu
PgotLy8KLS8vIHN1YnR5cGUgOj0gZXh0ZW5zaW9uLXRva2VuIC8gaWFuYS10b2tlbgotLy8KLS8v
IGlhbmEtdG9rZW4gOj0gPEEgcHVibGljbHktZGVmaW5lZCBleHRlbnNpb24gdG9rZW4uIFRva2Vu
cwotLy8gICAgICAgICAgICAgICAgb2YgdGhpcyBmb3JtIG11c3QgYmUgcmVnaXN0ZXJlZCB3aXRo
IElBTkEKLS8vICAgICAgICAgICAgICAgIGFzIHNwZWNpZmllZCBpbiBSRkMgMjA0OC4+Ci0vLwot
Ly8gcGFyYW1ldGVyIDo9IGF0dHJpYnV0ZSAiPSIgdmFsdWUKLS8vCi0vLyBhdHRyaWJ1dGUgOj0g
dG9rZW4KLS8vICAgICAgICAgICAgICA7IE1hdGNoaW5nIG9mIGF0dHJpYnV0ZXMKLS8vICAgICAg
ICAgICAgICA7IGlzIEFMV0FZUyBjYXNlLWluc2Vuc2l0aXZlLgotLy8KLS8vIHZhbHVlIDo9IHRv
a2VuIC8gcXVvdGVkLXN0cmluZwotLy8KLS8vIHRva2VuIDo9IDEqPGFueSAoVVMtQVNDSUkpIENI
QVIgZXhjZXB0IFNQQUNFLCBDVExzLAotLy8gICAgICAgICAgICAgb3IgdHNwZWNpYWxzPgotLy8K
LS8vIHRzcGVjaWFscyA6PSAgIigiIC8gIikiIC8gIjwiIC8gIj4iIC8gIkAiIC8KLS8vICAgICAg
ICAgICAgICAgIiwiIC8gIjsiIC8gIjoiIC8gIlwiIC8gPCI+Ci0vLyAgICAgICAgICAgICAgICIv
IiAvICJbIiAvICJdIiAvICI/IiAvICI9IgotLy8gICAgICAgICAgICAgICA7IE11c3QgYmUgaW4g
cXVvdGVkLXN0cmluZywKLS8vICAgICAgICAgICAgICAgOyB0byB1c2Ugd2l0aGluIHBhcmFtZXRl
ciB2YWx1ZXMKLQotdm9pZCBDb250ZW50VHlwZVBhcnNlcjo6cGFyc2UoKQotewotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBjb250ZW50VHlwZVBhcmFtZXRlck5hbWUsIChB
U0NJSUxpdGVyYWwoIkNvbnRlbnQtVHlwZSIpKSk7Ci0KLSAgICBpZiAoIW1fY29udGVudFR5cGUu
c3RhcnRzV2l0aChjb250ZW50VHlwZVBhcmFtZXRlck5hbWUpKSB7Ci0gICAgICAgIExPR19FUlJP
UigiSW52YWxpZCBDb250ZW50LVR5cGUgc3RyaW5nICclcyciLCBtX2NvbnRlbnRUeXBlLmFzY2lp
KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzaXplX3QgY29udGVudFR5
cGVMZW5ndGggPSBtX2NvbnRlbnRUeXBlLmxlbmd0aCgpOwotICAgIHNpemVfdCBpbmRleCA9IGNv
bnRlbnRUeXBlUGFyYW1ldGVyTmFtZS5sZW5ndGgoKTsKLSAgICBza2lwU3BhY2VzKG1fY29udGVu
dFR5cGUsIGluZGV4KTsKLSAgICBpZiAoaW5kZXggPj0gY29udGVudFR5cGVMZW5ndGggfHwgbV9j
b250ZW50VHlwZVtpbmRleF0gIT0gJzonIHx8ICsraW5kZXggPj0gY29udGVudFR5cGVMZW5ndGgp
ICB7Ci0gICAgICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUgc3RyaW5nICclcyci
LCBtX2NvbnRlbnRUeXBlLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIC8vIFRoZXJlIHNob3VsZCBub3QgYmUgYW55IHF1b3RlZCBzdHJpbmdzIHVudGlsIHdl
IHJlYWNoIHRoZSBwYXJhbWV0ZXJzLgotICAgIHNpemVfdCBzZW1pQ29sb25JbmRleCA9IG1fY29u
dGVudFR5cGUuZmluZCgnOycsIGluZGV4KTsKLSAgICBpZiAoc2VtaUNvbG9uSW5kZXggPT0gbm90
Rm91bmQpIHsKLSAgICAgICAgbV9taW1lVHlwZSA9IG1fY29udGVudFR5cGUuc3Vic3RyaW5nKGlu
ZGV4KS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1f
bWltZVR5cGUgPSBtX2NvbnRlbnRUeXBlLnN1YnN0cmluZyhpbmRleCwgc2VtaUNvbG9uSW5kZXgg
LSBpbmRleCkuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgaW5kZXggPSBzZW1pQ29sb25JbmRleCAr
IDE7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgc2tpcFNwYWNlcyhtX2NvbnRlbnRUeXBl
LCBpbmRleCk7Ci0gICAgICAgIFN0cmluZyBrZXkgPSBwYXJzZVRva2VuKG1fY29udGVudFR5cGUs
IGluZGV4KTsKLSAgICAgICAgaWYgKGtleS5pc0VtcHR5KCkgfHwgaW5kZXggPj0gY29udGVudFR5
cGVMZW5ndGgpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUg
cGFyYW1ldGVyIG5hbWUuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgLy8gU2hvdWxkIHdlIHRvbGVyYXRlIHNwYWNlcyBoZXJlPwotICAgICAgICBpZiAobV9jb250
ZW50VHlwZVtpbmRleCsrXSAhPSAnPScgfHwgaW5kZXggPj0gY29udGVudFR5cGVMZW5ndGgpIHsK
LSAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUgbWFsZm9ybWVkIHBh
cmFtZXRlci4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IFNob3VsZCB3ZSB0b2xlcmF0ZSBzcGFjZXMgaGVyZT8KLSAgICAgICAgU3RyaW5nIHZhbHVlOwot
ICAgICAgICBpZiAobV9jb250ZW50VHlwZVtpbmRleF0gPT0gJyInKQotICAgICAgICAgICAgdmFs
dWUgPSBwYXJzZVF1b3RlZFN0cmluZyhtX2NvbnRlbnRUeXBlLCBpbmRleCk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHZhbHVlID0gcGFyc2VUb2tlbihtX2NvbnRlbnRUeXBlLCBpbmRleCk7
Ci0KLSAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1Io
IkludmFsaWQgQ29udGVudC1UeXBlLCBpbnZhbGlkIHBhcmFtZXRlciB2YWx1ZS4iKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFNob3VsZCB3ZSB0b2xlcmF0
ZSBzcGFjZXMgaGVyZT8KLSAgICAgICAgaWYgKGluZGV4IDwgY29udGVudFR5cGVMZW5ndGggJiYg
bV9jb250ZW50VHlwZVtpbmRleCsrXSAhPSAnOycpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigi
SW52YWxpZCBDb250ZW50LVR5cGUsIGludmFsaWQgY2hhcmFjdGVyIGF0IHRoZSBlbmQgb2Yga2V5
L3ZhbHVlIHBhcmFtZXRlci4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIG1fcGFyYW1ldGVycy5zZXQoa2V5LCB2YWx1ZSk7Ci0KLSAgICAgICAgaWYgKGluZGV4
ID49IGNvbnRlbnRUeXBlTGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlw
ZVBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBh
cnNlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjU3YjAxLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENvbnRlbnRUeXBlUGFyc2VyX2gK
LSNkZWZpbmUgQ29udGVudFR5cGVQYXJzZXJfaAotCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gRklYTUU6IGFkZCBzdXBwb3J0
IGZvciBjb21tZW50cy4KLWNsYXNzIENvbnRlbnRUeXBlUGFyc2VyIHsKLXB1YmxpYzoKLSAgICBl
eHBsaWNpdCBDb250ZW50VHlwZVBhcnNlcihjb25zdCBTdHJpbmcmKTsKLQotICAgIFN0cmluZyBt
aW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KLSAgICBTdHJpbmcgY2hhcnNl
dCgpIGNvbnN0OwotCi0gICAgLy8gTm90ZSB0aGF0IGluIHRoZSBjYXNlIG9mIG11bHRpcGxlIHZh
bHVlcyBmb3IgdGhlIHNhbWUgbmFtZSwgdGhlIGxhc3QgdmFsdWUgaXMgcmV0dXJuZWQuCi0gICAg
U3RyaW5nIHBhcmFtZXRlclZhbHVlRm9yTmFtZShjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICBz
aXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICB2b2lkIHBhcnNl
KCk7Ci0KLSAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKLQotICAgIHR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gS2V5VmFsdWVQYWlyczsKLSAgICBLZXlWYWx1ZVBhaXJzIG1fcGFyYW1l
dGVyczsKLSAgICBTdHJpbmcgbV9taW1lVHlwZTsKLX07Ci0KLX0KLQotI2VuZGlmCi0KLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKaW5kZXggZjRl
M2ViZi4uMDQ4YWJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9NSU1FSGVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiTUlNRUhlYWRlci5oIgogCi0jaW5jbHVkZSAiQ29udGVudFR5cGVQYXJzZXIuaCIKKyNp
bmNsdWRlICJQYXJzZWRDb250ZW50VHlwZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CkBAIC04NSwxNCArODUsMTMgQEAgUGFzc1JlZlB0cjxNSU1FSGVhZGVyPiBNSU1F
SGVhZGVyOjpwYXJzZUhlYWRlcihTaGFyZWRCdWZmZXJDaHVua1JlYWRlciogYnVmZmVyKQogICAg
IEtleVZhbHVlTWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVy
KTsKICAgICBLZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtl
eVZhbHVlUGFpcnMuZmluZCgiY29udGVudC10eXBlIik7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJz
SXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkgewotICAgICAgICAvLyBGSVhNRTogbWFr
ZSBDb250ZW50VHlwZVBhcnNlciBtb3JlIGZsZXhpYmxlIHNvIHdlIGRvbid0IGhhdmUgdG8gc3lu
dGhlc2l6ZSB0aGUgIkNvbnRlbnQtVHlwZToiLgotICAgICAgICBDb250ZW50VHlwZVBhcnNlciBj
b250ZW50VHlwZVBhcnNlcihtYWtlU3RyaW5nKCJDb250ZW50LVR5cGU6IiwgbWltZVBhcmFtZXRl
cnNJdGVyYXRvci0+dmFsdWUpKTsKLSAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlUGFyc2VyLm1pbWVUeXBlKCk7CisgICAgICAgIFBhcnNlZENvbnRlbnRUeXBl
IHBhcnNlZENvbnRlbnRUeXBlKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3ItPnZhbHVlKTsKKyAgICAg
ICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLm1pbWVUeXBl
KCk7CiAgICAgICAgIGlmICghbWltZUhlYWRlci0+aXNNdWx0aXBhcnQoKSkKLSAgICAgICAgICAg
IG1pbWVIZWFkZXItPm1fY2hhcnNldCA9IGNvbnRlbnRUeXBlUGFyc2VyLmNoYXJzZXQoKS5zdHJp
cFdoaXRlU3BhY2UoKTsKKyAgICAgICAgICAgIG1pbWVIZWFkZXItPm1fY2hhcnNldCA9IHBhcnNl
ZENvbnRlbnRUeXBlLmNoYXJzZXQoKS5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBtaW1lSGVhZGVyLT5tX211bHRpcGFydFR5cGUgPSBjb250ZW50VHlwZVBh
cnNlci5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiKTsKLSAgICAgICAgICAgIG1pbWVIZWFk
ZXItPm1fZW5kT2ZQYXJ0Qm91bmRhcnkgPSBjb250ZW50VHlwZVBhcnNlci5wYXJhbWV0ZXJWYWx1
ZUZvck5hbWUoImJvdW5kYXJ5Iik7CisgICAgICAgICAgICBtaW1lSGVhZGVyLT5tX211bHRpcGFy
dFR5cGUgPSBwYXJzZWRDb250ZW50VHlwZS5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiKTsK
KyAgICAgICAgICAgIG1pbWVIZWFkZXItPm1fZW5kT2ZQYXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250
ZW50VHlwZS5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoImJvdW5kYXJ5Iik7CiAgICAgICAgICAgICBp
ZiAobWltZUhlYWRlci0+bV9lbmRPZlBhcnRCb3VuZGFyeS5pc051bGwoKSkgewogICAgICAgICAg
ICAgICAgIExPR19FUlJPUigiTm8gYm91bmRhcnkgZm91bmQgaW4gbXVsdGlwYXJ0IE1JTUUgaGVh
ZGVyLiIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjRmNjU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAKQEAgLTAsMCAr
MSwyNTQgQEAKKyAvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRUeXBl
LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVtcHR5UGFy
c2VkQ29udGVudFR5cGUgeworcHVibGljOgorICAgIHZvaWQgc2V0Q29udGVudFR5cGUoY29uc3Qg
U3Vic3RyaW5nUmFuZ2UmKSBjb25zdCB7IH0KKyAgICB2b2lkIHNldENvbnRlbnRUeXBlUGFyYW1l
dGVyKGNvbnN0IFN1YnN0cmluZ1JhbmdlJiwgY29uc3QgU3Vic3RyaW5nUmFuZ2UmKSBjb25zdCB7
IH0KK307CisKK3N0YXRpYyB2b2lkIHNraXBTcGFjZXMoY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5z
aWduZWQmIHN0YXJ0SW5kZXgpCit7CisgICAgd2hpbGUgKHN0YXJ0SW5kZXggPCBpbnB1dC5sZW5n
dGgoKSAmJiBpbnB1dFtzdGFydEluZGV4XSA9PSAnICcpCisgICAgICAgICsrc3RhcnRJbmRleDsK
K30KKworc3RhdGljIGJvb2wgaXNUb2tlbkNoYXJhY3RlcihjaGFyIGMpCit7CisgICAgcmV0dXJu
IGlzQVNDSUkoYykgJiYgYyA+ICcgJyAmJiBjICE9ICciJyAmJiBjICE9ICcoJyAmJiBjICE9ICcp
JyAmJiBjICE9ICcsJyAmJiBjICE9ICcvJyAmJiAoYyA8ICc6JyB8fCBjID4gJ0AnKSAmJiAoYyA8
ICdbJyB8fCBjID4gJ10nKTsKK30KKworc3RhdGljIFN1YnN0cmluZ1JhbmdlIHBhcnNlVG9rZW4o
Y29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQmIHN0YXJ0SW5kZXgpCit7CisgICAgY29uc3Qg
dW5zaWduZWQgaW5wdXRMZW5naHQgPSBpbnB1dC5sZW5ndGgoKTsKKyAgICBjb25zdCB1bnNpZ25l
ZCBpbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgdW5zaWduZWQmIHRva2VuTGVuZ3RoID0gc3RhcnRJ
bmRleDsKKworICAgIGlmICh0b2tlbkxlbmd0aCA+PSBpbnB1dExlbmdodCkKKyAgICAgICAgcmV0
dXJuIFN1YnN0cmluZ1JhbmdlKCk7CisKKyAgICB3aGlsZSAodG9rZW5MZW5ndGggPCBpbnB1dExl
bmdodCkgeworICAgICAgICBpZiAoIWlzVG9rZW5DaGFyYWN0ZXIoaW5wdXRbdG9rZW5MZW5ndGhd
KSkKKyAgICAgICAgICAgIHJldHVybiBTdWJzdHJpbmdSYW5nZShpbmRleCwgdG9rZW5MZW5ndGgp
OworICAgICAgICArK3Rva2VuTGVuZ3RoOworICAgIH0KKworICAgIHJldHVybiBTdWJzdHJpbmdS
YW5nZShpbmRleCwgdG9rZW5MZW5ndGgpOworfQorCitzdGF0aWMgU3Vic3RyaW5nUmFuZ2UgcGFy
c2VRdW90ZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQmIHN0YXJ0SW5kZXgp
Cit7CisgICAgY29uc3QgdW5zaWduZWQgaW5wdXRMZW5naHQgPSBpbnB1dC5sZW5ndGgoKTsKKyAg
ICBjb25zdCB1bnNpZ25lZCBpbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgdW5zaWduZWQmIHN0cmlu
Z0xlbmd0aCA9IHN0YXJ0SW5kZXg7CisKKyAgICBpZiAoc3RyaW5nTGVuZ3RoID49IGlucHV0TGVu
Z2h0KQorICAgICAgICByZXR1cm4gU3Vic3RyaW5nUmFuZ2UoKTsKKworICAgIGlmIChpbnB1dFtz
dHJpbmdMZW5ndGgrK10gIT0gJyInIHx8IHN0cmluZ0xlbmd0aCA+PSBpbnB1dExlbmdodCkKKyAg
ICAgICAgcmV0dXJuIFN1YnN0cmluZ1JhbmdlKCk7CisKKyAgICBib29sIGxhc3RDaGFyYWN0ZXJX
YXNCYWNrc2xhc2ggPSBmYWxzZTsKKyAgICBjaGFyIGN1cnJlbnRDaGFyYWN0ZXI7CisgICAgd2hp
bGUgKChjdXJyZW50Q2hhcmFjdGVyID0gaW5wdXRbc3RyaW5nTGVuZ3RoKytdKSAhPSAnIicgfHwg
bGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCkgeworICAgICAgICBpZiAoc3RyaW5nTGVuZ3RoID49
IGlucHV0TGVuZ2h0KQorICAgICAgICAgICAgcmV0dXJuIFN1YnN0cmluZ1JhbmdlKCk7CisgICAg
ICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09ICdcXCcgJiYgIWxhc3RDaGFyYWN0ZXJXYXNCYWNr
c2xhc2gpIHsKKyAgICAgICAgICAgIGxhc3RDaGFyYWN0ZXJXYXNCYWNrc2xhc2ggPSB0cnVlOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGxhc3RDaGFyYWN0
ZXJXYXNCYWNrc2xhc2gpCisgICAgICAgICAgICBsYXN0Q2hhcmFjdGVyV2FzQmFja3NsYXNoID0g
ZmFsc2U7CisgICAgfQorICAgIHJldHVybiBTdWJzdHJpbmdSYW5nZShpbmRleCwgc3RyaW5nTGVu
Z3RoKTsKK30KKworc3RhdGljIFN0cmluZyBzdWJzdHJpbmdGb3JSYW5nZShjb25zdCBTdHJpbmcm
IHN0cmluZywgY29uc3QgU3Vic3RyaW5nUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBzdHJp
bmcuc3Vic3RyaW5nKHJhbmdlLmZpcnN0LCByYW5nZS5zZWNvbmQpOworfQorCisvLyBGcm9tIGh0
dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzIwNDUjc2VjdGlvbi01LjE6CisvLworLy8gY29u
dGVudCA6PSAiQ29udGVudC1UeXBlIiAiOiIgdHlwZSAiLyIgc3VidHlwZQorLy8gICAgICAgICAg
ICAqKCI7IiBwYXJhbWV0ZXIpCisvLyAgICAgICAgICAgIDsgTWF0Y2hpbmcgb2YgbWVkaWEgdHlw
ZSBhbmQgc3VidHlwZQorLy8gICAgICAgICAgICA7IGlzIEFMV0FZUyBjYXNlLWluc2Vuc2l0aXZl
LgorLy8KKy8vIHR5cGUgOj0gZGlzY3JldGUtdHlwZSAvIGNvbXBvc2l0ZS10eXBlCisvLworLy8g
ZGlzY3JldGUtdHlwZSA6PSAidGV4dCIgLyAiaW1hZ2UiIC8gImF1ZGlvIiAvICJ2aWRlbyIgLwor
Ly8gICAgICAgICAgICAgICAgICAiYXBwbGljYXRpb24iIC8gZXh0ZW5zaW9uLXRva2VuCisvLwor
Ly8gY29tcG9zaXRlLXR5cGUgOj0gIm1lc3NhZ2UiIC8gIm11bHRpcGFydCIgLyBleHRlbnNpb24t
dG9rZW4KKy8vCisvLyBleHRlbnNpb24tdG9rZW4gOj0gaWV0Zi10b2tlbiAvIHgtdG9rZW4KKy8v
CisvLyBpZXRmLXRva2VuIDo9IDxBbiBleHRlbnNpb24gdG9rZW4gZGVmaW5lZCBieSBhCisvLyAg
ICAgICAgICAgICAgICBzdGFuZGFyZHMtdHJhY2sgUkZDIGFuZCByZWdpc3RlcmVkCisvLyAgICAg
ICAgICAgICAgICB3aXRoIElBTkEuPgorLy8KKy8vIHgtdG9rZW4gOj0gPFRoZSB0d28gY2hhcmFj
dGVycyAiWC0iIG9yICJ4LSIgZm9sbG93ZWQsIHdpdGgKKy8vICAgICAgICAgICAgIG5vIGludGVy
dmVuaW5nIHdoaXRlIHNwYWNlLCBieSBhbnkgdG9rZW4+CisvLworLy8gc3VidHlwZSA6PSBleHRl
bnNpb24tdG9rZW4gLyBpYW5hLXRva2VuCisvLworLy8gaWFuYS10b2tlbiA6PSA8QSBwdWJsaWNs
eS1kZWZpbmVkIGV4dGVuc2lvbiB0b2tlbi4gVG9rZW5zCisvLyAgICAgICAgICAgICAgICBvZiB0
aGlzIGZvcm0gbXVzdCBiZSByZWdpc3RlcmVkIHdpdGggSUFOQQorLy8gICAgICAgICAgICAgICAg
YXMgc3BlY2lmaWVkIGluIFJGQyAyMDQ4Lj4KKy8vCisvLyBwYXJhbWV0ZXIgOj0gYXR0cmlidXRl
ICI9IiB2YWx1ZQorLy8KKy8vIGF0dHJpYnV0ZSA6PSB0b2tlbgorLy8gICAgICAgICAgICAgIDsg
TWF0Y2hpbmcgb2YgYXR0cmlidXRlcworLy8gICAgICAgICAgICAgIDsgaXMgQUxXQVlTIGNhc2Ut
aW5zZW5zaXRpdmUuCisvLworLy8gdmFsdWUgOj0gdG9rZW4gLyBxdW90ZWQtc3RyaW5nCisvLwor
Ly8gdG9rZW4gOj0gMSo8YW55IChVUy1BU0NJSSkgQ0hBUiBleGNlcHQgU1BBQ0UsIENUTHMsCisv
LyAgICAgICAgICAgICBvciB0c3BlY2lhbHM+CisvLworLy8gdHNwZWNpYWxzIDo9ICAiKCIgLyAi
KSIgLyAiPCIgLyAiPiIgLyAiQCIgLworLy8gICAgICAgICAgICAgICAiLCIgLyAiOyIgLyAiOiIg
LyAiXCIgLyA8Ij4KKy8vICAgICAgICAgICAgICAgIi8iIC8gIlsiIC8gIl0iIC8gIj8iIC8gIj0i
CisvLyAgICAgICAgICAgICAgIDsgTXVzdCBiZSBpbiBxdW90ZWQtc3RyaW5nLAorLy8gICAgICAg
ICAgICAgICA7IHRvIHVzZSB3aXRoaW4gcGFyYW1ldGVyIHZhbHVlcworCit0ZW1wbGF0ZSA8Y2xh
c3MgVD4KK2Jvb2wgcGFyc2VDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBU
JiBwYXJzZXJUeXBlKQoreworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICB1bnNpZ25lZCBj
b250ZW50VHlwZUxlbmd0aCA9IGNvbnRlbnRUeXBlLmxlbmd0aCgpOworICAgIHNraXBTcGFjZXMo
Y29udGVudFR5cGUsIGluZGV4KTsKKyAgICBpZiAoaW5kZXggPj0gY29udGVudFR5cGVMZW5ndGgp
ICB7CisgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUgc3RyaW5nICclcyci
LCBjb250ZW50VHlwZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICAvLyBUaGVyZSBzaG91bGQgbm90IGJlIGFueSBxdW90ZWQgc3RyaW5ncyB1bnRp
bCB3ZSByZWFjaCB0aGUgcGFyYW1ldGVycy4KKyAgICBzaXplX3Qgc2VtaUNvbG9uSW5kZXggPSBj
b250ZW50VHlwZS5maW5kKCc7JywgaW5kZXgpOworICAgIGlmIChzZW1pQ29sb25JbmRleCA9PSBu
b3RGb3VuZCkgeworICAgICAgICBwYXJzZXJUeXBlLnNldENvbnRlbnRUeXBlKFN1YnN0cmluZ1Jh
bmdlKGluZGV4LCBjb250ZW50VHlwZUxlbmd0aCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBwYXJzZXJUeXBlLnNldENvbnRlbnRUeXBlKFN1YnN0cmluZ1JhbmdlKGluZGV4
LCBzZW1pQ29sb25JbmRleCAtIGluZGV4KSk7CisgICAgaW5kZXggPSBzZW1pQ29sb25JbmRleCAr
IDE7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgc2tpcFNwYWNlcyhjb250ZW50VHlwZSwg
aW5kZXgpOworICAgICAgICBTdWJzdHJpbmdSYW5nZSBrZXlSYW5nZSA9IHBhcnNlVG9rZW4oY29u
dGVudFR5cGUsIGluZGV4KTsKKyAgICAgICAgaWYgKCFrZXlSYW5nZS5zZWNvbmQgfHwgaW5kZXgg
Pj0gY29udGVudFR5cGVMZW5ndGgpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBD
b250ZW50LVR5cGUgcGFyYW1ldGVyIG5hbWUuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKworICAgICAgICAvLyBTaG91bGQgd2UgdG9sZXJhdGUgc3BhY2VzIGhlcmU/
CisgICAgICAgIGlmIChjb250ZW50VHlwZVtpbmRleCsrXSAhPSAnPScgfHwgaW5kZXggPj0gY29u
dGVudFR5cGVMZW5ndGgpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50
LVR5cGUgbWFsZm9ybWVkIHBhcmFtZXRlci4iKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIFNob3VsZCB3ZSB0b2xlcmF0ZSBzcGFjZXMgaGVyZT8K
KyAgICAgICAgU3RyaW5nIHZhbHVlOworICAgICAgICBTdWJzdHJpbmdSYW5nZSB2YWx1ZVJhbmdl
OworICAgICAgICBpZiAoY29udGVudFR5cGVbaW5kZXhdID09ICciJykKKyAgICAgICAgICAgIHZh
bHVlUmFuZ2UgPSBwYXJzZVF1b3RlZFN0cmluZyhjb250ZW50VHlwZSwgaW5kZXgpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICB2YWx1ZVJhbmdlID0gcGFyc2VUb2tlbihjb250ZW50VHlwZSwg
aW5kZXgpOworCisgICAgICAgIGlmICghdmFsdWVSYW5nZS5zZWNvbmQpIHsKKyAgICAgICAgICAg
IExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUsIGludmFsaWQgcGFyYW1ldGVyIHZhbHVl
LiIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLy8g
U2hvdWxkIHdlIHRvbGVyYXRlIHNwYWNlcyBoZXJlPworICAgICAgICBpZiAoaW5kZXggPCBjb250
ZW50VHlwZUxlbmd0aCAmJiBjb250ZW50VHlwZVtpbmRleCsrXSAhPSAnOycpIHsKKyAgICAgICAg
ICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUsIGludmFsaWQgY2hhcmFjdGVyIGF0
IHRoZSBlbmQgb2Yga2V5L3ZhbHVlIHBhcmFtZXRlci4iKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHBhcnNlclR5cGUuc2V0Q29udGVudFR5cGVQYXJh
bWV0ZXIoa2V5UmFuZ2UsIHZhbHVlUmFuZ2UpOworCisgICAgICAgIGlmIChpbmRleCA+PSBjb250
ZW50VHlwZUxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIGlzVmFsaWRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKQoreworICAgIGlmIChjb250ZW50VHlwZS5jb250YWlucygnXHInKSB8fCBjb250
ZW50VHlwZS5jb250YWlucygnXG4nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRW1w
dHlQYXJzZWRDb250ZW50VHlwZSBwYXJzZWRDb250ZW50VHlwZSA9IEVtcHR5UGFyc2VkQ29udGVu
dFR5cGUoKTsKKyAgICByZXR1cm4gcGFyc2VDb250ZW50VHlwZTxFbXB0eVBhcnNlZENvbnRlbnRU
eXBlPihjb250ZW50VHlwZSwgcGFyc2VkQ29udGVudFR5cGUpOworfQorCitQYXJzZWRDb250ZW50
VHlwZTo6UGFyc2VkQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKKyAgICA6
IG1fY29udGVudFR5cGUoY29udGVudFR5cGUuc3RyaXBXaGl0ZVNwYWNlKCkpCit7CisgICAgcGFy
c2VDb250ZW50VHlwZTxQYXJzZWRDb250ZW50VHlwZT4obV9jb250ZW50VHlwZSwgKnRoaXMpOwor
fQorCitTdHJpbmcgUGFyc2VkQ29udGVudFR5cGU6OmNoYXJzZXQoKSBjb25zdAoreworICAgIHJl
dHVybiBwYXJhbWV0ZXJWYWx1ZUZvck5hbWUoImNoYXJzZXQiKTsKK30KKworU3RyaW5nIFBhcnNl
ZENvbnRlbnRUeXBlOjpwYXJhbWV0ZXJWYWx1ZUZvck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSBj
b25zdAoreworICAgIHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KG5hbWUpOworfQorCitzaXplX3Qg
UGFyc2VkQ29udGVudFR5cGU6OnBhcmFtZXRlckNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9wYXJhbWV0ZXJzLnNpemUoKTsKK30KKwordm9pZCBQYXJzZWRDb250ZW50VHlwZTo6c2V0Q29u
dGVudFR5cGUoY29uc3QgU3Vic3RyaW5nUmFuZ2UmIGNvbnRlbnRSYW5nZSkKK3sKKyAgICBtX21p
bWVUeXBlID0gc3Vic3RyaW5nRm9yUmFuZ2UobV9jb250ZW50VHlwZSwgY29udGVudFJhbmdlKS5z
dHJpcFdoaXRlU3BhY2UoKTsKK30KKwordm9pZCBQYXJzZWRDb250ZW50VHlwZTo6c2V0Q29udGVu
dFR5cGVQYXJhbWV0ZXIoY29uc3QgU3Vic3RyaW5nUmFuZ2UmIGtleSwgY29uc3QgU3Vic3RyaW5n
UmFuZ2UmIHZhbHVlKQoreworICAgIG1fcGFyYW1ldGVycy5zZXQoc3Vic3RyaW5nRm9yUmFuZ2Uo
bV9jb250ZW50VHlwZSwga2V5KSwgc3Vic3RyaW5nRm9yUmFuZ2UobV9jb250ZW50VHlwZSwgdmFs
dWUpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9QYXJzZWRDb250ZW50VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
YXJzZWRDb250ZW50VHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYx
MTkwMzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1BhcnNlZENvbnRlbnRUeXBlLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGFyc2VkQ29udGVu
dFR5cGVfaAorI2RlZmluZSBQYXJzZWRDb250ZW50VHlwZV9oCisKKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyA8aW5kZXgsIGxl
bmd0aD4KK3R5cGVkZWYgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gU3Vic3RyaW5nUmFu
Z2U7Citib29sIGlzVmFsaWRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmKTsKKworLy8gRklYTUU6
IGFkZCBzdXBwb3J0IGZvciBjb21tZW50cy4KK2NsYXNzIFBhcnNlZENvbnRlbnRUeXBlIHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBQYXJzZWRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmKTsKKwor
ICAgIFN0cmluZyBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KKyAgICBT
dHJpbmcgY2hhcnNldCgpIGNvbnN0OworCisgICAgLy8gTm90ZSB0aGF0IGluIHRoZSBjYXNlIG9m
IG11bHRpcGxlIHZhbHVlcyBmb3IgdGhlIHNhbWUgbmFtZSwgdGhlIGxhc3QgdmFsdWUgaXMgcmV0
dXJuZWQuCisgICAgU3RyaW5nIHBhcmFtZXRlclZhbHVlRm9yTmFtZShjb25zdCBTdHJpbmcmKSBj
b25zdDsKKyAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBUPgorICAgIGZyaWVuZCBib29sIHBhcnNlQ29udGVudFR5cGUoY29u
c3QgU3RyaW5nJiwgVCYpOworICAgIHZvaWQgc2V0Q29udGVudFR5cGUoY29uc3QgU3Vic3RyaW5n
UmFuZ2UmKTsKKyAgICB2b2lkIHNldENvbnRlbnRUeXBlUGFyYW1ldGVyKGNvbnN0IFN1YnN0cmlu
Z1JhbmdlJiwgY29uc3QgU3Vic3RyaW5nUmFuZ2UmKTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gS2V5VmFsdWVQYWlyczsKKyAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsK
KyAgICBLZXlWYWx1ZVBhaXJzIG1fcGFyYW1ldGVyczsKKyAgICBTdHJpbmcgbV9taW1lVHlwZTsK
K307CisKK30KKworI2VuZGlmCg==
</data>
<flag name="commit-queue"
          id="186539"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172318</attachid>
            <date>2012-11-05 05:24:34 -0800</date>
            <delta_ts>2012-11-05 10:59:11 -0800</delta_ts>
            <desc>Patch 5</desc>
            <filename>webcore_parsedcontenttype_5.patch</filename>
            <type>text/plain</type>
            <size>40179</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNjM2ZjY1YS4uZGUxYWQ5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE5OTAsNyArMTk5MCw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L0NyZWRlbnRpYWwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5j
cHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2VyLmNwcAogICAgIHBsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVR
dWV1ZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKQEAgLTIw
MDEsNiArMjAwMCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBWYWxpZGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcAorICAgIHBsYXRm
b3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Q
cm90ZWN0aW9uU3BhY2UuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGQ5YzljOGIuLjU5YjA4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMi0xMS0w
MiAgQWxleGFuZGVyIFNoYWxhbW92ICA8YWxleGFuZGVyLnNoYWxhbW92QGludGVsLmNvbT4KKwor
ICAgICAgICBJbXByb3ZlIENvbnRlbnRUeXBlUGFyc2VyLCBzbyB0aGF0IGl0IGNvdWxkIGJlIHVz
ZWQgdG8gdmFsaWRhdGUgbWltZSB0eXBlIGFjY29yZGluZyB0byBSRkMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDkyNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBQYXJzZWRD
b250ZW50VHlwZSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgY29udGVudHMgb2YgcGFyc2VkCisgICAg
ICAgIGNvbnRlbnQgdHlwZSBzdHJpbmcuIGlzVmFsaWRDb250ZW50VHlwZSBmdW5jdGlvbiBjb3Vs
ZCBiZSB1c2VkIHRvIGNoZWNrIGlmCisgICAgICAgIGZvcm1hdCBvZiB0aGUgY29udGVudCB0eXBl
IHN0cmluZyBpcyBhY29ycmRpbmcgdG8gUkZDIDI2MTYgc2VjdGlvbiA0LjIuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAg
ICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L01JTUVIZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUlNRUhlYWRlcjo6cGFyc2VIZWFk
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBh
cnNlci5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEVtcHR5UGFyc2VkQ29udGVu
dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlQYXJzZWRDb250ZW50VHlwZTo6c2V0Q29u
dGVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlQYXJzZWRDb250ZW50VHlwZTo6c2V0
Q29udGVudFR5cGVQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2tpcFNwYWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjppc1Rva2VuQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VRdW90ZWRTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6c3Vic3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VD
b250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkQ29udGVudFR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OlBhcnNlZENvbnRlbnRUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhcnNlZENvbnRlbnRUeXBlOjpjaGFyc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBhcnNlZENvbnRlbnRUeXBlOjpwYXJhbWV0ZXJWYWx1ZUZvck5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OnBhcmFtZXRlckNvdW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhcnNlZENvbnRlbnRUeXBlOjpzZXRDb250ZW50VHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXJzZWRDb250ZW50VHlwZTo6c2V0Q29udGVudFR5cGVQYXJhbWV0ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuaDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuaC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGFyc2VkQ29udGVudFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6Om1pbWVUeXBlKToKKwogMjAxMi0xMS0wNSAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQmFzZUNob29zZXJPbmx5
RGF0ZUFuZFRpbWVJbnB1dFR5cGUgc2hvdWxkIGltcGxlbWVudCBEYXRlVGltZUNob29zZXJDbGll
bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDNkYzJmMmUuLmQ2MWVlYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDY4NCw4ICs0Njg0LDYgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNv
dXJjZUhhbmRsZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
c291cmNlSGFuZGxlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlN0
b3JhZ2VEYXRhLmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5
cGVQYXJzZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRU
eXBlUGFyc2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llU3Rv
cmFnZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaCBcCkBAIC00
NzA5LDYgKzQ3MDcsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTUlNRUhlYWRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtpbmdDb250ZXh0LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UGFyc2VkQ29udGVudFR5cGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1BhcnNlZENvbnRlbnRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UHJveHlTZXJ2ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5
U2VydmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRl
Tm90aWZpZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGY0MGMyZTkuLjU5MjhmMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQpAQCAtMTA0Myw3ICsxMDQzLDYgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRl
bnRpYWwuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcCBc
Ci0gICAgcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBhcnNlci5jcHAgXAogICAgIHBsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
QnVpbGRlci5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAgXApA
QCAtMTA1Miw2ICsxMDUxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9I
VFRQVmFsaWRhdGlvbi5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAg
XAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwIFwKKyAgICBw
bGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2Vy
dmVyLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAgXApA
QCAtMjIyNCw3ICsyMjI0LDYgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9D
b29raWVTdG9yYWdlLmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5oIFwKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmggXAotICAgIHBsYXRmb3JtL25l
dHdvcmsvQ29udGVudFR5cGVQYXJzZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9ETlNSZXNv
bHZlUXVldWUuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuaCBcCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIFwKQEAgLTIyMzYsNiArMjIzNSw3IEBAIEhF
QURFUlMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmaW5nLmggXAogICAgIHBs
YXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RhdGVOb3RpZmllci5oIFwKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENv
bnRlbnRUeXBlLmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmggXAog
ICAgIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9xdC9RdE1JTUVUeXBlU25pZmZlci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxODIwNTQ5Li4w
OWU0YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01NTMyLDggKzU1MzIsNiBAQAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vbmV0d29yay9CbG9iU3RvcmFnZURhdGEuaCcsCi0gICAgICAgICAgICAncGxhdGZv
cm0vbmV0d29yay9Db250ZW50VHlwZVBhcnNlci5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3Jt
L25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0
d29yay9DcmVkZW50aWFsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9DcmVk
ZW50aWFsU3RvcmFnZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvRE5TLmgn
LApAQCAtNTU1Miw2ICs1NTUwLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0
ZU5vdGlmaWVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rh
dGVOb3RpZmllci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRl
bnRUeXBlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50
VHlwZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZmUxOGYyOS4uNTczOGExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTY3LDggKzk2Nyw2IEBACiAJCTMzQzBDQ0Q0MTEyQzVF
NjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNDMENDRDIxMTJDNUU2MjAwQ0UwNTdEIC8qIFNlY3Vy
ZVRleHRJbnB1dC5jcHAgKi87IH07CiAJCTMzQzBDQ0Q1MTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1
cmVUZXh0SW5wdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMzQzBDQ0QzMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCAqLzsgfTsK
IAkJMzNEMDIxMkQxMzFEQjM3QjAwNDA5MUE4IC8qIENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxM0YwMUVBMTI3MEUxMEQwMERG
QkE3MSAvKiBDb29raWVTdG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJMzcwRDZFREExMzg0NTQ1NTAwNDQxMDNFIC8qIENvbnRlbnRUeXBl
UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3MEQ2RUQ4MTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlwZVBhcnNlci5jcHAgKi87IH07
Ci0JCTM3MEQ2RURCMTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlwZVBhcnNlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcwRDZFRDkxMzg0NTQ1
NTAwNDQxMDNFIC8qIENvbnRlbnRUeXBlUGFyc2VyLmggKi87IH07CiAJCTM3MTk0MTk2MTU2NkIz
NzIwMEEyNzZEOCAvKiBXZWJDb3JlTlNDZWxsRXh0cmFzLm0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzE5NDE5NDE1NjZCMzcyMDBBMjc2RDggLyogV2Vi
Q29yZU5TQ2VsbEV4dHJhcy5tICovOyB9OwogCQkzNzE5NDE5NzE1NjZCMzcyMDBBMjc2RDggLyog
V2ViQ29yZU5TQ2VsbEV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzcxOTQxOTUxNTY2QjM3MjAwQTI3NkQ4IC8qIFdlYkNvcmVOU0NlbGxFeHRy
YXMuaCAqLzsgfTsKIAkJMzcxQTY3Q0IxMUM2QzdEQjAwMDQ3QjhCIC8qIEh5cGhlbmF0aW9uQ0Yu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxQTY3
Q0ExMUM2QzdEQjAwMDQ3QjhCIC8qIEh5cGhlbmF0aW9uQ0YuY3BwICovOyB9OwpAQCAtMTIwMyw2
ICsxMjAxLDggQEAKIAkJNDQzMTFDRDgxMkU0RTI0QjAwMEE4RDE5IC8qIERPTURvY3VtZW50UHJp
dmF0ZS5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDQzMTFDRDUxMkU0RTIyRDAwMEE4RDE5IC8qIERPTURvY3VtZW50UHJpdmF0
ZS5oICovOyB9OwogCQk0NDMxMUNEOTEyRTRFMjU3MDAwQThEMTkgLyogRE9NRG9jdW1lbnRGcmFn
bWVudFByaXZhdGUuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MzExQ0Q0MTJFNEUyMkQwMDBBOEQxOSAvKiBET01Eb2N1bWVu
dEZyYWdtZW50UHJpdmF0ZS5oICovOyB9OwogCQk0NDMxMUY4MjEyRTRFNjZDMDAwQThEMTkgLyog
RE9NRG9jdW1lbnRGcmFnbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NUU3MTE0NTBBQzVENTM0MDA1MzI3MEYgLyogRE9NRG9jdW1l
bnRGcmFnbWVudEludGVybmFsLmggKi87IH07CisJCTQ0Nzk1ODA0MTY0M0I0OUEwMDFFMEE3RiAv
KiBQYXJzZWRDb250ZW50VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDQ3OTU4MDMxNjQzQjQ3QjAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDQ3
OTU4MDUxNjQzQjRCMjAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Nzk1ODAyMTY0M0I0N0IwMDFF
MEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5jcHAgKi87IH07CiAJCTQ0OEEyOUJGMEE0NkQ5Q0Iw
MDMwNzU5RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ4QTI5QkQwQTQ2RDlDQjAwMzA3NTlGIC8qIEpT
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ0OEEyOUMwMEE0NkQ5Q0IwMDMwNzU5
RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDhBMjlCRTBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1M
T3B0aW9uc0NvbGxlY3Rpb24uY3BwICovOyB9OwogCQk0NDhBRDI3QzBBNDgxMzdBMDAyM0QxNzkg
LyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ4QUQyN0EwQTQ4MTM3OTAwMjNEMTc5IC8qIEpT
SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKQEAgLTgxMTUsOCArODExNSw2
IEBACiAJCTMzOUI1QjYyMTMxREFBMzIwMEY0OEQwMiAvKiBDb29raWVzU3RyYXRlZ3kuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29va2llc1N0cmF0ZWd5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzQzBDQ0QyMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVU
ZXh0SW5wdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjdXJl
VGV4dElucHV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzNDMENDRDMxMTJD
NUU2MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTZWN1cmVUZXh0SW5wdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMzcwRDZFRDgxMzg0NTQ1NTAwNDQxMDNFIC8qIENvbnRlbnRUeXBlUGFyc2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRUeXBlUGFyc2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzcwRDZFRDkxMzg0NTQ1NTAwNDQxMDNFIC8q
IENvbnRlbnRUeXBlUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bnRlbnRUeXBlUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MTk0MTk0
MTU2NkIzNzIwMEEyNzZEOCAvKiBXZWJDb3JlTlNDZWxsRXh0cmFzLm0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdlYkNvcmVOU0NlbGxFeHRyYXMubTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzcxOTQxOTUxNTY2QjM3MjAwQTI3NkQ4IC8qIFdlYkNvcmVOU0Nl
bGxFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZU5TQ2Vs
bEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFBNjdDQTExQzZDN0RC
MDAwNDdCOEIgLyogSHlwaGVuYXRpb25DRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBIeXBoZW5hdGlvbkNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTgzODMsNiArODM4MSw4IEBACiAJCTQ0MjlBQjA3MENCODRGODEwMDc2NDdDNSAvKiBET01U
ZXh0RXZlbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
VGV4dEV2ZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQzMTFD
RDQxMkU0RTIyRDAwMEE4RDE5IC8qIERPTURvY3VtZW50RnJhZ21lbnRQcml2YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTURvY3VtZW50RnJhZ21lbnRQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MzExQ0Q1MTJFNEUyMkQwMDBBOEQxOSAv
KiBET01Eb2N1bWVudFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NRG9jdW1lbnRQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0Nzk1
ODAyMTY0M0I0N0IwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJzZWRDb250ZW50VHlwZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0Nzk1ODAzMTY0M0I0N0IwMDFFMEE3RiAvKiBQYXJzZWRD
b250ZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZWRDb250
ZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDhBMjlCRDBBNDZEOUNC
MDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ0OEEyOUJFMEE0NkQ5Q0IwMDMwNzU5RiAvKiBKU0hUTUxPcHRpb25z
Q29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNI
VE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NDhBRDI3QTBBNDgxMzc5MDAyM0QxNzkgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3B0aW9uc0Nv
bGxlY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU2MzUs
OCArMTU2MzUsNiBAQAogCQkJCTJFQjRCQ0QwMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3Vy
Y2VIYW5kbGUuY3BwICovLAogCQkJCTJFQjRCQ0QxMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVz
b3VyY2VIYW5kbGUuaCAqLywKIAkJCQkyRURFRjFGMjEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYlN0
b3JhZ2VEYXRhLmggKi8sCi0JCQkJMzcwRDZFRDgxMzg0NTQ1NTAwNDQxMDNFIC8qIENvbnRlbnRU
eXBlUGFyc2VyLmNwcCAqLywKLQkJCQkzNzBENkVEOTEzODQ1NDU1MDA0NDEwM0UgLyogQ29udGVu
dFR5cGVQYXJzZXIuaCAqLywKIAkJCQlFMTNGMDFFQTEyNzBFMTBEMDBERkJBNzEgLyogQ29va2ll
U3RvcmFnZS5oICovLAogCQkJCTUxNEM3NjU4MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFs
LmNwcCAqLywKIAkJCQk1MTRDNzY1OTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oICov
LApAQCAtMTU2NjIsNiArMTU2NjAsOCBAQAogCQkJCTYyOEQyMTRCMTIxMzFFRDEwMDU1RENGQyAv
KiBOZXR3b3JraW5nQ29udGV4dC5oICovLAogCQkJCTFBN0ZBNjFBMEREQTNCQkUwMDI4RjhBNSAv
KiBOZXR3b3JrU3RhdGVOb3RpZmllci5jcHAgKi8sCiAJCQkJMUE3RkE2MTgwRERBM0IzQTAwMjhG
OEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmggKi8sCisJCQkJNDQ3OTU4MDIxNjQzQjQ3QjAw
MUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmNwcCAqLywKKwkJCQk0NDc5NTgwMzE2NDNCNDdC
MDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuaCAqLywKIAkJCQk1MTRDNzY1RjBDRTkyM0Ex
MDA3RUYzQ0QgLyogUHJvdGVjdGlvblNwYWNlLmNwcCAqLywKIAkJCQk1MTRDNzY2MDBDRTkyM0Ex
MDA3RUYzQ0QgLyogUHJvdGVjdGlvblNwYWNlLmggKi8sCiAJCQkJNTFBMDUyNTUxMDU4ODc0MDAw
Q0M5RTk1IC8qIFByb3RlY3Rpb25TcGFjZUhhc2guaCAqLywKQEAgLTIyNjAzLDcgKzIyNjAzLDYg
QEAKIAkJCQk5N0M0NzFEQzEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I3OTFBNjE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVu
dFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRDAxNUNBMEY0QjVDNzEwMDRB
NjYyRiAvKiBDb250ZW50VHlwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzcwRDZFREIxMzg0NTQ1
NTAwNDQxMDNFIC8qIENvbnRlbnRUeXBlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzYy
N0I4RTE0RkIzQ0VFMDAyQ0RDQTEgLyogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3RDNDQTExMTU3REY4RTkwMDg2MEE5NyAvKiBDb250ZXh0RmVhdHVy
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQjZBMEU2MEIwQkNBNUMwMEY1MDI3QSAvKiBDb250
ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTY3Myw2ICsyNTY3Miw3IEBACiAJCQkJNTA5
MzMzNTAxNjNCMEU0MzAwMDk5QTYwIC8qIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUwRDMyODU4MTYzQjMxM0YwMDE2MTExRSAvKiBWYWxpZGF0ZWRDdXN0
b21GaWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTNGRkZGOUE5MTU5RDlBNTUw
MDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ0
Nzk1ODA0MTY0M0I0OUEwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yNjE4NCw3ICsyNjE4NCw2IEBACiAJCQkJOTdDNDcxREIxMkY5MjVCRDAwODYzNTRC
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1N0I3OTFB
NTE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDFEMDE1Q0IwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTM3MEQ2RURBMTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlwZVBh
cnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzYyN0I4RDE0RkIzQ0VFMDAyQ0RDQTEgLyog
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEM0NB
MTAxNTdERjhFOTAwODYwQTk3IC8qIENvbnRleHRGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwNjVBRDRGNjBCMEMyRURBMDA1QTJCMUQgLyogQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjg3NTYsNiArMjg3NTUsNyBAQAogCQkJCTNGRkZGOUE4MTU5
RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNEZGQzAyMkIxNjQzQjcxMDAwNEUxNjM4IC8qIE5vZGVSYXJlRGF0YS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0RkZDMDIyRDE2NDNCNzI2MDA0RTE2MzggLyogRWxlbWVudFJhcmVEYXRh
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ0Nzk1ODA1MTY0M0I0QjIwMDFFMEE3RiAvKiBQYXJz
ZWRDb250ZW50VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBhcnNlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGRkYTQ1ODguLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBhcnNlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwy
MjEgKzAsMCBAQAotIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ29udGVudFR5cGVQYXJz
ZXIuaCIKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIHZvaWQg
c2tpcFNwYWNlcyhjb25zdCBTdHJpbmcmIGlucHV0LCBzaXplX3QmIHN0YXJ0SW5kZXgpCi17Ci0g
ICAgd2hpbGUgKHN0YXJ0SW5kZXggPCBpbnB1dC5sZW5ndGgoKSAmJiBpbnB1dFtzdGFydEluZGV4
XSA9PSAnICcpCi0gICAgICAgICsrc3RhcnRJbmRleDsKLX0KLQotc3RhdGljIGJvb2wgaXNUb2tl
bkNoYXJhY3RlcihjaGFyIGMpCi17Ci0gICAgcmV0dXJuIGlzQVNDSUkoYykgJiYgYyA+ICcgJyAm
JiBjICE9ICciJyAmJiBjICE9ICcoJyAmJiBjICE9ICcpJyAmJiBjICE9ICcsJyAmJiBjICE9ICcv
JyAmJiAoYyA8ICc6JyB8fCBjID4gJ0AnKSAmJiAoYyA8ICdbJyB8fCBjID4gJ10nKTsKLX0KLQot
c3RhdGljIFN0cmluZyBwYXJzZVRva2VuKGNvbnN0IFN0cmluZyYgaW5wdXQsIHNpemVfdCYgc3Rh
cnRJbmRleCkKLXsKLSAgICBpZiAoc3RhcnRJbmRleCA+PSBpbnB1dC5sZW5ndGgoKSkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwot
ICAgIHdoaWxlIChzdGFydEluZGV4IDwgaW5wdXQubGVuZ3RoKCkpIHsKLSAgICAgICAgY2hhciBj
dXJyZW50Q2hhcmFjdGVyID0gaW5wdXRbc3RhcnRJbmRleF07Ci0gICAgICAgIGlmICghaXNUb2tl
bkNoYXJhY3RlcihjdXJyZW50Q2hhcmFjdGVyKSkKLSAgICAgICAgICAgIHJldHVybiBzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGN1cnJlbnRD
aGFyYWN0ZXIpOwotICAgICAgICArK3N0YXJ0SW5kZXg7Ci0gICAgfQotICAgIHJldHVybiBzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgcGFyc2VRdW90ZWRTdHJp
bmcoY29uc3QgU3RyaW5nJiBpbnB1dCwgc2l6ZV90JiBzdGFydEluZGV4KQotewotICAgIGlmIChz
dGFydEluZGV4ID49IGlucHV0Lmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0K
LSAgICBpZiAoaW5wdXRbc3RhcnRJbmRleCsrXSAhPSAnIicgfHwgc3RhcnRJbmRleCA+PSBpbnB1
dC5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgU3RyaW5nQnVpbGRl
ciBzdHJpbmdCdWlsZGVyOwotICAgIGJvb2wgbGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IGZh
bHNlOwotICAgIGNoYXIgY3VycmVudENoYXJhY3RlcjsKLSAgICB3aGlsZSAoKGN1cnJlbnRDaGFy
YWN0ZXIgPSBpbnB1dFtzdGFydEluZGV4KytdKSAhPSAnIicgfHwgbGFzdENoYXJhY3Rlcldhc0Jh
Y2tzbGFzaCkgewotICAgICAgICBpZiAoc3RhcnRJbmRleCA+PSBpbnB1dC5sZW5ndGgoKSkKLSAg
ICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIg
PT0gJ1xcJyAmJiAhbGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCkgewotICAgICAgICAgICAgbGFz
dENoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IHRydWU7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgfQotICAgICAgICBpZiAobGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCkKLSAgICAgICAg
ICAgIGxhc3RDaGFyYWN0ZXJXYXNCYWNrc2xhc2ggPSBmYWxzZTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoY3VycmVudENoYXJhY3Rlcik7Ci0gICAgfQotICAgIHJldHVybiBzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLUNvbnRlbnRUeXBlUGFyc2VyOjpDb250ZW50VHlwZVBh
cnNlcihjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQotICAgIDogbV9jb250ZW50VHlwZShjb250
ZW50VHlwZS5zdHJpcFdoaXRlU3BhY2UoKSkKLXsKLSAgICBwYXJzZSgpOwotfQotCi1TdHJpbmcg
Q29udGVudFR5cGVQYXJzZXI6OmNoYXJzZXQoKSBjb25zdAotewotICAgIHJldHVybiBwYXJhbWV0
ZXJWYWx1ZUZvck5hbWUoImNoYXJzZXQiKTsKLX0KLQotU3RyaW5nIENvbnRlbnRUeXBlUGFyc2Vy
OjpwYXJhbWV0ZXJWYWx1ZUZvck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAotewotICAg
IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KG5hbWUpOwotfQotCi1zaXplX3QgQ29udGVudFR5cGVQ
YXJzZXI6OnBhcmFtZXRlckNvdW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXJhbWV0ZXJz
LnNpemUoKTsKLX0KLQotLy8gRnJvbSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyMDQ1
I3NlY3Rpb24tNS4xOgotLy8KLS8vIGNvbnRlbnQgOj0gIkNvbnRlbnQtVHlwZSIgIjoiIHR5cGUg
Ii8iIHN1YnR5cGUKLS8vICAgICAgICAgICAgKigiOyIgcGFyYW1ldGVyKQotLy8gICAgICAgICAg
ICA7IE1hdGNoaW5nIG9mIG1lZGlhIHR5cGUgYW5kIHN1YnR5cGUKLS8vICAgICAgICAgICAgOyBp
cyBBTFdBWVMgY2FzZS1pbnNlbnNpdGl2ZS4KLS8vCi0vLyB0eXBlIDo9IGRpc2NyZXRlLXR5cGUg
LyBjb21wb3NpdGUtdHlwZQotLy8KLS8vIGRpc2NyZXRlLXR5cGUgOj0gInRleHQiIC8gImltYWdl
IiAvICJhdWRpbyIgLyAidmlkZW8iIC8KLS8vICAgICAgICAgICAgICAgICAgImFwcGxpY2F0aW9u
IiAvIGV4dGVuc2lvbi10b2tlbgotLy8KLS8vIGNvbXBvc2l0ZS10eXBlIDo9ICJtZXNzYWdlIiAv
ICJtdWx0aXBhcnQiIC8gZXh0ZW5zaW9uLXRva2VuCi0vLwotLy8gZXh0ZW5zaW9uLXRva2VuIDo9
IGlldGYtdG9rZW4gLyB4LXRva2VuCi0vLwotLy8gaWV0Zi10b2tlbiA6PSA8QW4gZXh0ZW5zaW9u
IHRva2VuIGRlZmluZWQgYnkgYQotLy8gICAgICAgICAgICAgICAgc3RhbmRhcmRzLXRyYWNrIFJG
QyBhbmQgcmVnaXN0ZXJlZAotLy8gICAgICAgICAgICAgICAgd2l0aCBJQU5BLj4KLS8vCi0vLyB4
LXRva2VuIDo9IDxUaGUgdHdvIGNoYXJhY3RlcnMgIlgtIiBvciAieC0iIGZvbGxvd2VkLCB3aXRo
Ci0vLyAgICAgICAgICAgICBubyBpbnRlcnZlbmluZyB3aGl0ZSBzcGFjZSwgYnkgYW55IHRva2Vu
PgotLy8KLS8vIHN1YnR5cGUgOj0gZXh0ZW5zaW9uLXRva2VuIC8gaWFuYS10b2tlbgotLy8KLS8v
IGlhbmEtdG9rZW4gOj0gPEEgcHVibGljbHktZGVmaW5lZCBleHRlbnNpb24gdG9rZW4uIFRva2Vu
cwotLy8gICAgICAgICAgICAgICAgb2YgdGhpcyBmb3JtIG11c3QgYmUgcmVnaXN0ZXJlZCB3aXRo
IElBTkEKLS8vICAgICAgICAgICAgICAgIGFzIHNwZWNpZmllZCBpbiBSRkMgMjA0OC4+Ci0vLwot
Ly8gcGFyYW1ldGVyIDo9IGF0dHJpYnV0ZSAiPSIgdmFsdWUKLS8vCi0vLyBhdHRyaWJ1dGUgOj0g
dG9rZW4KLS8vICAgICAgICAgICAgICA7IE1hdGNoaW5nIG9mIGF0dHJpYnV0ZXMKLS8vICAgICAg
ICAgICAgICA7IGlzIEFMV0FZUyBjYXNlLWluc2Vuc2l0aXZlLgotLy8KLS8vIHZhbHVlIDo9IHRv
a2VuIC8gcXVvdGVkLXN0cmluZwotLy8KLS8vIHRva2VuIDo9IDEqPGFueSAoVVMtQVNDSUkpIENI
QVIgZXhjZXB0IFNQQUNFLCBDVExzLAotLy8gICAgICAgICAgICAgb3IgdHNwZWNpYWxzPgotLy8K
LS8vIHRzcGVjaWFscyA6PSAgIigiIC8gIikiIC8gIjwiIC8gIj4iIC8gIkAiIC8KLS8vICAgICAg
ICAgICAgICAgIiwiIC8gIjsiIC8gIjoiIC8gIlwiIC8gPCI+Ci0vLyAgICAgICAgICAgICAgICIv
IiAvICJbIiAvICJdIiAvICI/IiAvICI9IgotLy8gICAgICAgICAgICAgICA7IE11c3QgYmUgaW4g
cXVvdGVkLXN0cmluZywKLS8vICAgICAgICAgICAgICAgOyB0byB1c2Ugd2l0aGluIHBhcmFtZXRl
ciB2YWx1ZXMKLQotdm9pZCBDb250ZW50VHlwZVBhcnNlcjo6cGFyc2UoKQotewotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBjb250ZW50VHlwZVBhcmFtZXRlck5hbWUsIChB
U0NJSUxpdGVyYWwoIkNvbnRlbnQtVHlwZSIpKSk7Ci0KLSAgICBpZiAoIW1fY29udGVudFR5cGUu
c3RhcnRzV2l0aChjb250ZW50VHlwZVBhcmFtZXRlck5hbWUpKSB7Ci0gICAgICAgIExPR19FUlJP
UigiSW52YWxpZCBDb250ZW50LVR5cGUgc3RyaW5nICclcyciLCBtX2NvbnRlbnRUeXBlLmFzY2lp
KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzaXplX3QgY29udGVudFR5
cGVMZW5ndGggPSBtX2NvbnRlbnRUeXBlLmxlbmd0aCgpOwotICAgIHNpemVfdCBpbmRleCA9IGNv
bnRlbnRUeXBlUGFyYW1ldGVyTmFtZS5sZW5ndGgoKTsKLSAgICBza2lwU3BhY2VzKG1fY29udGVu
dFR5cGUsIGluZGV4KTsKLSAgICBpZiAoaW5kZXggPj0gY29udGVudFR5cGVMZW5ndGggfHwgbV9j
b250ZW50VHlwZVtpbmRleF0gIT0gJzonIHx8ICsraW5kZXggPj0gY29udGVudFR5cGVMZW5ndGgp
ICB7Ci0gICAgICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUgc3RyaW5nICclcyci
LCBtX2NvbnRlbnRUeXBlLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIC8vIFRoZXJlIHNob3VsZCBub3QgYmUgYW55IHF1b3RlZCBzdHJpbmdzIHVudGlsIHdl
IHJlYWNoIHRoZSBwYXJhbWV0ZXJzLgotICAgIHNpemVfdCBzZW1pQ29sb25JbmRleCA9IG1fY29u
dGVudFR5cGUuZmluZCgnOycsIGluZGV4KTsKLSAgICBpZiAoc2VtaUNvbG9uSW5kZXggPT0gbm90
Rm91bmQpIHsKLSAgICAgICAgbV9taW1lVHlwZSA9IG1fY29udGVudFR5cGUuc3Vic3RyaW5nKGlu
ZGV4KS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1f
bWltZVR5cGUgPSBtX2NvbnRlbnRUeXBlLnN1YnN0cmluZyhpbmRleCwgc2VtaUNvbG9uSW5kZXgg
LSBpbmRleCkuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgaW5kZXggPSBzZW1pQ29sb25JbmRleCAr
IDE7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgc2tpcFNwYWNlcyhtX2NvbnRlbnRUeXBl
LCBpbmRleCk7Ci0gICAgICAgIFN0cmluZyBrZXkgPSBwYXJzZVRva2VuKG1fY29udGVudFR5cGUs
IGluZGV4KTsKLSAgICAgICAgaWYgKGtleS5pc0VtcHR5KCkgfHwgaW5kZXggPj0gY29udGVudFR5
cGVMZW5ndGgpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUg
cGFyYW1ldGVyIG5hbWUuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgLy8gU2hvdWxkIHdlIHRvbGVyYXRlIHNwYWNlcyBoZXJlPwotICAgICAgICBpZiAobV9jb250
ZW50VHlwZVtpbmRleCsrXSAhPSAnPScgfHwgaW5kZXggPj0gY29udGVudFR5cGVMZW5ndGgpIHsK
LSAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUgbWFsZm9ybWVkIHBh
cmFtZXRlci4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IFNob3VsZCB3ZSB0b2xlcmF0ZSBzcGFjZXMgaGVyZT8KLSAgICAgICAgU3RyaW5nIHZhbHVlOwot
ICAgICAgICBpZiAobV9jb250ZW50VHlwZVtpbmRleF0gPT0gJyInKQotICAgICAgICAgICAgdmFs
dWUgPSBwYXJzZVF1b3RlZFN0cmluZyhtX2NvbnRlbnRUeXBlLCBpbmRleCk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHZhbHVlID0gcGFyc2VUb2tlbihtX2NvbnRlbnRUeXBlLCBpbmRleCk7
Ci0KLSAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1Io
IkludmFsaWQgQ29udGVudC1UeXBlLCBpbnZhbGlkIHBhcmFtZXRlciB2YWx1ZS4iKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFNob3VsZCB3ZSB0b2xlcmF0
ZSBzcGFjZXMgaGVyZT8KLSAgICAgICAgaWYgKGluZGV4IDwgY29udGVudFR5cGVMZW5ndGggJiYg
bV9jb250ZW50VHlwZVtpbmRleCsrXSAhPSAnOycpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigi
SW52YWxpZCBDb250ZW50LVR5cGUsIGludmFsaWQgY2hhcmFjdGVyIGF0IHRoZSBlbmQgb2Yga2V5
L3ZhbHVlIHBhcmFtZXRlci4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIG1fcGFyYW1ldGVycy5zZXQoa2V5LCB2YWx1ZSk7Ci0KLSAgICAgICAgaWYgKGluZGV4
ID49IGNvbnRlbnRUeXBlTGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlw
ZVBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBh
cnNlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjU3YjAxLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENvbnRlbnRUeXBlUGFyc2VyX2gK
LSNkZWZpbmUgQ29udGVudFR5cGVQYXJzZXJfaAotCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gRklYTUU6IGFkZCBzdXBwb3J0
IGZvciBjb21tZW50cy4KLWNsYXNzIENvbnRlbnRUeXBlUGFyc2VyIHsKLXB1YmxpYzoKLSAgICBl
eHBsaWNpdCBDb250ZW50VHlwZVBhcnNlcihjb25zdCBTdHJpbmcmKTsKLQotICAgIFN0cmluZyBt
aW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KLSAgICBTdHJpbmcgY2hhcnNl
dCgpIGNvbnN0OwotCi0gICAgLy8gTm90ZSB0aGF0IGluIHRoZSBjYXNlIG9mIG11bHRpcGxlIHZh
bHVlcyBmb3IgdGhlIHNhbWUgbmFtZSwgdGhlIGxhc3QgdmFsdWUgaXMgcmV0dXJuZWQuCi0gICAg
U3RyaW5nIHBhcmFtZXRlclZhbHVlRm9yTmFtZShjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICBz
aXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICB2b2lkIHBhcnNl
KCk7Ci0KLSAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKLQotICAgIHR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gS2V5VmFsdWVQYWlyczsKLSAgICBLZXlWYWx1ZVBhaXJzIG1fcGFyYW1l
dGVyczsKLSAgICBTdHJpbmcgbV9taW1lVHlwZTsKLX07Ci0KLX0KLQotI2VuZGlmCi0KLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKaW5kZXggZjRl
M2ViZi4uMDQ4YWJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9NSU1FSGVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiTUlNRUhlYWRlci5oIgogCi0jaW5jbHVkZSAiQ29udGVudFR5cGVQYXJzZXIuaCIKKyNp
bmNsdWRlICJQYXJzZWRDb250ZW50VHlwZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CkBAIC04NSwxNCArODUsMTMgQEAgUGFzc1JlZlB0cjxNSU1FSGVhZGVyPiBNSU1F
SGVhZGVyOjpwYXJzZUhlYWRlcihTaGFyZWRCdWZmZXJDaHVua1JlYWRlciogYnVmZmVyKQogICAg
IEtleVZhbHVlTWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVy
KTsKICAgICBLZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtl
eVZhbHVlUGFpcnMuZmluZCgiY29udGVudC10eXBlIik7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJz
SXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkgewotICAgICAgICAvLyBGSVhNRTogbWFr
ZSBDb250ZW50VHlwZVBhcnNlciBtb3JlIGZsZXhpYmxlIHNvIHdlIGRvbid0IGhhdmUgdG8gc3lu
dGhlc2l6ZSB0aGUgIkNvbnRlbnQtVHlwZToiLgotICAgICAgICBDb250ZW50VHlwZVBhcnNlciBj
b250ZW50VHlwZVBhcnNlcihtYWtlU3RyaW5nKCJDb250ZW50LVR5cGU6IiwgbWltZVBhcmFtZXRl
cnNJdGVyYXRvci0+dmFsdWUpKTsKLSAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlUGFyc2VyLm1pbWVUeXBlKCk7CisgICAgICAgIFBhcnNlZENvbnRlbnRUeXBl
IHBhcnNlZENvbnRlbnRUeXBlKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3ItPnZhbHVlKTsKKyAgICAg
ICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLm1pbWVUeXBl
KCk7CiAgICAgICAgIGlmICghbWltZUhlYWRlci0+aXNNdWx0aXBhcnQoKSkKLSAgICAgICAgICAg
IG1pbWVIZWFkZXItPm1fY2hhcnNldCA9IGNvbnRlbnRUeXBlUGFyc2VyLmNoYXJzZXQoKS5zdHJp
cFdoaXRlU3BhY2UoKTsKKyAgICAgICAgICAgIG1pbWVIZWFkZXItPm1fY2hhcnNldCA9IHBhcnNl
ZENvbnRlbnRUeXBlLmNoYXJzZXQoKS5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBtaW1lSGVhZGVyLT5tX211bHRpcGFydFR5cGUgPSBjb250ZW50VHlwZVBh
cnNlci5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiKTsKLSAgICAgICAgICAgIG1pbWVIZWFk
ZXItPm1fZW5kT2ZQYXJ0Qm91bmRhcnkgPSBjb250ZW50VHlwZVBhcnNlci5wYXJhbWV0ZXJWYWx1
ZUZvck5hbWUoImJvdW5kYXJ5Iik7CisgICAgICAgICAgICBtaW1lSGVhZGVyLT5tX211bHRpcGFy
dFR5cGUgPSBwYXJzZWRDb250ZW50VHlwZS5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiKTsK
KyAgICAgICAgICAgIG1pbWVIZWFkZXItPm1fZW5kT2ZQYXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250
ZW50VHlwZS5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoImJvdW5kYXJ5Iik7CiAgICAgICAgICAgICBp
ZiAobWltZUhlYWRlci0+bV9lbmRPZlBhcnRCb3VuZGFyeS5pc051bGwoKSkgewogICAgICAgICAg
ICAgICAgIExPR19FUlJPUigiTm8gYm91bmRhcnkgZm91bmQgaW4gbXVsdGlwYXJ0IE1JTUUgaGVh
ZGVyLiIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWJjYzBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAKQEAgLTAsMCAr
MSwyNTQgQEAKKyAvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRUeXBl
LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVtcHR5UGFy
c2VkQ29udGVudFR5cGUgeworcHVibGljOgorICAgIHZvaWQgc2V0Q29udGVudFR5cGUoY29uc3Qg
U3Vic3RyaW5nUmFuZ2UmKSBjb25zdCB7IH0KKyAgICB2b2lkIHNldENvbnRlbnRUeXBlUGFyYW1l
dGVyKGNvbnN0IFN1YnN0cmluZ1JhbmdlJiwgY29uc3QgU3Vic3RyaW5nUmFuZ2UmKSBjb25zdCB7
IH0KK307CisKK3N0YXRpYyB2b2lkIHNraXBTcGFjZXMoY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5z
aWduZWQmIHN0YXJ0SW5kZXgpCit7CisgICAgd2hpbGUgKHN0YXJ0SW5kZXggPCBpbnB1dC5sZW5n
dGgoKSAmJiBpbnB1dFtzdGFydEluZGV4XSA9PSAnICcpCisgICAgICAgICsrc3RhcnRJbmRleDsK
K30KKworc3RhdGljIGJvb2wgaXNUb2tlbkNoYXJhY3RlcihjaGFyIGMpCit7CisgICAgcmV0dXJu
IGlzQVNDSUkoYykgJiYgYyA+ICcgJyAmJiBjICE9ICciJyAmJiBjICE9ICcoJyAmJiBjICE9ICcp
JyAmJiBjICE9ICcsJyAmJiBjICE9ICcvJyAmJiAoYyA8ICc6JyB8fCBjID4gJ0AnKSAmJiAoYyA8
ICdbJyB8fCBjID4gJ10nKTsKK30KKworc3RhdGljIFN1YnN0cmluZ1JhbmdlIHBhcnNlVG9rZW4o
Y29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQmIHN0YXJ0SW5kZXgpCit7CisgICAgY29uc3Qg
dW5zaWduZWQgaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKKyAgICBjb25zdCB1bnNpZ25l
ZCBpbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgdW5zaWduZWQmIHRva2VuTGVuZ3RoID0gc3RhcnRJ
bmRleDsKKworICAgIGlmICh0b2tlbkxlbmd0aCA+PSBpbnB1dExlbmd0aCkKKyAgICAgICAgcmV0
dXJuIFN1YnN0cmluZ1JhbmdlKCk7CisKKyAgICB3aGlsZSAodG9rZW5MZW5ndGggPCBpbnB1dExl
bmd0aCkgeworICAgICAgICBpZiAoIWlzVG9rZW5DaGFyYWN0ZXIoaW5wdXRbdG9rZW5MZW5ndGhd
KSkKKyAgICAgICAgICAgIHJldHVybiBTdWJzdHJpbmdSYW5nZShpbmRleCwgdG9rZW5MZW5ndGgg
LSBpbmRleCk7CisgICAgICAgICsrdG9rZW5MZW5ndGg7CisgICAgfQorCisgICAgcmV0dXJuIFN1
YnN0cmluZ1JhbmdlKGluZGV4LCB0b2tlbkxlbmd0aCAtIGluZGV4KTsKK30KKworc3RhdGljIFN1
YnN0cmluZ1JhbmdlIHBhcnNlUXVvdGVkU3RyaW5nKGNvbnN0IFN0cmluZyYgaW5wdXQsIHVuc2ln
bmVkJiBzdGFydEluZGV4KQoreworICAgIGNvbnN0IHVuc2lnbmVkIGlucHV0TGVuZ3RoID0gaW5w
dXQubGVuZ3RoKCk7CisgICAgY29uc3QgdW5zaWduZWQgaW5kZXggPSBzdGFydEluZGV4OworICAg
IHVuc2lnbmVkJiBzdHJpbmdMZW5ndGggPSBzdGFydEluZGV4OworCisgICAgaWYgKHN0cmluZ0xl
bmd0aCA+PSBpbnB1dExlbmd0aCkKKyAgICAgICAgcmV0dXJuIFN1YnN0cmluZ1JhbmdlKCk7CisK
KyAgICBpZiAoaW5wdXRbc3RyaW5nTGVuZ3RoKytdICE9ICciJyB8fCBzdHJpbmdMZW5ndGggPj0g
aW5wdXRMZW5ndGgpCisgICAgICAgIHJldHVybiBTdWJzdHJpbmdSYW5nZSgpOworCisgICAgYm9v
bCBsYXN0Q2hhcmFjdGVyV2FzQmFja3NsYXNoID0gZmFsc2U7CisgICAgY2hhciBjdXJyZW50Q2hh
cmFjdGVyOworICAgIHdoaWxlICgoY3VycmVudENoYXJhY3RlciA9IGlucHV0W3N0cmluZ0xlbmd0
aCsrXSkgIT0gJyInIHx8IGxhc3RDaGFyYWN0ZXJXYXNCYWNrc2xhc2gpIHsKKyAgICAgICAgaWYg
KHN0cmluZ0xlbmd0aCA+PSBpbnB1dExlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBTdWJzdHJp
bmdSYW5nZSgpOworICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PSAnXFwnICYmICFsYXN0
Q2hhcmFjdGVyV2FzQmFja3NsYXNoKSB7CisgICAgICAgICAgICBsYXN0Q2hhcmFjdGVyV2FzQmFj
a3NsYXNoID0gdHJ1ZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAg
IGlmIChsYXN0Q2hhcmFjdGVyV2FzQmFja3NsYXNoKQorICAgICAgICAgICAgbGFzdENoYXJhY3Rl
cldhc0JhY2tzbGFzaCA9IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gU3Vic3RyaW5nUmFuZ2Uo
aW5kZXgsIHN0cmluZ0xlbmd0aCAtIGluZGV4KTsKK30KKworc3RhdGljIFN0cmluZyBzdWJzdHJp
bmdGb3JSYW5nZShjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgU3Vic3RyaW5nUmFuZ2UmIHJh
bmdlKQoreworICAgIHJldHVybiBzdHJpbmcuc3Vic3RyaW5nKHJhbmdlLmZpcnN0LCByYW5nZS5z
ZWNvbmQpOworfQorCisvLyBGcm9tIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzIwNDUj
c2VjdGlvbi01LjE6CisvLworLy8gY29udGVudCA6PSAiQ29udGVudC1UeXBlIiAiOiIgdHlwZSAi
LyIgc3VidHlwZQorLy8gICAgICAgICAgICAqKCI7IiBwYXJhbWV0ZXIpCisvLyAgICAgICAgICAg
IDsgTWF0Y2hpbmcgb2YgbWVkaWEgdHlwZSBhbmQgc3VidHlwZQorLy8gICAgICAgICAgICA7IGlz
IEFMV0FZUyBjYXNlLWluc2Vuc2l0aXZlLgorLy8KKy8vIHR5cGUgOj0gZGlzY3JldGUtdHlwZSAv
IGNvbXBvc2l0ZS10eXBlCisvLworLy8gZGlzY3JldGUtdHlwZSA6PSAidGV4dCIgLyAiaW1hZ2Ui
IC8gImF1ZGlvIiAvICJ2aWRlbyIgLworLy8gICAgICAgICAgICAgICAgICAiYXBwbGljYXRpb24i
IC8gZXh0ZW5zaW9uLXRva2VuCisvLworLy8gY29tcG9zaXRlLXR5cGUgOj0gIm1lc3NhZ2UiIC8g
Im11bHRpcGFydCIgLyBleHRlbnNpb24tdG9rZW4KKy8vCisvLyBleHRlbnNpb24tdG9rZW4gOj0g
aWV0Zi10b2tlbiAvIHgtdG9rZW4KKy8vCisvLyBpZXRmLXRva2VuIDo9IDxBbiBleHRlbnNpb24g
dG9rZW4gZGVmaW5lZCBieSBhCisvLyAgICAgICAgICAgICAgICBzdGFuZGFyZHMtdHJhY2sgUkZD
IGFuZCByZWdpc3RlcmVkCisvLyAgICAgICAgICAgICAgICB3aXRoIElBTkEuPgorLy8KKy8vIHgt
dG9rZW4gOj0gPFRoZSB0d28gY2hhcmFjdGVycyAiWC0iIG9yICJ4LSIgZm9sbG93ZWQsIHdpdGgK
Ky8vICAgICAgICAgICAgIG5vIGludGVydmVuaW5nIHdoaXRlIHNwYWNlLCBieSBhbnkgdG9rZW4+
CisvLworLy8gc3VidHlwZSA6PSBleHRlbnNpb24tdG9rZW4gLyBpYW5hLXRva2VuCisvLworLy8g
aWFuYS10b2tlbiA6PSA8QSBwdWJsaWNseS1kZWZpbmVkIGV4dGVuc2lvbiB0b2tlbi4gVG9rZW5z
CisvLyAgICAgICAgICAgICAgICBvZiB0aGlzIGZvcm0gbXVzdCBiZSByZWdpc3RlcmVkIHdpdGgg
SUFOQQorLy8gICAgICAgICAgICAgICAgYXMgc3BlY2lmaWVkIGluIFJGQyAyMDQ4Lj4KKy8vCisv
LyBwYXJhbWV0ZXIgOj0gYXR0cmlidXRlICI9IiB2YWx1ZQorLy8KKy8vIGF0dHJpYnV0ZSA6PSB0
b2tlbgorLy8gICAgICAgICAgICAgIDsgTWF0Y2hpbmcgb2YgYXR0cmlidXRlcworLy8gICAgICAg
ICAgICAgIDsgaXMgQUxXQVlTIGNhc2UtaW5zZW5zaXRpdmUuCisvLworLy8gdmFsdWUgOj0gdG9r
ZW4gLyBxdW90ZWQtc3RyaW5nCisvLworLy8gdG9rZW4gOj0gMSo8YW55IChVUy1BU0NJSSkgQ0hB
UiBleGNlcHQgU1BBQ0UsIENUTHMsCisvLyAgICAgICAgICAgICBvciB0c3BlY2lhbHM+CisvLwor
Ly8gdHNwZWNpYWxzIDo9ICAiKCIgLyAiKSIgLyAiPCIgLyAiPiIgLyAiQCIgLworLy8gICAgICAg
ICAgICAgICAiLCIgLyAiOyIgLyAiOiIgLyAiXCIgLyA8Ij4KKy8vICAgICAgICAgICAgICAgIi8i
IC8gIlsiIC8gIl0iIC8gIj8iIC8gIj0iCisvLyAgICAgICAgICAgICAgIDsgTXVzdCBiZSBpbiBx
dW90ZWQtc3RyaW5nLAorLy8gICAgICAgICAgICAgICA7IHRvIHVzZSB3aXRoaW4gcGFyYW1ldGVy
IHZhbHVlcworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2Jvb2wgcGFyc2VDb250ZW50VHlwZShjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBUJiBwYXJzZXJUeXBlKQoreworICAgIHVuc2lnbmVkIGlu
ZGV4ID0gMDsKKyAgICB1bnNpZ25lZCBjb250ZW50VHlwZUxlbmd0aCA9IGNvbnRlbnRUeXBlLmxl
bmd0aCgpOworICAgIHNraXBTcGFjZXMoY29udGVudFR5cGUsIGluZGV4KTsKKyAgICBpZiAoaW5k
ZXggPj0gY29udGVudFR5cGVMZW5ndGgpICB7CisgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBD
b250ZW50LVR5cGUgc3RyaW5nICclcyciLCBjb250ZW50VHlwZS5hc2NpaSgpLmRhdGEoKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBUaGVyZSBzaG91bGQgbm90IGJl
IGFueSBxdW90ZWQgc3RyaW5ncyB1bnRpbCB3ZSByZWFjaCB0aGUgcGFyYW1ldGVycy4KKyAgICBz
aXplX3Qgc2VtaUNvbG9uSW5kZXggPSBjb250ZW50VHlwZS5maW5kKCc7JywgaW5kZXgpOworICAg
IGlmIChzZW1pQ29sb25JbmRleCA9PSBub3RGb3VuZCkgeworICAgICAgICBwYXJzZXJUeXBlLnNl
dENvbnRlbnRUeXBlKFN1YnN0cmluZ1JhbmdlKGluZGV4LCBjb250ZW50VHlwZUxlbmd0aCAtIGlu
ZGV4KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHBhcnNlclR5cGUuc2V0
Q29udGVudFR5cGUoU3Vic3RyaW5nUmFuZ2UoaW5kZXgsIHNlbWlDb2xvbkluZGV4IC0gaW5kZXgp
KTsKKyAgICBpbmRleCA9IHNlbWlDb2xvbkluZGV4ICsgMTsKKyAgICB3aGlsZSAodHJ1ZSkgewor
ICAgICAgICBza2lwU3BhY2VzKGNvbnRlbnRUeXBlLCBpbmRleCk7CisgICAgICAgIFN1YnN0cmlu
Z1JhbmdlIGtleVJhbmdlID0gcGFyc2VUb2tlbihjb250ZW50VHlwZSwgaW5kZXgpOworICAgICAg
ICBpZiAoIWtleVJhbmdlLnNlY29uZCB8fCBpbmRleCA+PSBjb250ZW50VHlwZUxlbmd0aCkgewor
ICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIENvbnRlbnQtVHlwZSBwYXJhbWV0ZXIgbmFt
ZS4iKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IFNob3VsZCB3ZSB0b2xlcmF0ZSBzcGFjZXMgaGVyZT8KKyAgICAgICAgaWYgKGNvbnRlbnRUeXBl
W2luZGV4KytdICE9ICc9JyB8fCBpbmRleCA+PSBjb250ZW50VHlwZUxlbmd0aCkgeworICAgICAg
ICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIENvbnRlbnQtVHlwZSBtYWxmb3JtZWQgcGFyYW1ldGVy
LiIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLy8g
U2hvdWxkIHdlIHRvbGVyYXRlIHNwYWNlcyBoZXJlPworICAgICAgICBTdHJpbmcgdmFsdWU7Cisg
ICAgICAgIFN1YnN0cmluZ1JhbmdlIHZhbHVlUmFuZ2U7CisgICAgICAgIGlmIChjb250ZW50VHlw
ZVtpbmRleF0gPT0gJyInKQorICAgICAgICAgICAgdmFsdWVSYW5nZSA9IHBhcnNlUXVvdGVkU3Ry
aW5nKGNvbnRlbnRUeXBlLCBpbmRleCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhbHVl
UmFuZ2UgPSBwYXJzZVRva2VuKGNvbnRlbnRUeXBlLCBpbmRleCk7CisKKyAgICAgICAgaWYgKCF2
YWx1ZVJhbmdlLnNlY29uZCkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIENvbnRl
bnQtVHlwZSwgaW52YWxpZCBwYXJhbWV0ZXIgdmFsdWUuIik7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICAvLyBTaG91bGQgd2UgdG9sZXJhdGUgc3BhY2Vz
IGhlcmU/CisgICAgICAgIGlmIChpbmRleCA8IGNvbnRlbnRUeXBlTGVuZ3RoICYmIGNvbnRlbnRU
eXBlW2luZGV4KytdICE9ICc7JykgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIENv
bnRlbnQtVHlwZSwgaW52YWxpZCBjaGFyYWN0ZXIgYXQgdGhlIGVuZCBvZiBrZXkvdmFsdWUgcGFy
YW1ldGVyLiIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAg
ICAgcGFyc2VyVHlwZS5zZXRDb250ZW50VHlwZVBhcmFtZXRlcihrZXlSYW5nZSwgdmFsdWVSYW5n
ZSk7CisKKyAgICAgICAgaWYgKGluZGV4ID49IGNvbnRlbnRUeXBlTGVuZ3RoKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgaXNW
YWxpZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit7CisgICAgaWYgKGNv
bnRlbnRUeXBlLmNvbnRhaW5zKCdccicpIHx8IGNvbnRlbnRUeXBlLmNvbnRhaW5zKCdcbicpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFbXB0eVBhcnNlZENvbnRlbnRUeXBlIHBhcnNl
ZENvbnRlbnRUeXBlID0gRW1wdHlQYXJzZWRDb250ZW50VHlwZSgpOworICAgIHJldHVybiBwYXJz
ZUNvbnRlbnRUeXBlPEVtcHR5UGFyc2VkQ29udGVudFR5cGU+KGNvbnRlbnRUeXBlLCBwYXJzZWRD
b250ZW50VHlwZSk7Cit9CisKK1BhcnNlZENvbnRlbnRUeXBlOjpQYXJzZWRDb250ZW50VHlwZShj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorICAgIDogbV9jb250ZW50VHlwZShjb250ZW50VHlw
ZS5zdHJpcFdoaXRlU3BhY2UoKSkKK3sKKyAgICBwYXJzZUNvbnRlbnRUeXBlPFBhcnNlZENvbnRl
bnRUeXBlPihtX2NvbnRlbnRUeXBlLCAqdGhpcyk7Cit9CisKK1N0cmluZyBQYXJzZWRDb250ZW50
VHlwZTo6Y2hhcnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhcmFtZXRlclZhbHVlRm9yTmFt
ZSgiY2hhcnNldCIpOworfQorCitTdHJpbmcgUGFyc2VkQ29udGVudFR5cGU6OnBhcmFtZXRlclZh
bHVlRm9yTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFy
YW1ldGVycy5nZXQobmFtZSk7Cit9CisKK3NpemVfdCBQYXJzZWRDb250ZW50VHlwZTo6cGFyYW1l
dGVyQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhcmFtZXRlcnMuc2l6ZSgpOworfQor
Cit2b2lkIFBhcnNlZENvbnRlbnRUeXBlOjpzZXRDb250ZW50VHlwZShjb25zdCBTdWJzdHJpbmdS
YW5nZSYgY29udGVudFJhbmdlKQoreworICAgIG1fbWltZVR5cGUgPSBzdWJzdHJpbmdGb3JSYW5n
ZShtX2NvbnRlbnRUeXBlLCBjb250ZW50UmFuZ2UpLnN0cmlwV2hpdGVTcGFjZSgpOworfQorCit2
b2lkIFBhcnNlZENvbnRlbnRUeXBlOjpzZXRDb250ZW50VHlwZVBhcmFtZXRlcihjb25zdCBTdWJz
dHJpbmdSYW5nZSYga2V5LCBjb25zdCBTdWJzdHJpbmdSYW5nZSYgdmFsdWUpCit7CisgICAgbV9w
YXJhbWV0ZXJzLnNldChzdWJzdHJpbmdGb3JSYW5nZShtX2NvbnRlbnRUeXBlLCBrZXkpLCBzdWJz
dHJpbmdGb3JSYW5nZShtX2NvbnRlbnRUeXBlLCB2YWx1ZSkpOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjExOTAzNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuaApAQCAt
MCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBQYXJzZWRDb250ZW50VHlwZV9oCisjZGVmaW5lIFBhcnNlZENv
bnRlbnRUeXBlX2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKy8vIDxpbmRleCwgbGVuZ3RoPgordHlwZWRlZiBzdGQ6OnBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiBTdWJzdHJpbmdSYW5nZTsKK2Jvb2wgaXNWYWxpZENvbnRlbnRU
eXBlKGNvbnN0IFN0cmluZyYpOworCisvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIGNvbW1lbnRz
LgorY2xhc3MgUGFyc2VkQ29udGVudFR5cGUgeworcHVibGljOgorICAgIGV4cGxpY2l0IFBhcnNl
ZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIG1pbWVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQorICAgIFN0cmluZyBjaGFyc2V0KCkgY29uc3Q7CisK
KyAgICAvLyBOb3RlIHRoYXQgaW4gdGhlIGNhc2Ugb2YgbXVsdGlwbGUgdmFsdWVzIGZvciB0aGUg
c2FtZSBuYW1lLCB0aGUgbGFzdCB2YWx1ZSBpcyByZXR1cm5lZC4KKyAgICBTdHJpbmcgcGFyYW1l
dGVyVmFsdWVGb3JOYW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIHNpemVfdCBwYXJhbWV0
ZXJDb3VudCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIHRlbXBsYXRlPGNsYXNzIFQ+CisgICAg
ZnJpZW5kIGJvb2wgcGFyc2VDb250ZW50VHlwZShjb25zdCBTdHJpbmcmLCBUJik7CisgICAgdm9p
ZCBzZXRDb250ZW50VHlwZShjb25zdCBTdWJzdHJpbmdSYW5nZSYpOworICAgIHZvaWQgc2V0Q29u
dGVudFR5cGVQYXJhbWV0ZXIoY29uc3QgU3Vic3RyaW5nUmFuZ2UmLCBjb25zdCBTdWJzdHJpbmdS
YW5nZSYpOworCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBLZXlWYWx1ZVBh
aXJzOworICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOworICAgIEtleVZhbHVlUGFpcnMgbV9wYXJh
bWV0ZXJzOworICAgIFN0cmluZyBtX21pbWVUeXBlOworfTsKKworfQorCisjZW5kaWYK
</data>
<flag name="commit-queue"
          id="186580"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172365</attachid>
            <date>2012-11-05 10:59:11 -0800</date>
            <delta_ts>2012-11-19 02:25:44 -0800</delta_ts>
            <desc>Patch 6</desc>
            <filename>webcore_parsedcontenttype_6.patch</filename>
            <type>text/plain</type>
            <size>40187</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNjM2ZjY1YS4uZGUxYWQ5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE5OTAsNyArMTk5MCw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L0NyZWRlbnRpYWwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5j
cHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2VyLmNwcAogICAgIHBsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVR
dWV1ZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKQEAgLTIw
MDEsNiArMjAwMCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBWYWxpZGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcAorICAgIHBsYXRm
b3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Q
cm90ZWN0aW9uU3BhY2UuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGQ5YzljOGIuLjU5YjA4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMi0xMS0w
MiAgQWxleGFuZGVyIFNoYWxhbW92ICA8YWxleGFuZGVyLnNoYWxhbW92QGludGVsLmNvbT4KKwor
ICAgICAgICBJbXByb3ZlIENvbnRlbnRUeXBlUGFyc2VyLCBzbyB0aGF0IGl0IGNvdWxkIGJlIHVz
ZWQgdG8gdmFsaWRhdGUgbWltZSB0eXBlIGFjY29yZGluZyB0byBSRkMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDkyNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBQYXJzZWRD
b250ZW50VHlwZSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgY29udGVudHMgb2YgcGFyc2VkCisgICAg
ICAgIGNvbnRlbnQgdHlwZSBzdHJpbmcuIGlzVmFsaWRDb250ZW50VHlwZSBmdW5jdGlvbiBjb3Vs
ZCBiZSB1c2VkIHRvIGNoZWNrIGlmCisgICAgICAgIGZvcm1hdCBvZiB0aGUgY29udGVudCB0eXBl
IHN0cmluZyBpcyBhY29ycmRpbmcgdG8gUkZDIDI2MTYgc2VjdGlvbiA0LjIuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAg
ICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L01JTUVIZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUlNRUhlYWRlcjo6cGFyc2VIZWFk
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBh
cnNlci5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEVtcHR5UGFyc2VkQ29udGVu
dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlQYXJzZWRDb250ZW50VHlwZTo6c2V0Q29u
dGVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlQYXJzZWRDb250ZW50VHlwZTo6c2V0
Q29udGVudFR5cGVQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2tpcFNwYWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjppc1Rva2VuQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VRdW90ZWRTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6c3Vic3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VD
b250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkQ29udGVudFR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OlBhcnNlZENvbnRlbnRUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhcnNlZENvbnRlbnRUeXBlOjpjaGFyc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBhcnNlZENvbnRlbnRUeXBlOjpwYXJhbWV0ZXJWYWx1ZUZvck5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OnBhcmFtZXRlckNvdW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhcnNlZENvbnRlbnRUeXBlOjpzZXRDb250ZW50VHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXJzZWRDb250ZW50VHlwZTo6c2V0Q29udGVudFR5cGVQYXJhbWV0ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuaDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuaC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGFyc2VkQ29udGVudFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6Om1pbWVUeXBlKToKKwogMjAxMi0xMS0wNSAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQmFzZUNob29zZXJPbmx5
RGF0ZUFuZFRpbWVJbnB1dFR5cGUgc2hvdWxkIGltcGxlbWVudCBEYXRlVGltZUNob29zZXJDbGll
bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDNkYzJmMmUuLmQ2MWVlYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDY4NCw4ICs0Njg0LDYgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNv
dXJjZUhhbmRsZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
c291cmNlSGFuZGxlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlN0
b3JhZ2VEYXRhLmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5
cGVQYXJzZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRU
eXBlUGFyc2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llU3Rv
cmFnZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaCBcCkBAIC00
NzA5LDYgKzQ3MDcsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTUlNRUhlYWRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtpbmdDb250ZXh0LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UGFyc2VkQ29udGVudFR5cGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1BhcnNlZENvbnRlbnRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UHJveHlTZXJ2ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5
U2VydmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRl
Tm90aWZpZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGY0MGMyZTkuLjU5MjhmMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQpAQCAtMTA0Myw3ICsxMDQzLDYgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRl
bnRpYWwuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcCBc
Ci0gICAgcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBhcnNlci5jcHAgXAogICAgIHBsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
QnVpbGRlci5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAgXApA
QCAtMTA1Miw2ICsxMDUxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9I
VFRQVmFsaWRhdGlvbi5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAg
XAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwIFwKKyAgICBw
bGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2Vy
dmVyLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAgXApA
QCAtMjIyNCw3ICsyMjI0LDYgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9D
b29raWVTdG9yYWdlLmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5oIFwKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmggXAotICAgIHBsYXRmb3JtL25l
dHdvcmsvQ29udGVudFR5cGVQYXJzZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9ETlNSZXNv
bHZlUXVldWUuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuaCBcCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIFwKQEAgLTIyMzYsNiArMjIzNSw3IEBAIEhF
QURFUlMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmaW5nLmggXAogICAgIHBs
YXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RhdGVOb3RpZmllci5oIFwKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENv
bnRlbnRUeXBlLmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmggXAog
ICAgIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9xdC9RdE1JTUVUeXBlU25pZmZlci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxODIwNTQ5Li4w
OWU0YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01NTMyLDggKzU1MzIsNiBAQAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vbmV0d29yay9CbG9iU3RvcmFnZURhdGEuaCcsCi0gICAgICAgICAgICAncGxhdGZv
cm0vbmV0d29yay9Db250ZW50VHlwZVBhcnNlci5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3Jt
L25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0
d29yay9DcmVkZW50aWFsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9DcmVk
ZW50aWFsU3RvcmFnZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvRE5TLmgn
LApAQCAtNTU1Miw2ICs1NTUwLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0
ZU5vdGlmaWVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rh
dGVOb3RpZmllci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRl
bnRUeXBlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50
VHlwZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZmUxOGYyOS4uNTczOGExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTY3LDggKzk2Nyw2IEBACiAJCTMzQzBDQ0Q0MTEyQzVF
NjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNDMENDRDIxMTJDNUU2MjAwQ0UwNTdEIC8qIFNlY3Vy
ZVRleHRJbnB1dC5jcHAgKi87IH07CiAJCTMzQzBDQ0Q1MTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1
cmVUZXh0SW5wdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMzQzBDQ0QzMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCAqLzsgfTsK
IAkJMzNEMDIxMkQxMzFEQjM3QjAwNDA5MUE4IC8qIENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxM0YwMUVBMTI3MEUxMEQwMERG
QkE3MSAvKiBDb29raWVTdG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJMzcwRDZFREExMzg0NTQ1NTAwNDQxMDNFIC8qIENvbnRlbnRUeXBl
UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3MEQ2RUQ4MTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlwZVBhcnNlci5jcHAgKi87IH07
Ci0JCTM3MEQ2RURCMTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlwZVBhcnNlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcwRDZFRDkxMzg0NTQ1
NTAwNDQxMDNFIC8qIENvbnRlbnRUeXBlUGFyc2VyLmggKi87IH07CiAJCTM3MTk0MTk2MTU2NkIz
NzIwMEEyNzZEOCAvKiBXZWJDb3JlTlNDZWxsRXh0cmFzLm0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzE5NDE5NDE1NjZCMzcyMDBBMjc2RDggLyogV2Vi
Q29yZU5TQ2VsbEV4dHJhcy5tICovOyB9OwogCQkzNzE5NDE5NzE1NjZCMzcyMDBBMjc2RDggLyog
V2ViQ29yZU5TQ2VsbEV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzcxOTQxOTUxNTY2QjM3MjAwQTI3NkQ4IC8qIFdlYkNvcmVOU0NlbGxFeHRy
YXMuaCAqLzsgfTsKIAkJMzcxQTY3Q0IxMUM2QzdEQjAwMDQ3QjhCIC8qIEh5cGhlbmF0aW9uQ0Yu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxQTY3
Q0ExMUM2QzdEQjAwMDQ3QjhCIC8qIEh5cGhlbmF0aW9uQ0YuY3BwICovOyB9OwpAQCAtMTIwMyw2
ICsxMjAxLDggQEAKIAkJNDQzMTFDRDgxMkU0RTI0QjAwMEE4RDE5IC8qIERPTURvY3VtZW50UHJp
dmF0ZS5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDQzMTFDRDUxMkU0RTIyRDAwMEE4RDE5IC8qIERPTURvY3VtZW50UHJpdmF0
ZS5oICovOyB9OwogCQk0NDMxMUNEOTEyRTRFMjU3MDAwQThEMTkgLyogRE9NRG9jdW1lbnRGcmFn
bWVudFByaXZhdGUuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MzExQ0Q0MTJFNEUyMkQwMDBBOEQxOSAvKiBET01Eb2N1bWVu
dEZyYWdtZW50UHJpdmF0ZS5oICovOyB9OwogCQk0NDMxMUY4MjEyRTRFNjZDMDAwQThEMTkgLyog
RE9NRG9jdW1lbnRGcmFnbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NUU3MTE0NTBBQzVENTM0MDA1MzI3MEYgLyogRE9NRG9jdW1l
bnRGcmFnbWVudEludGVybmFsLmggKi87IH07CisJCTQ0Nzk1ODA0MTY0M0I0OUEwMDFFMEE3RiAv
KiBQYXJzZWRDb250ZW50VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDQ3OTU4MDMxNjQzQjQ3QjAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDQ3
OTU4MDUxNjQzQjRCMjAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Nzk1ODAyMTY0M0I0N0IwMDFF
MEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5jcHAgKi87IH07CiAJCTQ0OEEyOUJGMEE0NkQ5Q0Iw
MDMwNzU5RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ4QTI5QkQwQTQ2RDlDQjAwMzA3NTlGIC8qIEpT
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ0OEEyOUMwMEE0NkQ5Q0IwMDMwNzU5
RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDhBMjlCRTBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1M
T3B0aW9uc0NvbGxlY3Rpb24uY3BwICovOyB9OwogCQk0NDhBRDI3QzBBNDgxMzdBMDAyM0QxNzkg
LyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ4QUQyN0EwQTQ4MTM3OTAwMjNEMTc5IC8qIEpT
SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKQEAgLTgxMTUsOCArODExNSw2
IEBACiAJCTMzOUI1QjYyMTMxREFBMzIwMEY0OEQwMiAvKiBDb29raWVzU3RyYXRlZ3kuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29va2llc1N0cmF0ZWd5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzQzBDQ0QyMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVU
ZXh0SW5wdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjdXJl
VGV4dElucHV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzNDMENDRDMxMTJD
NUU2MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTZWN1cmVUZXh0SW5wdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMzcwRDZFRDgxMzg0NTQ1NTAwNDQxMDNFIC8qIENvbnRlbnRUeXBlUGFyc2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRUeXBlUGFyc2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzcwRDZFRDkxMzg0NTQ1NTAwNDQxMDNFIC8q
IENvbnRlbnRUeXBlUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bnRlbnRUeXBlUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MTk0MTk0
MTU2NkIzNzIwMEEyNzZEOCAvKiBXZWJDb3JlTlNDZWxsRXh0cmFzLm0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdlYkNvcmVOU0NlbGxFeHRyYXMubTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzcxOTQxOTUxNTY2QjM3MjAwQTI3NkQ4IC8qIFdlYkNvcmVOU0Nl
bGxFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZU5TQ2Vs
bEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFBNjdDQTExQzZDN0RC
MDAwNDdCOEIgLyogSHlwaGVuYXRpb25DRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBIeXBoZW5hdGlvbkNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTgzODMsNiArODM4MSw4IEBACiAJCTQ0MjlBQjA3MENCODRGODEwMDc2NDdDNSAvKiBET01U
ZXh0RXZlbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
VGV4dEV2ZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQzMTFD
RDQxMkU0RTIyRDAwMEE4RDE5IC8qIERPTURvY3VtZW50RnJhZ21lbnRQcml2YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTURvY3VtZW50RnJhZ21lbnRQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MzExQ0Q1MTJFNEUyMkQwMDBBOEQxOSAv
KiBET01Eb2N1bWVudFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NRG9jdW1lbnRQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0Nzk1
ODAyMTY0M0I0N0IwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJzZWRDb250ZW50VHlwZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0Nzk1ODAzMTY0M0I0N0IwMDFFMEE3RiAvKiBQYXJzZWRD
b250ZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZWRDb250
ZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDhBMjlCRDBBNDZEOUNC
MDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ0OEEyOUJFMEE0NkQ5Q0IwMDMwNzU5RiAvKiBKU0hUTUxPcHRpb25z
Q29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNI
VE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NDhBRDI3QTBBNDgxMzc5MDAyM0QxNzkgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3B0aW9uc0Nv
bGxlY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU2MzUs
OCArMTU2MzUsNiBAQAogCQkJCTJFQjRCQ0QwMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3Vy
Y2VIYW5kbGUuY3BwICovLAogCQkJCTJFQjRCQ0QxMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVz
b3VyY2VIYW5kbGUuaCAqLywKIAkJCQkyRURFRjFGMjEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYlN0
b3JhZ2VEYXRhLmggKi8sCi0JCQkJMzcwRDZFRDgxMzg0NTQ1NTAwNDQxMDNFIC8qIENvbnRlbnRU
eXBlUGFyc2VyLmNwcCAqLywKLQkJCQkzNzBENkVEOTEzODQ1NDU1MDA0NDEwM0UgLyogQ29udGVu
dFR5cGVQYXJzZXIuaCAqLywKIAkJCQlFMTNGMDFFQTEyNzBFMTBEMDBERkJBNzEgLyogQ29va2ll
U3RvcmFnZS5oICovLAogCQkJCTUxNEM3NjU4MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFs
LmNwcCAqLywKIAkJCQk1MTRDNzY1OTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oICov
LApAQCAtMTU2NjIsNiArMTU2NjAsOCBAQAogCQkJCTYyOEQyMTRCMTIxMzFFRDEwMDU1RENGQyAv
KiBOZXR3b3JraW5nQ29udGV4dC5oICovLAogCQkJCTFBN0ZBNjFBMEREQTNCQkUwMDI4RjhBNSAv
KiBOZXR3b3JrU3RhdGVOb3RpZmllci5jcHAgKi8sCiAJCQkJMUE3RkE2MTgwRERBM0IzQTAwMjhG
OEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmggKi8sCisJCQkJNDQ3OTU4MDIxNjQzQjQ3QjAw
MUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmNwcCAqLywKKwkJCQk0NDc5NTgwMzE2NDNCNDdC
MDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuaCAqLywKIAkJCQk1MTRDNzY1RjBDRTkyM0Ex
MDA3RUYzQ0QgLyogUHJvdGVjdGlvblNwYWNlLmNwcCAqLywKIAkJCQk1MTRDNzY2MDBDRTkyM0Ex
MDA3RUYzQ0QgLyogUHJvdGVjdGlvblNwYWNlLmggKi8sCiAJCQkJNTFBMDUyNTUxMDU4ODc0MDAw
Q0M5RTk1IC8qIFByb3RlY3Rpb25TcGFjZUhhc2guaCAqLywKQEAgLTIyNjAzLDcgKzIyNjAzLDYg
QEAKIAkJCQk5N0M0NzFEQzEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I3OTFBNjE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVu
dFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRDAxNUNBMEY0QjVDNzEwMDRB
NjYyRiAvKiBDb250ZW50VHlwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzcwRDZFREIxMzg0NTQ1
NTAwNDQxMDNFIC8qIENvbnRlbnRUeXBlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzYy
N0I4RTE0RkIzQ0VFMDAyQ0RDQTEgLyogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3RDNDQTExMTU3REY4RTkwMDg2MEE5NyAvKiBDb250ZXh0RmVhdHVy
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQjZBMEU2MEIwQkNBNUMwMEY1MDI3QSAvKiBDb250
ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTY3Myw2ICsyNTY3Miw3IEBACiAJCQkJNTA5
MzMzNTAxNjNCMEU0MzAwMDk5QTYwIC8qIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUwRDMyODU4MTYzQjMxM0YwMDE2MTExRSAvKiBWYWxpZGF0ZWRDdXN0
b21GaWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTNGRkZGOUE5MTU5RDlBNTUw
MDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ0
Nzk1ODA0MTY0M0I0OUEwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yNjE4NCw3ICsyNjE4NCw2IEBACiAJCQkJOTdDNDcxREIxMkY5MjVCRDAwODYzNTRC
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1N0I3OTFB
NTE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDFEMDE1Q0IwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTM3MEQ2RURBMTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlwZVBh
cnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzYyN0I4RDE0RkIzQ0VFMDAyQ0RDQTEgLyog
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEM0NB
MTAxNTdERjhFOTAwODYwQTk3IC8qIENvbnRleHRGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwNjVBRDRGNjBCMEMyRURBMDA1QTJCMUQgLyogQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjg3NTYsNiArMjg3NTUsNyBAQAogCQkJCTNGRkZGOUE4MTU5
RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNEZGQzAyMkIxNjQzQjcxMDAwNEUxNjM4IC8qIE5vZGVSYXJlRGF0YS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0RkZDMDIyRDE2NDNCNzI2MDA0RTE2MzggLyogRWxlbWVudFJhcmVEYXRh
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ0Nzk1ODA1MTY0M0I0QjIwMDFFMEE3RiAvKiBQYXJz
ZWRDb250ZW50VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBhcnNlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGRkYTQ1ODguLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBhcnNlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwy
MjEgKzAsMCBAQAotIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ29udGVudFR5cGVQYXJz
ZXIuaCIKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIHZvaWQg
c2tpcFNwYWNlcyhjb25zdCBTdHJpbmcmIGlucHV0LCBzaXplX3QmIHN0YXJ0SW5kZXgpCi17Ci0g
ICAgd2hpbGUgKHN0YXJ0SW5kZXggPCBpbnB1dC5sZW5ndGgoKSAmJiBpbnB1dFtzdGFydEluZGV4
XSA9PSAnICcpCi0gICAgICAgICsrc3RhcnRJbmRleDsKLX0KLQotc3RhdGljIGJvb2wgaXNUb2tl
bkNoYXJhY3RlcihjaGFyIGMpCi17Ci0gICAgcmV0dXJuIGlzQVNDSUkoYykgJiYgYyA+ICcgJyAm
JiBjICE9ICciJyAmJiBjICE9ICcoJyAmJiBjICE9ICcpJyAmJiBjICE9ICcsJyAmJiBjICE9ICcv
JyAmJiAoYyA8ICc6JyB8fCBjID4gJ0AnKSAmJiAoYyA8ICdbJyB8fCBjID4gJ10nKTsKLX0KLQot
c3RhdGljIFN0cmluZyBwYXJzZVRva2VuKGNvbnN0IFN0cmluZyYgaW5wdXQsIHNpemVfdCYgc3Rh
cnRJbmRleCkKLXsKLSAgICBpZiAoc3RhcnRJbmRleCA+PSBpbnB1dC5sZW5ndGgoKSkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwot
ICAgIHdoaWxlIChzdGFydEluZGV4IDwgaW5wdXQubGVuZ3RoKCkpIHsKLSAgICAgICAgY2hhciBj
dXJyZW50Q2hhcmFjdGVyID0gaW5wdXRbc3RhcnRJbmRleF07Ci0gICAgICAgIGlmICghaXNUb2tl
bkNoYXJhY3RlcihjdXJyZW50Q2hhcmFjdGVyKSkKLSAgICAgICAgICAgIHJldHVybiBzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGN1cnJlbnRD
aGFyYWN0ZXIpOwotICAgICAgICArK3N0YXJ0SW5kZXg7Ci0gICAgfQotICAgIHJldHVybiBzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgcGFyc2VRdW90ZWRTdHJp
bmcoY29uc3QgU3RyaW5nJiBpbnB1dCwgc2l6ZV90JiBzdGFydEluZGV4KQotewotICAgIGlmIChz
dGFydEluZGV4ID49IGlucHV0Lmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0K
LSAgICBpZiAoaW5wdXRbc3RhcnRJbmRleCsrXSAhPSAnIicgfHwgc3RhcnRJbmRleCA+PSBpbnB1
dC5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgU3RyaW5nQnVpbGRl
ciBzdHJpbmdCdWlsZGVyOwotICAgIGJvb2wgbGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IGZh
bHNlOwotICAgIGNoYXIgY3VycmVudENoYXJhY3RlcjsKLSAgICB3aGlsZSAoKGN1cnJlbnRDaGFy
YWN0ZXIgPSBpbnB1dFtzdGFydEluZGV4KytdKSAhPSAnIicgfHwgbGFzdENoYXJhY3Rlcldhc0Jh
Y2tzbGFzaCkgewotICAgICAgICBpZiAoc3RhcnRJbmRleCA+PSBpbnB1dC5sZW5ndGgoKSkKLSAg
ICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIg
PT0gJ1xcJyAmJiAhbGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCkgewotICAgICAgICAgICAgbGFz
dENoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IHRydWU7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgfQotICAgICAgICBpZiAobGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCkKLSAgICAgICAg
ICAgIGxhc3RDaGFyYWN0ZXJXYXNCYWNrc2xhc2ggPSBmYWxzZTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoY3VycmVudENoYXJhY3Rlcik7Ci0gICAgfQotICAgIHJldHVybiBzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLUNvbnRlbnRUeXBlUGFyc2VyOjpDb250ZW50VHlwZVBh
cnNlcihjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQotICAgIDogbV9jb250ZW50VHlwZShjb250
ZW50VHlwZS5zdHJpcFdoaXRlU3BhY2UoKSkKLXsKLSAgICBwYXJzZSgpOwotfQotCi1TdHJpbmcg
Q29udGVudFR5cGVQYXJzZXI6OmNoYXJzZXQoKSBjb25zdAotewotICAgIHJldHVybiBwYXJhbWV0
ZXJWYWx1ZUZvck5hbWUoImNoYXJzZXQiKTsKLX0KLQotU3RyaW5nIENvbnRlbnRUeXBlUGFyc2Vy
OjpwYXJhbWV0ZXJWYWx1ZUZvck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAotewotICAg
IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KG5hbWUpOwotfQotCi1zaXplX3QgQ29udGVudFR5cGVQ
YXJzZXI6OnBhcmFtZXRlckNvdW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXJhbWV0ZXJz
LnNpemUoKTsKLX0KLQotLy8gRnJvbSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyMDQ1
I3NlY3Rpb24tNS4xOgotLy8KLS8vIGNvbnRlbnQgOj0gIkNvbnRlbnQtVHlwZSIgIjoiIHR5cGUg
Ii8iIHN1YnR5cGUKLS8vICAgICAgICAgICAgKigiOyIgcGFyYW1ldGVyKQotLy8gICAgICAgICAg
ICA7IE1hdGNoaW5nIG9mIG1lZGlhIHR5cGUgYW5kIHN1YnR5cGUKLS8vICAgICAgICAgICAgOyBp
cyBBTFdBWVMgY2FzZS1pbnNlbnNpdGl2ZS4KLS8vCi0vLyB0eXBlIDo9IGRpc2NyZXRlLXR5cGUg
LyBjb21wb3NpdGUtdHlwZQotLy8KLS8vIGRpc2NyZXRlLXR5cGUgOj0gInRleHQiIC8gImltYWdl
IiAvICJhdWRpbyIgLyAidmlkZW8iIC8KLS8vICAgICAgICAgICAgICAgICAgImFwcGxpY2F0aW9u
IiAvIGV4dGVuc2lvbi10b2tlbgotLy8KLS8vIGNvbXBvc2l0ZS10eXBlIDo9ICJtZXNzYWdlIiAv
ICJtdWx0aXBhcnQiIC8gZXh0ZW5zaW9uLXRva2VuCi0vLwotLy8gZXh0ZW5zaW9uLXRva2VuIDo9
IGlldGYtdG9rZW4gLyB4LXRva2VuCi0vLwotLy8gaWV0Zi10b2tlbiA6PSA8QW4gZXh0ZW5zaW9u
IHRva2VuIGRlZmluZWQgYnkgYQotLy8gICAgICAgICAgICAgICAgc3RhbmRhcmRzLXRyYWNrIFJG
QyBhbmQgcmVnaXN0ZXJlZAotLy8gICAgICAgICAgICAgICAgd2l0aCBJQU5BLj4KLS8vCi0vLyB4
LXRva2VuIDo9IDxUaGUgdHdvIGNoYXJhY3RlcnMgIlgtIiBvciAieC0iIGZvbGxvd2VkLCB3aXRo
Ci0vLyAgICAgICAgICAgICBubyBpbnRlcnZlbmluZyB3aGl0ZSBzcGFjZSwgYnkgYW55IHRva2Vu
PgotLy8KLS8vIHN1YnR5cGUgOj0gZXh0ZW5zaW9uLXRva2VuIC8gaWFuYS10b2tlbgotLy8KLS8v
IGlhbmEtdG9rZW4gOj0gPEEgcHVibGljbHktZGVmaW5lZCBleHRlbnNpb24gdG9rZW4uIFRva2Vu
cwotLy8gICAgICAgICAgICAgICAgb2YgdGhpcyBmb3JtIG11c3QgYmUgcmVnaXN0ZXJlZCB3aXRo
IElBTkEKLS8vICAgICAgICAgICAgICAgIGFzIHNwZWNpZmllZCBpbiBSRkMgMjA0OC4+Ci0vLwot
Ly8gcGFyYW1ldGVyIDo9IGF0dHJpYnV0ZSAiPSIgdmFsdWUKLS8vCi0vLyBhdHRyaWJ1dGUgOj0g
dG9rZW4KLS8vICAgICAgICAgICAgICA7IE1hdGNoaW5nIG9mIGF0dHJpYnV0ZXMKLS8vICAgICAg
ICAgICAgICA7IGlzIEFMV0FZUyBjYXNlLWluc2Vuc2l0aXZlLgotLy8KLS8vIHZhbHVlIDo9IHRv
a2VuIC8gcXVvdGVkLXN0cmluZwotLy8KLS8vIHRva2VuIDo9IDEqPGFueSAoVVMtQVNDSUkpIENI
QVIgZXhjZXB0IFNQQUNFLCBDVExzLAotLy8gICAgICAgICAgICAgb3IgdHNwZWNpYWxzPgotLy8K
LS8vIHRzcGVjaWFscyA6PSAgIigiIC8gIikiIC8gIjwiIC8gIj4iIC8gIkAiIC8KLS8vICAgICAg
ICAgICAgICAgIiwiIC8gIjsiIC8gIjoiIC8gIlwiIC8gPCI+Ci0vLyAgICAgICAgICAgICAgICIv
IiAvICJbIiAvICJdIiAvICI/IiAvICI9IgotLy8gICAgICAgICAgICAgICA7IE11c3QgYmUgaW4g
cXVvdGVkLXN0cmluZywKLS8vICAgICAgICAgICAgICAgOyB0byB1c2Ugd2l0aGluIHBhcmFtZXRl
ciB2YWx1ZXMKLQotdm9pZCBDb250ZW50VHlwZVBhcnNlcjo6cGFyc2UoKQotewotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBjb250ZW50VHlwZVBhcmFtZXRlck5hbWUsIChB
U0NJSUxpdGVyYWwoIkNvbnRlbnQtVHlwZSIpKSk7Ci0KLSAgICBpZiAoIW1fY29udGVudFR5cGUu
c3RhcnRzV2l0aChjb250ZW50VHlwZVBhcmFtZXRlck5hbWUpKSB7Ci0gICAgICAgIExPR19FUlJP
UigiSW52YWxpZCBDb250ZW50LVR5cGUgc3RyaW5nICclcyciLCBtX2NvbnRlbnRUeXBlLmFzY2lp
KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzaXplX3QgY29udGVudFR5
cGVMZW5ndGggPSBtX2NvbnRlbnRUeXBlLmxlbmd0aCgpOwotICAgIHNpemVfdCBpbmRleCA9IGNv
bnRlbnRUeXBlUGFyYW1ldGVyTmFtZS5sZW5ndGgoKTsKLSAgICBza2lwU3BhY2VzKG1fY29udGVu
dFR5cGUsIGluZGV4KTsKLSAgICBpZiAoaW5kZXggPj0gY29udGVudFR5cGVMZW5ndGggfHwgbV9j
b250ZW50VHlwZVtpbmRleF0gIT0gJzonIHx8ICsraW5kZXggPj0gY29udGVudFR5cGVMZW5ndGgp
ICB7Ci0gICAgICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUgc3RyaW5nICclcyci
LCBtX2NvbnRlbnRUeXBlLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIC8vIFRoZXJlIHNob3VsZCBub3QgYmUgYW55IHF1b3RlZCBzdHJpbmdzIHVudGlsIHdl
IHJlYWNoIHRoZSBwYXJhbWV0ZXJzLgotICAgIHNpemVfdCBzZW1pQ29sb25JbmRleCA9IG1fY29u
dGVudFR5cGUuZmluZCgnOycsIGluZGV4KTsKLSAgICBpZiAoc2VtaUNvbG9uSW5kZXggPT0gbm90
Rm91bmQpIHsKLSAgICAgICAgbV9taW1lVHlwZSA9IG1fY29udGVudFR5cGUuc3Vic3RyaW5nKGlu
ZGV4KS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1f
bWltZVR5cGUgPSBtX2NvbnRlbnRUeXBlLnN1YnN0cmluZyhpbmRleCwgc2VtaUNvbG9uSW5kZXgg
LSBpbmRleCkuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgaW5kZXggPSBzZW1pQ29sb25JbmRleCAr
IDE7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgc2tpcFNwYWNlcyhtX2NvbnRlbnRUeXBl
LCBpbmRleCk7Ci0gICAgICAgIFN0cmluZyBrZXkgPSBwYXJzZVRva2VuKG1fY29udGVudFR5cGUs
IGluZGV4KTsKLSAgICAgICAgaWYgKGtleS5pc0VtcHR5KCkgfHwgaW5kZXggPj0gY29udGVudFR5
cGVMZW5ndGgpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUg
cGFyYW1ldGVyIG5hbWUuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgLy8gU2hvdWxkIHdlIHRvbGVyYXRlIHNwYWNlcyBoZXJlPwotICAgICAgICBpZiAobV9jb250
ZW50VHlwZVtpbmRleCsrXSAhPSAnPScgfHwgaW5kZXggPj0gY29udGVudFR5cGVMZW5ndGgpIHsK
LSAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUgbWFsZm9ybWVkIHBh
cmFtZXRlci4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IFNob3VsZCB3ZSB0b2xlcmF0ZSBzcGFjZXMgaGVyZT8KLSAgICAgICAgU3RyaW5nIHZhbHVlOwot
ICAgICAgICBpZiAobV9jb250ZW50VHlwZVtpbmRleF0gPT0gJyInKQotICAgICAgICAgICAgdmFs
dWUgPSBwYXJzZVF1b3RlZFN0cmluZyhtX2NvbnRlbnRUeXBlLCBpbmRleCk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHZhbHVlID0gcGFyc2VUb2tlbihtX2NvbnRlbnRUeXBlLCBpbmRleCk7
Ci0KLSAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1Io
IkludmFsaWQgQ29udGVudC1UeXBlLCBpbnZhbGlkIHBhcmFtZXRlciB2YWx1ZS4iKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFNob3VsZCB3ZSB0b2xlcmF0
ZSBzcGFjZXMgaGVyZT8KLSAgICAgICAgaWYgKGluZGV4IDwgY29udGVudFR5cGVMZW5ndGggJiYg
bV9jb250ZW50VHlwZVtpbmRleCsrXSAhPSAnOycpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigi
SW52YWxpZCBDb250ZW50LVR5cGUsIGludmFsaWQgY2hhcmFjdGVyIGF0IHRoZSBlbmQgb2Yga2V5
L3ZhbHVlIHBhcmFtZXRlci4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIG1fcGFyYW1ldGVycy5zZXQoa2V5LCB2YWx1ZSk7Ci0KLSAgICAgICAgaWYgKGluZGV4
ID49IGNvbnRlbnRUeXBlTGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlw
ZVBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBh
cnNlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjU3YjAxLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQYXJzZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENvbnRlbnRUeXBlUGFyc2VyX2gK
LSNkZWZpbmUgQ29udGVudFR5cGVQYXJzZXJfaAotCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gRklYTUU6IGFkZCBzdXBwb3J0
IGZvciBjb21tZW50cy4KLWNsYXNzIENvbnRlbnRUeXBlUGFyc2VyIHsKLXB1YmxpYzoKLSAgICBl
eHBsaWNpdCBDb250ZW50VHlwZVBhcnNlcihjb25zdCBTdHJpbmcmKTsKLQotICAgIFN0cmluZyBt
aW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KLSAgICBTdHJpbmcgY2hhcnNl
dCgpIGNvbnN0OwotCi0gICAgLy8gTm90ZSB0aGF0IGluIHRoZSBjYXNlIG9mIG11bHRpcGxlIHZh
bHVlcyBmb3IgdGhlIHNhbWUgbmFtZSwgdGhlIGxhc3QgdmFsdWUgaXMgcmV0dXJuZWQuCi0gICAg
U3RyaW5nIHBhcmFtZXRlclZhbHVlRm9yTmFtZShjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICBz
aXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICB2b2lkIHBhcnNl
KCk7Ci0KLSAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKLQotICAgIHR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gS2V5VmFsdWVQYWlyczsKLSAgICBLZXlWYWx1ZVBhaXJzIG1fcGFyYW1l
dGVyczsKLSAgICBTdHJpbmcgbV9taW1lVHlwZTsKLX07Ci0KLX0KLQotI2VuZGlmCi0KLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKaW5kZXggZjRl
M2ViZi4uMDQ4YWJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9NSU1FSGVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiTUlNRUhlYWRlci5oIgogCi0jaW5jbHVkZSAiQ29udGVudFR5cGVQYXJzZXIuaCIKKyNp
bmNsdWRlICJQYXJzZWRDb250ZW50VHlwZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CkBAIC04NSwxNCArODUsMTMgQEAgUGFzc1JlZlB0cjxNSU1FSGVhZGVyPiBNSU1F
SGVhZGVyOjpwYXJzZUhlYWRlcihTaGFyZWRCdWZmZXJDaHVua1JlYWRlciogYnVmZmVyKQogICAg
IEtleVZhbHVlTWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVy
KTsKICAgICBLZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtl
eVZhbHVlUGFpcnMuZmluZCgiY29udGVudC10eXBlIik7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJz
SXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkgewotICAgICAgICAvLyBGSVhNRTogbWFr
ZSBDb250ZW50VHlwZVBhcnNlciBtb3JlIGZsZXhpYmxlIHNvIHdlIGRvbid0IGhhdmUgdG8gc3lu
dGhlc2l6ZSB0aGUgIkNvbnRlbnQtVHlwZToiLgotICAgICAgICBDb250ZW50VHlwZVBhcnNlciBj
b250ZW50VHlwZVBhcnNlcihtYWtlU3RyaW5nKCJDb250ZW50LVR5cGU6IiwgbWltZVBhcmFtZXRl
cnNJdGVyYXRvci0+dmFsdWUpKTsKLSAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlUGFyc2VyLm1pbWVUeXBlKCk7CisgICAgICAgIFBhcnNlZENvbnRlbnRUeXBl
IHBhcnNlZENvbnRlbnRUeXBlKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3ItPnZhbHVlKTsKKyAgICAg
ICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLm1pbWVUeXBl
KCk7CiAgICAgICAgIGlmICghbWltZUhlYWRlci0+aXNNdWx0aXBhcnQoKSkKLSAgICAgICAgICAg
IG1pbWVIZWFkZXItPm1fY2hhcnNldCA9IGNvbnRlbnRUeXBlUGFyc2VyLmNoYXJzZXQoKS5zdHJp
cFdoaXRlU3BhY2UoKTsKKyAgICAgICAgICAgIG1pbWVIZWFkZXItPm1fY2hhcnNldCA9IHBhcnNl
ZENvbnRlbnRUeXBlLmNoYXJzZXQoKS5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBtaW1lSGVhZGVyLT5tX211bHRpcGFydFR5cGUgPSBjb250ZW50VHlwZVBh
cnNlci5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiKTsKLSAgICAgICAgICAgIG1pbWVIZWFk
ZXItPm1fZW5kT2ZQYXJ0Qm91bmRhcnkgPSBjb250ZW50VHlwZVBhcnNlci5wYXJhbWV0ZXJWYWx1
ZUZvck5hbWUoImJvdW5kYXJ5Iik7CisgICAgICAgICAgICBtaW1lSGVhZGVyLT5tX211bHRpcGFy
dFR5cGUgPSBwYXJzZWRDb250ZW50VHlwZS5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiKTsK
KyAgICAgICAgICAgIG1pbWVIZWFkZXItPm1fZW5kT2ZQYXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250
ZW50VHlwZS5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoImJvdW5kYXJ5Iik7CiAgICAgICAgICAgICBp
ZiAobWltZUhlYWRlci0+bV9lbmRPZlBhcnRCb3VuZGFyeS5pc051bGwoKSkgewogICAgICAgICAg
ICAgICAgIExPR19FUlJPUigiTm8gYm91bmRhcnkgZm91bmQgaW4gbXVsdGlwYXJ0IE1JTUUgaGVh
ZGVyLiIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTQyMzgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAKQEAgLTAsMCAr
MSwyNTQgQEAKKyAvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRUeXBl
LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVtcHR5UGFy
c2VkQ29udGVudFR5cGUgeworcHVibGljOgorICAgIHZvaWQgc2V0Q29udGVudFR5cGUoY29uc3Qg
U3Vic3RyaW5nUmFuZ2UmKSBjb25zdCB7IH0KKyAgICB2b2lkIHNldENvbnRlbnRUeXBlUGFyYW1l
dGVyKGNvbnN0IFN1YnN0cmluZ1JhbmdlJiwgY29uc3QgU3Vic3RyaW5nUmFuZ2UmKSBjb25zdCB7
IH0KK307CisKK3N0YXRpYyB2b2lkIHNraXBTcGFjZXMoY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5z
aWduZWQmIHN0YXJ0SW5kZXgpCit7CisgICAgd2hpbGUgKHN0YXJ0SW5kZXggPCBpbnB1dC5sZW5n
dGgoKSAmJiBpbnB1dFtzdGFydEluZGV4XSA9PSAnICcpCisgICAgICAgICsrc3RhcnRJbmRleDsK
K30KKworc3RhdGljIGJvb2wgaXNUb2tlbkNoYXJhY3RlcihjaGFyIGMpCit7CisgICAgcmV0dXJu
IGlzQVNDSUkoYykgJiYgYyA+ICcgJyAmJiBjICE9ICciJyAmJiBjICE9ICcoJyAmJiBjICE9ICcp
JyAmJiBjICE9ICcsJyAmJiBjICE9ICcvJyAmJiAoYyA8ICc6JyB8fCBjID4gJ0AnKSAmJiAoYyA8
ICdbJyB8fCBjID4gJ10nKTsKK30KKworc3RhdGljIFN1YnN0cmluZ1JhbmdlIHBhcnNlVG9rZW4o
Y29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQmIHN0YXJ0SW5kZXgpCit7CisgICAgY29uc3Qg
dW5zaWduZWQgaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKKyAgICBjb25zdCB1bnNpZ25l
ZCBpbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgdW5zaWduZWQmIHRva2VuTGVuZ3RoID0gc3RhcnRJ
bmRleDsKKworICAgIGlmICh0b2tlbkxlbmd0aCA+PSBpbnB1dExlbmd0aCkKKyAgICAgICAgcmV0
dXJuIFN1YnN0cmluZ1JhbmdlKCk7CisKKyAgICB3aGlsZSAodG9rZW5MZW5ndGggPCBpbnB1dExl
bmd0aCkgeworICAgICAgICBpZiAoIWlzVG9rZW5DaGFyYWN0ZXIoaW5wdXRbdG9rZW5MZW5ndGhd
KSkKKyAgICAgICAgICAgIHJldHVybiBTdWJzdHJpbmdSYW5nZShpbmRleCwgdG9rZW5MZW5ndGgg
LSBpbmRleCk7CisgICAgICAgICsrdG9rZW5MZW5ndGg7CisgICAgfQorCisgICAgcmV0dXJuIFN1
YnN0cmluZ1JhbmdlKGluZGV4LCB0b2tlbkxlbmd0aCAtIGluZGV4KTsKK30KKworc3RhdGljIFN1
YnN0cmluZ1JhbmdlIHBhcnNlUXVvdGVkU3RyaW5nKGNvbnN0IFN0cmluZyYgaW5wdXQsIHVuc2ln
bmVkJiBzdGFydEluZGV4KQoreworICAgIGNvbnN0IHVuc2lnbmVkIGlucHV0TGVuZ3RoID0gaW5w
dXQubGVuZ3RoKCk7CisgICAgY29uc3QgdW5zaWduZWQgaW5kZXggPSBzdGFydEluZGV4ICsgMTsK
KyAgICB1bnNpZ25lZCYgc3RyaW5nTGVuZ3RoID0gc3RhcnRJbmRleDsKKworICAgIGlmIChzdHJp
bmdMZW5ndGggPj0gaW5wdXRMZW5ndGgpCisgICAgICAgIHJldHVybiBTdWJzdHJpbmdSYW5nZSgp
OworCisgICAgaWYgKGlucHV0W3N0cmluZ0xlbmd0aCsrXSAhPSAnIicgfHwgc3RyaW5nTGVuZ3Ro
ID49IGlucHV0TGVuZ3RoKQorICAgICAgICByZXR1cm4gU3Vic3RyaW5nUmFuZ2UoKTsKKworICAg
IGJvb2wgbGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IGZhbHNlOworICAgIGNoYXIgY3VycmVu
dENoYXJhY3RlcjsKKyAgICB3aGlsZSAoKGN1cnJlbnRDaGFyYWN0ZXIgPSBpbnB1dFtzdHJpbmdM
ZW5ndGgrK10pICE9ICciJyB8fCBsYXN0Q2hhcmFjdGVyV2FzQmFja3NsYXNoKSB7CisgICAgICAg
IGlmIChzdHJpbmdMZW5ndGggPj0gaW5wdXRMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gU3Vi
c3RyaW5nUmFuZ2UoKTsKKyAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ1xcJyAmJiAh
bGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCkgeworICAgICAgICAgICAgbGFzdENoYXJhY3Rlcldh
c0JhY2tzbGFzaCA9IHRydWU7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAobGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCkKKyAgICAgICAgICAgIGxhc3RDaGFy
YWN0ZXJXYXNCYWNrc2xhc2ggPSBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIFN1YnN0cmluZ1Jh
bmdlKGluZGV4LCBzdHJpbmdMZW5ndGggLSBpbmRleCAtIDEpOworfQorCitzdGF0aWMgU3RyaW5n
IHN1YnN0cmluZ0ZvclJhbmdlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBTdWJzdHJpbmdS
YW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIHN0cmluZy5zdWJzdHJpbmcocmFuZ2UuZmlyc3Qs
IHJhbmdlLnNlY29uZCk7Cit9CisKKy8vIEZyb20gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwv
cmZjMjA0NSNzZWN0aW9uLTUuMToKKy8vCisvLyBjb250ZW50IDo9ICJDb250ZW50LVR5cGUiICI6
IiB0eXBlICIvIiBzdWJ0eXBlCisvLyAgICAgICAgICAgICooIjsiIHBhcmFtZXRlcikKKy8vICAg
ICAgICAgICAgOyBNYXRjaGluZyBvZiBtZWRpYSB0eXBlIGFuZCBzdWJ0eXBlCisvLyAgICAgICAg
ICAgIDsgaXMgQUxXQVlTIGNhc2UtaW5zZW5zaXRpdmUuCisvLworLy8gdHlwZSA6PSBkaXNjcmV0
ZS10eXBlIC8gY29tcG9zaXRlLXR5cGUKKy8vCisvLyBkaXNjcmV0ZS10eXBlIDo9ICJ0ZXh0IiAv
ICJpbWFnZSIgLyAiYXVkaW8iIC8gInZpZGVvIiAvCisvLyAgICAgICAgICAgICAgICAgICJhcHBs
aWNhdGlvbiIgLyBleHRlbnNpb24tdG9rZW4KKy8vCisvLyBjb21wb3NpdGUtdHlwZSA6PSAibWVz
c2FnZSIgLyAibXVsdGlwYXJ0IiAvIGV4dGVuc2lvbi10b2tlbgorLy8KKy8vIGV4dGVuc2lvbi10
b2tlbiA6PSBpZXRmLXRva2VuIC8geC10b2tlbgorLy8KKy8vIGlldGYtdG9rZW4gOj0gPEFuIGV4
dGVuc2lvbiB0b2tlbiBkZWZpbmVkIGJ5IGEKKy8vICAgICAgICAgICAgICAgIHN0YW5kYXJkcy10
cmFjayBSRkMgYW5kIHJlZ2lzdGVyZWQKKy8vICAgICAgICAgICAgICAgIHdpdGggSUFOQS4+Cisv
LworLy8geC10b2tlbiA6PSA8VGhlIHR3byBjaGFyYWN0ZXJzICJYLSIgb3IgIngtIiBmb2xsb3dl
ZCwgd2l0aAorLy8gICAgICAgICAgICAgbm8gaW50ZXJ2ZW5pbmcgd2hpdGUgc3BhY2UsIGJ5IGFu
eSB0b2tlbj4KKy8vCisvLyBzdWJ0eXBlIDo9IGV4dGVuc2lvbi10b2tlbiAvIGlhbmEtdG9rZW4K
Ky8vCisvLyBpYW5hLXRva2VuIDo9IDxBIHB1YmxpY2x5LWRlZmluZWQgZXh0ZW5zaW9uIHRva2Vu
LiBUb2tlbnMKKy8vICAgICAgICAgICAgICAgIG9mIHRoaXMgZm9ybSBtdXN0IGJlIHJlZ2lzdGVy
ZWQgd2l0aCBJQU5BCisvLyAgICAgICAgICAgICAgICBhcyBzcGVjaWZpZWQgaW4gUkZDIDIwNDgu
PgorLy8KKy8vIHBhcmFtZXRlciA6PSBhdHRyaWJ1dGUgIj0iIHZhbHVlCisvLworLy8gYXR0cmli
dXRlIDo9IHRva2VuCisvLyAgICAgICAgICAgICAgOyBNYXRjaGluZyBvZiBhdHRyaWJ1dGVzCisv
LyAgICAgICAgICAgICAgOyBpcyBBTFdBWVMgY2FzZS1pbnNlbnNpdGl2ZS4KKy8vCisvLyB2YWx1
ZSA6PSB0b2tlbiAvIHF1b3RlZC1zdHJpbmcKKy8vCisvLyB0b2tlbiA6PSAxKjxhbnkgKFVTLUFT
Q0lJKSBDSEFSIGV4Y2VwdCBTUEFDRSwgQ1RMcywKKy8vICAgICAgICAgICAgIG9yIHRzcGVjaWFs
cz4KKy8vCisvLyB0c3BlY2lhbHMgOj0gICIoIiAvICIpIiAvICI8IiAvICI+IiAvICJAIiAvCisv
LyAgICAgICAgICAgICAgICIsIiAvICI7IiAvICI6IiAvICJcIiAvIDwiPgorLy8gICAgICAgICAg
ICAgICAiLyIgLyAiWyIgLyAiXSIgLyAiPyIgLyAiPSIKKy8vICAgICAgICAgICAgICAgOyBNdXN0
IGJlIGluIHF1b3RlZC1zdHJpbmcsCisvLyAgICAgICAgICAgICAgIDsgdG8gdXNlIHdpdGhpbiBw
YXJhbWV0ZXIgdmFsdWVzCisKK3RlbXBsYXRlIDxjbGFzcyBUPgorYm9vbCBwYXJzZUNvbnRlbnRU
eXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFQmIHBhcnNlclR5cGUpCit7CisgICAgdW5z
aWduZWQgaW5kZXggPSAwOworICAgIHVuc2lnbmVkIGNvbnRlbnRUeXBlTGVuZ3RoID0gY29udGVu
dFR5cGUubGVuZ3RoKCk7CisgICAgc2tpcFNwYWNlcyhjb250ZW50VHlwZSwgaW5kZXgpOworICAg
IGlmIChpbmRleCA+PSBjb250ZW50VHlwZUxlbmd0aCkgIHsKKyAgICAgICAgTE9HX0VSUk9SKCJJ
bnZhbGlkIENvbnRlbnQtVHlwZSBzdHJpbmcgJyVzJyIsIGNvbnRlbnRUeXBlLmFzY2lpKCkuZGF0
YSgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFRoZXJlIHNob3Vs
ZCBub3QgYmUgYW55IHF1b3RlZCBzdHJpbmdzIHVudGlsIHdlIHJlYWNoIHRoZSBwYXJhbWV0ZXJz
LgorICAgIHNpemVfdCBzZW1pQ29sb25JbmRleCA9IGNvbnRlbnRUeXBlLmZpbmQoJzsnLCBpbmRl
eCk7CisgICAgaWYgKHNlbWlDb2xvbkluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIHBhcnNl
clR5cGUuc2V0Q29udGVudFR5cGUoU3Vic3RyaW5nUmFuZ2UoaW5kZXgsIGNvbnRlbnRUeXBlTGVu
Z3RoIC0gaW5kZXgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcGFyc2Vy
VHlwZS5zZXRDb250ZW50VHlwZShTdWJzdHJpbmdSYW5nZShpbmRleCwgc2VtaUNvbG9uSW5kZXgg
LSBpbmRleCkpOworICAgIGluZGV4ID0gc2VtaUNvbG9uSW5kZXggKyAxOworICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgIHNraXBTcGFjZXMoY29udGVudFR5cGUsIGluZGV4KTsKKyAgICAgICAg
U3Vic3RyaW5nUmFuZ2Uga2V5UmFuZ2UgPSBwYXJzZVRva2VuKGNvbnRlbnRUeXBlLCBpbmRleCk7
CisgICAgICAgIGlmICgha2V5UmFuZ2Uuc2Vjb25kIHx8IGluZGV4ID49IGNvbnRlbnRUeXBlTGVu
Z3RoKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgQ29udGVudC1UeXBlIHBhcmFt
ZXRlciBuYW1lLiIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gU2hvdWxkIHdlIHRvbGVyYXRlIHNwYWNlcyBoZXJlPworICAgICAgICBpZiAoY29u
dGVudFR5cGVbaW5kZXgrK10gIT0gJz0nIHx8IGluZGV4ID49IGNvbnRlbnRUeXBlTGVuZ3RoKSB7
CisgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgQ29udGVudC1UeXBlIG1hbGZvcm1lZCBw
YXJhbWV0ZXIuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBTaG91bGQgd2UgdG9sZXJhdGUgc3BhY2VzIGhlcmU/CisgICAgICAgIFN0cmluZyB2
YWx1ZTsKKyAgICAgICAgU3Vic3RyaW5nUmFuZ2UgdmFsdWVSYW5nZTsKKyAgICAgICAgaWYgKGNv
bnRlbnRUeXBlW2luZGV4XSA9PSAnIicpCisgICAgICAgICAgICB2YWx1ZVJhbmdlID0gcGFyc2VR
dW90ZWRTdHJpbmcoY29udGVudFR5cGUsIGluZGV4KTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgdmFsdWVSYW5nZSA9IHBhcnNlVG9rZW4oY29udGVudFR5cGUsIGluZGV4KTsKKworICAgICAg
ICBpZiAoIXZhbHVlUmFuZ2Uuc2Vjb25kKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIkludmFs
aWQgQ29udGVudC1UeXBlLCBpbnZhbGlkIHBhcmFtZXRlciB2YWx1ZS4iKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNob3VsZCB3ZSB0b2xlcmF0
ZSBzcGFjZXMgaGVyZT8KKyAgICAgICAgaWYgKGluZGV4IDwgY29udGVudFR5cGVMZW5ndGggJiYg
Y29udGVudFR5cGVbaW5kZXgrK10gIT0gJzsnKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIklu
dmFsaWQgQ29udGVudC1UeXBlLCBpbnZhbGlkIGNoYXJhY3RlciBhdCB0aGUgZW5kIG9mIGtleS92
YWx1ZSBwYXJhbWV0ZXIuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KworICAgICAgICBwYXJzZXJUeXBlLnNldENvbnRlbnRUeXBlUGFyYW1ldGVyKGtleVJhbmdlLCB2
YWx1ZVJhbmdlKTsKKworICAgICAgICBpZiAoaW5kZXggPj0gY29udGVudFR5cGVMZW5ndGgpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBpc1ZhbGlkQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3sKKyAg
ICBpZiAoY29udGVudFR5cGUuY29udGFpbnMoJ1xyJykgfHwgY29udGVudFR5cGUuY29udGFpbnMo
J1xuJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEVtcHR5UGFyc2VkQ29udGVudFR5
cGUgcGFyc2VkQ29udGVudFR5cGUgPSBFbXB0eVBhcnNlZENvbnRlbnRUeXBlKCk7CisgICAgcmV0
dXJuIHBhcnNlQ29udGVudFR5cGU8RW1wdHlQYXJzZWRDb250ZW50VHlwZT4oY29udGVudFR5cGUs
IHBhcnNlZENvbnRlbnRUeXBlKTsKK30KKworUGFyc2VkQ29udGVudFR5cGU6OlBhcnNlZENvbnRl
bnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCisgICAgOiBtX2NvbnRlbnRUeXBlKGNv
bnRlbnRUeXBlLnN0cmlwV2hpdGVTcGFjZSgpKQoreworICAgIHBhcnNlQ29udGVudFR5cGU8UGFy
c2VkQ29udGVudFR5cGU+KG1fY29udGVudFR5cGUsICp0aGlzKTsKK30KKworU3RyaW5nIFBhcnNl
ZENvbnRlbnRUeXBlOjpjaGFyc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGFyYW1ldGVyVmFs
dWVGb3JOYW1lKCJjaGFyc2V0Iik7Cit9CisKK1N0cmluZyBQYXJzZWRDb250ZW50VHlwZTo6cGFy
YW1ldGVyVmFsdWVGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wYXJhbWV0ZXJzLmdldChuYW1lKTsKK30KKworc2l6ZV90IFBhcnNlZENvbnRlbnRUeXBl
OjpwYXJhbWV0ZXJDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFyYW1ldGVycy5zaXpl
KCk7Cit9CisKK3ZvaWQgUGFyc2VkQ29udGVudFR5cGU6OnNldENvbnRlbnRUeXBlKGNvbnN0IFN1
YnN0cmluZ1JhbmdlJiBjb250ZW50UmFuZ2UpCit7CisgICAgbV9taW1lVHlwZSA9IHN1YnN0cmlu
Z0ZvclJhbmdlKG1fY29udGVudFR5cGUsIGNvbnRlbnRSYW5nZSkuc3RyaXBXaGl0ZVNwYWNlKCk7
Cit9CisKK3ZvaWQgUGFyc2VkQ29udGVudFR5cGU6OnNldENvbnRlbnRUeXBlUGFyYW1ldGVyKGNv
bnN0IFN1YnN0cmluZ1JhbmdlJiBrZXksIGNvbnN0IFN1YnN0cmluZ1JhbmdlJiB2YWx1ZSkKK3sK
KyAgICBtX3BhcmFtZXRlcnMuc2V0KHN1YnN0cmluZ0ZvclJhbmdlKG1fY29udGVudFR5cGUsIGtl
eSksIHN1YnN0cmluZ0ZvclJhbmdlKG1fY29udGVudFR5cGUsIHZhbHVlKSk7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTE5MDM1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlw
ZS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBhcnNlZENvbnRlbnRUeXBlX2gKKyNkZWZpbmUg
UGFyc2VkQ29udGVudFR5cGVfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gPGluZGV4LCBsZW5ndGg+Cit0eXBlZGVmIHN0
ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IFN1YnN0cmluZ1JhbmdlOworYm9vbCBpc1ZhbGlk
Q29udGVudFR5cGUoY29uc3QgU3RyaW5nJik7CisKKy8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3Ig
Y29tbWVudHMuCitjbGFzcyBQYXJzZWRDb250ZW50VHlwZSB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgUGFyc2VkQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgbWltZVR5
cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9CisgICAgU3RyaW5nIGNoYXJzZXQoKSBj
b25zdDsKKworICAgIC8vIE5vdGUgdGhhdCBpbiB0aGUgY2FzZSBvZiBtdWx0aXBsZSB2YWx1ZXMg
Zm9yIHRoZSBzYW1lIG5hbWUsIHRoZSBsYXN0IHZhbHVlIGlzIHJldHVybmVkLgorICAgIFN0cmlu
ZyBwYXJhbWV0ZXJWYWx1ZUZvck5hbWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgc2l6ZV90
IHBhcmFtZXRlckNvdW50KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8Y2xhc3Mg
VD4KKyAgICBmcmllbmQgYm9vbCBwYXJzZUNvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYsIFQmKTsK
KyAgICB2b2lkIHNldENvbnRlbnRUeXBlKGNvbnN0IFN1YnN0cmluZ1JhbmdlJik7CisgICAgdm9p
ZCBzZXRDb250ZW50VHlwZVBhcmFtZXRlcihjb25zdCBTdWJzdHJpbmdSYW5nZSYsIGNvbnN0IFN1
YnN0cmluZ1JhbmdlJik7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEtl
eVZhbHVlUGFpcnM7CisgICAgU3RyaW5nIG1fY29udGVudFR5cGU7CisgICAgS2V5VmFsdWVQYWly
cyBtX3BhcmFtZXRlcnM7CisgICAgU3RyaW5nIG1fbWltZVR5cGU7Cit9OworCit9CisKKyNlbmRp
Zgo=
</data>
<flag name="review"
          id="186645"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="186646"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174924</attachid>
            <date>2012-11-19 02:25:44 -0800</date>
            <delta_ts>2012-11-19 04:27:23 -0800</delta_ts>
            <desc>Patch 7</desc>
            <filename>webcore_parsedcontenttype_7.patch</filename>
            <type>text/plain</type>
            <size>40436</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzY1ZjM4Zi4uNzFkZTYzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE5OTksNyArMTk5OSw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L0NyZWRlbnRpYWwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5j
cHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2VyLmNwcAogICAgIHBsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVR
dWV1ZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKQEAgLTIw
MTAsNiArMjAwOSw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBWYWxpZGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcAorICAgIHBsYXRm
b3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Q
cm90ZWN0aW9uU3BhY2UuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDliYWY1OWIuLjJjODA3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMi0xMS0x
OSAgQWxleGFuZGVyIFNoYWxhbW92ICA8YWxleGFuZGVyLnNoYWxhbW92QGludGVsLmNvbT4KKwor
ICAgICAgICBJbXByb3ZlIENvbnRlbnRUeXBlUGFyc2VyLCBzbyB0aGF0IGl0IGNvdWxkIGJlIHVz
ZWQgdG8gdmFsaWRhdGUgbWltZSB0eXBlIGFjY29yZGluZyB0byBSRkMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDkyNworCisgICAgICAgIFJldmll
d2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIFBh
cnNlZENvbnRlbnRUeXBlIGNsYXNzIHRoYXQgcmVwcmVzZW50cyBjb250ZW50cyBvZiBwYXJzZWQK
KyAgICAgICAgY29udGVudCB0eXBlIHN0cmluZy4gaXNWYWxpZENvbnRlbnRUeXBlIGZ1bmN0aW9u
IGNvdWxkIGJlIHVzZWQgdG8gY2hlY2sgaWYKKyAgICAgICAgZm9ybWF0IG9mIHRoZSBjb250ZW50
IHR5cGUgc3RyaW5nIGlzIGFjb3JyZGluZyB0byBSRkMgMjYxNiBzZWN0aW9uIDQuMi4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvTUlNRUhlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSU1FSGVhZGVyOjpwYXJz
ZUhlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5j
cHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRU
eXBlUGFyc2VyLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRW1wdHlQYXJzZWRD
b250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVBhcnNlZENvbnRlbnRUeXBlOjpz
ZXRDb250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVBhcnNlZENvbnRlbnRUeXBl
OjpzZXRDb250ZW50VHlwZVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpza2lwU3BhY2Vz
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzVG9rZW5DaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVF1b3RlZFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpzdWJzdHJpbmdGb3JSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZUNvbnRlbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRDb250ZW50VHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRDb250ZW50VHlwZTo6UGFyc2VkQ29udGVudFR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OmNoYXJzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OnBhcmFtZXRlclZhbHVlRm9yTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXJzZWRDb250ZW50VHlwZTo6cGFyYW1ldGVyQ291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OnNldENvbnRlbnRUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhcnNlZENvbnRlbnRUeXBlOjpzZXRDb250ZW50VHlwZVBhcmFtZXRlcik6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBhcnNlci5o
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQYXJzZWRDb250ZW50VHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJzZWRDb250ZW50VHlwZTo6bWltZVR5cGUpOgorCiAyMDEyLTExLTE4
ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICB3ZWJh
dWRpbzogY2xlYW4tdXAuIFJlcGxhY2UgQXVkaW9Db250ZXh0OjptX2RvY3VtZW50IG1lbWJlciB3
aXRoIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAwN2EyMzhhLi40NDdhOWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTU2NTksOCArNTY1OSw2IEBAIHdlYmNvcmVf
cGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVzb3VyY2VIYW5kbGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZXNvdXJjZUhhbmRsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JTdG9yYWdlRGF0YS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nv
bnRlbnRUeXBlUGFyc2VyLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
b250ZW50VHlwZVBhcnNlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nv
b2tpZVN0b3JhZ2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsLmgg
XApAQCAtNTY4OCw2ICs1Njg2LDggQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmggXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmggXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VIYXNoLmggXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQppbmRleCA3MmExN2YwLi43YWQ2NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEwNDgsNyArMTA0
OCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFu
ZGxlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsLmNwcCBcCiAgICAgcGxh
dGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAgXAotICAgIHBsYXRmb3JtL25ldHdv
cmsvQ29udGVudFR5cGVQYXJzZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwIFwKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwIFwKQEAgLTEwNTcsNiArMTA1Niw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24uY3BwIFwK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBcCisgICAgcGxhdGZvcm0vbmV0d29yay9QYXJz
ZWRDb250ZW50VHlwZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNl
LmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAgXAogICAgIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwIFwKQEAgLTIyMzcsNyArMjIzNyw2IEBA
IEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvQ29va2llU3RvcmFnZS5oIFwKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9D
cmVkZW50aWFsU3RvcmFnZS5oIFwKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFy
c2VyLmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmggXAogICAgIHBs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaCBcCkBAIC0yMjQ5LDYgKzIyNDgsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmluZy5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtpbmdDb250ZXh0LmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZp
ZXIuaCBcCisgICAgcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5oIFwKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmggXAogICAgIHBsYXRmb3JtL25ldHdv
cmsvUHJvdGVjdGlvblNwYWNlLmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIu
aCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggN2VkZDkzYy4uOGM3YzFiOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtNTUzMCw4ICs1NTMwLDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZXNvdXJjZUhhbmRsZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlc291cmNlSGFuZGxlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvQmxvYlN0
b3JhZ2VEYXRhLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQ
YXJzZXIuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFy
c2VyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL0ROUy5oJywKQEAgLTU1NTAsNiArNTU0OCw4IEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMyZTczZDIuLjA3MDI5ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTk3NCw4ICs5NzQsNiBAQAogCQkzM0MwQ0NENDExMkM1RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4
dElucHV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMzQzBDQ0QyMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuY3BwICovOyB9Owog
CQkzM0MwQ0NENTExMkM1RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4dElucHV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0MwQ0NEMzExMkM1RTYyMDBD
RTA1N0QgLyogU2VjdXJlVGV4dElucHV0LmggKi87IH07CiAJCTMzRDAyMTJEMTMxREIzN0IwMDQw
OTFBOCAvKiBDb29raWVTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTNGMDFFQTEyNzBFMTBEMDBERkJBNzEgLyogQ29va2llU3RvcmFnZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTM3MEQ2
RURBMTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlwZVBhcnNlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzBENkVEODEzODQ1NDU1MDA0NDEw
M0UgLyogQ29udGVudFR5cGVQYXJzZXIuY3BwICovOyB9OwotCQkzNzBENkVEQjEzODQ1NDU1MDA0
NDEwM0UgLyogQ29udGVudFR5cGVQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3MEQ2RUQ5MTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlw
ZVBhcnNlci5oICovOyB9OwogCQkzNzE5NDE5NjE1NjZCMzcyMDBBMjc2RDggLyogV2ViQ29yZU5T
Q2VsbEV4dHJhcy5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzcxOTQxOTQxNTY2QjM3MjAwQTI3NkQ4IC8qIFdlYkNvcmVOU0NlbGxFeHRyYXMubSAqLzsg
fTsKIAkJMzcxOTQxOTcxNTY2QjM3MjAwQTI3NkQ4IC8qIFdlYkNvcmVOU0NlbGxFeHRyYXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MTk0MTk1MTU2
NkIzNzIwMEEyNzZEOCAvKiBXZWJDb3JlTlNDZWxsRXh0cmFzLmggKi87IH07CiAJCTM3MUE2N0NC
MTFDNkM3REIwMDA0N0I4QiAvKiBIeXBoZW5hdGlvbkNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUE2N0NBMTFDNkM3REIwMDA0N0I4QiAvKiBI
eXBoZW5hdGlvbkNGLmNwcCAqLzsgfTsKQEAgLTEyMTEsNiArMTIwOSw4IEBACiAJCTQ0MzExQ0Q4
MTJFNEUyNEIwMDBBOEQxOSAvKiBET01Eb2N1bWVudFByaXZhdGUuaCBpbiBDb3B5IEdlbmVyYXRl
ZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MzExQ0Q1MTJF
NEUyMkQwMDBBOEQxOSAvKiBET01Eb2N1bWVudFByaXZhdGUuaCAqLzsgfTsKIAkJNDQzMTFDRDkx
MkU0RTI1NzAwMEE4RDE5IC8qIERPTURvY3VtZW50RnJhZ21lbnRQcml2YXRlLmggaW4gQ29weSBH
ZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDMx
MUNENDEyRTRFMjJEMDAwQThEMTkgLyogRE9NRG9jdW1lbnRGcmFnbWVudFByaXZhdGUuaCAqLzsg
fTsKIAkJNDQzMTFGODIxMkU0RTY2QzAwMEE4RDE5IC8qIERPTURvY3VtZW50RnJhZ21lbnRJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVF
NzExNDUwQUM1RDUzNDAwNTMyNzBGIC8qIERPTURvY3VtZW50RnJhZ21lbnRJbnRlcm5hbC5oICov
OyB9OworCQk0NDc5NTgwNDE2NDNCNDlBMDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Nzk1ODAzMTY0
M0I0N0IwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ0Nzk1ODA1MTY0M0I0QjIwMDFFMEE3RiAv
KiBQYXJzZWRDb250ZW50VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NDc5NTgwMjE2NDNCNDdCMDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5
cGUuY3BwICovOyB9OwogCQk0NDhBMjlCRjBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9u
c0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ0OEEyOUJEMEE0NkQ5Q0IwMDMwNzU5RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5o
ICovOyB9OwogCQk0NDhBMjlDMDBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDQ4QTI5QkUwQTQ2RDlDQjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcCAq
LzsgfTsKIAkJNDQ4QUQyN0MwQTQ4MTM3QTAwMjNEMTc5IC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0
aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ0OEFEMjdBMEE0ODEzNzkwMDIzRDE3OSAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1
c3RvbS5jcHAgKi87IH07CkBAIC04MTQyLDggKzgxNDIsNiBAQAogCQkzMzlCNUI2MjEzMURBQTMy
MDBGNDhEMDIgLyogQ29va2llc1N0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvb2tpZXNTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
M0MwQ0NEMjExMkM1RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4dElucHV0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlY3VyZVRleHRJbnB1dC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzQzBDQ0QzMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVU
ZXh0SW5wdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjdXJlVGV4dElu
cHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM3MEQ2RUQ4MTM4NDU0NTUwMDQ0
MTAzRSAvKiBDb250ZW50VHlwZVBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb250ZW50VHlwZVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTM3MEQ2RUQ5MTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlwZVBhcnNlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50VHlwZVBhcnNlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzE5NDE5NDE1NjZCMzcyMDBBMjc2RDggLyogV2Vi
Q29yZU5TQ2VsbEV4dHJhcy5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBX
ZWJDb3JlTlNDZWxsRXh0cmFzLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MTk0
MTk1MTU2NkIzNzIwMEEyNzZEOCAvKiBXZWJDb3JlTlNDZWxsRXh0cmFzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVOU0NlbGxFeHRyYXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzcxQTY3Q0ExMUM2QzdEQjAwMDQ3QjhCIC8qIEh5cGhlbmF0aW9u
Q0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSHlwaGVuYXRpb25D
Ri5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDExLDYgKzg0MDksOCBAQAog
CQk0NDI5QUIwNzBDQjg0RjgxMDA3NjQ3QzUgLyogRE9NVGV4dEV2ZW50SW50ZXJuYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVRleHRFdmVudEludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MzExQ0Q0MTJFNEUyMkQwMDBBOEQxOSAvKiBE
T01Eb2N1bWVudEZyYWdtZW50UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01Eb2N1bWVudEZyYWdtZW50UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NDMxMUNENTEyRTRFMjJEMDAwQThEMTkgLyogRE9NRG9jdW1lbnRQcml2YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTURvY3VtZW50UHJpdmF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NDc5NTgwMjE2NDNCNDdCMDAxRTBBN0YgLyog
UGFyc2VkQ29udGVudFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGFyc2VkQ29udGVudFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
NDc5NTgwMzE2NDNCNDdCMDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VkQ29udGVudFR5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDQ4QTI5QkQwQTQ2RDlDQjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxP
cHRpb25zQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDhBMjlC
RTBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ4QUQyN0EwQTQ4MTM3OTAwMjNEMTc5
IC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1Njc5LDggKzE1Njc5LDYgQEAKIAkJCQkyRUI0
QkNEMDEyMUYwM0UzMDBFQzQ4ODUgLyogQmxvYlJlc291cmNlSGFuZGxlLmNwcCAqLywKIAkJCQky
RUI0QkNEMTEyMUYwM0UzMDBFQzQ4ODUgLyogQmxvYlJlc291cmNlSGFuZGxlLmggKi8sCiAJCQkJ
MkVERUYxRjIxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JTdG9yYWdlRGF0YS5oICovLAotCQkJCTM3
MEQ2RUQ4MTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlwZVBhcnNlci5jcHAgKi8sCi0JCQkJ
MzcwRDZFRDkxMzg0NTQ1NTAwNDQxMDNFIC8qIENvbnRlbnRUeXBlUGFyc2VyLmggKi8sCiAJCQkJ
RTEzRjAxRUExMjcwRTEwRDAwREZCQTcxIC8qIENvb2tpZVN0b3JhZ2UuaCAqLywKIAkJCQk1MTRD
NzY1ODBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5jcHAgKi8sCiAJCQkJNTE0Qzc2NTkw
Q0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCAqLywKQEAgLTE1NzA2LDYgKzE1NzA0LDgg
QEAKIAkJCQk2MjhEMjE0QjEyMTMxRUQxMDA1NURDRkMgLyogTmV0d29ya2luZ0NvbnRleHQuaCAq
LywKIAkJCQkxQTdGQTYxQTBEREEzQkJFMDAyOEY4QTUgLyogTmV0d29ya1N0YXRlTm90aWZpZXIu
Y3BwICovLAogCQkJCTFBN0ZBNjE4MEREQTNCM0EwMDI4RjhBNSAvKiBOZXR3b3JrU3RhdGVOb3Rp
Zmllci5oICovLAorCQkJCTQ0Nzk1ODAyMTY0M0I0N0IwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50
VHlwZS5jcHAgKi8sCisJCQkJNDQ3OTU4MDMxNjQzQjQ3QjAwMUUwQTdGIC8qIFBhcnNlZENvbnRl
bnRUeXBlLmggKi8sCiAJCQkJNTE0Qzc2NUYwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25T
cGFjZS5jcHAgKi8sCiAJCQkJNTE0Qzc2NjAwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25T
cGFjZS5oICovLAogCQkJCTUxQTA1MjU1MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3Bh
Y2VIYXNoLmggKi8sCkBAIC0yMjY5Miw3ICsyMjY5Miw2IEBACiAJCQkJOTdDNDcxREMxMkY5MjVC
RDAwODYzNTRCIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTdCNzkxQTYxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MUQwMTVDQTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBp
biBIZWFkZXJzICovLAotCQkJCTM3MEQ2RURCMTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlw
ZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2MjdCOEUxNEZCM0NFRTAwMkNEQ0ExIC8q
IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0QzQ0Ex
MTE1N0RGOEU5MDA4NjBBOTcgLyogQ29udGV4dEZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5M0I2QTBFNjBCMEJDQTVDMDBGNTAyN0EgLyogQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICov
LApAQCAtMjU3NjYsNiArMjU3NjUsNyBAQAogCQkJCTU3MEI3OEMwMTY1MENFODEwMDFEQkUxQiAv
KiBTZWxlY3RSdWxlRmVhdHVyZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUU1MDA4NDcxNjUx
NkFEODAwQjdFMDk4IC8qIFJlbmRlclRoZW1lTWFjU2hhcmVkLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1M0VGNzY2QjE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQ0Nzk1ODA0MTY0M0I0OUEwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yNjI4Miw3ICsyNjI4Miw2IEBACiAJCQkJOTdDNDcxREIxMkY5
MjVCRDAwODYzNTRCIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1N0I3OTFBNTE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9yUXVlcnkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDFEMDE1Q0IwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRU
eXBlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTM3MEQ2RURBMTM4NDU0NTUwMDQ0MTAzRSAvKiBD
b250ZW50VHlwZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzYyN0I4RDE0RkIzQ0VF
MDAyQ0RDQTEgLyogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTdEM0NBMTAxNTdERjhFOTAwODYwQTk3IC8qIENvbnRleHRGZWF0dXJlcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwNjVBRDRGNjBCMEMyRURBMDA1QTJCMUQgLyogQ29udGV4dE1lbnVD
b250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg4NjIsNiArMjg4NjEsNyBAQAogCQkJ
CTU3MEI3OEJGMTY1MENFODEwMDFEQkUxQiAvKiBTZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxRTUwMDg0ODE2NTE2QUQ4MDBCN0UwOTggLyogUmVuZGVyVGhlbWVN
YWNTaGFyZWQubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDdFMDUyMjE2NTFDMjgyMDBDMTIwMUYg
LyogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDQ3OTU4
MDUxNjQzQjRCMjAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlw
ZVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBl
UGFyc2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRhNDU4OC4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2Vy
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyMSArMCwwIEBACi0gLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJDb250ZW50VHlwZVBhcnNlci5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1zdGF0aWMgdm9pZCBza2lwU3BhY2VzKGNvbnN0IFN0cmluZyYgaW5wdXQs
IHNpemVfdCYgc3RhcnRJbmRleCkKLXsKLSAgICB3aGlsZSAoc3RhcnRJbmRleCA8IGlucHV0Lmxl
bmd0aCgpICYmIGlucHV0W3N0YXJ0SW5kZXhdID09ICcgJykKLSAgICAgICAgKytzdGFydEluZGV4
OwotfQotCi1zdGF0aWMgYm9vbCBpc1Rva2VuQ2hhcmFjdGVyKGNoYXIgYykKLXsKLSAgICByZXR1
cm4gaXNBU0NJSShjKSAmJiBjID4gJyAnICYmIGMgIT0gJyInICYmIGMgIT0gJygnICYmIGMgIT0g
JyknICYmIGMgIT0gJywnICYmIGMgIT0gJy8nICYmIChjIDwgJzonIHx8IGMgPiAnQCcpICYmIChj
IDwgJ1snIHx8IGMgPiAnXScpOwotfQotCi1zdGF0aWMgU3RyaW5nIHBhcnNlVG9rZW4oY29uc3Qg
U3RyaW5nJiBpbnB1dCwgc2l6ZV90JiBzdGFydEluZGV4KQotewotICAgIGlmIChzdGFydEluZGV4
ID49IGlucHV0Lmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBTdHJp
bmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgd2hpbGUgKHN0YXJ0SW5kZXggPCBpbnB1dC5s
ZW5ndGgoKSkgewotICAgICAgICBjaGFyIGN1cnJlbnRDaGFyYWN0ZXIgPSBpbnB1dFtzdGFydElu
ZGV4XTsKLSAgICAgICAgaWYgKCFpc1Rva2VuQ2hhcmFjdGVyKGN1cnJlbnRDaGFyYWN0ZXIpKQot
ICAgICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoY3VycmVudENoYXJhY3Rlcik7Ci0gICAgICAgICsrc3RhcnRJbmRl
eDsKLSAgICB9Ci0gICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotc3Rh
dGljIFN0cmluZyBwYXJzZVF1b3RlZFN0cmluZyhjb25zdCBTdHJpbmcmIGlucHV0LCBzaXplX3Qm
IHN0YXJ0SW5kZXgpCi17Ci0gICAgaWYgKHN0YXJ0SW5kZXggPj0gaW5wdXQubGVuZ3RoKCkpCi0g
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIGlmIChpbnB1dFtzdGFydEluZGV4KytdICE9
ICciJyB8fCBzdGFydEluZGV4ID49IGlucHV0Lmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgYm9vbCBsYXN0
Q2hhcmFjdGVyV2FzQmFja3NsYXNoID0gZmFsc2U7Ci0gICAgY2hhciBjdXJyZW50Q2hhcmFjdGVy
OwotICAgIHdoaWxlICgoY3VycmVudENoYXJhY3RlciA9IGlucHV0W3N0YXJ0SW5kZXgrK10pICE9
ICciJyB8fCBsYXN0Q2hhcmFjdGVyV2FzQmFja3NsYXNoKSB7Ci0gICAgICAgIGlmIChzdGFydElu
ZGV4ID49IGlucHV0Lmxlbmd0aCgpKQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
ICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PSAnXFwnICYmICFsYXN0Q2hhcmFjdGVyV2FzQmFj
a3NsYXNoKSB7Ci0gICAgICAgICAgICBsYXN0Q2hhcmFjdGVyV2FzQmFja3NsYXNoID0gdHJ1ZTsK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChsYXN0Q2hhcmFj
dGVyV2FzQmFja3NsYXNoKQotICAgICAgICAgICAgbGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCA9
IGZhbHNlOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChjdXJyZW50Q2hhcmFjdGVyKTsK
LSAgICB9Ci0gICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotQ29udGVu
dFR5cGVQYXJzZXI6OkNvbnRlbnRUeXBlUGFyc2VyKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
Ci0gICAgOiBtX2NvbnRlbnRUeXBlKGNvbnRlbnRUeXBlLnN0cmlwV2hpdGVTcGFjZSgpKQotewot
ICAgIHBhcnNlKCk7Ci19Ci0KLVN0cmluZyBDb250ZW50VHlwZVBhcnNlcjo6Y2hhcnNldCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIHBhcmFtZXRlclZhbHVlRm9yTmFtZSgiY2hhcnNldCIpOwotfQot
Ci1TdHJpbmcgQ29udGVudFR5cGVQYXJzZXI6OnBhcmFtZXRlclZhbHVlRm9yTmFtZShjb25zdCBT
dHJpbmcmIG5hbWUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFyYW1ldGVycy5nZXQobmFtZSk7
Ci19Ci0KLXNpemVfdCBDb250ZW50VHlwZVBhcnNlcjo6cGFyYW1ldGVyQ291bnQoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3BhcmFtZXRlcnMuc2l6ZSgpOwotfQotCi0vLyBGcm9tIGh0dHA6Ly90
b29scy5pZXRmLm9yZy9odG1sL3JmYzIwNDUjc2VjdGlvbi01LjE6Ci0vLwotLy8gY29udGVudCA6
PSAiQ29udGVudC1UeXBlIiAiOiIgdHlwZSAiLyIgc3VidHlwZQotLy8gICAgICAgICAgICAqKCI7
IiBwYXJhbWV0ZXIpCi0vLyAgICAgICAgICAgIDsgTWF0Y2hpbmcgb2YgbWVkaWEgdHlwZSBhbmQg
c3VidHlwZQotLy8gICAgICAgICAgICA7IGlzIEFMV0FZUyBjYXNlLWluc2Vuc2l0aXZlLgotLy8K
LS8vIHR5cGUgOj0gZGlzY3JldGUtdHlwZSAvIGNvbXBvc2l0ZS10eXBlCi0vLwotLy8gZGlzY3Jl
dGUtdHlwZSA6PSAidGV4dCIgLyAiaW1hZ2UiIC8gImF1ZGlvIiAvICJ2aWRlbyIgLwotLy8gICAg
ICAgICAgICAgICAgICAiYXBwbGljYXRpb24iIC8gZXh0ZW5zaW9uLXRva2VuCi0vLwotLy8gY29t
cG9zaXRlLXR5cGUgOj0gIm1lc3NhZ2UiIC8gIm11bHRpcGFydCIgLyBleHRlbnNpb24tdG9rZW4K
LS8vCi0vLyBleHRlbnNpb24tdG9rZW4gOj0gaWV0Zi10b2tlbiAvIHgtdG9rZW4KLS8vCi0vLyBp
ZXRmLXRva2VuIDo9IDxBbiBleHRlbnNpb24gdG9rZW4gZGVmaW5lZCBieSBhCi0vLyAgICAgICAg
ICAgICAgICBzdGFuZGFyZHMtdHJhY2sgUkZDIGFuZCByZWdpc3RlcmVkCi0vLyAgICAgICAgICAg
ICAgICB3aXRoIElBTkEuPgotLy8KLS8vIHgtdG9rZW4gOj0gPFRoZSB0d28gY2hhcmFjdGVycyAi
WC0iIG9yICJ4LSIgZm9sbG93ZWQsIHdpdGgKLS8vICAgICAgICAgICAgIG5vIGludGVydmVuaW5n
IHdoaXRlIHNwYWNlLCBieSBhbnkgdG9rZW4+Ci0vLwotLy8gc3VidHlwZSA6PSBleHRlbnNpb24t
dG9rZW4gLyBpYW5hLXRva2VuCi0vLwotLy8gaWFuYS10b2tlbiA6PSA8QSBwdWJsaWNseS1kZWZp
bmVkIGV4dGVuc2lvbiB0b2tlbi4gVG9rZW5zCi0vLyAgICAgICAgICAgICAgICBvZiB0aGlzIGZv
cm0gbXVzdCBiZSByZWdpc3RlcmVkIHdpdGggSUFOQQotLy8gICAgICAgICAgICAgICAgYXMgc3Bl
Y2lmaWVkIGluIFJGQyAyMDQ4Lj4KLS8vCi0vLyBwYXJhbWV0ZXIgOj0gYXR0cmlidXRlICI9IiB2
YWx1ZQotLy8KLS8vIGF0dHJpYnV0ZSA6PSB0b2tlbgotLy8gICAgICAgICAgICAgIDsgTWF0Y2hp
bmcgb2YgYXR0cmlidXRlcwotLy8gICAgICAgICAgICAgIDsgaXMgQUxXQVlTIGNhc2UtaW5zZW5z
aXRpdmUuCi0vLwotLy8gdmFsdWUgOj0gdG9rZW4gLyBxdW90ZWQtc3RyaW5nCi0vLwotLy8gdG9r
ZW4gOj0gMSo8YW55IChVUy1BU0NJSSkgQ0hBUiBleGNlcHQgU1BBQ0UsIENUTHMsCi0vLyAgICAg
ICAgICAgICBvciB0c3BlY2lhbHM+Ci0vLwotLy8gdHNwZWNpYWxzIDo9ICAiKCIgLyAiKSIgLyAi
PCIgLyAiPiIgLyAiQCIgLwotLy8gICAgICAgICAgICAgICAiLCIgLyAiOyIgLyAiOiIgLyAiXCIg
LyA8Ij4KLS8vICAgICAgICAgICAgICAgIi8iIC8gIlsiIC8gIl0iIC8gIj8iIC8gIj0iCi0vLyAg
ICAgICAgICAgICAgIDsgTXVzdCBiZSBpbiBxdW90ZWQtc3RyaW5nLAotLy8gICAgICAgICAgICAg
ICA7IHRvIHVzZSB3aXRoaW4gcGFyYW1ldGVyIHZhbHVlcwotCi12b2lkIENvbnRlbnRUeXBlUGFy
c2VyOjpwYXJzZSgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGNv
bnRlbnRUeXBlUGFyYW1ldGVyTmFtZSwgKEFTQ0lJTGl0ZXJhbCgiQ29udGVudC1UeXBlIikpKTsK
LQotICAgIGlmICghbV9jb250ZW50VHlwZS5zdGFydHNXaXRoKGNvbnRlbnRUeXBlUGFyYW1ldGVy
TmFtZSkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIENvbnRlbnQtVHlwZSBzdHJpbmcg
JyVzJyIsIG1fY29udGVudFR5cGUuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIHNpemVfdCBjb250ZW50VHlwZUxlbmd0aCA9IG1fY29udGVudFR5cGUubGVuZ3Ro
KCk7Ci0gICAgc2l6ZV90IGluZGV4ID0gY29udGVudFR5cGVQYXJhbWV0ZXJOYW1lLmxlbmd0aCgp
OwotICAgIHNraXBTcGFjZXMobV9jb250ZW50VHlwZSwgaW5kZXgpOwotICAgIGlmIChpbmRleCA+
PSBjb250ZW50VHlwZUxlbmd0aCB8fCBtX2NvbnRlbnRUeXBlW2luZGV4XSAhPSAnOicgfHwgKytp
bmRleCA+PSBjb250ZW50VHlwZUxlbmd0aCkgIHsKLSAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlk
IENvbnRlbnQtVHlwZSBzdHJpbmcgJyVzJyIsIG1fY29udGVudFR5cGUuYXNjaWkoKS5kYXRhKCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gVGhlcmUgc2hvdWxkIG5vdCBiZSBh
bnkgcXVvdGVkIHN0cmluZ3MgdW50aWwgd2UgcmVhY2ggdGhlIHBhcmFtZXRlcnMuCi0gICAgc2l6
ZV90IHNlbWlDb2xvbkluZGV4ID0gbV9jb250ZW50VHlwZS5maW5kKCc7JywgaW5kZXgpOwotICAg
IGlmIChzZW1pQ29sb25JbmRleCA9PSBub3RGb3VuZCkgewotICAgICAgICBtX21pbWVUeXBlID0g
bV9jb250ZW50VHlwZS5zdWJzdHJpbmcoaW5kZXgpLnN0cmlwV2hpdGVTcGFjZSgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9taW1lVHlwZSA9IG1fY29udGVudFR5cGUuc3Vic3Ry
aW5nKGluZGV4LCBzZW1pQ29sb25JbmRleCAtIGluZGV4KS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAg
ICBpbmRleCA9IHNlbWlDb2xvbkluZGV4ICsgMTsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAg
ICBza2lwU3BhY2VzKG1fY29udGVudFR5cGUsIGluZGV4KTsKLSAgICAgICAgU3RyaW5nIGtleSA9
IHBhcnNlVG9rZW4obV9jb250ZW50VHlwZSwgaW5kZXgpOwotICAgICAgICBpZiAoa2V5LmlzRW1w
dHkoKSB8fCBpbmRleCA+PSBjb250ZW50VHlwZUxlbmd0aCkgewotICAgICAgICAgICAgTE9HX0VS
Uk9SKCJJbnZhbGlkIENvbnRlbnQtVHlwZSBwYXJhbWV0ZXIgbmFtZS4iKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAvLyBTaG91bGQgd2UgdG9sZXJhdGUgc3BhY2Vz
IGhlcmU/Ci0gICAgICAgIGlmIChtX2NvbnRlbnRUeXBlW2luZGV4KytdICE9ICc9JyB8fCBpbmRl
eCA+PSBjb250ZW50VHlwZUxlbmd0aCkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlk
IENvbnRlbnQtVHlwZSBtYWxmb3JtZWQgcGFyYW1ldGVyLiIpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU2hvdWxkIHdlIHRvbGVyYXRlIHNwYWNlcyBoZXJl
PwotICAgICAgICBTdHJpbmcgdmFsdWU7Ci0gICAgICAgIGlmIChtX2NvbnRlbnRUeXBlW2luZGV4
XSA9PSAnIicpCi0gICAgICAgICAgICB2YWx1ZSA9IHBhcnNlUXVvdGVkU3RyaW5nKG1fY29udGVu
dFR5cGUsIGluZGV4KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFsdWUgPSBwYXJzZVRv
a2VuKG1fY29udGVudFR5cGUsIGluZGV4KTsKLQotICAgICAgICBpZiAodmFsdWUuaXNOdWxsKCkp
IHsKLSAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUsIGludmFsaWQg
cGFyYW1ldGVyIHZhbHVlLiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gU2hvdWxkIHdlIHRvbGVyYXRlIHNwYWNlcyBoZXJlPwotICAgICAgICBpZiAoaW5k
ZXggPCBjb250ZW50VHlwZUxlbmd0aCAmJiBtX2NvbnRlbnRUeXBlW2luZGV4KytdICE9ICc7Jykg
ewotICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIENvbnRlbnQtVHlwZSwgaW52YWxpZCBj
aGFyYWN0ZXIgYXQgdGhlIGVuZCBvZiBrZXkvdmFsdWUgcGFyYW1ldGVyLiIpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9wYXJhbWV0ZXJzLnNldChrZXksIHZh
bHVlKTsKLQotICAgICAgICBpZiAoaW5kZXggPj0gY29udGVudFR5cGVMZW5ndGgpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgfQotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDA2NTdiMDEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Db250ZW50VHlwZVBhcnNlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgQ29udGVudFR5cGVQYXJzZXJfaAotI2RlZmluZSBDb250ZW50VHlwZVBhcnNlcl9oCi0K
LSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi0vLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIGNvbW1lbnRzLgotY2xhc3MgQ29udGVudFR5
cGVQYXJzZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0IENvbnRlbnRUeXBlUGFyc2VyKGNvbnN0
IFN0cmluZyYpOwotCi0gICAgU3RyaW5nIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9taW1l
VHlwZTsgfQotICAgIFN0cmluZyBjaGFyc2V0KCkgY29uc3Q7Ci0KLSAgICAvLyBOb3RlIHRoYXQg
aW4gdGhlIGNhc2Ugb2YgbXVsdGlwbGUgdmFsdWVzIGZvciB0aGUgc2FtZSBuYW1lLCB0aGUgbGFz
dCB2YWx1ZSBpcyByZXR1cm5lZC4KLSAgICBTdHJpbmcgcGFyYW1ldGVyVmFsdWVGb3JOYW1lKGNv
bnN0IFN0cmluZyYpIGNvbnN0OwotICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0Owot
Ci1wcml2YXRlOgotICAgIHZvaWQgcGFyc2UoKTsKLQotICAgIFN0cmluZyBtX2NvbnRlbnRUeXBl
OwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBLZXlWYWx1ZVBhaXJzOwot
ICAgIEtleVZhbHVlUGFpcnMgbV9wYXJhbWV0ZXJzOwotICAgIFN0cmluZyBtX21pbWVUeXBlOwot
fTsKLQotfQotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9NSU1FSGVhZGVyLmNwcAppbmRleCBmNGUzZWJmLi4wNDhhYmY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKQEAgLTMxLDcgKzMxLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNSU1FSGVhZGVyLmgiCiAKLSNpbmNsdWRl
ICJDb250ZW50VHlwZVBhcnNlci5oIgorI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRUeXBlLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTg1LDE0ICs4NSwxMyBAQCBQ
YXNzUmVmUHRyPE1JTUVIZWFkZXI+IE1JTUVIZWFkZXI6OnBhcnNlSGVhZGVyKFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyKiBidWZmZXIpCiAgICAgS2V5VmFsdWVNYXAga2V5VmFsdWVQYWlycyA9IHJl
dHJpZXZlS2V5VmFsdWVQYWlycyhidWZmZXIpOwogICAgIEtleVZhbHVlTWFwOjppdGVyYXRvciBt
aW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXR5cGUi
KTsKICAgICBpZiAobWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgp
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBtYWtlIENvbnRlbnRUeXBlUGFyc2VyIG1vcmUgZmxleGli
bGUgc28gd2UgZG9uJ3QgaGF2ZSB0byBzeW50aGVzaXplIHRoZSAiQ29udGVudC1UeXBlOiIuCi0g
ICAgICAgIENvbnRlbnRUeXBlUGFyc2VyIGNvbnRlbnRUeXBlUGFyc2VyKG1ha2VTdHJpbmcoIkNv
bnRlbnQtVHlwZToiLCBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSkpOwotICAgICAgICBt
aW1lSGVhZGVyLT5tX2NvbnRlbnRUeXBlID0gY29udGVudFR5cGVQYXJzZXIubWltZVR5cGUoKTsK
KyAgICAgICAgUGFyc2VkQ29udGVudFR5cGUgcGFyc2VkQ29udGVudFR5cGUobWltZVBhcmFtZXRl
cnNJdGVyYXRvci0+dmFsdWUpOworICAgICAgICBtaW1lSGVhZGVyLT5tX2NvbnRlbnRUeXBlID0g
cGFyc2VkQ29udGVudFR5cGUubWltZVR5cGUoKTsKICAgICAgICAgaWYgKCFtaW1lSGVhZGVyLT5p
c011bHRpcGFydCgpKQotICAgICAgICAgICAgbWltZUhlYWRlci0+bV9jaGFyc2V0ID0gY29udGVu
dFR5cGVQYXJzZXIuY2hhcnNldCgpLnN0cmlwV2hpdGVTcGFjZSgpOworICAgICAgICAgICAgbWlt
ZUhlYWRlci0+bV9jaGFyc2V0ID0gcGFyc2VkQ29udGVudFR5cGUuY2hhcnNldCgpLnN0cmlwV2hp
dGVTcGFjZSgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1pbWVIZWFkZXItPm1fbXVs
dGlwYXJ0VHlwZSA9IGNvbnRlbnRUeXBlUGFyc2VyLnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlw
ZSIpOwotICAgICAgICAgICAgbWltZUhlYWRlci0+bV9lbmRPZlBhcnRCb3VuZGFyeSA9IGNvbnRl
bnRUeXBlUGFyc2VyLnBhcmFtZXRlclZhbHVlRm9yTmFtZSgiYm91bmRhcnkiKTsKKyAgICAgICAg
ICAgIG1pbWVIZWFkZXItPm1fbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLnBhcmFt
ZXRlclZhbHVlRm9yTmFtZSgidHlwZSIpOworICAgICAgICAgICAgbWltZUhlYWRlci0+bV9lbmRP
ZlBhcnRCb3VuZGFyeSA9IHBhcnNlZENvbnRlbnRUeXBlLnBhcmFtZXRlclZhbHVlRm9yTmFtZSgi
Ym91bmRhcnkiKTsKICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLT5tX2VuZE9mUGFydEJvdW5k
YXJ5LmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJObyBib3VuZGFyeSBm
b3VuZCBpbiBtdWx0aXBhcnQgTUlNRSBoZWFkZXIuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENv
bnRlbnRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29u
dGVudFR5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MjYwY2EK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNl
ZENvbnRlbnRUeXBlLmNwcApAQCAtMCwwICsxLDI1NSBAQAorIC8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUGFyc2VkQ29udGVudFR5cGUuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRHVtbXlQYXJzZWRDb250ZW50VHlwZSB7CitwdWJsaWM6
CisgICAgdm9pZCBzZXRDb250ZW50VHlwZShjb25zdCBTdWJzdHJpbmdSYW5nZSYpIGNvbnN0IHsg
fQorICAgIHZvaWQgc2V0Q29udGVudFR5cGVQYXJhbWV0ZXIoY29uc3QgU3Vic3RyaW5nUmFuZ2Um
LCBjb25zdCBTdWJzdHJpbmdSYW5nZSYpIGNvbnN0IHsgfQorfTsKKworc3RhdGljIHZvaWQgc2tp
cFNwYWNlcyhjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNpZ25lZCYgc3RhcnRJbmRleCkKK3sKKyAg
ICB3aGlsZSAoc3RhcnRJbmRleCA8IGlucHV0Lmxlbmd0aCgpICYmIGlucHV0W3N0YXJ0SW5kZXhd
ID09ICcgJykKKyAgICAgICAgKytzdGFydEluZGV4OworfQorCitzdGF0aWMgYm9vbCBpc1Rva2Vu
Q2hhcmFjdGVyKGNoYXIgYykKK3sKKyAgICByZXR1cm4gaXNBU0NJSShjKSAmJiBjID4gJyAnICYm
IGMgIT0gJyInICYmIGMgIT0gJygnICYmIGMgIT0gJyknICYmIGMgIT0gJywnICYmIGMgIT0gJy8n
ICYmIChjIDwgJzonIHx8IGMgPiAnQCcpICYmIChjIDwgJ1snIHx8IGMgPiAnXScpOworfQorCitz
dGF0aWMgU3Vic3RyaW5nUmFuZ2UgcGFyc2VUb2tlbihjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNp
Z25lZCYgc3RhcnRJbmRleCkKK3sKKyAgICB1bnNpZ25lZCBpbnB1dExlbmd0aCA9IGlucHV0Lmxl
bmd0aCgpOworICAgIHVuc2lnbmVkIHRva2VuU3RhcnQgPSBzdGFydEluZGV4OworICAgIHVuc2ln
bmVkJiB0b2tlbkVuZCA9IHN0YXJ0SW5kZXg7CisKKyAgICBpZiAodG9rZW5FbmQgPj0gaW5wdXRM
ZW5ndGgpCisgICAgICAgIHJldHVybiBTdWJzdHJpbmdSYW5nZSgpOworCisgICAgd2hpbGUgKHRv
a2VuRW5kIDwgaW5wdXRMZW5ndGgpIHsKKyAgICAgICAgaWYgKCFpc1Rva2VuQ2hhcmFjdGVyKGlu
cHV0W3Rva2VuRW5kXSkpCisgICAgICAgICAgICByZXR1cm4gU3Vic3RyaW5nUmFuZ2UodG9rZW5T
dGFydCwgdG9rZW5FbmQgLSB0b2tlblN0YXJ0KTsKKyAgICAgICAgKyt0b2tlbkVuZDsKKyAgICB9
CisKKyAgICByZXR1cm4gU3Vic3RyaW5nUmFuZ2UodG9rZW5TdGFydCwgdG9rZW5FbmQgLSB0b2tl
blN0YXJ0KTsKK30KKworc3RhdGljIFN1YnN0cmluZ1JhbmdlIHBhcnNlUXVvdGVkU3RyaW5nKGNv
bnN0IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkJiBzdGFydEluZGV4KQoreworICAgIHVuc2lnbmVk
IGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgcXVvdGVkU3RyaW5n
U3RhcnQgPSBzdGFydEluZGV4ICsgMTsKKyAgICB1bnNpZ25lZCYgcXVvdGVkU3RyaW5nRW5kID0g
c3RhcnRJbmRleDsKKworICAgIGlmIChxdW90ZWRTdHJpbmdFbmQgPj0gaW5wdXRMZW5ndGgpCisg
ICAgICAgIHJldHVybiBTdWJzdHJpbmdSYW5nZSgpOworCisgICAgaWYgKGlucHV0W3F1b3RlZFN0
cmluZ0VuZCsrXSAhPSAnIicgfHwgcXVvdGVkU3RyaW5nRW5kID49IGlucHV0TGVuZ3RoKQorICAg
ICAgICByZXR1cm4gU3Vic3RyaW5nUmFuZ2UoKTsKKworICAgIGJvb2wgbGFzdENoYXJhY3Rlcldh
c0JhY2tzbGFzaCA9IGZhbHNlOworICAgIGNoYXIgY3VycmVudENoYXJhY3RlcjsKKyAgICB3aGls
ZSAoKGN1cnJlbnRDaGFyYWN0ZXIgPSBpbnB1dFtxdW90ZWRTdHJpbmdFbmQrK10pICE9ICciJyB8
fCBsYXN0Q2hhcmFjdGVyV2FzQmFja3NsYXNoKSB7CisgICAgICAgIGlmIChxdW90ZWRTdHJpbmdF
bmQgPj0gaW5wdXRMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gU3Vic3RyaW5nUmFuZ2UoKTsK
KyAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ1xcJyAmJiAhbGFzdENoYXJhY3Rlcldh
c0JhY2tzbGFzaCkgeworICAgICAgICAgICAgbGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IHRy
dWU7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAobGFzdENo
YXJhY3Rlcldhc0JhY2tzbGFzaCkKKyAgICAgICAgICAgIGxhc3RDaGFyYWN0ZXJXYXNCYWNrc2xh
c2ggPSBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIFN1YnN0cmluZ1JhbmdlKHF1b3RlZFN0cmlu
Z1N0YXJ0LCBxdW90ZWRTdHJpbmdFbmQgLSBxdW90ZWRTdHJpbmdTdGFydCAtIDEpOworfQorCitz
dGF0aWMgU3RyaW5nIHN1YnN0cmluZ0ZvclJhbmdlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25z
dCBTdWJzdHJpbmdSYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIHN0cmluZy5zdWJzdHJpbmco
cmFuZ2UuZmlyc3QsIHJhbmdlLnNlY29uZCk7Cit9CisKKy8vIEZyb20gaHR0cDovL3Rvb2xzLmll
dGYub3JnL2h0bWwvcmZjMjA0NSNzZWN0aW9uLTUuMToKKy8vCisvLyBjb250ZW50IDo9ICJDb250
ZW50LVR5cGUiICI6IiB0eXBlICIvIiBzdWJ0eXBlCisvLyAgICAgICAgICAgICooIjsiIHBhcmFt
ZXRlcikKKy8vICAgICAgICAgICAgOyBNYXRjaGluZyBvZiBtZWRpYSB0eXBlIGFuZCBzdWJ0eXBl
CisvLyAgICAgICAgICAgIDsgaXMgQUxXQVlTIGNhc2UtaW5zZW5zaXRpdmUuCisvLworLy8gdHlw
ZSA6PSBkaXNjcmV0ZS10eXBlIC8gY29tcG9zaXRlLXR5cGUKKy8vCisvLyBkaXNjcmV0ZS10eXBl
IDo9ICJ0ZXh0IiAvICJpbWFnZSIgLyAiYXVkaW8iIC8gInZpZGVvIiAvCisvLyAgICAgICAgICAg
ICAgICAgICJhcHBsaWNhdGlvbiIgLyBleHRlbnNpb24tdG9rZW4KKy8vCisvLyBjb21wb3NpdGUt
dHlwZSA6PSAibWVzc2FnZSIgLyAibXVsdGlwYXJ0IiAvIGV4dGVuc2lvbi10b2tlbgorLy8KKy8v
IGV4dGVuc2lvbi10b2tlbiA6PSBpZXRmLXRva2VuIC8geC10b2tlbgorLy8KKy8vIGlldGYtdG9r
ZW4gOj0gPEFuIGV4dGVuc2lvbiB0b2tlbiBkZWZpbmVkIGJ5IGEKKy8vICAgICAgICAgICAgICAg
IHN0YW5kYXJkcy10cmFjayBSRkMgYW5kIHJlZ2lzdGVyZWQKKy8vICAgICAgICAgICAgICAgIHdp
dGggSUFOQS4+CisvLworLy8geC10b2tlbiA6PSA8VGhlIHR3byBjaGFyYWN0ZXJzICJYLSIgb3Ig
IngtIiBmb2xsb3dlZCwgd2l0aAorLy8gICAgICAgICAgICAgbm8gaW50ZXJ2ZW5pbmcgd2hpdGUg
c3BhY2UsIGJ5IGFueSB0b2tlbj4KKy8vCisvLyBzdWJ0eXBlIDo9IGV4dGVuc2lvbi10b2tlbiAv
IGlhbmEtdG9rZW4KKy8vCisvLyBpYW5hLXRva2VuIDo9IDxBIHB1YmxpY2x5LWRlZmluZWQgZXh0
ZW5zaW9uIHRva2VuLiBUb2tlbnMKKy8vICAgICAgICAgICAgICAgIG9mIHRoaXMgZm9ybSBtdXN0
IGJlIHJlZ2lzdGVyZWQgd2l0aCBJQU5BCisvLyAgICAgICAgICAgICAgICBhcyBzcGVjaWZpZWQg
aW4gUkZDIDIwNDguPgorLy8KKy8vIHBhcmFtZXRlciA6PSBhdHRyaWJ1dGUgIj0iIHZhbHVlCisv
LworLy8gYXR0cmlidXRlIDo9IHRva2VuCisvLyAgICAgICAgICAgICAgOyBNYXRjaGluZyBvZiBh
dHRyaWJ1dGVzCisvLyAgICAgICAgICAgICAgOyBpcyBBTFdBWVMgY2FzZS1pbnNlbnNpdGl2ZS4K
Ky8vCisvLyB2YWx1ZSA6PSB0b2tlbiAvIHF1b3RlZC1zdHJpbmcKKy8vCisvLyB0b2tlbiA6PSAx
KjxhbnkgKFVTLUFTQ0lJKSBDSEFSIGV4Y2VwdCBTUEFDRSwgQ1RMcywKKy8vICAgICAgICAgICAg
IG9yIHRzcGVjaWFscz4KKy8vCisvLyB0c3BlY2lhbHMgOj0gICIoIiAvICIpIiAvICI8IiAvICI+
IiAvICJAIiAvCisvLyAgICAgICAgICAgICAgICIsIiAvICI7IiAvICI6IiAvICJcIiAvIDwiPgor
Ly8gICAgICAgICAgICAgICAiLyIgLyAiWyIgLyAiXSIgLyAiPyIgLyAiPSIKKy8vICAgICAgICAg
ICAgICAgOyBNdXN0IGJlIGluIHF1b3RlZC1zdHJpbmcsCisvLyAgICAgICAgICAgICAgIDsgdG8g
dXNlIHdpdGhpbiBwYXJhbWV0ZXIgdmFsdWVzCisKK3RlbXBsYXRlIDxjbGFzcyBSZWNpZXZlclR5
cGU+Citib29sIHBhcnNlQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVj
aWV2ZXJUeXBlJiByZWNpZXZlcikKK3sKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgdW5z
aWduZWQgY29udGVudFR5cGVMZW5ndGggPSBjb250ZW50VHlwZS5sZW5ndGgoKTsKKyAgICBza2lw
U3BhY2VzKGNvbnRlbnRUeXBlLCBpbmRleCk7CisgICAgaWYgKGluZGV4ID49IGNvbnRlbnRUeXBl
TGVuZ3RoKSAgeworICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgQ29udGVudC1UeXBlIHN0cmlu
ZyAnJXMnIiwgY29udGVudFR5cGUuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgLy8gVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgcXVvdGVkIHN0cmlu
Z3MgdW50aWwgd2UgcmVhY2ggdGhlIHBhcmFtZXRlcnMuCisgICAgc2l6ZV90IHNlbWlDb2xvbklu
ZGV4ID0gY29udGVudFR5cGUuZmluZCgnOycsIGluZGV4KTsKKyAgICBpZiAoc2VtaUNvbG9uSW5k
ZXggPT0gbm90Rm91bmQpIHsKKyAgICAgICAgcmVjaWV2ZXIuc2V0Q29udGVudFR5cGUoU3Vic3Ry
aW5nUmFuZ2UoaW5kZXgsIGNvbnRlbnRUeXBlTGVuZ3RoIC0gaW5kZXgpKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgcmVjaWV2ZXIuc2V0Q29udGVudFR5cGUoU3Vic3RyaW5n
UmFuZ2UoaW5kZXgsIHNlbWlDb2xvbkluZGV4IC0gaW5kZXgpKTsKKyAgICBpbmRleCA9IHNlbWlD
b2xvbkluZGV4ICsgMTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBza2lwU3BhY2VzKGNv
bnRlbnRUeXBlLCBpbmRleCk7CisgICAgICAgIFN1YnN0cmluZ1JhbmdlIGtleVJhbmdlID0gcGFy
c2VUb2tlbihjb250ZW50VHlwZSwgaW5kZXgpOworICAgICAgICBpZiAoIWtleVJhbmdlLnNlY29u
ZCB8fCBpbmRleCA+PSBjb250ZW50VHlwZUxlbmd0aCkgeworICAgICAgICAgICAgTE9HX0VSUk9S
KCJJbnZhbGlkIENvbnRlbnQtVHlwZSBwYXJhbWV0ZXIgbmFtZS4iKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNob3VsZCB3ZSB0b2xlcmF0ZSBz
cGFjZXMgaGVyZT8KKyAgICAgICAgaWYgKGNvbnRlbnRUeXBlW2luZGV4KytdICE9ICc9JyB8fCBp
bmRleCA+PSBjb250ZW50VHlwZUxlbmd0aCkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZh
bGlkIENvbnRlbnQtVHlwZSBtYWxmb3JtZWQgcGFyYW1ldGVyLiIpOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLy8gU2hvdWxkIHdlIHRvbGVyYXRlIHNw
YWNlcyBoZXJlPworICAgICAgICBTdHJpbmcgdmFsdWU7CisgICAgICAgIFN1YnN0cmluZ1Jhbmdl
IHZhbHVlUmFuZ2U7CisgICAgICAgIGlmIChjb250ZW50VHlwZVtpbmRleF0gPT0gJyInKQorICAg
ICAgICAgICAgdmFsdWVSYW5nZSA9IHBhcnNlUXVvdGVkU3RyaW5nKGNvbnRlbnRUeXBlLCBpbmRl
eCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhbHVlUmFuZ2UgPSBwYXJzZVRva2VuKGNv
bnRlbnRUeXBlLCBpbmRleCk7CisKKyAgICAgICAgaWYgKCF2YWx1ZVJhbmdlLnNlY29uZCkgewor
ICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIENvbnRlbnQtVHlwZSwgaW52YWxpZCBwYXJh
bWV0ZXIgdmFsdWUuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBTaG91bGQgd2UgdG9sZXJhdGUgc3BhY2VzIGhlcmU/CisgICAgICAgIGlmIChp
bmRleCA8IGNvbnRlbnRUeXBlTGVuZ3RoICYmIGNvbnRlbnRUeXBlW2luZGV4KytdICE9ICc7Jykg
eworICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIENvbnRlbnQtVHlwZSwgaW52YWxpZCBj
aGFyYWN0ZXIgYXQgdGhlIGVuZCBvZiBrZXkvdmFsdWUgcGFyYW1ldGVyLiIpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmVjaWV2ZXIuc2V0Q29udGVu
dFR5cGVQYXJhbWV0ZXIoa2V5UmFuZ2UsIHZhbHVlUmFuZ2UpOworCisgICAgICAgIGlmIChpbmRl
eCA+PSBjb250ZW50VHlwZUxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQorCitib29sIGlzVmFsaWRDb250ZW50VHlwZShjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQoreworICAgIGlmIChjb250ZW50VHlwZS5jb250YWlucygnXHIn
KSB8fCBjb250ZW50VHlwZS5jb250YWlucygnXG4nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgRHVtbXlQYXJzZWRDb250ZW50VHlwZSBwYXJzZWRDb250ZW50VHlwZSA9IER1bW15UGFy
c2VkQ29udGVudFR5cGUoKTsKKyAgICByZXR1cm4gcGFyc2VDb250ZW50VHlwZTxEdW1teVBhcnNl
ZENvbnRlbnRUeXBlPihjb250ZW50VHlwZSwgcGFyc2VkQ29udGVudFR5cGUpOworfQorCitQYXJz
ZWRDb250ZW50VHlwZTo6UGFyc2VkQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkKKyAgICA6IG1fY29udGVudFR5cGUoY29udGVudFR5cGUuc3RyaXBXaGl0ZVNwYWNlKCkpCit7
CisgICAgcGFyc2VDb250ZW50VHlwZTxQYXJzZWRDb250ZW50VHlwZT4obV9jb250ZW50VHlwZSwg
KnRoaXMpOworfQorCitTdHJpbmcgUGFyc2VkQ29udGVudFR5cGU6OmNoYXJzZXQoKSBjb25zdAor
eworICAgIHJldHVybiBwYXJhbWV0ZXJWYWx1ZUZvck5hbWUoImNoYXJzZXQiKTsKK30KKworU3Ry
aW5nIFBhcnNlZENvbnRlbnRUeXBlOjpwYXJhbWV0ZXJWYWx1ZUZvck5hbWUoY29uc3QgU3RyaW5n
JiBuYW1lKSBjb25zdAoreworICAgIHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KG5hbWUpOworfQor
CitzaXplX3QgUGFyc2VkQ29udGVudFR5cGU6OnBhcmFtZXRlckNvdW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wYXJhbWV0ZXJzLnNpemUoKTsKK30KKwordm9pZCBQYXJzZWRDb250ZW50VHlw
ZTo6c2V0Q29udGVudFR5cGUoY29uc3QgU3Vic3RyaW5nUmFuZ2UmIGNvbnRlbnRSYW5nZSkKK3sK
KyAgICBtX21pbWVUeXBlID0gc3Vic3RyaW5nRm9yUmFuZ2UobV9jb250ZW50VHlwZSwgY29udGVu
dFJhbmdlKS5zdHJpcFdoaXRlU3BhY2UoKTsKK30KKwordm9pZCBQYXJzZWRDb250ZW50VHlwZTo6
c2V0Q29udGVudFR5cGVQYXJhbWV0ZXIoY29uc3QgU3Vic3RyaW5nUmFuZ2UmIGtleSwgY29uc3Qg
U3Vic3RyaW5nUmFuZ2UmIHZhbHVlKQoreworICAgIG1fcGFyYW1ldGVycy5zZXQoc3Vic3RyaW5n
Rm9yUmFuZ2UobV9jb250ZW50VHlwZSwga2V5KSwgc3Vic3RyaW5nRm9yUmFuZ2UobV9jb250ZW50
VHlwZSwgdmFsdWUpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjdmZWI0MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgUGFyc2VkQ29udGVudFR5cGVfaAorI2RlZmluZSBQYXJzZWRDb250ZW50VHlwZV9oCisKKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyA8aW5kZXgsIGxlbmd0aD4KK3R5cGVkZWYgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gU3Vic3RyaW5nUmFuZ2U7Citib29sIGlzVmFsaWRD
b250ZW50VHlwZShjb25zdCBTdHJpbmcmKTsKKworLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBj
b21tZW50cy4KK2NsYXNzIFBhcnNlZENvbnRlbnRUeXBlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBQYXJzZWRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBtaW1lVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KKyAgICBTdHJpbmcgY2hhcnNldCgpIGNv
bnN0OworCisgICAgLy8gTm90ZSB0aGF0IGluIHRoZSBjYXNlIG9mIG11bHRpcGxlIHZhbHVlcyBm
b3IgdGhlIHNhbWUgbmFtZSwgdGhlIGxhc3QgdmFsdWUgaXMgcmV0dXJuZWQuCisgICAgU3RyaW5n
IHBhcmFtZXRlclZhbHVlRm9yTmFtZShjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBzaXplX3Qg
cGFyYW1ldGVyQ291bnQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTxjbGFzcyBS
ZWNpZXZlclR5cGU+CisgICAgZnJpZW5kIGJvb2wgcGFyc2VDb250ZW50VHlwZShjb25zdCBTdHJp
bmcmLCBSZWNpZXZlclR5cGUmKTsKKyAgICB2b2lkIHNldENvbnRlbnRUeXBlKGNvbnN0IFN1YnN0
cmluZ1JhbmdlJik7CisgICAgdm9pZCBzZXRDb250ZW50VHlwZVBhcmFtZXRlcihjb25zdCBTdWJz
dHJpbmdSYW5nZSYsIGNvbnN0IFN1YnN0cmluZ1JhbmdlJik7CisKKyAgICB0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEtleVZhbHVlUGFpcnM7CisgICAgU3RyaW5nIG1fY29udGVudFR5
cGU7CisgICAgS2V5VmFsdWVQYWlycyBtX3BhcmFtZXRlcnM7CisgICAgU3RyaW5nIG1fbWltZVR5
cGU7Cit9OworCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174950</attachid>
            <date>2012-11-19 04:27:23 -0800</date>
            <delta_ts>2012-11-19 10:58:18 -0800</delta_ts>
            <desc>Patch 8</desc>
            <filename>webcore_parsedcontenttype_8.patch</filename>
            <type>text/plain</type>
            <size>40436</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzY1ZjM4Zi4uNzFkZTYzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE5OTksNyArMTk5OSw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L0NyZWRlbnRpYWwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5j
cHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2VyLmNwcAogICAgIHBsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVR
dWV1ZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKQEAgLTIw
MTAsNiArMjAwOSw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBWYWxpZGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcAorICAgIHBsYXRm
b3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Q
cm90ZWN0aW9uU3BhY2UuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDliYWY1OWIuLjJjODA3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMi0xMS0x
OSAgQWxleGFuZGVyIFNoYWxhbW92ICA8YWxleGFuZGVyLnNoYWxhbW92QGludGVsLmNvbT4KKwor
ICAgICAgICBJbXByb3ZlIENvbnRlbnRUeXBlUGFyc2VyLCBzbyB0aGF0IGl0IGNvdWxkIGJlIHVz
ZWQgdG8gdmFsaWRhdGUgbWltZSB0eXBlIGFjY29yZGluZyB0byBSRkMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDkyNworCisgICAgICAgIFJldmll
d2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIFBh
cnNlZENvbnRlbnRUeXBlIGNsYXNzIHRoYXQgcmVwcmVzZW50cyBjb250ZW50cyBvZiBwYXJzZWQK
KyAgICAgICAgY29udGVudCB0eXBlIHN0cmluZy4gaXNWYWxpZENvbnRlbnRUeXBlIGZ1bmN0aW9u
IGNvdWxkIGJlIHVzZWQgdG8gY2hlY2sgaWYKKyAgICAgICAgZm9ybWF0IG9mIHRoZSBjb250ZW50
IHR5cGUgc3RyaW5nIGlzIGFjb3JyZGluZyB0byBSRkMgMjYxNiBzZWN0aW9uIDQuMi4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvTUlNRUhlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSU1FSGVhZGVyOjpwYXJz
ZUhlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5j
cHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRU
eXBlUGFyc2VyLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRW1wdHlQYXJzZWRD
b250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVBhcnNlZENvbnRlbnRUeXBlOjpz
ZXRDb250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVBhcnNlZENvbnRlbnRUeXBl
OjpzZXRDb250ZW50VHlwZVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpza2lwU3BhY2Vz
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzVG9rZW5DaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVF1b3RlZFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpzdWJzdHJpbmdGb3JSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZUNvbnRlbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRDb250ZW50VHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRDb250ZW50VHlwZTo6UGFyc2VkQ29udGVudFR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OmNoYXJzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OnBhcmFtZXRlclZhbHVlRm9yTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXJzZWRDb250ZW50VHlwZTo6cGFyYW1ldGVyQ291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OnNldENvbnRlbnRUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhcnNlZENvbnRlbnRUeXBlOjpzZXRDb250ZW50VHlwZVBhcmFtZXRlcik6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlwZVBhcnNlci5o
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQYXJzZWRDb250ZW50VHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJzZWRDb250ZW50VHlwZTo6bWltZVR5cGUpOgorCiAyMDEyLTExLTE4
ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICB3ZWJh
dWRpbzogY2xlYW4tdXAuIFJlcGxhY2UgQXVkaW9Db250ZXh0OjptX2RvY3VtZW50IG1lbWJlciB3
aXRoIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAwN2EyMzhhLi40NDdhOWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTU2NTksOCArNTY1OSw2IEBAIHdlYmNvcmVf
cGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVzb3VyY2VIYW5kbGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZXNvdXJjZUhhbmRsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JTdG9yYWdlRGF0YS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nv
bnRlbnRUeXBlUGFyc2VyLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
b250ZW50VHlwZVBhcnNlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nv
b2tpZVN0b3JhZ2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsLmgg
XApAQCAtNTY4OCw2ICs1Njg2LDggQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmggXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmggXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VIYXNoLmggXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQppbmRleCA3MmExN2YwLi43YWQ2NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEwNDgsNyArMTA0
OCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFu
ZGxlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsLmNwcCBcCiAgICAgcGxh
dGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAgXAotICAgIHBsYXRmb3JtL25ldHdv
cmsvQ29udGVudFR5cGVQYXJzZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwIFwKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwIFwKQEAgLTEwNTcsNiArMTA1Niw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24uY3BwIFwK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBcCisgICAgcGxhdGZvcm0vbmV0d29yay9QYXJz
ZWRDb250ZW50VHlwZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNl
LmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAgXAogICAgIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwIFwKQEAgLTIyMzcsNyArMjIzNyw2IEBA
IEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvQ29va2llU3RvcmFnZS5oIFwKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9D
cmVkZW50aWFsU3RvcmFnZS5oIFwKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFy
c2VyLmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmggXAogICAgIHBs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaCBcCkBAIC0yMjQ5LDYgKzIyNDgsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmluZy5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtpbmdDb250ZXh0LmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZp
ZXIuaCBcCisgICAgcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5oIFwKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmggXAogICAgIHBsYXRmb3JtL25ldHdv
cmsvUHJvdGVjdGlvblNwYWNlLmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIu
aCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggN2VkZDkzYy4uOGM3YzFiOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtNTUzMCw4ICs1NTMwLDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZXNvdXJjZUhhbmRsZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlc291cmNlSGFuZGxlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvQmxvYlN0
b3JhZ2VEYXRhLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvQ29udGVudFR5cGVQ
YXJzZXIuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFy
c2VyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL0ROUy5oJywKQEAgLTU1NTAsNiArNTU0OCw4IEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMyZTczZDIuLjA3MDI5ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTk3NCw4ICs5NzQsNiBAQAogCQkzM0MwQ0NENDExMkM1RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4
dElucHV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMzQzBDQ0QyMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuY3BwICovOyB9Owog
CQkzM0MwQ0NENTExMkM1RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4dElucHV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0MwQ0NEMzExMkM1RTYyMDBD
RTA1N0QgLyogU2VjdXJlVGV4dElucHV0LmggKi87IH07CiAJCTMzRDAyMTJEMTMxREIzN0IwMDQw
OTFBOCAvKiBDb29raWVTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTNGMDFFQTEyNzBFMTBEMDBERkJBNzEgLyogQ29va2llU3RvcmFnZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTM3MEQ2
RURBMTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlwZVBhcnNlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzBENkVEODEzODQ1NDU1MDA0NDEw
M0UgLyogQ29udGVudFR5cGVQYXJzZXIuY3BwICovOyB9OwotCQkzNzBENkVEQjEzODQ1NDU1MDA0
NDEwM0UgLyogQ29udGVudFR5cGVQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3MEQ2RUQ5MTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlw
ZVBhcnNlci5oICovOyB9OwogCQkzNzE5NDE5NjE1NjZCMzcyMDBBMjc2RDggLyogV2ViQ29yZU5T
Q2VsbEV4dHJhcy5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzcxOTQxOTQxNTY2QjM3MjAwQTI3NkQ4IC8qIFdlYkNvcmVOU0NlbGxFeHRyYXMubSAqLzsg
fTsKIAkJMzcxOTQxOTcxNTY2QjM3MjAwQTI3NkQ4IC8qIFdlYkNvcmVOU0NlbGxFeHRyYXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MTk0MTk1MTU2
NkIzNzIwMEEyNzZEOCAvKiBXZWJDb3JlTlNDZWxsRXh0cmFzLmggKi87IH07CiAJCTM3MUE2N0NC
MTFDNkM3REIwMDA0N0I4QiAvKiBIeXBoZW5hdGlvbkNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUE2N0NBMTFDNkM3REIwMDA0N0I4QiAvKiBI
eXBoZW5hdGlvbkNGLmNwcCAqLzsgfTsKQEAgLTEyMTEsNiArMTIwOSw4IEBACiAJCTQ0MzExQ0Q4
MTJFNEUyNEIwMDBBOEQxOSAvKiBET01Eb2N1bWVudFByaXZhdGUuaCBpbiBDb3B5IEdlbmVyYXRl
ZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MzExQ0Q1MTJF
NEUyMkQwMDBBOEQxOSAvKiBET01Eb2N1bWVudFByaXZhdGUuaCAqLzsgfTsKIAkJNDQzMTFDRDkx
MkU0RTI1NzAwMEE4RDE5IC8qIERPTURvY3VtZW50RnJhZ21lbnRQcml2YXRlLmggaW4gQ29weSBH
ZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDMx
MUNENDEyRTRFMjJEMDAwQThEMTkgLyogRE9NRG9jdW1lbnRGcmFnbWVudFByaXZhdGUuaCAqLzsg
fTsKIAkJNDQzMTFGODIxMkU0RTY2QzAwMEE4RDE5IC8qIERPTURvY3VtZW50RnJhZ21lbnRJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVF
NzExNDUwQUM1RDUzNDAwNTMyNzBGIC8qIERPTURvY3VtZW50RnJhZ21lbnRJbnRlcm5hbC5oICov
OyB9OworCQk0NDc5NTgwNDE2NDNCNDlBMDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Nzk1ODAzMTY0
M0I0N0IwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ0Nzk1ODA1MTY0M0I0QjIwMDFFMEE3RiAv
KiBQYXJzZWRDb250ZW50VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NDc5NTgwMjE2NDNCNDdCMDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5
cGUuY3BwICovOyB9OwogCQk0NDhBMjlCRjBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9u
c0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ0OEEyOUJEMEE0NkQ5Q0IwMDMwNzU5RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5o
ICovOyB9OwogCQk0NDhBMjlDMDBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDQ4QTI5QkUwQTQ2RDlDQjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcCAq
LzsgfTsKIAkJNDQ4QUQyN0MwQTQ4MTM3QTAwMjNEMTc5IC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0
aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ0OEFEMjdBMEE0ODEzNzkwMDIzRDE3OSAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1
c3RvbS5jcHAgKi87IH07CkBAIC04MTQyLDggKzgxNDIsNiBAQAogCQkzMzlCNUI2MjEzMURBQTMy
MDBGNDhEMDIgLyogQ29va2llc1N0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvb2tpZXNTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
M0MwQ0NEMjExMkM1RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4dElucHV0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlY3VyZVRleHRJbnB1dC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzQzBDQ0QzMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVU
ZXh0SW5wdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjdXJlVGV4dElu
cHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM3MEQ2RUQ4MTM4NDU0NTUwMDQ0
MTAzRSAvKiBDb250ZW50VHlwZVBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb250ZW50VHlwZVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTM3MEQ2RUQ5MTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlwZVBhcnNlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50VHlwZVBhcnNlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzE5NDE5NDE1NjZCMzcyMDBBMjc2RDggLyogV2Vi
Q29yZU5TQ2VsbEV4dHJhcy5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBX
ZWJDb3JlTlNDZWxsRXh0cmFzLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MTk0
MTk1MTU2NkIzNzIwMEEyNzZEOCAvKiBXZWJDb3JlTlNDZWxsRXh0cmFzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVOU0NlbGxFeHRyYXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzcxQTY3Q0ExMUM2QzdEQjAwMDQ3QjhCIC8qIEh5cGhlbmF0aW9u
Q0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSHlwaGVuYXRpb25D
Ri5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDExLDYgKzg0MDksOCBAQAog
CQk0NDI5QUIwNzBDQjg0RjgxMDA3NjQ3QzUgLyogRE9NVGV4dEV2ZW50SW50ZXJuYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVRleHRFdmVudEludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MzExQ0Q0MTJFNEUyMkQwMDBBOEQxOSAvKiBE
T01Eb2N1bWVudEZyYWdtZW50UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01Eb2N1bWVudEZyYWdtZW50UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NDMxMUNENTEyRTRFMjJEMDAwQThEMTkgLyogRE9NRG9jdW1lbnRQcml2YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTURvY3VtZW50UHJpdmF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NDc5NTgwMjE2NDNCNDdCMDAxRTBBN0YgLyog
UGFyc2VkQ29udGVudFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGFyc2VkQ29udGVudFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
NDc5NTgwMzE2NDNCNDdCMDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VkQ29udGVudFR5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDQ4QTI5QkQwQTQ2RDlDQjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxP
cHRpb25zQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDhBMjlC
RTBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ4QUQyN0EwQTQ4MTM3OTAwMjNEMTc5
IC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1Njc5LDggKzE1Njc5LDYgQEAKIAkJCQkyRUI0
QkNEMDEyMUYwM0UzMDBFQzQ4ODUgLyogQmxvYlJlc291cmNlSGFuZGxlLmNwcCAqLywKIAkJCQky
RUI0QkNEMTEyMUYwM0UzMDBFQzQ4ODUgLyogQmxvYlJlc291cmNlSGFuZGxlLmggKi8sCiAJCQkJ
MkVERUYxRjIxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JTdG9yYWdlRGF0YS5oICovLAotCQkJCTM3
MEQ2RUQ4MTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlwZVBhcnNlci5jcHAgKi8sCi0JCQkJ
MzcwRDZFRDkxMzg0NTQ1NTAwNDQxMDNFIC8qIENvbnRlbnRUeXBlUGFyc2VyLmggKi8sCiAJCQkJ
RTEzRjAxRUExMjcwRTEwRDAwREZCQTcxIC8qIENvb2tpZVN0b3JhZ2UuaCAqLywKIAkJCQk1MTRD
NzY1ODBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5jcHAgKi8sCiAJCQkJNTE0Qzc2NTkw
Q0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCAqLywKQEAgLTE1NzA2LDYgKzE1NzA0LDgg
QEAKIAkJCQk2MjhEMjE0QjEyMTMxRUQxMDA1NURDRkMgLyogTmV0d29ya2luZ0NvbnRleHQuaCAq
LywKIAkJCQkxQTdGQTYxQTBEREEzQkJFMDAyOEY4QTUgLyogTmV0d29ya1N0YXRlTm90aWZpZXIu
Y3BwICovLAogCQkJCTFBN0ZBNjE4MEREQTNCM0EwMDI4RjhBNSAvKiBOZXR3b3JrU3RhdGVOb3Rp
Zmllci5oICovLAorCQkJCTQ0Nzk1ODAyMTY0M0I0N0IwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50
VHlwZS5jcHAgKi8sCisJCQkJNDQ3OTU4MDMxNjQzQjQ3QjAwMUUwQTdGIC8qIFBhcnNlZENvbnRl
bnRUeXBlLmggKi8sCiAJCQkJNTE0Qzc2NUYwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25T
cGFjZS5jcHAgKi8sCiAJCQkJNTE0Qzc2NjAwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25T
cGFjZS5oICovLAogCQkJCTUxQTA1MjU1MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3Bh
Y2VIYXNoLmggKi8sCkBAIC0yMjY5Miw3ICsyMjY5Miw2IEBACiAJCQkJOTdDNDcxREMxMkY5MjVC
RDAwODYzNTRCIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTdCNzkxQTYxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MUQwMTVDQTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBp
biBIZWFkZXJzICovLAotCQkJCTM3MEQ2RURCMTM4NDU0NTUwMDQ0MTAzRSAvKiBDb250ZW50VHlw
ZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2MjdCOEUxNEZCM0NFRTAwMkNEQ0ExIC8q
IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0QzQ0Ex
MTE1N0RGOEU5MDA4NjBBOTcgLyogQ29udGV4dEZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5M0I2QTBFNjBCMEJDQTVDMDBGNTAyN0EgLyogQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICov
LApAQCAtMjU3NjYsNiArMjU3NjUsNyBAQAogCQkJCTU3MEI3OEMwMTY1MENFODEwMDFEQkUxQiAv
KiBTZWxlY3RSdWxlRmVhdHVyZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUU1MDA4NDcxNjUx
NkFEODAwQjdFMDk4IC8qIFJlbmRlclRoZW1lTWFjU2hhcmVkLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1M0VGNzY2QjE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQ0Nzk1ODA0MTY0M0I0OUEwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yNjI4Miw3ICsyNjI4Miw2IEBACiAJCQkJOTdDNDcxREIxMkY5
MjVCRDAwODYzNTRCIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1N0I3OTFBNTE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9yUXVlcnkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDFEMDE1Q0IwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRU
eXBlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTM3MEQ2RURBMTM4NDU0NTUwMDQ0MTAzRSAvKiBD
b250ZW50VHlwZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzYyN0I4RDE0RkIzQ0VF
MDAyQ0RDQTEgLyogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTdEM0NBMTAxNTdERjhFOTAwODYwQTk3IC8qIENvbnRleHRGZWF0dXJlcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwNjVBRDRGNjBCMEMyRURBMDA1QTJCMUQgLyogQ29udGV4dE1lbnVD
b250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg4NjIsNiArMjg4NjEsNyBAQAogCQkJ
CTU3MEI3OEJGMTY1MENFODEwMDFEQkUxQiAvKiBTZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxRTUwMDg0ODE2NTE2QUQ4MDBCN0UwOTggLyogUmVuZGVyVGhlbWVN
YWNTaGFyZWQubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDdFMDUyMjE2NTFDMjgyMDBDMTIwMUYg
LyogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDQ3OTU4
MDUxNjQzQjRCMjAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db250ZW50VHlw
ZVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBl
UGFyc2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRhNDU4OC4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2Vy
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyMSArMCwwIEBACi0gLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJDb250ZW50VHlwZVBhcnNlci5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1zdGF0aWMgdm9pZCBza2lwU3BhY2VzKGNvbnN0IFN0cmluZyYgaW5wdXQs
IHNpemVfdCYgc3RhcnRJbmRleCkKLXsKLSAgICB3aGlsZSAoc3RhcnRJbmRleCA8IGlucHV0Lmxl
bmd0aCgpICYmIGlucHV0W3N0YXJ0SW5kZXhdID09ICcgJykKLSAgICAgICAgKytzdGFydEluZGV4
OwotfQotCi1zdGF0aWMgYm9vbCBpc1Rva2VuQ2hhcmFjdGVyKGNoYXIgYykKLXsKLSAgICByZXR1
cm4gaXNBU0NJSShjKSAmJiBjID4gJyAnICYmIGMgIT0gJyInICYmIGMgIT0gJygnICYmIGMgIT0g
JyknICYmIGMgIT0gJywnICYmIGMgIT0gJy8nICYmIChjIDwgJzonIHx8IGMgPiAnQCcpICYmIChj
IDwgJ1snIHx8IGMgPiAnXScpOwotfQotCi1zdGF0aWMgU3RyaW5nIHBhcnNlVG9rZW4oY29uc3Qg
U3RyaW5nJiBpbnB1dCwgc2l6ZV90JiBzdGFydEluZGV4KQotewotICAgIGlmIChzdGFydEluZGV4
ID49IGlucHV0Lmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBTdHJp
bmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgd2hpbGUgKHN0YXJ0SW5kZXggPCBpbnB1dC5s
ZW5ndGgoKSkgewotICAgICAgICBjaGFyIGN1cnJlbnRDaGFyYWN0ZXIgPSBpbnB1dFtzdGFydElu
ZGV4XTsKLSAgICAgICAgaWYgKCFpc1Rva2VuQ2hhcmFjdGVyKGN1cnJlbnRDaGFyYWN0ZXIpKQot
ICAgICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoY3VycmVudENoYXJhY3Rlcik7Ci0gICAgICAgICsrc3RhcnRJbmRl
eDsKLSAgICB9Ci0gICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotc3Rh
dGljIFN0cmluZyBwYXJzZVF1b3RlZFN0cmluZyhjb25zdCBTdHJpbmcmIGlucHV0LCBzaXplX3Qm
IHN0YXJ0SW5kZXgpCi17Ci0gICAgaWYgKHN0YXJ0SW5kZXggPj0gaW5wdXQubGVuZ3RoKCkpCi0g
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIGlmIChpbnB1dFtzdGFydEluZGV4KytdICE9
ICciJyB8fCBzdGFydEluZGV4ID49IGlucHV0Lmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgYm9vbCBsYXN0
Q2hhcmFjdGVyV2FzQmFja3NsYXNoID0gZmFsc2U7Ci0gICAgY2hhciBjdXJyZW50Q2hhcmFjdGVy
OwotICAgIHdoaWxlICgoY3VycmVudENoYXJhY3RlciA9IGlucHV0W3N0YXJ0SW5kZXgrK10pICE9
ICciJyB8fCBsYXN0Q2hhcmFjdGVyV2FzQmFja3NsYXNoKSB7Ci0gICAgICAgIGlmIChzdGFydElu
ZGV4ID49IGlucHV0Lmxlbmd0aCgpKQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
ICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PSAnXFwnICYmICFsYXN0Q2hhcmFjdGVyV2FzQmFj
a3NsYXNoKSB7Ci0gICAgICAgICAgICBsYXN0Q2hhcmFjdGVyV2FzQmFja3NsYXNoID0gdHJ1ZTsK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChsYXN0Q2hhcmFj
dGVyV2FzQmFja3NsYXNoKQotICAgICAgICAgICAgbGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCA9
IGZhbHNlOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChjdXJyZW50Q2hhcmFjdGVyKTsK
LSAgICB9Ci0gICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotQ29udGVu
dFR5cGVQYXJzZXI6OkNvbnRlbnRUeXBlUGFyc2VyKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
Ci0gICAgOiBtX2NvbnRlbnRUeXBlKGNvbnRlbnRUeXBlLnN0cmlwV2hpdGVTcGFjZSgpKQotewot
ICAgIHBhcnNlKCk7Ci19Ci0KLVN0cmluZyBDb250ZW50VHlwZVBhcnNlcjo6Y2hhcnNldCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIHBhcmFtZXRlclZhbHVlRm9yTmFtZSgiY2hhcnNldCIpOwotfQot
Ci1TdHJpbmcgQ29udGVudFR5cGVQYXJzZXI6OnBhcmFtZXRlclZhbHVlRm9yTmFtZShjb25zdCBT
dHJpbmcmIG5hbWUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFyYW1ldGVycy5nZXQobmFtZSk7
Ci19Ci0KLXNpemVfdCBDb250ZW50VHlwZVBhcnNlcjo6cGFyYW1ldGVyQ291bnQoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3BhcmFtZXRlcnMuc2l6ZSgpOwotfQotCi0vLyBGcm9tIGh0dHA6Ly90
b29scy5pZXRmLm9yZy9odG1sL3JmYzIwNDUjc2VjdGlvbi01LjE6Ci0vLwotLy8gY29udGVudCA6
PSAiQ29udGVudC1UeXBlIiAiOiIgdHlwZSAiLyIgc3VidHlwZQotLy8gICAgICAgICAgICAqKCI7
IiBwYXJhbWV0ZXIpCi0vLyAgICAgICAgICAgIDsgTWF0Y2hpbmcgb2YgbWVkaWEgdHlwZSBhbmQg
c3VidHlwZQotLy8gICAgICAgICAgICA7IGlzIEFMV0FZUyBjYXNlLWluc2Vuc2l0aXZlLgotLy8K
LS8vIHR5cGUgOj0gZGlzY3JldGUtdHlwZSAvIGNvbXBvc2l0ZS10eXBlCi0vLwotLy8gZGlzY3Jl
dGUtdHlwZSA6PSAidGV4dCIgLyAiaW1hZ2UiIC8gImF1ZGlvIiAvICJ2aWRlbyIgLwotLy8gICAg
ICAgICAgICAgICAgICAiYXBwbGljYXRpb24iIC8gZXh0ZW5zaW9uLXRva2VuCi0vLwotLy8gY29t
cG9zaXRlLXR5cGUgOj0gIm1lc3NhZ2UiIC8gIm11bHRpcGFydCIgLyBleHRlbnNpb24tdG9rZW4K
LS8vCi0vLyBleHRlbnNpb24tdG9rZW4gOj0gaWV0Zi10b2tlbiAvIHgtdG9rZW4KLS8vCi0vLyBp
ZXRmLXRva2VuIDo9IDxBbiBleHRlbnNpb24gdG9rZW4gZGVmaW5lZCBieSBhCi0vLyAgICAgICAg
ICAgICAgICBzdGFuZGFyZHMtdHJhY2sgUkZDIGFuZCByZWdpc3RlcmVkCi0vLyAgICAgICAgICAg
ICAgICB3aXRoIElBTkEuPgotLy8KLS8vIHgtdG9rZW4gOj0gPFRoZSB0d28gY2hhcmFjdGVycyAi
WC0iIG9yICJ4LSIgZm9sbG93ZWQsIHdpdGgKLS8vICAgICAgICAgICAgIG5vIGludGVydmVuaW5n
IHdoaXRlIHNwYWNlLCBieSBhbnkgdG9rZW4+Ci0vLwotLy8gc3VidHlwZSA6PSBleHRlbnNpb24t
dG9rZW4gLyBpYW5hLXRva2VuCi0vLwotLy8gaWFuYS10b2tlbiA6PSA8QSBwdWJsaWNseS1kZWZp
bmVkIGV4dGVuc2lvbiB0b2tlbi4gVG9rZW5zCi0vLyAgICAgICAgICAgICAgICBvZiB0aGlzIGZv
cm0gbXVzdCBiZSByZWdpc3RlcmVkIHdpdGggSUFOQQotLy8gICAgICAgICAgICAgICAgYXMgc3Bl
Y2lmaWVkIGluIFJGQyAyMDQ4Lj4KLS8vCi0vLyBwYXJhbWV0ZXIgOj0gYXR0cmlidXRlICI9IiB2
YWx1ZQotLy8KLS8vIGF0dHJpYnV0ZSA6PSB0b2tlbgotLy8gICAgICAgICAgICAgIDsgTWF0Y2hp
bmcgb2YgYXR0cmlidXRlcwotLy8gICAgICAgICAgICAgIDsgaXMgQUxXQVlTIGNhc2UtaW5zZW5z
aXRpdmUuCi0vLwotLy8gdmFsdWUgOj0gdG9rZW4gLyBxdW90ZWQtc3RyaW5nCi0vLwotLy8gdG9r
ZW4gOj0gMSo8YW55IChVUy1BU0NJSSkgQ0hBUiBleGNlcHQgU1BBQ0UsIENUTHMsCi0vLyAgICAg
ICAgICAgICBvciB0c3BlY2lhbHM+Ci0vLwotLy8gdHNwZWNpYWxzIDo9ICAiKCIgLyAiKSIgLyAi
PCIgLyAiPiIgLyAiQCIgLwotLy8gICAgICAgICAgICAgICAiLCIgLyAiOyIgLyAiOiIgLyAiXCIg
LyA8Ij4KLS8vICAgICAgICAgICAgICAgIi8iIC8gIlsiIC8gIl0iIC8gIj8iIC8gIj0iCi0vLyAg
ICAgICAgICAgICAgIDsgTXVzdCBiZSBpbiBxdW90ZWQtc3RyaW5nLAotLy8gICAgICAgICAgICAg
ICA7IHRvIHVzZSB3aXRoaW4gcGFyYW1ldGVyIHZhbHVlcwotCi12b2lkIENvbnRlbnRUeXBlUGFy
c2VyOjpwYXJzZSgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGNv
bnRlbnRUeXBlUGFyYW1ldGVyTmFtZSwgKEFTQ0lJTGl0ZXJhbCgiQ29udGVudC1UeXBlIikpKTsK
LQotICAgIGlmICghbV9jb250ZW50VHlwZS5zdGFydHNXaXRoKGNvbnRlbnRUeXBlUGFyYW1ldGVy
TmFtZSkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIENvbnRlbnQtVHlwZSBzdHJpbmcg
JyVzJyIsIG1fY29udGVudFR5cGUuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIHNpemVfdCBjb250ZW50VHlwZUxlbmd0aCA9IG1fY29udGVudFR5cGUubGVuZ3Ro
KCk7Ci0gICAgc2l6ZV90IGluZGV4ID0gY29udGVudFR5cGVQYXJhbWV0ZXJOYW1lLmxlbmd0aCgp
OwotICAgIHNraXBTcGFjZXMobV9jb250ZW50VHlwZSwgaW5kZXgpOwotICAgIGlmIChpbmRleCA+
PSBjb250ZW50VHlwZUxlbmd0aCB8fCBtX2NvbnRlbnRUeXBlW2luZGV4XSAhPSAnOicgfHwgKytp
bmRleCA+PSBjb250ZW50VHlwZUxlbmd0aCkgIHsKLSAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlk
IENvbnRlbnQtVHlwZSBzdHJpbmcgJyVzJyIsIG1fY29udGVudFR5cGUuYXNjaWkoKS5kYXRhKCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gVGhlcmUgc2hvdWxkIG5vdCBiZSBh
bnkgcXVvdGVkIHN0cmluZ3MgdW50aWwgd2UgcmVhY2ggdGhlIHBhcmFtZXRlcnMuCi0gICAgc2l6
ZV90IHNlbWlDb2xvbkluZGV4ID0gbV9jb250ZW50VHlwZS5maW5kKCc7JywgaW5kZXgpOwotICAg
IGlmIChzZW1pQ29sb25JbmRleCA9PSBub3RGb3VuZCkgewotICAgICAgICBtX21pbWVUeXBlID0g
bV9jb250ZW50VHlwZS5zdWJzdHJpbmcoaW5kZXgpLnN0cmlwV2hpdGVTcGFjZSgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9taW1lVHlwZSA9IG1fY29udGVudFR5cGUuc3Vic3Ry
aW5nKGluZGV4LCBzZW1pQ29sb25JbmRleCAtIGluZGV4KS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAg
ICBpbmRleCA9IHNlbWlDb2xvbkluZGV4ICsgMTsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAg
ICBza2lwU3BhY2VzKG1fY29udGVudFR5cGUsIGluZGV4KTsKLSAgICAgICAgU3RyaW5nIGtleSA9
IHBhcnNlVG9rZW4obV9jb250ZW50VHlwZSwgaW5kZXgpOwotICAgICAgICBpZiAoa2V5LmlzRW1w
dHkoKSB8fCBpbmRleCA+PSBjb250ZW50VHlwZUxlbmd0aCkgewotICAgICAgICAgICAgTE9HX0VS
Uk9SKCJJbnZhbGlkIENvbnRlbnQtVHlwZSBwYXJhbWV0ZXIgbmFtZS4iKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAvLyBTaG91bGQgd2UgdG9sZXJhdGUgc3BhY2Vz
IGhlcmU/Ci0gICAgICAgIGlmIChtX2NvbnRlbnRUeXBlW2luZGV4KytdICE9ICc9JyB8fCBpbmRl
eCA+PSBjb250ZW50VHlwZUxlbmd0aCkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlk
IENvbnRlbnQtVHlwZSBtYWxmb3JtZWQgcGFyYW1ldGVyLiIpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU2hvdWxkIHdlIHRvbGVyYXRlIHNwYWNlcyBoZXJl
PwotICAgICAgICBTdHJpbmcgdmFsdWU7Ci0gICAgICAgIGlmIChtX2NvbnRlbnRUeXBlW2luZGV4
XSA9PSAnIicpCi0gICAgICAgICAgICB2YWx1ZSA9IHBhcnNlUXVvdGVkU3RyaW5nKG1fY29udGVu
dFR5cGUsIGluZGV4KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFsdWUgPSBwYXJzZVRv
a2VuKG1fY29udGVudFR5cGUsIGluZGV4KTsKLQotICAgICAgICBpZiAodmFsdWUuaXNOdWxsKCkp
IHsKLSAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBDb250ZW50LVR5cGUsIGludmFsaWQg
cGFyYW1ldGVyIHZhbHVlLiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gU2hvdWxkIHdlIHRvbGVyYXRlIHNwYWNlcyBoZXJlPwotICAgICAgICBpZiAoaW5k
ZXggPCBjb250ZW50VHlwZUxlbmd0aCAmJiBtX2NvbnRlbnRUeXBlW2luZGV4KytdICE9ICc7Jykg
ewotICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIENvbnRlbnQtVHlwZSwgaW52YWxpZCBj
aGFyYWN0ZXIgYXQgdGhlIGVuZCBvZiBrZXkvdmFsdWUgcGFyYW1ldGVyLiIpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9wYXJhbWV0ZXJzLnNldChrZXksIHZh
bHVlKTsKLQotICAgICAgICBpZiAoaW5kZXggPj0gY29udGVudFR5cGVMZW5ndGgpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgfQotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0NvbnRlbnRUeXBlUGFyc2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDA2NTdiMDEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Db250ZW50VHlwZVBhcnNlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgQ29udGVudFR5cGVQYXJzZXJfaAotI2RlZmluZSBDb250ZW50VHlwZVBhcnNlcl9oCi0K
LSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi0vLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIGNvbW1lbnRzLgotY2xhc3MgQ29udGVudFR5
cGVQYXJzZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0IENvbnRlbnRUeXBlUGFyc2VyKGNvbnN0
IFN0cmluZyYpOwotCi0gICAgU3RyaW5nIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9taW1l
VHlwZTsgfQotICAgIFN0cmluZyBjaGFyc2V0KCkgY29uc3Q7Ci0KLSAgICAvLyBOb3RlIHRoYXQg
aW4gdGhlIGNhc2Ugb2YgbXVsdGlwbGUgdmFsdWVzIGZvciB0aGUgc2FtZSBuYW1lLCB0aGUgbGFz
dCB2YWx1ZSBpcyByZXR1cm5lZC4KLSAgICBTdHJpbmcgcGFyYW1ldGVyVmFsdWVGb3JOYW1lKGNv
bnN0IFN0cmluZyYpIGNvbnN0OwotICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0Owot
Ci1wcml2YXRlOgotICAgIHZvaWQgcGFyc2UoKTsKLQotICAgIFN0cmluZyBtX2NvbnRlbnRUeXBl
OwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBLZXlWYWx1ZVBhaXJzOwot
ICAgIEtleVZhbHVlUGFpcnMgbV9wYXJhbWV0ZXJzOwotICAgIFN0cmluZyBtX21pbWVUeXBlOwot
fTsKLQotfQotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9NSU1FSGVhZGVyLmNwcAppbmRleCBmNGUzZWJmLi4wNDhhYmY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKQEAgLTMxLDcgKzMxLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNSU1FSGVhZGVyLmgiCiAKLSNpbmNsdWRl
ICJDb250ZW50VHlwZVBhcnNlci5oIgorI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRUeXBlLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTg1LDE0ICs4NSwxMyBAQCBQ
YXNzUmVmUHRyPE1JTUVIZWFkZXI+IE1JTUVIZWFkZXI6OnBhcnNlSGVhZGVyKFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyKiBidWZmZXIpCiAgICAgS2V5VmFsdWVNYXAga2V5VmFsdWVQYWlycyA9IHJl
dHJpZXZlS2V5VmFsdWVQYWlycyhidWZmZXIpOwogICAgIEtleVZhbHVlTWFwOjppdGVyYXRvciBt
aW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXR5cGUi
KTsKICAgICBpZiAobWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgp
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBtYWtlIENvbnRlbnRUeXBlUGFyc2VyIG1vcmUgZmxleGli
bGUgc28gd2UgZG9uJ3QgaGF2ZSB0byBzeW50aGVzaXplIHRoZSAiQ29udGVudC1UeXBlOiIuCi0g
ICAgICAgIENvbnRlbnRUeXBlUGFyc2VyIGNvbnRlbnRUeXBlUGFyc2VyKG1ha2VTdHJpbmcoIkNv
bnRlbnQtVHlwZToiLCBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSkpOwotICAgICAgICBt
aW1lSGVhZGVyLT5tX2NvbnRlbnRUeXBlID0gY29udGVudFR5cGVQYXJzZXIubWltZVR5cGUoKTsK
KyAgICAgICAgUGFyc2VkQ29udGVudFR5cGUgcGFyc2VkQ29udGVudFR5cGUobWltZVBhcmFtZXRl
cnNJdGVyYXRvci0+dmFsdWUpOworICAgICAgICBtaW1lSGVhZGVyLT5tX2NvbnRlbnRUeXBlID0g
cGFyc2VkQ29udGVudFR5cGUubWltZVR5cGUoKTsKICAgICAgICAgaWYgKCFtaW1lSGVhZGVyLT5p
c011bHRpcGFydCgpKQotICAgICAgICAgICAgbWltZUhlYWRlci0+bV9jaGFyc2V0ID0gY29udGVu
dFR5cGVQYXJzZXIuY2hhcnNldCgpLnN0cmlwV2hpdGVTcGFjZSgpOworICAgICAgICAgICAgbWlt
ZUhlYWRlci0+bV9jaGFyc2V0ID0gcGFyc2VkQ29udGVudFR5cGUuY2hhcnNldCgpLnN0cmlwV2hp
dGVTcGFjZSgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1pbWVIZWFkZXItPm1fbXVs
dGlwYXJ0VHlwZSA9IGNvbnRlbnRUeXBlUGFyc2VyLnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlw
ZSIpOwotICAgICAgICAgICAgbWltZUhlYWRlci0+bV9lbmRPZlBhcnRCb3VuZGFyeSA9IGNvbnRl
bnRUeXBlUGFyc2VyLnBhcmFtZXRlclZhbHVlRm9yTmFtZSgiYm91bmRhcnkiKTsKKyAgICAgICAg
ICAgIG1pbWVIZWFkZXItPm1fbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLnBhcmFt
ZXRlclZhbHVlRm9yTmFtZSgidHlwZSIpOworICAgICAgICAgICAgbWltZUhlYWRlci0+bV9lbmRP
ZlBhcnRCb3VuZGFyeSA9IHBhcnNlZENvbnRlbnRUeXBlLnBhcmFtZXRlclZhbHVlRm9yTmFtZSgi
Ym91bmRhcnkiKTsKICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLT5tX2VuZE9mUGFydEJvdW5k
YXJ5LmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJObyBib3VuZGFyeSBm
b3VuZCBpbiBtdWx0aXBhcnQgTUlNRSBoZWFkZXIuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENv
bnRlbnRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29u
dGVudFR5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwOTVlOTYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNl
ZENvbnRlbnRUeXBlLmNwcApAQCAtMCwwICsxLDI1NSBAQAorIC8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUGFyc2VkQ29udGVudFR5cGUuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRHVtbXlQYXJzZWRDb250ZW50VHlwZSB7CitwdWJsaWM6
CisgICAgdm9pZCBzZXRDb250ZW50VHlwZShjb25zdCBTdWJzdHJpbmdSYW5nZSYpIGNvbnN0IHsg
fQorICAgIHZvaWQgc2V0Q29udGVudFR5cGVQYXJhbWV0ZXIoY29uc3QgU3Vic3RyaW5nUmFuZ2Um
LCBjb25zdCBTdWJzdHJpbmdSYW5nZSYpIGNvbnN0IHsgfQorfTsKKworc3RhdGljIHZvaWQgc2tp
cFNwYWNlcyhjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNpZ25lZCYgc3RhcnRJbmRleCkKK3sKKyAg
ICB3aGlsZSAoc3RhcnRJbmRleCA8IGlucHV0Lmxlbmd0aCgpICYmIGlucHV0W3N0YXJ0SW5kZXhd
ID09ICcgJykKKyAgICAgICAgKytzdGFydEluZGV4OworfQorCitzdGF0aWMgYm9vbCBpc1Rva2Vu
Q2hhcmFjdGVyKGNoYXIgYykKK3sKKyAgICByZXR1cm4gaXNBU0NJSShjKSAmJiBjID4gJyAnICYm
IGMgIT0gJyInICYmIGMgIT0gJygnICYmIGMgIT0gJyknICYmIGMgIT0gJywnICYmIGMgIT0gJy8n
ICYmIChjIDwgJzonIHx8IGMgPiAnQCcpICYmIChjIDwgJ1snIHx8IGMgPiAnXScpOworfQorCitz
dGF0aWMgU3Vic3RyaW5nUmFuZ2UgcGFyc2VUb2tlbihjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNp
Z25lZCYgc3RhcnRJbmRleCkKK3sKKyAgICB1bnNpZ25lZCBpbnB1dExlbmd0aCA9IGlucHV0Lmxl
bmd0aCgpOworICAgIHVuc2lnbmVkIHRva2VuU3RhcnQgPSBzdGFydEluZGV4OworICAgIHVuc2ln
bmVkJiB0b2tlbkVuZCA9IHN0YXJ0SW5kZXg7CisKKyAgICBpZiAodG9rZW5FbmQgPj0gaW5wdXRM
ZW5ndGgpCisgICAgICAgIHJldHVybiBTdWJzdHJpbmdSYW5nZSgpOworCisgICAgd2hpbGUgKHRv
a2VuRW5kIDwgaW5wdXRMZW5ndGgpIHsKKyAgICAgICAgaWYgKCFpc1Rva2VuQ2hhcmFjdGVyKGlu
cHV0W3Rva2VuRW5kXSkpCisgICAgICAgICAgICByZXR1cm4gU3Vic3RyaW5nUmFuZ2UodG9rZW5T
dGFydCwgdG9rZW5FbmQgLSB0b2tlblN0YXJ0KTsKKyAgICAgICAgKyt0b2tlbkVuZDsKKyAgICB9
CisKKyAgICByZXR1cm4gU3Vic3RyaW5nUmFuZ2UodG9rZW5TdGFydCwgdG9rZW5FbmQgLSB0b2tl
blN0YXJ0KTsKK30KKworc3RhdGljIFN1YnN0cmluZ1JhbmdlIHBhcnNlUXVvdGVkU3RyaW5nKGNv
bnN0IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkJiBzdGFydEluZGV4KQoreworICAgIHVuc2lnbmVk
IGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgcXVvdGVkU3RyaW5n
U3RhcnQgPSBzdGFydEluZGV4ICsgMTsKKyAgICB1bnNpZ25lZCYgcXVvdGVkU3RyaW5nRW5kID0g
c3RhcnRJbmRleDsKKworICAgIGlmIChxdW90ZWRTdHJpbmdFbmQgPj0gaW5wdXRMZW5ndGgpCisg
ICAgICAgIHJldHVybiBTdWJzdHJpbmdSYW5nZSgpOworCisgICAgaWYgKGlucHV0W3F1b3RlZFN0
cmluZ0VuZCsrXSAhPSAnIicgfHwgcXVvdGVkU3RyaW5nRW5kID49IGlucHV0TGVuZ3RoKQorICAg
ICAgICByZXR1cm4gU3Vic3RyaW5nUmFuZ2UoKTsKKworICAgIGJvb2wgbGFzdENoYXJhY3Rlcldh
c0JhY2tzbGFzaCA9IGZhbHNlOworICAgIGNoYXIgY3VycmVudENoYXJhY3RlcjsKKyAgICB3aGls
ZSAoKGN1cnJlbnRDaGFyYWN0ZXIgPSBpbnB1dFtxdW90ZWRTdHJpbmdFbmQrK10pICE9ICciJyB8
fCBsYXN0Q2hhcmFjdGVyV2FzQmFja3NsYXNoKSB7CisgICAgICAgIGlmIChxdW90ZWRTdHJpbmdF
bmQgPj0gaW5wdXRMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gU3Vic3RyaW5nUmFuZ2UoKTsK
KyAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT0gJ1xcJyAmJiAhbGFzdENoYXJhY3Rlcldh
c0JhY2tzbGFzaCkgeworICAgICAgICAgICAgbGFzdENoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IHRy
dWU7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAobGFzdENo
YXJhY3Rlcldhc0JhY2tzbGFzaCkKKyAgICAgICAgICAgIGxhc3RDaGFyYWN0ZXJXYXNCYWNrc2xh
c2ggPSBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIFN1YnN0cmluZ1JhbmdlKHF1b3RlZFN0cmlu
Z1N0YXJ0LCBxdW90ZWRTdHJpbmdFbmQgLSBxdW90ZWRTdHJpbmdTdGFydCAtIDEpOworfQorCitz
dGF0aWMgU3RyaW5nIHN1YnN0cmluZ0ZvclJhbmdlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25z
dCBTdWJzdHJpbmdSYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIHN0cmluZy5zdWJzdHJpbmco
cmFuZ2UuZmlyc3QsIHJhbmdlLnNlY29uZCk7Cit9CisKKy8vIEZyb20gaHR0cDovL3Rvb2xzLmll
dGYub3JnL2h0bWwvcmZjMjA0NSNzZWN0aW9uLTUuMToKKy8vCisvLyBjb250ZW50IDo9ICJDb250
ZW50LVR5cGUiICI6IiB0eXBlICIvIiBzdWJ0eXBlCisvLyAgICAgICAgICAgICooIjsiIHBhcmFt
ZXRlcikKKy8vICAgICAgICAgICAgOyBNYXRjaGluZyBvZiBtZWRpYSB0eXBlIGFuZCBzdWJ0eXBl
CisvLyAgICAgICAgICAgIDsgaXMgQUxXQVlTIGNhc2UtaW5zZW5zaXRpdmUuCisvLworLy8gdHlw
ZSA6PSBkaXNjcmV0ZS10eXBlIC8gY29tcG9zaXRlLXR5cGUKKy8vCisvLyBkaXNjcmV0ZS10eXBl
IDo9ICJ0ZXh0IiAvICJpbWFnZSIgLyAiYXVkaW8iIC8gInZpZGVvIiAvCisvLyAgICAgICAgICAg
ICAgICAgICJhcHBsaWNhdGlvbiIgLyBleHRlbnNpb24tdG9rZW4KKy8vCisvLyBjb21wb3NpdGUt
dHlwZSA6PSAibWVzc2FnZSIgLyAibXVsdGlwYXJ0IiAvIGV4dGVuc2lvbi10b2tlbgorLy8KKy8v
IGV4dGVuc2lvbi10b2tlbiA6PSBpZXRmLXRva2VuIC8geC10b2tlbgorLy8KKy8vIGlldGYtdG9r
ZW4gOj0gPEFuIGV4dGVuc2lvbiB0b2tlbiBkZWZpbmVkIGJ5IGEKKy8vICAgICAgICAgICAgICAg
IHN0YW5kYXJkcy10cmFjayBSRkMgYW5kIHJlZ2lzdGVyZWQKKy8vICAgICAgICAgICAgICAgIHdp
dGggSUFOQS4+CisvLworLy8geC10b2tlbiA6PSA8VGhlIHR3byBjaGFyYWN0ZXJzICJYLSIgb3Ig
IngtIiBmb2xsb3dlZCwgd2l0aAorLy8gICAgICAgICAgICAgbm8gaW50ZXJ2ZW5pbmcgd2hpdGUg
c3BhY2UsIGJ5IGFueSB0b2tlbj4KKy8vCisvLyBzdWJ0eXBlIDo9IGV4dGVuc2lvbi10b2tlbiAv
IGlhbmEtdG9rZW4KKy8vCisvLyBpYW5hLXRva2VuIDo9IDxBIHB1YmxpY2x5LWRlZmluZWQgZXh0
ZW5zaW9uIHRva2VuLiBUb2tlbnMKKy8vICAgICAgICAgICAgICAgIG9mIHRoaXMgZm9ybSBtdXN0
IGJlIHJlZ2lzdGVyZWQgd2l0aCBJQU5BCisvLyAgICAgICAgICAgICAgICBhcyBzcGVjaWZpZWQg
aW4gUkZDIDIwNDguPgorLy8KKy8vIHBhcmFtZXRlciA6PSBhdHRyaWJ1dGUgIj0iIHZhbHVlCisv
LworLy8gYXR0cmlidXRlIDo9IHRva2VuCisvLyAgICAgICAgICAgICAgOyBNYXRjaGluZyBvZiBh
dHRyaWJ1dGVzCisvLyAgICAgICAgICAgICAgOyBpcyBBTFdBWVMgY2FzZS1pbnNlbnNpdGl2ZS4K
Ky8vCisvLyB2YWx1ZSA6PSB0b2tlbiAvIHF1b3RlZC1zdHJpbmcKKy8vCisvLyB0b2tlbiA6PSAx
KjxhbnkgKFVTLUFTQ0lJKSBDSEFSIGV4Y2VwdCBTUEFDRSwgQ1RMcywKKy8vICAgICAgICAgICAg
IG9yIHRzcGVjaWFscz4KKy8vCisvLyB0c3BlY2lhbHMgOj0gICIoIiAvICIpIiAvICI8IiAvICI+
IiAvICJAIiAvCisvLyAgICAgICAgICAgICAgICIsIiAvICI7IiAvICI6IiAvICJcIiAvIDwiPgor
Ly8gICAgICAgICAgICAgICAiLyIgLyAiWyIgLyAiXSIgLyAiPyIgLyAiPSIKKy8vICAgICAgICAg
ICAgICAgOyBNdXN0IGJlIGluIHF1b3RlZC1zdHJpbmcsCisvLyAgICAgICAgICAgICAgIDsgdG8g
dXNlIHdpdGhpbiBwYXJhbWV0ZXIgdmFsdWVzCisKK3RlbXBsYXRlIDxjbGFzcyBSZWNlaXZlclR5
cGU+Citib29sIHBhcnNlQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVj
ZWl2ZXJUeXBlJiByZWNlaXZlcikKK3sKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgdW5z
aWduZWQgY29udGVudFR5cGVMZW5ndGggPSBjb250ZW50VHlwZS5sZW5ndGgoKTsKKyAgICBza2lw
U3BhY2VzKGNvbnRlbnRUeXBlLCBpbmRleCk7CisgICAgaWYgKGluZGV4ID49IGNvbnRlbnRUeXBl
TGVuZ3RoKSAgeworICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgQ29udGVudC1UeXBlIHN0cmlu
ZyAnJXMnIiwgY29udGVudFR5cGUuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgLy8gVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgcXVvdGVkIHN0cmlu
Z3MgdW50aWwgd2UgcmVhY2ggdGhlIHBhcmFtZXRlcnMuCisgICAgc2l6ZV90IHNlbWlDb2xvbklu
ZGV4ID0gY29udGVudFR5cGUuZmluZCgnOycsIGluZGV4KTsKKyAgICBpZiAoc2VtaUNvbG9uSW5k
ZXggPT0gbm90Rm91bmQpIHsKKyAgICAgICAgcmVjZWl2ZXIuc2V0Q29udGVudFR5cGUoU3Vic3Ry
aW5nUmFuZ2UoaW5kZXgsIGNvbnRlbnRUeXBlTGVuZ3RoIC0gaW5kZXgpKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgcmVjZWl2ZXIuc2V0Q29udGVudFR5cGUoU3Vic3RyaW5n
UmFuZ2UoaW5kZXgsIHNlbWlDb2xvbkluZGV4IC0gaW5kZXgpKTsKKyAgICBpbmRleCA9IHNlbWlD
b2xvbkluZGV4ICsgMTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBza2lwU3BhY2VzKGNv
bnRlbnRUeXBlLCBpbmRleCk7CisgICAgICAgIFN1YnN0cmluZ1JhbmdlIGtleVJhbmdlID0gcGFy
c2VUb2tlbihjb250ZW50VHlwZSwgaW5kZXgpOworICAgICAgICBpZiAoIWtleVJhbmdlLnNlY29u
ZCB8fCBpbmRleCA+PSBjb250ZW50VHlwZUxlbmd0aCkgeworICAgICAgICAgICAgTE9HX0VSUk9S
KCJJbnZhbGlkIENvbnRlbnQtVHlwZSBwYXJhbWV0ZXIgbmFtZS4iKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNob3VsZCB3ZSB0b2xlcmF0ZSBz
cGFjZXMgaGVyZT8KKyAgICAgICAgaWYgKGNvbnRlbnRUeXBlW2luZGV4KytdICE9ICc9JyB8fCBp
bmRleCA+PSBjb250ZW50VHlwZUxlbmd0aCkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZh
bGlkIENvbnRlbnQtVHlwZSBtYWxmb3JtZWQgcGFyYW1ldGVyLiIpOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLy8gU2hvdWxkIHdlIHRvbGVyYXRlIHNw
YWNlcyBoZXJlPworICAgICAgICBTdHJpbmcgdmFsdWU7CisgICAgICAgIFN1YnN0cmluZ1Jhbmdl
IHZhbHVlUmFuZ2U7CisgICAgICAgIGlmIChjb250ZW50VHlwZVtpbmRleF0gPT0gJyInKQorICAg
ICAgICAgICAgdmFsdWVSYW5nZSA9IHBhcnNlUXVvdGVkU3RyaW5nKGNvbnRlbnRUeXBlLCBpbmRl
eCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhbHVlUmFuZ2UgPSBwYXJzZVRva2VuKGNv
bnRlbnRUeXBlLCBpbmRleCk7CisKKyAgICAgICAgaWYgKCF2YWx1ZVJhbmdlLnNlY29uZCkgewor
ICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIENvbnRlbnQtVHlwZSwgaW52YWxpZCBwYXJh
bWV0ZXIgdmFsdWUuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBTaG91bGQgd2UgdG9sZXJhdGUgc3BhY2VzIGhlcmU/CisgICAgICAgIGlmIChp
bmRleCA8IGNvbnRlbnRUeXBlTGVuZ3RoICYmIGNvbnRlbnRUeXBlW2luZGV4KytdICE9ICc7Jykg
eworICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIENvbnRlbnQtVHlwZSwgaW52YWxpZCBj
aGFyYWN0ZXIgYXQgdGhlIGVuZCBvZiBrZXkvdmFsdWUgcGFyYW1ldGVyLiIpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmVjZWl2ZXIuc2V0Q29udGVu
dFR5cGVQYXJhbWV0ZXIoa2V5UmFuZ2UsIHZhbHVlUmFuZ2UpOworCisgICAgICAgIGlmIChpbmRl
eCA+PSBjb250ZW50VHlwZUxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQorCitib29sIGlzVmFsaWRDb250ZW50VHlwZShjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQoreworICAgIGlmIChjb250ZW50VHlwZS5jb250YWlucygnXHIn
KSB8fCBjb250ZW50VHlwZS5jb250YWlucygnXG4nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgRHVtbXlQYXJzZWRDb250ZW50VHlwZSBwYXJzZWRDb250ZW50VHlwZSA9IER1bW15UGFy
c2VkQ29udGVudFR5cGUoKTsKKyAgICByZXR1cm4gcGFyc2VDb250ZW50VHlwZTxEdW1teVBhcnNl
ZENvbnRlbnRUeXBlPihjb250ZW50VHlwZSwgcGFyc2VkQ29udGVudFR5cGUpOworfQorCitQYXJz
ZWRDb250ZW50VHlwZTo6UGFyc2VkQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkKKyAgICA6IG1fY29udGVudFR5cGUoY29udGVudFR5cGUuc3RyaXBXaGl0ZVNwYWNlKCkpCit7
CisgICAgcGFyc2VDb250ZW50VHlwZTxQYXJzZWRDb250ZW50VHlwZT4obV9jb250ZW50VHlwZSwg
KnRoaXMpOworfQorCitTdHJpbmcgUGFyc2VkQ29udGVudFR5cGU6OmNoYXJzZXQoKSBjb25zdAor
eworICAgIHJldHVybiBwYXJhbWV0ZXJWYWx1ZUZvck5hbWUoImNoYXJzZXQiKTsKK30KKworU3Ry
aW5nIFBhcnNlZENvbnRlbnRUeXBlOjpwYXJhbWV0ZXJWYWx1ZUZvck5hbWUoY29uc3QgU3RyaW5n
JiBuYW1lKSBjb25zdAoreworICAgIHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KG5hbWUpOworfQor
CitzaXplX3QgUGFyc2VkQ29udGVudFR5cGU6OnBhcmFtZXRlckNvdW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wYXJhbWV0ZXJzLnNpemUoKTsKK30KKwordm9pZCBQYXJzZWRDb250ZW50VHlw
ZTo6c2V0Q29udGVudFR5cGUoY29uc3QgU3Vic3RyaW5nUmFuZ2UmIGNvbnRlbnRSYW5nZSkKK3sK
KyAgICBtX21pbWVUeXBlID0gc3Vic3RyaW5nRm9yUmFuZ2UobV9jb250ZW50VHlwZSwgY29udGVu
dFJhbmdlKS5zdHJpcFdoaXRlU3BhY2UoKTsKK30KKwordm9pZCBQYXJzZWRDb250ZW50VHlwZTo6
c2V0Q29udGVudFR5cGVQYXJhbWV0ZXIoY29uc3QgU3Vic3RyaW5nUmFuZ2UmIGtleSwgY29uc3Qg
U3Vic3RyaW5nUmFuZ2UmIHZhbHVlKQoreworICAgIG1fcGFyYW1ldGVycy5zZXQoc3Vic3RyaW5n
Rm9yUmFuZ2UobV9jb250ZW50VHlwZSwga2V5KSwgc3Vic3RyaW5nRm9yUmFuZ2UobV9jb250ZW50
VHlwZSwgdmFsdWUpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjY4NGM2YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgUGFyc2VkQ29udGVudFR5cGVfaAorI2RlZmluZSBQYXJzZWRDb250ZW50VHlwZV9oCisKKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyA8aW5kZXgsIGxlbmd0aD4KK3R5cGVkZWYgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gU3Vic3RyaW5nUmFuZ2U7Citib29sIGlzVmFsaWRD
b250ZW50VHlwZShjb25zdCBTdHJpbmcmKTsKKworLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBj
b21tZW50cy4KK2NsYXNzIFBhcnNlZENvbnRlbnRUeXBlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBQYXJzZWRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBtaW1lVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KKyAgICBTdHJpbmcgY2hhcnNldCgpIGNv
bnN0OworCisgICAgLy8gTm90ZSB0aGF0IGluIHRoZSBjYXNlIG9mIG11bHRpcGxlIHZhbHVlcyBm
b3IgdGhlIHNhbWUgbmFtZSwgdGhlIGxhc3QgdmFsdWUgaXMgcmV0dXJuZWQuCisgICAgU3RyaW5n
IHBhcmFtZXRlclZhbHVlRm9yTmFtZShjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBzaXplX3Qg
cGFyYW1ldGVyQ291bnQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTxjbGFzcyBS
ZWNlaXZlclR5cGU+CisgICAgZnJpZW5kIGJvb2wgcGFyc2VDb250ZW50VHlwZShjb25zdCBTdHJp
bmcmLCBSZWNlaXZlclR5cGUmKTsKKyAgICB2b2lkIHNldENvbnRlbnRUeXBlKGNvbnN0IFN1YnN0
cmluZ1JhbmdlJik7CisgICAgdm9pZCBzZXRDb250ZW50VHlwZVBhcmFtZXRlcihjb25zdCBTdWJz
dHJpbmdSYW5nZSYsIGNvbnN0IFN1YnN0cmluZ1JhbmdlJik7CisKKyAgICB0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEtleVZhbHVlUGFpcnM7CisgICAgU3RyaW5nIG1fY29udGVudFR5
cGU7CisgICAgS2V5VmFsdWVQYWlycyBtX3BhcmFtZXRlcnM7CisgICAgU3RyaW5nIG1fbWltZVR5
cGU7Cit9OworCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>