<?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>114715</bug_id>
          
          <creation_ts>2013-04-16 17:22:14 -0700</creation_ts>
          <short_desc>Move applyProperty from StyleResolver to StyleBuilder.</short_desc>
          <delta_ts>2014-03-02 09:05:48 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>114508</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yuki.sekiguchi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>876963</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-04-16 17:22:14 -0700</bug_when>
    <thetext>Create a new class StyleBuilder, make it a member of StyleResolver and move applyProperty to this class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876966</commentid>
    <comment_count>1</comment_count>
      <attachid>198454</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-04-16 17:35:12 -0700</bug_when>
    <thetext>Created attachment 198454
Patch for testing

Test patch on EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876969</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-16 17:38:56 -0700</bug_when>
    <thetext>Attachment 198454 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/WebCore.vcproj/WebCore.vcproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/css/CSSAllInOne.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSStyleSelector.cpp&apos;, u&apos;Source/WebCore/css/StyleBuilder.cpp&apos;, u&apos;Source/WebCore/css/StyleBuilder.h&apos;, u&apos;Source/WebCore/css/StyleResolver.cpp&apos;, u&apos;Source/WebCore/css/StyleResolver.h&apos;, u&apos;Source/WebCore/rendering/style/RenderStyle.h&apos;]&quot; exit_code: 1
Source/WebCore/css/SVGCSSStyleSelector.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876979</commentid>
    <comment_count>3</comment_count>
      <attachid>198454</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-04-16 17:54:33 -0700</bug_when>
    <thetext>Comment on attachment 198454
Patch for testing

Attachment 198454 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/170112</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876990</commentid>
    <comment_count>4</comment_count>
      <attachid>198457</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-04-16 18:39:50 -0700</bug_when>
    <thetext>Created attachment 198457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876992</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-16 18:43:31 -0700</bug_when>
    <thetext>Attachment 198457 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/WebCore.vcproj/WebCore.vcproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/css/CSSAllInOne.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSStyleSelector.cpp&apos;, u&apos;Source/WebCore/css/StyleBuilder.cpp&apos;, u&apos;Source/WebCore/css/StyleBuilder.h&apos;, u&apos;Source/WebCore/css/StyleResolver.cpp&apos;, u&apos;Source/WebCore/css/StyleResolver.h&apos;, u&apos;Source/WebCore/rendering/style/RenderStyle.h&apos;]&quot; exit_code: 1
Source/WebCore/css/StyleBuilder.cpp:70:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/css/StyleBuilder.cpp:91:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876993</commentid>
    <comment_count>6</comment_count>
      <attachid>198457</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-04-16 18:44:51 -0700</bug_when>
    <thetext>Comment on attachment 198457
Patch

Attachment 198457 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/9303</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877000</commentid>
    <comment_count>7</comment_count>
      <attachid>198460</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-04-16 19:38:04 -0700</bug_when>
    <thetext>Created attachment 198460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877001</commentid>
    <comment_count>8</comment_count>
      <attachid>198460</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-04-16 19:43:25 -0700</bug_when>
    <thetext>Comment on attachment 198460
Patch

Attachment 198460 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/8292</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877016</commentid>
    <comment_count>9</comment_count>
      <attachid>198460</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-16 21:36:34 -0700</bug_when>
    <thetext>Comment on attachment 198460
Patch

Attachment 198460 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/56179</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877024</commentid>
    <comment_count>10</comment_count>
      <attachid>198466</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-04-16 21:57:28 -0700</bug_when>
    <thetext>Created attachment 198466
Patch - with CSS Variables fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877149</commentid>
    <comment_count>11</comment_count>
      <attachid>198466</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-04-17 06:53:36 -0700</bug_when>
    <thetext>Comment on attachment 198466
Patch - with CSS Variables fix

From IRC discussion it sounds like the goals and the end state of this work is unclear. We shouldn&apos;t do large refactoring like this until there is good understanding where we are going.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894280</commentid>
    <comment_count>12</comment_count>
    <who name="Yuki Sekiguchi">yuki.sekiguchi</who>
    <bug_when>2013-05-28 03:19:57 -0700</bug_when>
    <thetext>We came to the conclusion in the contributors meeting[1].

What is the status of this bug?
If no one have time to do single switch statement refactoring, I want to do this refactoring.

[1]: https://docs.google.com/document/d/1EsMhk1X9FjPGWByp33NxKqOOJaMwuGP8FzFl19o4L1M/edit?pli=1</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198454</attachid>
            <date>2013-04-16 17:35:12 -0700</date>
            <delta_ts>2013-04-16 18:39:50 -0700</delta_ts>
            <desc>Patch for testing</desc>
            <filename>deprecateStyleBuilder2.patch</filename>
            <type>text/plain</type>
            <size>113561</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZGU1NzZmMy4uZDk3OGJmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEwODUsNiArMTA4NSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3Mv
U2VsZWN0b3JDaGVja2VyRmFzdFBhdGguY3BwCiAgICAgY3NzL1NlbGVjdG9yRmlsdGVyLmNwcAog
ICAgIGNzcy9TaGFkb3dWYWx1ZS5jcHAKKyAgICBjc3MvU3R5bGVCdWlsZGVyLmNwcAogICAgIGNz
cy9TdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmNwcAogICAgIGNzcy9TdHlsZU1lZGlhLmNwcAog
ICAgIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
aW5kZXggZTc2ZTFkMC4uODM5ZWQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC0yNzMxLDYgKzI3MzEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2Nzcy9TaGFkb3dWYWx1ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1ZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU2libGluZ1RyYXZlcnNhbFN0cmF0ZWdpZXMuaCBcCisJ
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZUJ1aWxkZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlSW52YWxpZGF0aW9u
QW5hbHlzaXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVJbnZhbGlkYXRpb25BbmFs
eXNpcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
aW5kZXggMTNhMGZjMS4uZjM3ZDg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0zMzIsNiArMzMyLDcgQEAg
U09VUkNFUyArPSBcCiAgICAgY3NzL1NlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmNwcCBcCiAgICAg
Y3NzL1NlbGVjdG9yRmlsdGVyLmNwcCBcCiAgICAgY3NzL1NoYWRvd1ZhbHVlLmNwcCBcCisgICAg
Y3NzL1N0eWxlQnVpbGRlci5jcHAgXAogICAgIGNzcy9TdHlsZUludmFsaWRhdGlvbkFuYWx5c2lz
LmNwcCBcCiAgICAgY3NzL1N0eWxlTWVkaWEuY3BwIFwKICAgICBjc3MvU3R5bGVQcm9wZXJ0eVNl
dC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpp
bmRleCAwZjNmYjFmLi5kODAyYTdjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtMzg3MDcsNiArMzg3MDcsNjIgQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXFN0eWxlQnVpbGRlci5jcHAi
CisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIK
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJv
X0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVi
dWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJ
CQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9k
dWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJ
CQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGNzc1xTdHlsZUJ1aWxkZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cY3NzXFN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMuY3BwIgogCQkJ
CT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCAzM2YzMjZjLi5iYTcyZjNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRl
cnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5m
aWx0ZXJzCkBAIC0zNzQ0LDYgKzM3NDQsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Y3NzXFNoYWRvd1ZhbHVlLmNwcCI+CiAgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cY3NzXFN0eWxlQnVpbGRlci5j
cHAiPgorICAgICAgPEZpbHRlcj5jc3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNzc1xTdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmNwcCI+
CiAgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMwMDM3
ZGMuLjg2ZmI1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTU3MjksNiArNTcyOSw4IEBACiAJCUZCMkMxNUMzMTY1RDY0OUQw
MDM5QzlGOCAvKiBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkIyQzE1QzIxNjVENjQ5MDAwMzlDOUY4IC8q
IENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkIzMDU2QzIxNjlFNURBQzAwOTZBMjMyIC8qIENTU0dy
b3VwaW5nUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkIzMDU2QzExNjlFNURBQzAwOTZBMjMyIC8qIENTU0dyb3VwaW5nUnVsZS5oICovOyB9Owog
CQlGQjQ5QzM5RDE2Nzg0OTQ3MDA3RkZCNUQgLyogQ1NTSG9zdFJ1bGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCNDlDMzlDMTY3ODQ5NDcwMDdGRkI1
RCAvKiBDU1NIb3N0UnVsZS5oICovOyB9OworCQlGQjZFMEY5RDE3MUEyMEJCMDBBNUM1QkUgLyog
U3R5bGVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZCNkUwRjlCMTcxQTIwQkIwMEE1QzVCRSAvKiBTdHlsZUJ1aWxkZXIuY3BwICovOyB9
OworCQlGQjZFMEY5RTE3MUEyMEJCMDBBNUM1QkUgLyogU3R5bGVCdWlsZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjZFMEY5QzE3MUEyMEJCMDBB
NUM1QkUgLyogU3R5bGVCdWlsZGVyLmggKi87IH07CiAJCUZCNzhBRDJFMTUxQkY1RTYwMEZFNTRE
MyAvKiBDU1NQYXJzZXJNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGQjc4QUQyQzE1MUJGNUQyMDBGRTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZCOTEzOTI0
MTZBRTRDMTcwMDFGRTY4MiAvKiBET01QYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGQjkxMzkyMDE2QUU0QjBCMDAxRkU2ODIgLyogRE9NUGF0aC5o
ICovOyB9OwogCQlGQjkxMzkyNjE2QUU0QzJGMDAxRkU2ODIgLyogQ2FudmFzUGF0aE1ldGhvZHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCOTEzOTFG
MTZBRTRCMEIwMDFGRTY4MiAvKiBDYW52YXNQYXRoTWV0aG9kcy5oICovOyB9OwpAQCAtMTI1NzAs
NiArMTI1NzIsOCBAQAogCQlGQjMwNTZDMTE2OUU1REFDMDA5NkEyMzIgLyogQ1NTR3JvdXBpbmdS
dWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0dyb3VwaW5nUnVsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjQ5QzM5QzE2Nzg0OTQ3MDA3RkZCNUQg
LyogQ1NTSG9zdFJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTSG9z
dFJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI0OUMzOUUxNjc4NDk1NDAw
N0ZGQjVEIC8qIENTU0hvc3RSdWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NIb3N0
UnVsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZCNkUwRjlCMTcxQTIwQkIw
MEE1QzVCRSAvKiBTdHlsZUJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU3R5bGVCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkI2RTBGOUMxNzFBMjBCQjAwQTVDNUJFIC8qIFN0eWxlQnVpbGRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkI3OEFEMkMxNTFCRjVEMjAwRkU1NEQzIC8qIENTU1BhcnNlck1vZGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUGFyc2VyTW9kZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGQjkxMzkxRTE2QUU0QjBCMDAxRkU2ODIgLyogQ2FudmFzUGF0
aE1ldGhvZHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ2FudmFz
UGF0aE1ldGhvZHMuY3BwOyBwYXRoID0gY2FudmFzL0NhbnZhc1BhdGhNZXRob2RzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI5MTM5MUYxNkFFNEIwQjAwMUZFNjgyIC8qIENh
bnZhc1BhdGhNZXRob2RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENhbnZh
c1BhdGhNZXRob2RzLmg7IHBhdGggPSBjYW52YXMvQ2FudmFzUGF0aE1ldGhvZHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5ODIzLDYgKzE5ODI3LDggQEAKIAkJCQlBNzlCQUQ5
RTE2MUU3RjNGMDBDMkU2NTIgLyogUnVsZUZlYXR1cmUuaCAqLywKIAkJCQlBNzlCQUQ5RjE2MUU3
RjNGMDBDMkU2NTIgLyogUnVsZVNldC5jcHAgKi8sCiAJCQkJQTc5QkFEQTAxNjFFN0YzRjAwQzJF
NjUyIC8qIFJ1bGVTZXQuaCAqLywKKwkJCQlGQjZFMEY5QjE3MUEyMEJCMDBBNUM1QkUgLyogU3R5
bGVCdWlsZGVyLmNwcCAqLywKKwkJCQlGQjZFMEY5QzE3MUEyMEJCMDBBNUM1QkUgLyogU3R5bGVC
dWlsZGVyLmggKi8sCiAJCQkJRTQ0QjRCQjExNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hl
Y2tlci5jcHAgKi8sCiAJCQkJRTQ0QjRCQjIxNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hl
Y2tlci5oICovLAogCQkJCTQxQjhDRDQzMTZEMDQ1OTEwMDBFOENDMCAvKiBTZWxlY3RvckNoZWNr
ZXJGYXN0UGF0aC5jcHAgKi8sCkBAIC0yNDAzOSw2ICsyNDA0NSw3IEBACiAJCQkJRTE1MjU1MTUx
NkZEMjM1MDAwM0Q3QURCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCNTMzNDkxNzE3REVFMzAwRjIwNUY5IC8q
IENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTg4RTBDMjE3
MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkI2
RTBGOUUxNzFBMjBCQjAwQTVDNUJFIC8qIFN0eWxlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0yNjk4OCw2ICsyNjk5NSw3IEBACiAJCQkJRTE1MjU1MTYxNkZEMjM1MDAwM0Q3QURCIC8qIFdl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxQjUzMzQ3MTcxN0QwQTEwMEYyMDVGOSAvKiBDYWNoZWRTVkdEb2N1bWVudFJl
ZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBDMTE3MTVDRTI2MDA2NThEOTgg
LyogVHJhY2tMaXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQjZFMEY5RDE3MUEyMEJC
MDBBNUM1QkUgLyogU3R5bGVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NBbGxJbk9uZS5jcHAKaW5kZXggMDIyYTM0OS4uNjRhNjAwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
QWxsSW5PbmUuY3BwCkBAIC03OSw2ICs3OSw3IEBACiAjaW5jbHVkZSAiUnVsZVNldC5jcHAiCiAj
aW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguY3BwIgogI2luY2x1ZGUgIlNlbGVjdG9y
RmlsdGVyLmNwcCIKKyNpbmNsdWRlICJTdHlsZUJ1aWxkZXIuY3BwIgogI2luY2x1ZGUgIlN0eWxl
UHJvcGVydHlTZXQuY3BwIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuY3BwIgog
I2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1N0
eWxlU2VsZWN0b3IuY3BwCmluZGV4IDcwZDFjYTQuLjkwOTRmNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTI5LDEzICsyOSwxNCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlICJTdHlsZVJlc29sdmVy
LmgiCisjaW5jbHVkZSAiU3R5bGVCdWlsZGVyLmgiCiAKICNpbmNsdWRlICJDU1NQcmltaXRpdmVW
YWx1ZU1hcHBpbmdzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUg
IkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiU2hhZG93
VmFsdWUuaCIKKyNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiU1ZHQ29sb3Iu
aCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhaW50LmgiCkBAIC0xMDIs
MTQgKzEwMywxNCBAQCBzdGF0aWMgQ29sb3IgY29sb3JGcm9tU1ZHQ29sb3JDU1NWYWx1ZShTVkdD
b2xvciogc3ZnQ29sb3IsIGNvbnN0IENvbG9yJiBmZ0NvbG9yKQogICAgIHJldHVybiBjb2xvcjsK
IH0KIAotdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVNWR1Byb3BlcnR5KENTU1Byb3BlcnR5SUQg
aWQsIENTU1ZhbHVlKiB2YWx1ZSkKK3ZvaWQgU3R5bGVCdWlsZGVyOjphcHBseVRvU1ZHUmVuZGVy
U3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTUHJvcGVydHlJRCBpZCwgQ1NT
VmFsdWUqIHZhbHVlKQogewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gMDsKICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKICAgICAgICAgcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKIAotICAgIGNvbnN0IFN0YXRlJiBzdGF0ZSA9IG1fc3RhdGU7CisgICAgY29u
c3QgU3R5bGVSZXNvbHZlcjo6U3RhdGUmIHN0YXRlID0gc3R5bGVSZXNvbHZlci0+bV9zdGF0ZTsK
ICAgICBTVkdSZW5kZXJTdHlsZSogc3Znc3R5bGUgPSBzdGF0ZS5zdHlsZSgpLT5hY2Nlc3NTVkdT
dHlsZSgpOwogCiAgICAgYm9vbCBpc0luaGVyaXQgPSBzdGF0ZS5wYXJlbnROb2RlKCkgJiYgdmFs
dWUtPmlzSW5oZXJpdGVkVmFsdWUoKTsKQEAgLTIzMSwxNiArMjMyLDE2IEBAIHZvaWQgU3R5bGVS
ZXNvbHZlcjo6YXBwbHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFs
dWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChpc0luaGVyaXQpIHsKICAgICAgICAgICAg
ICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnUGFyZW50U3R5bGUgPSBzdGF0ZS5wYXJlbnRT
dHlsZSgpLT5zdmdTdHlsZSgpOwotICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRGaWxsUGFp
bnQoc3ZnUGFyZW50U3R5bGUtPmZpbGxQYWludFR5cGUoKSwgc3ZnUGFyZW50U3R5bGUtPmZpbGxQ
YWludENvbG9yKCksIHN2Z1BhcmVudFN0eWxlLT5maWxsUGFpbnRVcmkoKSwgYXBwbHlQcm9wZXJ0
eVRvUmVndWxhclN0eWxlKCksIGFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7Cisg
ICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldEZpbGxQYWludChzdmdQYXJlbnRTdHlsZS0+Zmls
bFBhaW50VHlwZSgpLCBzdmdQYXJlbnRTdHlsZS0+ZmlsbFBhaW50Q29sb3IoKSwgc3ZnUGFyZW50
U3R5bGUtPmZpbGxQYWludFVyaSgpLCBzdGF0ZS5hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUo
KSwgc3RhdGUuYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaXNJbml0aWFsKSB7
Ci0gICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldEZpbGxQYWludChTVkdSZW5kZXJTdHlsZTo6
aW5pdGlhbEZpbGxQYWludFR5cGUoKSwgU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxGaWxsUGFpbnRD
b2xvcigpLCBTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbEZpbGxQYWludFVyaSgpLCBhcHBseVByb3Bl
cnR5VG9SZWd1bGFyU3R5bGUoKSwgYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpKTsK
KyAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0RmlsbFBhaW50KFNWR1JlbmRlclN0eWxlOjpp
bml0aWFsRmlsbFBhaW50VHlwZSgpLCBTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbEZpbGxQYWludENv
bG9yKCksIFNWR1JlbmRlclN0eWxlOjppbml0aWFsRmlsbFBhaW50VXJpKCksIHN0YXRlLmFwcGx5
UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBzdGF0ZS5hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlu
a1N0eWxlKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmICh2YWx1ZS0+aXNTVkdQYWludCgpKSB7CiAgICAgICAgICAgICAgICAgU1ZHUGFp
bnQqIHN2Z1BhaW50ID0gc3RhdGljX2Nhc3Q8U1ZHUGFpbnQqPih2YWx1ZSk7Ci0gICAgICAgICAg
ICAgICAgc3Znc3R5bGUtPnNldEZpbGxQYWludChzdmdQYWludC0+cGFpbnRUeXBlKCksIGNvbG9y
RnJvbVNWR0NvbG9yQ1NTVmFsdWUoc3ZnUGFpbnQsIHN0YXRlLnN0eWxlKCktPmNvbG9yKCkpLCBz
dmdQYWludC0+dXJpKCksIGFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBhcHBseVByb3Bl
cnR5VG9WaXNpdGVkTGlua1N0eWxlKCkpOworICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5zZXRG
aWxsUGFpbnQoc3ZnUGFpbnQtPnBhaW50VHlwZSgpLCBjb2xvckZyb21TVkdDb2xvckNTU1ZhbHVl
KHN2Z1BhaW50LCBzdGF0ZS5zdHlsZSgpLT5jb2xvcigpKSwgc3ZnUGFpbnQtPnVyaSgpLCBzdGF0
ZS5hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgc3RhdGUuYXBwbHlQcm9wZXJ0eVRvVmlz
aXRlZExpbmtTdHlsZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CkBAIC0yNDgsMTYgKzI0OSwxNiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5U1ZH
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoaXNJbmhlcml0KSB7CiAgICAgICAgICAgICAgICAgY29uc3QgU1ZHUmVu
ZGVyU3R5bGUqIHN2Z1BhcmVudFN0eWxlID0gc3RhdGUucGFyZW50U3R5bGUoKS0+c3ZnU3R5bGUo
KTsKLSAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0U3Ryb2tlUGFpbnQoc3ZnUGFyZW50U3R5
bGUtPnN0cm9rZVBhaW50VHlwZSgpLCBzdmdQYXJlbnRTdHlsZS0+c3Ryb2tlUGFpbnRDb2xvcigp
LCBzdmdQYXJlbnRTdHlsZS0+c3Ryb2tlUGFpbnRVcmkoKSwgYXBwbHlQcm9wZXJ0eVRvUmVndWxh
clN0eWxlKCksIGFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7CisgICAgICAgICAg
ICAgICAgc3Znc3R5bGUtPnNldFN0cm9rZVBhaW50KHN2Z1BhcmVudFN0eWxlLT5zdHJva2VQYWlu
dFR5cGUoKSwgc3ZnUGFyZW50U3R5bGUtPnN0cm9rZVBhaW50Q29sb3IoKSwgc3ZnUGFyZW50U3R5
bGUtPnN0cm9rZVBhaW50VXJpKCksIHN0YXRlLmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgp
LCBzdGF0ZS5hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChpc0luaXRpYWwpIHsK
LSAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0U3Ryb2tlUGFpbnQoU1ZHUmVuZGVyU3R5bGU6
OmluaXRpYWxTdHJva2VQYWludFR5cGUoKSwgU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxTdHJva2VQ
YWludENvbG9yKCksIFNWR1JlbmRlclN0eWxlOjppbml0aWFsU3Ryb2tlUGFpbnRVcmkoKSwgYXBw
bHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCksIGFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5
bGUoKSk7CisgICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldFN0cm9rZVBhaW50KFNWR1JlbmRl
clN0eWxlOjppbml0aWFsU3Ryb2tlUGFpbnRUeXBlKCksIFNWR1JlbmRlclN0eWxlOjppbml0aWFs
U3Ryb2tlUGFpbnRDb2xvcigpLCBTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbFN0cm9rZVBhaW50VXJp
KCksIHN0YXRlLmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBzdGF0ZS5hcHBseVByb3Bl
cnR5VG9WaXNpdGVkTGlua1N0eWxlKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmICh2YWx1ZS0+aXNTVkdQYWludCgpKSB7CiAgICAgICAg
ICAgICAgICAgU1ZHUGFpbnQqIHN2Z1BhaW50ID0gc3RhdGljX2Nhc3Q8U1ZHUGFpbnQqPih2YWx1
ZSk7Ci0gICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldFN0cm9rZVBhaW50KHN2Z1BhaW50LT5w
YWludFR5cGUoKSwgY29sb3JGcm9tU1ZHQ29sb3JDU1NWYWx1ZShzdmdQYWludCwgc3RhdGUuc3R5
bGUoKS0+Y29sb3IoKSksIHN2Z1BhaW50LT51cmkoKSwgYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0
eWxlKCksIGFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7CisgICAgICAgICAgICAg
ICAgc3Znc3R5bGUtPnNldFN0cm9rZVBhaW50KHN2Z1BhaW50LT5wYWludFR5cGUoKSwgY29sb3JG
cm9tU1ZHQ29sb3JDU1NWYWx1ZShzdmdQYWludCwgc3RhdGUuc3R5bGUoKS0+Y29sb3IoKSksIHN2
Z1BhaW50LT51cmkoKSwgc3RhdGUuYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCksIHN0YXRl
LmFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNTcwLDcgKzU3MSw3IEBAIHZvaWQgU3R5bGVS
ZXNvbHZlcjo6YXBwbHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFs
dWUpCiAgICAgICAgICAgICBpbnQgYmx1ciA9IGl0ZW0tPmJsdXIgPyBpdGVtLT5ibHVyLT5jb21w
dXRlTGVuZ3RoPGludD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpKSA6
IDA7CiAgICAgICAgICAgICBDb2xvciBjb2xvcjsKICAgICAgICAgICAgIGlmIChpdGVtLT5jb2xv
cikKLSAgICAgICAgICAgICAgICBjb2xvciA9IGNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKGl0ZW0t
PmNvbG9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICBjb2xvciA9IHN0eWxlUmVzb2x2ZXItPmNv
bG9yRnJvbVByaW1pdGl2ZVZhbHVlKGl0ZW0tPmNvbG9yLmdldCgpKTsKIAogICAgICAgICAgICAg
Ly8gLXdlYmtpdC1zdmctc2hhZG93IGRvZXMgc2hvdWxkIG5vdCBoYXZlIGEgc3ByZWFkIG9yIHN0
eWxlCiAgICAgICAgICAgICBBU1NFUlQoIWl0ZW0tPnNwcmVhZCk7CkBAIC02MDYsNyArNjA3LDcg
QEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVNWR1Byb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQs
IENTU1ZhbHVlKiB2YWx1ZSkKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgLy8gSWYgeW91IGNyYXNoIGhlcmUsIGl0J3MgYmVjYXVzZSB5b3UgYWRkZWQgYSBjc3MgcHJv
cGVydHkgYW5kIGFyZSBub3QgaGFuZGxpbmcgaXQKLSAgICAgICAgICAgIC8vIGluIGVpdGhlciB0
aGlzIHN3aXRjaCBzdGF0ZW1lbnQgb3IgdGhlIG9uZSBpbiBTdHlsZVJlc29sdmVyOjphcHBseVBy
b3BlcnR5CisgICAgICAgICAgICAvLyBpbiBlaXRoZXIgdGhpcyBzd2l0Y2ggc3RhdGVtZW50IG9y
IHRoZSBvbmUgaW4gU3R5bGVCdWlsZGVyOjphcHBseVRvU1ZHUmVuZGVyU3R5bGUKICAgICAgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoMCwgInVuaW1wbGVtZW50ZWQgcHJvcGVydHlJRDogJWQi
LCBpZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWls
ZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTMxZWYyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5jcHAKQEAgLTAs
MCArMSwxMTY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xs
QGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDQtMjAwNSBBbGxhbiBTYW5kZmVsZCBKZW5z
ZW4gKGtkZUBjYXJld29sZi5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgTmljaG9s
YXMgU2hhbmtzICh3ZWJraXRAbmlja3NoYW5rcy5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQcm9z
a3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggRXJp
YyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBU
b3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1v
YmlsZS5jb20vKQorICogQ29weXJpZ2h0IChjKSAyMDExLCBDb2RlIEF1cm9yYSBGb3J1bS4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFk
b2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3R5bGVCdWlsZGVyLmgiCisKKyNp
bmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTR3JhZGllbnRWYWx1
ZS5oIgorI2lmIEVOQUJMRShDU1NfSU1BR0VfU0VUKQorI2luY2x1ZGUgIkNTU0ltYWdlU2V0VmFs
dWUuaCIKKyNlbmRpZgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAi
Q1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCisj
aW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5o
IgorI2luY2x1ZGUgIkNvdW50ZXIuaCIKKyNpbmNsdWRlICJDb3VudGVyQ29udGVudC5oIgorI2lm
IEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKKyNpbmNsdWRlICJEYXNoYm9hcmRSZWdpb24uaCIK
KyNlbmRpZgorI2luY2x1ZGUgIkRlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJG
b250RmVhdHVyZVZhbHVlLmgiCisjaW5jbHVkZSAiRm9udFZhbHVlLmgiCisjaW5jbHVkZSAiTG9j
YWxlVG9TY3JpcHRNYXBwaW5nLmgiCisjaW5jbHVkZSAiUGFpci5oIgorI2luY2x1ZGUgIlF1b3Rl
c0RhdGEuaCIKKyNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgi
CisjaW5jbHVkZSAiU2hhZG93RGF0YS5oIgorI2luY2x1ZGUgIlNoYWRvd1ZhbHVlLmgiCisjaW5j
bHVkZSAiU3R5bGVHZW5lcmF0ZWRJbWFnZS5oIgorI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9y
dGhhbmQuaCIKKyNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNkZWZpbmUgSEFORExFX0lOSEVSSVQocHJv
cCwgUHJvcCkgXAoraWYgKGlzSW5oZXJpdCkgeyBcCisgICAgc3RhdGUuc3R5bGUoKS0+c2V0IyNQ
cm9wKHN0YXRlLnBhcmVudFN0eWxlKCktPnByb3AoKSk7IFwKKyAgICByZXR1cm47IFwKK30KKwor
I2RlZmluZSBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChwcm9wLCBQcm9wKSBcCitIQU5ETEVf
SU5IRVJJVChwcm9wLCBQcm9wKSBcCitpZiAoaXNJbml0aWFsKSB7IFwKKyAgICBzdGF0ZS5zdHls
ZSgpLT5zZXQjI1Byb3AoUmVuZGVyU3R5bGU6OmluaXRpYWwjI1Byb3AoKSk7IFwKKyAgICByZXR1
cm47IFwKK30KKworc3RhdGljIGJvb2wgY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIGNvbnN0IFN0eWxlUmVzb2x2ZXI6OlN0YXRlJiBzdGF0
ZSwgTGVuZ3RoJiB3b3JraW5nTGVuZ3RoKQoreworICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSA9PSBDU1NWYWx1ZVdlYmtpdE1pbkNvbnRlbnQpIHsKKyAgICAgICAgd29ya2luZ0xl
bmd0aCA9IExlbmd0aChNaW5Db250ZW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlV2Via2l0TWF4
Q29udGVudCkgeworICAgICAgICB3b3JraW5nTGVuZ3RoID0gTGVuZ3RoKE1heENvbnRlbnQpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB3b3JraW5nTGVuZ3RoID0gcHJpbWl0
aXZlVmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2Vu
dENvbnZlcnNpb24gfCBWaWV3cG9ydFBlcmNlbnRhZ2VDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNp
b24+KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSwgc3RhdGUuc3R5bGUo
KS0+ZWZmZWN0aXZlWm9vbSgpKTsKKyAgICBpZiAod29ya2luZ0xlbmd0aC5pc1VuZGVmaW5lZCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTGVu
Z3RoKCkpCisgICAgICAgIHdvcmtpbmdMZW5ndGguc2V0UXVpcmsocHJpbWl0aXZlVmFsdWUtPmlz
UXVpcmtWYWx1ZSgpKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBjcmVh
dGVHcmlkVHJhY2tTaXplKENTU1ZhbHVlKiB2YWx1ZSwgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXpl
LCBjb25zdCBTdHlsZVJlc29sdmVyOjpTdGF0ZSYgc3RhdGUpCit7CisgICAgaWYgKCF2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKKyAgICBQYWlyKiBtaW5NYXhUcmFja0JyZWFkdGggPSBwcmltaXRpdmVWYWx1
ZS0+Z2V0UGFpclZhbHVlKCk7CisgICAgaWYgKCFtaW5NYXhUcmFja0JyZWFkdGgpIHsKKyAgICAg
ICAgTGVuZ3RoIHdvcmtpbmdMZW5ndGg7CisgICAgICAgIGlmICghY3JlYXRlR3JpZFRyYWNrQnJl
YWR0aChwcmltaXRpdmVWYWx1ZSwgc3RhdGUsIHdvcmtpbmdMZW5ndGgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIHRyYWNrU2l6ZS5zZXRMZW5ndGgod29ya2luZ0xlbmd0
aCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIExlbmd0aCBtaW5UcmFja0Jy
ZWFkdGg7CisgICAgTGVuZ3RoIG1heFRyYWNrQnJlYWR0aDsKKyAgICBpZiAoIWNyZWF0ZUdyaWRU
cmFja0JyZWFkdGgobWluTWF4VHJhY2tCcmVhZHRoLT5maXJzdCgpLCBzdGF0ZSwgbWluVHJhY2tC
cmVhZHRoKSB8fCAhY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChtaW5NYXhUcmFja0JyZWFkdGgtPnNl
Y29uZCgpLCBzdGF0ZSwgbWF4VHJhY2tCcmVhZHRoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgdHJhY2tTaXplLnNldE1pbk1heChtaW5UcmFja0JyZWFkdGgsIG1heFRyYWNrQnJlYWR0
aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGNyZWF0ZUdyaWRUcmFja0xp
c3QoQ1NTVmFsdWUqIHZhbHVlLCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIHRyYWNrU2l6ZXMsIGNv
bnN0IFN0eWxlUmVzb2x2ZXI6OlN0YXRlJiBzdGF0ZSkKK3sKKyAgICAvLyBIYW5kbGUgJ25vbmUn
LgorICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odmFsdWUpOworICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0g
Q1NTVmFsdWVOb25lOworICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzVmFsdWVMaXN0KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaSA9
IHZhbHVlOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNlKCkpIHsKKyAgICAgICAgQ1NTVmFsdWUqIGN1
cnJWYWx1ZSA9IGkudmFsdWUoKTsKKyAgICAgICAgR3JpZFRyYWNrU2l6ZSB0cmFja1NpemU7Cisg
ICAgICAgIGlmICghY3JlYXRlR3JpZFRyYWNrU2l6ZShjdXJyVmFsdWUsIHRyYWNrU2l6ZSwgc3Rh
dGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHRyYWNrU2l6ZXMuYXBw
ZW5kKHRyYWNrU2l6ZSk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCisKK3N0YXRpYyBi
b29sIGNyZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1ZSogdmFsdWUsIEdyaWRQb3NpdGlvbiYgcG9z
aXRpb24pCit7CisgICAgLy8gRm9yIG5vdywgd2Ugb25seSBhY2NlcHQ6IDxpbnRlZ2VyPiB8ICdh
dXRvJworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihwcmltaXRpdmVWYWx1ZS0+aXNOdW1i
ZXIoKSk7CisgICAgcG9zaXRpb24uc2V0SW50ZWdlclBvc2l0aW9uKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJbnRWYWx1ZSgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworU3R5bGVCdWlsZGVyOjpTdHls
ZUJ1aWxkZXIoKQorICAgIDogbV9kZXByZWNhdGVkU3R5bGVCdWlsZGVyKERlcHJlY2F0ZWRTdHls
ZUJ1aWxkZXI6OnNoYXJlZFN0eWxlQnVpbGRlcigpKQoreworfQorCitpbmxpbmUgYm9vbCBpc1Zh
bGlkVmlzaXRlZExpbmtQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkKQoreworICAgIHN3aXRjaCAo
aWQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0
Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3I6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uUnVsZUNvbG9yOgorI2lmIEVOQUJMRShDU1MzX1RFWFQpCisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uQ29sb3I6CisjZW5kaWYgLy8gQ1NTM19URVhUCisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0U3Ryb2tlQ29sb3I6CisjaWYgRU5BQkxFKFNWRykKKyAgICBjYXNlIENTU1Byb3BlcnR5Rmls
bDoKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlOgorI2VuZGlmCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBTdHlsZUJ1aWxkZXI6OmFwcGx5VG9SZW5kZXJTdHlsZShTdHlsZVJl
c29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUp
Cit7CisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgaWYgKGlkICE9IENTU1Byb3BlcnR5
VmFyaWFibGUgJiYgaGFzVmFyaWFibGVSZWZlcmVuY2UodmFsdWUpKSB7CisgICAgICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8Q1NTUHJvcGVydHlJRCwgU3RyaW5nPiA+IGtub3duRXhwcmVzc2lvbnM7Cisg
ICAgICAgIHN0eWxlUmVzb2x2ZXItPnJlc29sdmVWYXJpYWJsZXMoaWQsIHZhbHVlLCBrbm93bkV4
cHJlc3Npb25zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgLy8gQ1NT
IHZhcmlhYmxlcyBkb24ndCByZXNvbHZlIHNob3J0aGFuZHMgYXQgcGFyc2luZyB0aW1lLCBzbyB0
aGlzIHNob3VsZCBiZSAqYWZ0ZXIqIGhhbmRsaW5nIHZhcmlhYmxlcy4KKyAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKCFpc0V4cGFuZGVkU2hvcnRoYW5kKGlkKSwgIlNob3J0aGFuZCBwcm9wZXJ0eSBp
ZCA9ICVkIHdhc24ndCBleHBhbmRlZCBhdCBwYXJzaW5nIHRpbWUiLCBpZCk7CisKKyAgICBTdHls
ZVJlc29sdmVyOjpTdGF0ZSYgc3RhdGUgPSBzdHlsZVJlc29sdmVyLT5tX3N0YXRlOworICAgIGJv
b2wgaXNJbmhlcml0ID0gc3RhdGUucGFyZW50Tm9kZSgpICYmIHZhbHVlLT5pc0luaGVyaXRlZFZh
bHVlKCk7CisgICAgYm9vbCBpc0luaXRpYWwgPSB2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSB8fCAo
IXN0YXRlLnBhcmVudE5vZGUoKSAmJiB2YWx1ZS0+aXNJbmhlcml0ZWRWYWx1ZSgpKTsKKworICAg
IEFTU0VSVCghaXNJbmhlcml0IHx8ICFpc0luaXRpYWwpOyAvLyBpc0luaGVyaXQgLT4gIWlzSW5p
dGlhbCAmJiBpc0luaXRpYWwgLT4gIWlzSW5oZXJpdAorICAgIEFTU0VSVCghaXNJbmhlcml0IHx8
IChzdGF0ZS5wYXJlbnROb2RlKCkgJiYgc3RhdGUucGFyZW50U3R5bGUoKSkpOyAvLyBpc0luaGVy
aXQgLT4gKHN0YXRlLnBhcmVudE5vZGUoKSAmJiBzdGF0ZS5wYXJlbnRTdHlsZSgpKQorCisgICAg
aWYgKCFzdGF0ZS5hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSAmJiAoIXN0YXRlLmFwcGx5
UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSB8fCAhaXNWYWxpZFZpc2l0ZWRMaW5rUHJvcGVy
dHkoaWQpKSkgeworICAgICAgICAvLyBMaW1pdCB0aGUgcHJvcGVydGllcyB0aGF0IGNhbiBiZSBh
cHBsaWVkIHRvIG9ubHkgdGhlIG9uZXMgaG9ub3JlZCBieSA6dmlzaXRlZC4KKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmIChpc0luaGVyaXQgJiYgIXN0YXRlLnBhcmVudFN0eWxlKCkt
Pmhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgJiYgIUNTU1Byb3BlcnR5Ojppc0lu
aGVyaXRlZFByb3BlcnR5KGlkKSkKKyAgICAgICAgc3RhdGUucGFyZW50U3R5bGUoKS0+c2V0SGFz
RXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKTsKKworICAgIC8vIENoZWNrIGxvb2t1cCB0
YWJsZSBmb3IgaW1wbGVtZW50YXRpb25zIGFuZCB1c2Ugd2hlbiBhdmFpbGFibGUuCisgICAgY29u
c3QgUHJvcGVydHlIYW5kbGVyJiBoYW5kbGVyID0gbV9kZXByZWNhdGVkU3R5bGVCdWlsZGVyLnBy
b3BlcnR5SGFuZGxlcihpZCk7CisgICAgaWYgKGhhbmRsZXIuaXNWYWxpZCgpKSB7CisgICAgICAg
IGlmIChpc0luaGVyaXQpCisgICAgICAgICAgICBoYW5kbGVyLmFwcGx5SW5oZXJpdFZhbHVlKGlk
LCBzdHlsZVJlc29sdmVyKTsKKyAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKQorICAgICAgICAg
ICAgaGFuZGxlci5hcHBseUluaXRpYWxWYWx1ZShpZCwgc3R5bGVSZXNvbHZlcik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGhhbmRsZXIuYXBwbHlWYWx1ZShpZCwgc3R5bGVSZXNvbHZlciwg
dmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHByaW1pdGl2ZVZhbHVlID0gdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSA/IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpIDogMDsKKworICAgIGZsb2F0IHpvb21GYWN0b3Ig
PSBzdGF0ZS5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7CisKKyAgICAvLyBXaGF0IGZvbGxvd3Mg
aXMgYSBsaXN0IHRoYXQgbWFwcyB0aGUgQ1NTIHByb3BlcnRpZXMgaW50byB0aGVpciBjb3JyZXNw
b25kaW5nIGZyb250LWVuZAorICAgIC8vIFJlbmRlclN0eWxlIHZhbHVlcy4KKyAgICBzd2l0Y2gg
KGlkKSB7CisgICAgLy8gbGlzdHMKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29udGVudDoKKyAgICAg
ICAgLy8gTGlzdCBvZiBzdHJpbmcsIHVyaSwgY291bnRlciwgYXR0ciwgaS4KKyAgICAgICAgewor
ICAgICAgICAgICAgLy8gRklYTUU6IEluIENTUzMsIGl0IHdpbGwgYmUgcG9zc2libGUgdG8gaW5o
ZXJpdCBjb250ZW50LiBJbiBDU1MyIGl0IGlzIG5vdC4gVGhpcworICAgICAgICAgICAgLy8gbm90
ZSBpcyBhIHJlbWluZGVyIHRoYXQgZXZlbnR1YWxseSAiaW5oZXJpdCIgbmVlZHMgdG8gYmUgc3Vw
cG9ydGVkLgorCisgICAgICAgICAgICBpZiAoaXNJbml0aWFsKSB7CisgICAgICAgICAgICAgICAg
c3RhdGUuc3R5bGUoKS0+Y2xlYXJDb250ZW50KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgYm9vbCBkaWRTZXQgPSBmYWxz
ZTsKKyAgICAgICAgICAgIGZvciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaSA9IHZhbHVlOyBpLmhh
c01vcmUoKTsgaS5hZHZhbmNlKCkpIHsKKyAgICAgICAgICAgICAgICBDU1NWYWx1ZSogaXRlbSA9
IGkudmFsdWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoaXRlbS0+aXNJbWFnZUdlbmVyYXRvclZh
bHVlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0tPmlzR3JhZGllbnRWYWx1ZSgp
KQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudChTdHls
ZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Q1NTR3JhZGllbnRWYWx1ZSo+KGl0
ZW0pLT5ncmFkaWVudFdpdGhTdHlsZXNSZXNvbHZlZChzdHlsZVJlc29sdmVyKS5nZXQoKSksIGRp
ZFNldCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRlLnN0eWxlKCktPnNldENvbnRlbnQoU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKHN0
YXRpY19jYXN0PENTU0ltYWdlR2VuZXJhdG9yVmFsdWUqPihpdGVtKSksIGRpZFNldCk7CisgICAg
ICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CisjaWYgRU5BQkxFKENTU19JTUFHRV9TRVQp
CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLT5pc0ltYWdlU2V0VmFsdWUoKSkgewor
ICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KHN0eWxlUmVzb2x2
ZXItPnNldE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUNvbnRlbnQsIHN0YXRpY19jYXN0
PENTU0ltYWdlU2V0VmFsdWUqPihpdGVtKSksIGRpZFNldCk7CisgICAgICAgICAgICAgICAgICAg
IGRpZFNldCA9IHRydWU7CisjZW5kaWYKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBpZiAoaXRlbS0+aXNJbWFnZVZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3Rh
dGUuc3R5bGUoKS0+c2V0Q29udGVudChzdHlsZVJlc29sdmVyLT5jYWNoZWRPclBlbmRpbmdGcm9t
VmFsdWUoQ1NTUHJvcGVydHlDb250ZW50LCBzdGF0aWNfY2FzdDxDU1NJbWFnZVZhbHVlKj4oaXRl
bSkpLCBkaWRTZXQpOworICAgICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29udGVudFZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKKworICAgICAgICAg
ICAgICAgIGlmIChjb250ZW50VmFsdWUtPmlzU3RyaW5nKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudChjb250ZW50VmFsdWUtPmdldFN0cmluZ1ZhbHVl
KCkuaW1wbCgpLCBkaWRTZXQpOworICAgICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGVudFZhbHVlLT5pc0F0dHIoKSkgeworICAg
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ2FuIGEgbmFtZXNwYWNlIGJlIHNwZWNpZmllZCBm
b3IgYW4gYXR0cihmb28pPworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUuc3R5bGUoKS0+
c3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8pCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5z
dHlsZSgpLT5zZXRVbmlxdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGUucGFyZW50U3R5bGUoKS0+c2V0VW5pcXVlKCk7CisgICAgICAg
ICAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgYXR0cihudWxsQXRvbSwgY29udGVudFZhbHVlLT5n
ZXRTdHJpbmdWYWx1ZSgpLmltcGwoKSwgbnVsbEF0b20pOworICAgICAgICAgICAgICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gc3RhdGUuZWxlbWVudCgpLT5nZXRBdHRyaWJ1dGUo
YXR0cik7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldENvbnRlbnQodmFs
dWUuaXNOdWxsKCkgPyBlbXB0eUF0b20gOiB2YWx1ZS5pbXBsKCksIGRpZFNldCk7CisgICAgICAg
ICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lz
dGVyIHRoZSBmYWN0IHRoYXQgdGhlIGF0dHJpYnV0ZSB2YWx1ZSBhZmZlY3RzIHRoZSBzdHlsZQor
ICAgICAgICAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5ydWxlU2V0cygpLmZlYXR1cmVzKCku
YXR0cnNJblJ1bGVzLmFkZChhdHRyLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChjb250ZW50VmFsdWUtPmlzQ291bnRlcigpKSB7CisgICAgICAgICAgICAg
ICAgICAgIENvdW50ZXIqIGNvdW50ZXJWYWx1ZSA9IGNvbnRlbnRWYWx1ZS0+Z2V0Q291bnRlclZh
bHVlKCk7CisgICAgICAgICAgICAgICAgICAgIEVMaXN0U3R5bGVUeXBlIGxpc3RTdHlsZVR5cGUg
PSBOb25lTGlzdFN0eWxlOworICAgICAgICAgICAgICAgICAgICBpbnQgbGlzdFN0eWxlSWRlbnQg
PSBjb3VudGVyVmFsdWUtPmxpc3RTdHlsZUlkZW50KCk7CisgICAgICAgICAgICAgICAgICAgIGlm
IChsaXN0U3R5bGVJZGVudCAhPSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICAgICAgICAgICAg
ICBsaXN0U3R5bGVUeXBlID0gc3RhdGljX2Nhc3Q8RUxpc3RTdHlsZVR5cGU+KGxpc3RTdHlsZUlk
ZW50IC0gQ1NTVmFsdWVEaXNjKTsKKyAgICAgICAgICAgICAgICAgICAgT3duUHRyPENvdW50ZXJD
b250ZW50PiBjb3VudGVyID0gYWRvcHRQdHIobmV3IENvdW50ZXJDb250ZW50KGNvdW50ZXJWYWx1
ZS0+aWRlbnRpZmllcigpLCBsaXN0U3R5bGVUeXBlLCBjb3VudGVyVmFsdWUtPnNlcGFyYXRvcigp
KSk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldENvbnRlbnQoY291bnRl
ci5yZWxlYXNlKCksIGRpZFNldCk7CisgICAgICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7
CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChj
b250ZW50VmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NW
YWx1ZU9wZW5RdW90ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNl
dENvbnRlbnQoT1BFTl9RVU9URSwgZGlkU2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRp
ZFNldCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUNsb3NlUXVvdGU6CisgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KENMT1NFX1FVT1RFLCBkaWRTZXQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9PcGVuUXVvdGU6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KE5PX09QRU5f
UVVPVEUsIGRpZFNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVOb0Nsb3NlUXVvdGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdHls
ZSgpLT5zZXRDb250ZW50KE5PX0NMT1NFX1FVT1RFLCBkaWRTZXQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgLy8g
bm9ybWFsIGFuZCBub25lIGRvIG5vdCBoYXZlIGFueSBlZmZlY3QuCisgICAgICAgICAgICAgICAg
ICAgICAgICB7IH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghZGlkU2V0KQorICAgICAgICAgICAgICAgIHN0
YXRlLnN0eWxlKCktPmNsZWFyQ29udGVudCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVF1b3RlczoKKyAgICAgICAgaWYgKGlzSW5oZXJpdCkg
eworICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0UXVvdGVzKHN0YXRlLnBhcmVudFN0eWxl
KCktPnF1b3RlcygpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoaXNJbml0aWFsKSB7CisgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRRdW90ZXMoMCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlLT5pc1Zh
bHVlTGlzdCgpKSB7CisgICAgICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2Fz
dDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisgICAgICAgICAgICBSZWZQdHI8UXVvdGVzRGF0YT4g
cXVvdGVzID0gUXVvdGVzRGF0YTo6Y3JlYXRlKCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGxpc3QtPmxlbmd0aCgpOyBpICs9IDIpIHsKKyAgICAgICAgICAgICAgICBDU1NW
YWx1ZSogZmlyc3QgPSBsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOworICAgICAgICAg
ICAgICAgIC8vIGl0ZW0oKSByZXR1cm5zIG51bGwgaWYgb3V0IG9mIGJvdW5kcyBzbyB0aGlzIGlz
IHNhZmUuCisgICAgICAgICAgICAgICAgQ1NTVmFsdWUqIHNlY29uZCA9IGxpc3QtPml0ZW0oaSAr
IDEpOworICAgICAgICAgICAgICAgIGlmICghc2Vjb25kKQorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihmaXJzdC0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihzZWNvbmQtPmlzUHJpbWl0aXZlVmFsdWUoKSk7CisgICAg
ICAgICAgICAgICAgU3RyaW5nIHN0YXJ0UXVvdGUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KGZpcnN0KS0+Z2V0U3RyaW5nVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcg
ZW5kUXVvdGUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHNlY29uZCktPmdldFN0
cmluZ1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgcXVvdGVzLT5hZGRQYWlyKHN0ZDo6bWFrZV9w
YWlyKHN0YXJ0UXVvdGUsIGVuZFF1b3RlKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBz
dGF0ZS5zdHlsZSgpLT5zZXRRdW90ZXMocXVvdGVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICAg
ICAgc3RhdGUuc3R5bGUoKS0+c2V0UXVvdGVzKFF1b3Rlc0RhdGE6OmNyZWF0ZSgpKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm47CisgICAgLy8gU2hvcnRoYW5kIHByb3BlcnRpZXMuCisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUZvbnQ6CisgICAgICAgIGlmIChpc0luaGVyaXQpIHsKKyAgICAgICAg
ICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzdGF0ZS5wYXJlbnRTdHlsZSgp
LT5mb250RGVzY3JpcHRpb24oKTsKKyAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldExpbmVI
ZWlnaHQoc3RhdGUucGFyZW50U3R5bGUoKS0+c3BlY2lmaWVkTGluZUhlaWdodCgpKTsKKyAgICAg
ICAgICAgIHN0YXRlLnNldExpbmVIZWlnaHRWYWx1ZSgwKTsKKyAgICAgICAgICAgIHN0eWxlUmVz
b2x2ZXItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOworICAgICAgICB9IGVs
c2UgaWYgKGlzSW5pdGlhbCkgeworICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gc3R5
bGVSZXNvbHZlci0+ZG9jdW1lbnRTZXR0aW5ncygpOworICAgICAgICAgICAgQVNTRVJUKHNldHRp
bmdzKTsgLy8gSWYgd2UncmUgZG9pbmcgc3R5bGUgcmVzb2x1dGlvbiwgdGhpcyBkb2N1bWVudCBz
aG91bGQgYWx3YXlzIGJlIGluIGEgZnJhbWUgYW5kIHRodXMgaGF2ZSBzZXR0aW5ncworICAgICAg
ICAgICAgaWYgKCFzZXR0aW5ncykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICBzdHlsZVJlc29sdmVyLT5pbml0aWFsaXplRm9udFN0eWxlKHNldHRpbmdzKTsKKyAgICAgICAg
fSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZSkgeworICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+
c2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7CisgICAgICAg
ICAgICBzdGF0ZS5zZXRMaW5lSGVpZ2h0VmFsdWUoMCk7CisKKyAgICAgICAgICAgIEZvbnREZXNj
cmlwdGlvbiBmb250RGVzY3JpcHRpb247CisgICAgICAgICAgICBSZW5kZXJUaGVtZTo6ZGVmYXVs
dFRoZW1lKCktPnN5c3RlbUZvbnQocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCksIGZvbnREZXNj
cmlwdGlvbik7CisKKyAgICAgICAgICAgIC8vIERvdWJsZS1jaGVjayBhbmQgc2VlIGlmIHRoZSB0
aGVtZSBkaWQgYW55dGhpbmcuIElmIG5vdCwgZG9uJ3QgYm90aGVyIHVwZGF0aW5nIHRoZSBmb250
LgorICAgICAgICAgICAgaWYgKGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSByZW5kZXJpbmcgbW9kZSBhbmQgcHJpbnRl
ciBmb250IHNldHRpbmdzIGFyZSB1cGRhdGVkLgorICAgICAgICAgICAgICAgIFNldHRpbmdzKiBz
ZXR0aW5ncyA9IHN0eWxlUmVzb2x2ZXItPmRvY3VtZW50U2V0dGluZ3MoKTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoc2V0dGluZ3MpOyAvLyBJZiB3ZSdyZSBkb2luZyBzdHlsZSByZXNvbHV0aW9u
LCB0aGlzIGRvY3VtZW50IHNob3VsZCBhbHdheXMgYmUgaW4gYSBmcmFtZSBhbmQgdGh1cyBoYXZl
IHNldHRpbmdzCisgICAgICAgICAgICAgICAgaWYgKCFzZXR0aW5ncykKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRSZW5kZXJp
bmdNb2RlKHNldHRpbmdzLT5mb250UmVuZGVyaW5nTW9kZSgpKTsKKyAgICAgICAgICAgICAgICBm
b250RGVzY3JpcHRpb24uc2V0VXNlUHJpbnRlckZvbnQoc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQo
KS0+cHJpbnRpbmcoKSB8fCAhc2V0dGluZ3MtPnNjcmVlbkZvbnRTdWJzdGl0dXRpb25FbmFibGVk
KCkpOworCisgICAgICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSB6b29tIGZhY3Rvci4KKyAgICAg
ICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKHN0eWxlUmVzb2x2ZXIt
PmdldENvbXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRTaXplKHN0eWxlUmVzb2x2ZXItPmRvY3VtZW50
KCksIHN0YXRlLnN0eWxlKCksIGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpLCBmb250
RGVzY3JpcHRpb24uc3BlY2lmaWVkU2l6ZSgpLCBzdHlsZVJlc29sdmVyLT51c2VTVkdab29tUnVs
ZXMoKSkpOworICAgICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldEZvbnREZXNjcmlwdGlv
bihmb250RGVzY3JpcHRpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHZh
bHVlLT5pc0ZvbnRWYWx1ZSgpKSB7CisgICAgICAgICAgICBGb250VmFsdWUqIGZvbnQgPSBzdGF0
aWNfY2FzdDxGb250VmFsdWUqPih2YWx1ZSk7CisgICAgICAgICAgICBpZiAoIWZvbnQtPnN0eWxl
IHx8ICFmb250LT52YXJpYW50IHx8ICFmb250LT53ZWlnaHQKKyAgICAgICAgICAgICAgICB8fCAh
Zm9udC0+c2l6ZSB8fCAhZm9udC0+bGluZUhlaWdodCB8fCAhZm9udC0+ZmFtaWx5KQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGFwcGx5VG9SZW5kZXJTdHlsZShzdHlsZVJl
c29sdmVyLCBDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgZm9udC0+c3R5bGUuZ2V0KCkpOworICAgICAg
ICAgICAgYXBwbHlUb1JlbmRlclN0eWxlKHN0eWxlUmVzb2x2ZXIsIENTU1Byb3BlcnR5Rm9udFZh
cmlhbnQsIGZvbnQtPnZhcmlhbnQuZ2V0KCkpOworICAgICAgICAgICAgYXBwbHlUb1JlbmRlclN0
eWxlKHN0eWxlUmVzb2x2ZXIsIENTU1Byb3BlcnR5Rm9udFdlaWdodCwgZm9udC0+d2VpZ2h0Lmdl
dCgpKTsKKyAgICAgICAgICAgIC8vIFRoZSBwcmV2aW91cyBwcm9wZXJ0aWVzIGNhbiBkaXJ0eSBv
dXIgZm9udCBidXQgdGhleSBkb24ndCB0cnkgdG8gcmVhZCB0aGUgZm9udCdzCisgICAgICAgICAg
ICAvLyBwcm9wZXJ0aWVzIGJhY2ssIHdoaWNoIGlzIHNhZmUuIEhvd2V2ZXIgaWYgZm9udC1zaXpl
IGlzIHVzaW5nIHRoZSAnZXgnIHVuaXQsIGl0IHdpbGwKKyAgICAgICAgICAgIC8vIG5lZWQgcXVl
cnkgdGhlIGRpcnRpZWQgZm9udCdzIHgtaGVpZ2h0IHRvIGdldCB0aGUgY29tcHV0ZWQgc2l6ZS4g
VG8gYmUgc2FmZSBpbiB0aGlzCisgICAgICAgICAgICAvLyBjYXNlLCBsZXQncyBqdXN0IHVwZGF0
ZSB0aGUgZm9udCBub3cuCisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT51cGRhdGVGb250KCk7
CisgICAgICAgICAgICBhcHBseVRvUmVuZGVyU3R5bGUoc3R5bGVSZXNvbHZlciwgQ1NTUHJvcGVy
dHlGb250U2l6ZSwgZm9udC0+c2l6ZS5nZXQoKSk7CisKKyAgICAgICAgICAgIHN0YXRlLnNldExp
bmVIZWlnaHRWYWx1ZShmb250LT5saW5lSGVpZ2h0LmdldCgpKTsKKworICAgICAgICAgICAgYXBw
bHlUb1JlbmRlclN0eWxlKHN0eWxlUmVzb2x2ZXIsIENTU1Byb3BlcnR5Rm9udEZhbWlseSwgZm9u
dC0+ZmFtaWx5LmdldCgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisKKyAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZDoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBv
c2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
ckltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlNYXJnaW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmU6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93OgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckVuZDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnQ6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJhZGl1czoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Q29sdW1uczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVs
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0RmxleEZsb3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRDb2x1bW46Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRSb3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpbkNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQ6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpczoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlv
bjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luOgorI2lmIEVOQUJM
RShDU1NfRVhDTFVTSU9OUykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcDoKKyNlbmRp
ZgorICAgICAgICBBU1NFUlQoaXNFeHBhbmRlZFNob3J0aGFuZChpZCkpOworICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAvLyBDU1MzIFByb3BlcnRp
ZXMKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFNoYWRvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5
Qm94U2hhZG93OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3c6IHsKKyAgICAg
ICAgaWYgKGlzSW5oZXJpdCkgeworICAgICAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5VGV4
dFNoYWRvdykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGUuc3R5bGUoKS0+c2V0VGV4dFNo
YWRvdyhzdGF0ZS5wYXJlbnRTdHlsZSgpLT50ZXh0U2hhZG93KCkgPyBhZG9wdFB0cihuZXcgU2hh
ZG93RGF0YSgqc3RhdGUucGFyZW50U3R5bGUoKS0+dGV4dFNoYWRvdygpKSkgOiBudWxscHRyKTsK
KyAgICAgICAgICAgIHJldHVybiBzdGF0ZS5zdHlsZSgpLT5zZXRCb3hTaGFkb3coc3RhdGUucGFy
ZW50U3R5bGUoKS0+Ym94U2hhZG93KCkgPyBhZG9wdFB0cihuZXcgU2hhZG93RGF0YSgqc3RhdGUu
cGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkpKSA6IG51bGxwdHIpOworICAgICAgICB9CisgICAg
ICAgIGlmIChpc0luaXRpYWwgfHwgcHJpbWl0aXZlVmFsdWUpIC8vIGluaXRpYWwgfCBub25lCisg
ICAgICAgICAgICByZXR1cm4gaWQgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93ID8gc3RhdGUuc3R5
bGUoKS0+c2V0VGV4dFNoYWRvdyhudWxscHRyKSA6IHN0YXRlLnN0eWxlKCktPnNldEJveFNoYWRv
dyhudWxscHRyKTsKKworICAgICAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaSA9IHZh
bHVlOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNlKCkpIHsKKyAgICAgICAgICAgIENTU1ZhbHVlKiBj
dXJyVmFsdWUgPSBpLnZhbHVlKCk7CisgICAgICAgICAgICBpZiAoIWN1cnJWYWx1ZS0+aXNTaGFk
b3dWYWx1ZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgU2hhZG93
VmFsdWUqIGl0ZW0gPSBzdGF0aWNfY2FzdDxTaGFkb3dWYWx1ZSo+KGN1cnJWYWx1ZSk7CisgICAg
ICAgICAgICBpbnQgeCA9IGl0ZW0tPngtPmNvbXB1dGVMZW5ndGg8aW50PihzdGF0ZS5zdHlsZSgp
LCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHpvb21GYWN0b3IpOworICAgICAgICAgICAgaW50
IHkgPSBpdGVtLT55LT5jb21wdXRlTGVuZ3RoPGludD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9v
dEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKTsKKyAgICAgICAgICAgIGludCBibHVyID0gaXRl
bS0+Ymx1ciA/IGl0ZW0tPmJsdXItPmNvbXB1dGVMZW5ndGg8aW50PihzdGF0ZS5zdHlsZSgpLCBz
dGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHpvb21GYWN0b3IpIDogMDsKKyAgICAgICAgICAgIGlu
dCBzcHJlYWQgPSBpdGVtLT5zcHJlYWQgPyBpdGVtLT5zcHJlYWQtPmNvbXB1dGVMZW5ndGg8aW50
PihzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHpvb21GYWN0b3IpIDog
MDsKKyAgICAgICAgICAgIFNoYWRvd1N0eWxlIHNoYWRvd1N0eWxlID0gaXRlbS0+c3R5bGUgJiYg
aXRlbS0+c3R5bGUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVJbnNldCA/IEluc2V0IDogTm9ybWFs
OworICAgICAgICAgICAgQ29sb3IgY29sb3I7CisgICAgICAgICAgICBpZiAoaXRlbS0+Y29sb3Ip
CisgICAgICAgICAgICAgICAgY29sb3IgPSBzdHlsZVJlc29sdmVyLT5jb2xvckZyb21QcmltaXRp
dmVWYWx1ZShpdGVtLT5jb2xvci5nZXQoKSk7CisgICAgICAgICAgICBlbHNlIGlmIChzdGF0ZS5z
dHlsZSgpKQorICAgICAgICAgICAgICAgIGNvbG9yID0gc3RhdGUuc3R5bGUoKS0+Y29sb3IoKTsK
KworICAgICAgICAgICAgT3duUHRyPFNoYWRvd0RhdGE+IHNoYWRvd0RhdGEgPSBhZG9wdFB0cihu
ZXcgU2hhZG93RGF0YShJbnRQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwg
aWQgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9y
IDogQ29sb3I6OnRyYW5zcGFyZW50KSk7CisgICAgICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVy
dHlUZXh0U2hhZG93KQorICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFRleHRTaGFk
b3coc2hhZG93RGF0YS5yZWxlYXNlKCksIGkuaW5kZXgoKSk7IC8vIGFkZCB0byB0aGUgbGlzdCBp
ZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgZW50cnkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRCb3hTaGFkb3coc2hhZG93RGF0YS5yZWxlYXNlKCks
IGkuaW5kZXgoKSk7IC8vIGFkZCB0byB0aGUgbGlzdCBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qg
ZW50cnkKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJveFJlZmxlY3Q6IHsKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUwoYm94UmVmbGVjdCwgQm94UmVmbGVjdCkKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
KSB7CisgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRCb3hSZWZsZWN0KFJlbmRlclN0eWxl
Ojppbml0aWFsQm94UmVmbGVjdCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICghdmFsdWUtPmlzUmVmbGVjdFZhbHVlKCkpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgQ1NTUmVmbGVjdFZhbHVlKiByZWZsZWN0VmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NSZWZsZWN0VmFsdWUqPih2YWx1ZSk7CisgICAgICAgIFJlZlB0cjxTdHlsZVJlZmxlY3Rp
b24+IHJlZmxlY3Rpb24gPSBTdHlsZVJlZmxlY3Rpb246OmNyZWF0ZSgpOworICAgICAgICByZWZs
ZWN0aW9uLT5zZXREaXJlY3Rpb24oKnJlZmxlY3RWYWx1ZS0+ZGlyZWN0aW9uKCkpOworICAgICAg
ICBpZiAocmVmbGVjdFZhbHVlLT5vZmZzZXQoKSkKKyAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNl
dE9mZnNldChyZWZsZWN0VmFsdWUtPm9mZnNldCgpLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRl
Z2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNpb24+
KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSwgem9vbUZhY3RvcikpOwor
ICAgICAgICBOaW5lUGllY2VJbWFnZSBtYXNrOworICAgICAgICBtYXNrLnNldE1hc2tEZWZhdWx0
cygpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZU1hcCgpLT5tYXBOaW5lUGllY2VJbWFn
ZShpZCwgcmVmbGVjdFZhbHVlLT5tYXNrKCksIG1hc2spOworICAgICAgICByZWZsZWN0aW9uLT5z
ZXRNYXNrKG1hc2spOworCisgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEJveFJlZmxlY3QocmVm
bGVjdGlvbi5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgQ1NT
UHJvcGVydHlTcmM6IC8vIE9ubHkgdXNlZCBpbiBAZm9udC1mYWNlIHJ1bGVzLgorICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBDU1NQcm9wZXJ0eVVuaWNvZGVSYW5nZTogLy8gT25seSB1c2VkIGlu
IEBmb250LWZhY2UgcnVsZXMuCisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TG9jYWxlOiB7CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGxvY2Fs
ZSwgTG9jYWxlKTsKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVl
QXV0bykKKyAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldExvY2FsZShudWxsQXRvbSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldExvY2FsZShwcmltaXRp
dmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKSk7CisgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250
RGVzY3JpcHRpb24gPSBzdGF0ZS5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldFNjcmlwdChsb2NhbGVUb1NjcmlwdENvZGVGb3JGb250U2VsZWN0
aW9uKHN0YXRlLnN0eWxlKCktPmxvY2FsZSgpKSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnNl
dEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOworICAgICAgICByZXR1cm47CisgICAg
fQorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0RGFzaGJvYXJkUmVnaW9uOgorICAgIHsKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUwoZGFzaGJvYXJkUmVnaW9ucywgRGFzaGJvYXJkUmVnaW9ucykKKyAgICAgICAgaWYgKCFw
cmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKSB7CisgICAgICAgICAgICBzdGF0
ZS5zdHlsZSgpLT5zZXREYXNoYm9hcmRSZWdpb25zKFJlbmRlclN0eWxlOjpub25lRGFzaGJvYXJk
UmVnaW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIERh
c2hib2FyZFJlZ2lvbiogcmVnaW9uID0gcHJpbWl0aXZlVmFsdWUtPmdldERhc2hib2FyZFJlZ2lv
blZhbHVlKCk7CisgICAgICAgIGlmICghcmVnaW9uKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIERhc2hib2FyZFJlZ2lvbiogZmlyc3QgPSByZWdpb247CisgICAgICAgIHdoaWxlIChy
ZWdpb24pIHsKKyAgICAgICAgICAgIExlbmd0aCB0b3AgPSBzdHlsZVJlc29sdmVyLT5jb252ZXJ0
VG9JbnRMZW5ndGgocmVnaW9uLT50b3AoKSwgc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1l
bnRTdHlsZSgpKTsKKyAgICAgICAgICAgIExlbmd0aCByaWdodCA9IHN0eWxlUmVzb2x2ZXItPmNv
bnZlcnRUb0ludExlbmd0aChyZWdpb24tPnJpZ2h0KCksIHN0YXRlLnN0eWxlKCksIHN0YXRlLnJv
b3RFbGVtZW50U3R5bGUoKSk7CisgICAgICAgICAgICBMZW5ndGggYm90dG9tID0gc3R5bGVSZXNv
bHZlci0+Y29udmVydFRvSW50TGVuZ3RoKHJlZ2lvbi0+Ym90dG9tKCksIHN0YXRlLnN0eWxlKCks
IHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSk7CisgICAgICAgICAgICBMZW5ndGggbGVmdCA9IHN0
eWxlUmVzb2x2ZXItPmNvbnZlcnRUb0ludExlbmd0aChyZWdpb24tPmxlZnQoKSwgc3RhdGUuc3R5
bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpKTsKKworICAgICAgICAgICAgaWYgKHRvcC5p
c1VuZGVmaW5lZCgpKQorICAgICAgICAgICAgICAgIHRvcCA9IExlbmd0aCgpOworICAgICAgICAg
ICAgaWYgKHJpZ2h0LmlzVW5kZWZpbmVkKCkpCisgICAgICAgICAgICAgICAgcmlnaHQgPSBMZW5n
dGgoKTsKKyAgICAgICAgICAgIGlmIChib3R0b20uaXNVbmRlZmluZWQoKSkKKyAgICAgICAgICAg
ICAgICBib3R0b20gPSBMZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChsZWZ0LmlzVW5kZWZpbmVk
KCkpCisgICAgICAgICAgICAgICAgbGVmdCA9IExlbmd0aCgpOworCisgICAgICAgICAgICBpZiAo
cmVnaW9uLT5tX2lzQ2lyY2xlKQorICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldERh
c2hib2FyZFJlZ2lvbihTdHlsZURhc2hib2FyZFJlZ2lvbjo6Q2lyY2xlLCByZWdpb24tPm1fbGFi
ZWwsIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgcmVnaW9uID09IGZpcnN0ID8gZmFsc2UgOiB0
cnVlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSkKKyAgICAg
ICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5bGVEYXNoYm9h
cmRSZWdpb246OlJlY3RhbmdsZSwgcmVnaW9uLT5tX2xhYmVsLCB0b3AsIHJpZ2h0LCBib3R0b20s
IGxlZnQsIHJlZ2lvbiA9PSBmaXJzdCA/IGZhbHNlIDogdHJ1ZSk7CisgICAgICAgICAgICByZWdp
b24gPSByZWdpb24tPm1fbmV4dC5nZXQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRlLmRv
Y3VtZW50KCktPnNldEhhc0Fubm90YXRlZFJlZ2lvbnModHJ1ZSk7CisKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShEUkFHR0FCTEVfUkVHSU9OKQorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRBcHBSZWdpb246IHsKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1
ZSB8fCAhcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHN0YXRlLnN0eWxlKCktPnNldERyYWdnYWJsZVJlZ2lvbk1vZGUocHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVEcmFnID8gRHJhZ2dhYmxlUmVnaW9uRHJhZyA6IERy
YWdnYWJsZVJlZ2lvbk5vRHJhZyk7CisgICAgICAgIHN0YXRlLmRvY3VtZW50KCktPnNldEhhc0Fu
bm90YXRlZFJlZ2lvbnModHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoOiB7CisgICAgICAgIEhBTkRM
RV9JTkhFUklUX0FORF9JTklUSUFMKHRleHRTdHJva2VXaWR0aCwgVGV4dFN0cm9rZVdpZHRoKQor
ICAgICAgICBmbG9hdCB3aWR0aCA9IDA7CisgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVRoaW46CisgICAgICAgIGNhc2Ug
Q1NTVmFsdWVNZWRpdW06CisgICAgICAgIGNhc2UgQ1NTVmFsdWVUaGljazogeworICAgICAgICAg
ICAgZG91YmxlIHJlc3VsdCA9IDEuMCAvIDQ4OworICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTWVkaXVtKQorICAgICAgICAgICAgICAgIHJlc3Vs
dCAqPSAzOworICAgICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVUaGljaykKKyAgICAgICAgICAgICAgICByZXN1bHQgKj0gNTsKKyAgICAgICAg
ICAgIHdpZHRoID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyZXN1bHQsIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfRU1TKS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3RhdGUuc3R5bGUoKSwgc3Rh
dGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB3aWR0aCA9IHByaW1pdGl2
ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxl
bWVudFN0eWxlKCksIHpvb21GYWN0b3IpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0VGV4dFN0cm9rZVdpZHRoKHdpZHRoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtOiB7
CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRyYW5zZm9ybSwgVHJhbnNmb3Jt
KTsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zOworICAgICAgICBzdHls
ZVJlc29sdmVyLT5jcmVhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZhbHVlLCBzdGF0ZS5zdHlsZSgp
LCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIG9wZXJhdGlvbnMpOworICAgICAgICBzdGF0ZS5z
dHlsZSgpLT5zZXRUcmFuc2Zvcm0ob3BlcmF0aW9ucyk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlOiB7CisgICAgICAgIEhBTkRM
RV9JTkhFUklUX0FORF9JTklUSUFMKHBlcnNwZWN0aXZlLCBQZXJzcGVjdGl2ZSkKKworICAgICAg
ICBpZiAoIXByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICAgICAg
ICAgIHN0YXRlLnN0eWxlKCktPnNldFBlcnNwZWN0aXZlKDApOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgZmxvYXQgcGVyc3BlY3RpdmVWYWx1ZTsKKyAgICAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKQorICAgICAgICAgICAgcGVyc3BlY3RpdmVW
YWx1ZSA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdGF0ZS5zdHlsZSgp
LCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHpvb21GYWN0b3IpOworICAgICAgICBlbHNlIGlm
IChwcmltaXRpdmVWYWx1ZS0+aXNOdW1iZXIoKSkgeworICAgICAgICAgICAgLy8gRm9yIGJhY2t3
YXJkIGNvbXBhdGliaWxpdHksIHRyZWF0IHZhbHVlbGVzcyBudW1iZXJzIGFzIHB4LgorICAgICAg
ICAgICAgcGVyc3BlY3RpdmVWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocHJpbWl0
aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpLT5j
b21wdXRlTGVuZ3RoPGZsb2F0PihzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxl
KCksIHpvb21GYWN0b3IpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBpZiAocGVyc3BlY3RpdmVWYWx1ZSA+PSAwLjBmKQorICAgICAgICAgICAgc3RhdGUu
c3R5bGUoKS0+c2V0UGVyc3BlY3RpdmUocGVyc3BlY3RpdmVWYWx1ZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6IHsKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUwodGFwSGlnaGxpZ2h0Q29sb3IsIFRhcEhpZ2hsaWdodENvbG9yKTsKKyAgICAgICAgaWYg
KCFwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIENvbG9yIGNv
bCA9IHN0eWxlUmVzb2x2ZXItPmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKHByaW1pdGl2ZVZhbHVl
KTsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0VGFwSGlnaGxpZ2h0Q29sb3IoY29sKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVS
RkxPV19TQ1JPTExJTkcpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE92ZXJmbG93U2Nyb2xs
aW5nOiB7CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHVzZVRvdWNoT3ZlcmZs
b3dTY3JvbGxpbmcsIFVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcpOworICAgICAgICBpZiAoIXBy
aW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHN0YXRlLnN0eWxlKCkt
PnNldFVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVUb3VjaCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBj
YXNlIENTU1Byb3BlcnR5SW52YWxpZDoKKyAgICAgICAgcmV0dXJuOworICAgIC8vIERpcmVjdGlv
bmFsIHByb3BlcnRpZXMgYXJlIHJlc29sdmVkIGJ5IHJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3Bl
cnR5KCkgYmVmb3JlIHRoZSBzd2l0Y2guCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckVuZENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGg6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlclN0YXJ0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lk
dGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyQmVmb3JlV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckFmdGVyQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5
bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGg6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luU3RhcnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXJnaW5Ub3BDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJD
b2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQ6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFBhZGRpbmdTdGFydDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGlu
Z0JlZm9yZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0FmdGVyOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdExvZ2ljYWxIZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxX
aWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhlaWdodDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0OgorICAgIHsKKyAgICAgICAgQ1NTUHJvcGVydHlJRCBu
ZXdJZCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCwgc3Rh
dGUuc3R5bGUoKS0+ZGlyZWN0aW9uKCksIHN0YXRlLnN0eWxlKCktPndyaXRpbmdNb2RlKCkpOwor
ICAgICAgICBBU1NFUlQobmV3SWQgIT0gaWQpOworICAgICAgICByZXR1cm4gYXBwbHlUb1JlbmRl
clN0eWxlKHN0eWxlUmVzb2x2ZXIsIG5ld0lkLCB2YWx1ZSk7CisgICAgfQorICAgIGNhc2UgQ1NT
UHJvcGVydHlGb250U3RyZXRjaDoKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFnZToKKyAgICBjYXNl
IENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGlu
ZVRocm91Z2hDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoTW9kZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5bGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRMaW5lVGhyb3VnaFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3Zl
cmxpbmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZUNvbG9yOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3Zl
cmxpbmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lV2lkdGg6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRV
bmRlcmxpbmVDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGU6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dFVuZGVybGluZVdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250U2l6
ZURlbHRhOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dDoKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQ1NTIFRleHQgTGF5b3V0IE1vZHVsZSBMZXZl
bCAzOiBWZXJ0aWNhbCB3cml0aW5nIHN1cHBvcnQKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
V3JpdGluZ01vZGU6IHsKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwod3JpdGlu
Z01vZGUsIFdyaXRpbmdNb2RlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZSkKKyAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldFdyaXRpbmdNb2RlKCpwcmltaXRpdmVW
YWx1ZSk7CisKKyAgICAgICAgLy8gRklYTUU6IEl0IGlzIG5vdCBvayB0byBtb2RpZnkgZG9jdW1l
bnQgc3RhdGUgd2hpbGUgYXBwbHlpbmcgc3R5bGUuCisgICAgICAgIGlmIChzdGF0ZS5lbGVtZW50
KCkgJiYgc3RhdGUuZWxlbWVudCgpID09IHN0YXRlLmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVu
dCgpKQorICAgICAgICAgICAgc3RhdGUuZG9jdW1lbnQoKS0+c2V0V3JpdGluZ01vZGVTZXRPbkRv
Y3VtZW50RWxlbWVudCh0cnVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUZXh0T3JpZW50YXRpb246IHsKKyAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUwodGV4dE9yaWVudGF0aW9uLCBUZXh0T3JpZW50YXRpb24pOworCisgICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldFRl
eHRPcmllbnRhdGlvbigqcHJpbWl0aXZlVmFsdWUpOworCisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJveENvbnRhaW46IHsKKyAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobGluZUJveENvbnRhaW4sIExpbmVCb3hDb250YWlu
KQorICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkgPT0gQ1NTVmFsdWVOb25lKSB7CisgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRMaW5l
Qm94Q29udGFpbihMaW5lQm94Q29udGFpbk5vbmUpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCF2YWx1ZS0+aXNDU1NMaW5lQm94Q29udGFpblZhbHVlKCkp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgQ1NTTGluZUJveENvbnRhaW5WYWx1ZSog
bGluZUJveENvbnRhaW5WYWx1ZSA9IHN0YXRpY19jYXN0PENTU0xpbmVCb3hDb250YWluVmFsdWUq
Pih2YWx1ZSk7CisgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldExpbmVCb3hDb250YWluKGxpbmVC
b3hDb250YWluVmFsdWUtPnZhbHVlKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Ly8gQ1NTIEZvbnRzIE1vZHVsZSBMZXZlbCAzCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZv
bnRGZWF0dXJlU2V0dGluZ3M6IHsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9ybWFsKSB7CisgICAgICAgICAgICBz
dHlsZVJlc29sdmVyLT5zZXRGb250RGVzY3JpcHRpb24oc3RhdGUuc3R5bGUoKS0+Zm9udERlc2Ny
aXB0aW9uKCkubWFrZU5vcm1hbEZlYXR1cmVTZXR0aW5ncygpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdmFsdWUtPmlzVmFsdWVMaXN0KCkpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlv
biA9IHN0YXRlLnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBDU1NWYWx1ZUxp
c3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisgICAgICAgIFJl
ZlB0cjxGb250RmVhdHVyZVNldHRpbmdzPiBzZXR0aW5ncyA9IEZvbnRGZWF0dXJlU2V0dGluZ3M6
OmNyZWF0ZSgpOworICAgICAgICBpbnQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7CisgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKKyAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVt
ID0gbGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsKKyAgICAgICAgICAgIGlmICghaXRl
bS0+aXNGb250RmVhdHVyZVZhbHVlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICBGb250RmVhdHVyZVZhbHVlKiBmZWF0dXJlID0gc3RhdGljX2Nhc3Q8Rm9udEZlYXR1
cmVWYWx1ZSo+KGl0ZW0pOworICAgICAgICAgICAgc2V0dGluZ3MtPmFwcGVuZChGb250RmVhdHVy
ZShmZWF0dXJlLT50YWcoKSwgZmVhdHVyZS0+dmFsdWUoKSkpOworICAgICAgICB9CisgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRGZWF0dXJlU2V0dGluZ3Moc2V0dGluZ3MucmVsZWFzZSgpKTsK
KyAgICAgICAgc3R5bGVSZXNvbHZlci0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlv
bik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGaWx0ZXI6IHsKKyAgICAgICAgSEFORExFX0lOSEVSSVRf
QU5EX0lOSVRJQUwoZmlsdGVyLCBGaWx0ZXIpOworICAgICAgICBGaWx0ZXJPcGVyYXRpb25zIG9w
ZXJhdGlvbnM7CisgICAgICAgIGlmIChzdHlsZVJlc29sdmVyLT5jcmVhdGVGaWx0ZXJPcGVyYXRp
b25zKHZhbHVlLCBzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIG9wZXJh
dGlvbnMpKQorICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0RmlsdGVyKG9wZXJhdGlvbnMp
OworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEdyaWRBdXRvQ29sdW1uczogeworICAgICAgICBHcmlkVHJhY2tTaXplIHRyYWNrU2l6ZTsK
KyAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tTaXplKHZhbHVlLCB0cmFja1NpemUsIHN0YXRl
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0R3JpZEF1
dG9Db2x1bW5zKHRyYWNrU2l6ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEdyaWRBdXRvUm93czogeworICAgICAgICBHcmlkVHJhY2tTaXplIHRy
YWNrU2l6ZTsKKyAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tTaXplKHZhbHVlLCB0cmFja1Np
emUsIHN0YXRlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+
c2V0R3JpZEF1dG9Sb3dzKHRyYWNrU2l6ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRDb2x1bW5zOiB7CisgICAgICAgIFZlY3RvcjxHcmlk
VHJhY2tTaXplPiB0cmFja1NpemVzOworICAgICAgICBpZiAoIWNyZWF0ZUdyaWRUcmFja0xpc3Qo
dmFsdWUsIHRyYWNrU2l6ZXMsIHN0YXRlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
c3RhdGUuc3R5bGUoKS0+c2V0R3JpZENvbHVtbnModHJhY2tTaXplcyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRSb3dzOiB7CisgICAgICAg
IFZlY3RvcjxHcmlkVHJhY2tTaXplPiB0cmFja1NpemVzOworICAgICAgICBpZiAoIWNyZWF0ZUdy
aWRUcmFja0xpc3QodmFsdWUsIHRyYWNrU2l6ZXMsIHN0YXRlKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0R3JpZFJvd3ModHJhY2tTaXplcyk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZFN0YXJ0
OiB7CisgICAgICAgIEdyaWRQb3NpdGlvbiBzdGFydFBvc2l0aW9uOworICAgICAgICBpZiAoIWNy
ZWF0ZUdyaWRQb3NpdGlvbih2YWx1ZSwgc3RhcnRQb3NpdGlvbikpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEdyaWRJdGVtU3RhcnQoc3RhcnRQb3NpdGlv
bik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdy
aWRFbmQ6IHsKKyAgICAgICAgR3JpZFBvc2l0aW9uIGVuZFBvc2l0aW9uOworICAgICAgICBpZiAo
IWNyZWF0ZUdyaWRQb3NpdGlvbih2YWx1ZSwgZW5kUG9zaXRpb24pKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRHcmlkSXRlbUVuZChlbmRQb3NpdGlvbik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3Jp
ZEJlZm9yZTogeworICAgICAgICBHcmlkUG9zaXRpb24gYmVmb3JlUG9zaXRpb247CisgICAgICAg
IGlmICghY3JlYXRlR3JpZFBvc2l0aW9uKHZhbHVlLCBiZWZvcmVQb3NpdGlvbikpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEdyaWRJdGVtQmVmb3JlKGJl
Zm9yZVBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0R3JpZEFmdGVyOiB7CisgICAgICAgIEdyaWRQb3NpdGlvbiBhZnRlclBvc2l0aW9u
OworICAgICAgICBpZiAoIWNyZWF0ZUdyaWRQb3NpdGlvbih2YWx1ZSwgYWZ0ZXJQb3NpdGlvbikp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEdyaWRJdGVt
QWZ0ZXIoYWZ0ZXJQb3NpdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBU
aGVzZSBwcm9wZXJ0aWVzIGFyZSBhbGlhc2VkIGFuZCBEZXByZWNhdGVkU3R5bGVCdWlsZGVyIGFs
cmVhZHkgYXBwbGllZCB0aGUgcHJvcGVydHkgb24gdGhlIHByZWZpeGVkIHZlcnNpb24uCisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25EZWxheToKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJh
bnNpdGlvbkR1cmF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uUHJvcGVydHk6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbjoKKyAgICAgICAg
cmV0dXJuOworICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgYXJlIGltcGxlbWVudGVkIGluIHRoZSBE
ZXByZWNhdGVkU3R5bGVCdWlsZGVyIGxvb2t1cCB0YWJsZS4KKyAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZEF0dGFjaG1lbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlw
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRJbWFnZToKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdp
bjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWToKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dy
b3VuZFJlcGVhdFg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRp
dXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNldDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVySW1hZ2VSZXBlYXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU2xpY2U6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJJbWFnZVdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29s
b3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZToKKyAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyTGVmdFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENv
bG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJSaWdodFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BD
b2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1czoKKyAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlclRvcFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm90dG9tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3hTaXppbmc6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUNhcHRpb25TaWRlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDbGVh
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2xpcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3I6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQ6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUNvdW50ZXJSZXNldDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q3Vyc29yOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlEaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eURpc3BsYXk6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb2F0Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0
eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWFudDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Rm9udFdlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5SGVpZ2h0OgorI2lmIEVOQUJMRShD
U1NfSU1BR0VfT1JJRU5UQVRJT04pCisgICAgY2FzZSBDU1NQcm9wZXJ0eUltYWdlT3JpZW50YXRp
b246CisjZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmc6CisjaWYgRU5B
QkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQorICAgIGNhc2UgQ1NTUHJvcGVydHlJbWFnZVJlc29s
dXRpb246CisjZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5TGVmdDoKKyAgICBjYXNlIENTU1By
b3BlcnR5TGV0dGVyU3BhY2luZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGluZUhlaWdodDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxp
c3RTdHlsZVBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b206CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdp
bkxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlNYXJnaW5Ub3A6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1heEhlaWdodDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5TWF4V2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5TWluV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9wYWNpdHk6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9ycGhhbnM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxp
bmVDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZU9mZnNldDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5T3V0bGluZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGg6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93V3JhcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
T3ZlcmZsb3dYOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1k6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVBhZGRpbmdCb3R0b206CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBh
ZGRpbmdUb3A6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVh
a0luc2lkZToKKyAgICBjYXNlIENTU1Byb3BlcnR5UG9pbnRlckV2ZW50czoKKyAgICBjYXNlIENT
U1Byb3BlcnR5UG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJlc2l6ZToKKyAgICBjYXNl
IENTU1Byb3BlcnR5UmlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNpemU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVNwZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUYWJTaXplOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlUYWJsZUxheW91dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFsaWduOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dEluZGVudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJmbG93OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VHJhbnNm
b3JtOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUb3A6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVVuaWNv
ZGVCaWRpOgorI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlW
YXJpYWJsZToKKyNlbmRpZgorICAgIGNhc2UgQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlWaXNpYmlsaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25EZWxheToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0
aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGU6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRBbmltYXRpb25OYW1lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25Q
bGF5U3RhdGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0
aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRBc3BlY3RSYXRpbzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFj
a2ZhY2VWaXNpYmlsaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xp
cDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9yaWdpbjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0QmFja2dyb3VuZFNpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckZpdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmc6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJveEFsaWduOgorI2lmIEVOQUJMRShDU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspCisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERlY29yYXRpb25CcmVhazoKKyNlbmRpZgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJveEZsZXg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXhHcm91cDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJveE9yZGluYWxHcm91cDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRDb2xvckNvcnJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
bkF4aXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXI6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVmb3JlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uQ291bnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkdhcDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUHJvZ3Jlc3Npb246CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uUnVsZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGg6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW46CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtbldpZHRoOgorI2lmIEVOQUJMRShDVVJTT1JfVklTSUJJTElUWSkKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q3Vyc29yVmlzaWJpbGl0eToKKyNlbmRpZgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRBbGlnbkNvbnRlbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEFsaWduSXRlbXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFsaWduU2VsZjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEJhc2lzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRGbGV4RGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4R3JvdzoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleFNocmluazoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0RmxleFdyYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEp1c3RpZnlDb250
ZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRPcmRlcjoKKyNpZiBFTkFCTEUoQ1NTX1JF
R0lPTlMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsb3dGcm9tOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRGbG93SW50bzoKKyNlbmRpZgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRGb250S2VybmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZzoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFZhcmlhbnRMaWdhdHVyZXM6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
SHlwaGVuYXRlQ2hhcmFjdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVM
aW1pdEFmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1pdEJlZm9y
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRMaW5lczoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TGluZUFsaWduOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWs6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVDbGFtcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TGluZUdyaWQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVTbmFwOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXJxdWVlSW5jcmVtZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVl
UmVwZXRpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tCb3hJbWFnZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveElt
YWdlT3V0c2V0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VSZXBlYXQ6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNsaWNlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tCb3hJbWFnZVdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
Q2xpcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZToKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXNrT3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUmVwZWF0WDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVh
dFk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXROYnNwTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3Rp
dmVPcmlnaW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRQcmludENvbG9yQWRqdXN0OgorI2lmIEVOQUJMRShDU1NfUkVHSU9O
UykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtBZnRlcjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFJlZ2lvbkJyZWFrSW5zaWRlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSZWdp
b25PdmVyZmxvdzoKKyNlbmRpZgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmlu
ZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUZXh0Q29tYmluZToKKyNpZiBFTkFCTEUoQ1NTM19URVhUKQorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbkxpbmU6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHREZWNvcmF0aW9uQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRBbGln
bkxhc3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRKdXN0aWZ5OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUZXh0VW5kZXJsaW5lUG9zaXRpb246CisjZW5kaWYgLy8gQ1NTM19U
RVhUCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbjoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRGaWxsQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eToK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2Zvcm1PcmlnaW5ZOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1P
cmlnaW5aOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1TdHlsZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5OgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zaXRpb25Qcm9wZXJ0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblRp
bWluZ0Z1bmN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZzoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VXNlclNlbGVjdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q2xpcFBhdGg6CisjaWYg
RU5BQkxFKENTU19FWENMVVNJT05TKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwRmxv
dzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0U2hhcGVNYXJnaW46CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFNoYXBlUGFkZGluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3Jh
cFRocm91Z2g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNoYXBlSW5zaWRlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRTaGFwZU91dHNpZGU6CisjZW5kaWYKKyNpZiBFTkFCTEUoQ1NT
X1NIQURFUlMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eU1peDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
UGFyYW1ldGVyczoKKyNlbmRpZgorICAgIGNhc2UgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXaWRvd3M6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdpZHRoOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRTcGFj
aW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
WkluZGV4OgorICAgIGNhc2UgQ1NTUHJvcGVydHlab29tOgorI2lmIEVOQUJMRShDU1NfREVWSUNF
X0FEQVBUQVRJT04pCisgICAgY2FzZSBDU1NQcm9wZXJ0eU1heFpvb206CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eU1pblpvb206CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9yaWVudGF0aW9uOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlVc2VyWm9vbToKKyNlbmRpZgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisjaWYgRU5BQkxFKFNWRykKKyAg
ICAgICAgLy8gVHJ5IHRoZSBTVkcgcHJvcGVydGllcworICAgICAgICBhcHBseVRvU1ZHUmVuZGVy
U3R5bGUoc3R5bGVSZXNvbHZlciwgaWQsIHZhbHVlKTsKKyNlbmRpZgorICAgICAgICByZXR1cm47
CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWls
ZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWEyMWU0NAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuaApAQCAtMCwwICsx
LDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3Jh
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCc
QVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUK
KyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN0eWxlQnVp
bGRlcl9oCisjZGVmaW5lIFN0eWxlQnVpbGRlcl9oCisKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5h
bWVzLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1Byb3BlcnR5OworY2xh
c3MgQ1NTVmFsdWU7CitjbGFzcyBEZXByZWNhdGVkU3R5bGVCdWlsZGVyOworY2xhc3MgU3R5bGVS
ZXNvbHZlcjsKKworY2xhc3MgU3R5bGVCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShTdHlsZUJ1aWxkZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBT
dHlsZUJ1aWxkZXIoKTsKKworICAgIHZvaWQgYXBwbHlUb1JlbmRlclN0eWxlKFN0eWxlUmVzb2x2
ZXIqLCBDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSopOworICAgIHZvaWQgYXBwbHlUb1NWR1JlbmRl
clN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSopOworCitwcml2
YXRlOgorICAgIGNvbnN0IERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXImIG1fZGVwcmVjYXRlZFN0eWxl
QnVpbGRlcjsKK307CisKK30KKworI2VuZGlmIC8vIFN0eWxlQnVpbGRlcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMjc2MGE3My4uMmRhMjIxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNTUsMTAgKzU1LDcgQEAKICNpbmNsdWRlICJDYWxj
dWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ29udGVudERhdGEuaCIKICNpbmNsdWRlICJDb250
ZXh0RmVhdHVyZXMuaCIKLSNpbmNsdWRlICJDb3VudGVyLmgiCi0jaW5jbHVkZSAiQ291bnRlckNv
bnRlbnQuaCIKICNpbmNsdWRlICJDdXJzb3JMaXN0LmgiCi0jaW5jbHVkZSAiRGVwcmVjYXRlZFN0
eWxlQnVpbGRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaCIK
ICNpbmNsdWRlICJFbGVtZW50UnVsZUNvbGxlY3Rvci5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFk
b3cuaCIKQEAgLTg5LDkgKzg2LDcgQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlUnVsZUNvbGxlY3Rvci5oIgotI2lu
Y2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5o
IgotI2luY2x1ZGUgIlF1b3Rlc0RhdGEuaCIKICNpbmNsdWRlICJSZWN0LmgiCiAjaW5jbHVkZSAi
UmVuZGVyUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCkBAIC0yNTgsNyAr
MjUzLDYgQEAgU3R5bGVSZXNvbHZlcjo6U3R5bGVSZXNvbHZlcihEb2N1bWVudCogZG9jdW1lbnQs
IGJvb2wgbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzKQogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FE
QVBUQVRJT04pCiAgICAgLCBtX3ZpZXdwb3J0U3R5bGVSZXNvbHZlcihWaWV3cG9ydFN0eWxlUmVz
b2x2ZXI6OmNyZWF0ZShkb2N1bWVudCkpCiAjZW5kaWYKLSAgICAsIG1fZGVwcmVjYXRlZFN0eWxl
QnVpbGRlcihEZXByZWNhdGVkU3R5bGVCdWlsZGVyOjpzaGFyZWRTdHlsZUJ1aWxkZXIoKSkKICAg
ICAsIG1fc3R5bGVNYXAodGhpcykKIHsKICAgICBFbGVtZW50KiByb290ID0gZG9jdW1lbnQtPmRv
Y3VtZW50RWxlbWVudCgpOwpAQCAtMTk3MiwzNSArMTk2Niw2IEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVl
KiB2YWx1CiAgICAgICAgIGFwcGx5UHJvcGVydHkoaWQsIHZhbHVlKTsKIH0KIAotaW5saW5lIGJv
b2wgaXNWYWxpZFZpc2l0ZWRMaW5rUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCkKLXsKLSAgICBz
d2l0Y2ggKGlkKSB7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKLSAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJSaWdodENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcjoKLSAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUNv
bG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvcjoKLSNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yOgotI2VuZGlmIC8vIENTUzNf
VEVYVAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcjoKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VGV4dFN0cm9rZUNvbG9yOgotI2lmIEVOQUJMRShTVkcpCi0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUZpbGw6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZToKLSNlbmRpZgotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KIC8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtcmVnaW9u
cy8jdGhlLWF0LXJlZ2lvbi1zdHlsZS1ydWxlCiAvLyBGSVhNRTogYWRkIGluY3JlbWVudGFsIHN1
cHBvcnQgZm9yIG90aGVyIHJlZ2lvbiBzdHlsaW5nIHByb3BlcnRpZXMuCiBpbmxpbmUgYm9vbCBT
dHlsZVJlc29sdmVyOjppc1ZhbGlkUmVnaW9uU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlk
KQpAQCAtMjA3Miw5MSArMjAzNyw2IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6dXNlU1ZHWm9vbVJ1
bGVzKCkKICAgICByZXR1cm4gbV9zdGF0ZS5lbGVtZW50KCkgJiYgbV9zdGF0ZS5lbGVtZW50KCkt
PmlzU1ZHRWxlbWVudCgpOwogfQogCi1zdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tCcmVhZHRo
KENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgY29uc3QgU3R5bGVSZXNvbHZlcjo6
U3RhdGUmIHN0YXRlLCBMZW5ndGgmIHdvcmtpbmdMZW5ndGgpCi17Ci0gICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlV2Via2l0TWluQ29udGVudCkgewotICAgICAg
ICB3b3JraW5nTGVuZ3RoID0gTGVuZ3RoKE1pbkNvbnRlbnQpOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0KLSAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFs
dWVXZWJraXRNYXhDb250ZW50KSB7Ci0gICAgICAgIHdvcmtpbmdMZW5ndGggPSBMZW5ndGgoTWF4
Q29udGVudCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHdvcmtpbmdMZW5n
dGggPSBwcmltaXRpdmVWYWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNp
b24gfCBQZXJjZW50Q29udmVyc2lvbiB8IFZpZXdwb3J0UGVyY2VudGFnZUNvbnZlcnNpb24gfCBB
dXRvQ29udmVyc2lvbj4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCBz
dGF0ZS5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOwotICAgIGlmICh3b3JraW5nTGVuZ3RoLmlz
VW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+aXNMZW5ndGgoKSkKLSAgICAgICAgd29ya2luZ0xlbmd0aC5zZXRRdWlyayhwcmltaXRp
dmVWYWx1ZS0+aXNRdWlya1ZhbHVlKCkpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRp
YyBib29sIGNyZWF0ZUdyaWRUcmFja1NpemUoQ1NTVmFsdWUqIHZhbHVlLCBHcmlkVHJhY2tTaXpl
JiB0cmFja1NpemUsIGNvbnN0IFN0eWxlUmVzb2x2ZXI6OlN0YXRlJiBzdGF0ZSkKLXsKLSAgICBp
ZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotICAgIFBhaXIqIG1pbk1heFRyYWNrQnJlYWR0aCA9IHBy
aW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFsdWUoKTsKLSAgICBpZiAoIW1pbk1heFRyYWNrQnJlYWR0
aCkgewotICAgICAgICBMZW5ndGggd29ya2luZ0xlbmd0aDsKLSAgICAgICAgaWYgKCFjcmVhdGVH
cmlkVHJhY2tCcmVhZHRoKHByaW1pdGl2ZVZhbHVlLCBzdGF0ZSwgd29ya2luZ0xlbmd0aCkpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdHJhY2tTaXplLnNldExlbmd0aCh3
b3JraW5nTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgTGVuZ3Ro
IG1pblRyYWNrQnJlYWR0aDsKLSAgICBMZW5ndGggbWF4VHJhY2tCcmVhZHRoOwotICAgIGlmICgh
Y3JlYXRlR3JpZFRyYWNrQnJlYWR0aChtaW5NYXhUcmFja0JyZWFkdGgtPmZpcnN0KCksIHN0YXRl
LCBtaW5UcmFja0JyZWFkdGgpIHx8ICFjcmVhdGVHcmlkVHJhY2tCcmVhZHRoKG1pbk1heFRyYWNr
QnJlYWR0aC0+c2Vjb25kKCksIHN0YXRlLCBtYXhUcmFja0JyZWFkdGgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICB0cmFja1NpemUuc2V0TWluTWF4KG1pblRyYWNrQnJlYWR0aCwgbWF4
VHJhY2tCcmVhZHRoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wgY3JlYXRl
R3JpZFRyYWNrTGlzdChDU1NWYWx1ZSogdmFsdWUsIFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgdHJh
Y2tTaXplcywgY29uc3QgU3R5bGVSZXNvbHZlcjo6U3RhdGUmIHN0YXRlKQotewotICAgIC8vIEhh
bmRsZSAnbm9uZScuCi0gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmU7Ci0gICAgfQotCi0gICAgaWYgKCF2YWx1ZS0+aXNWYWx1
ZUxpc3QoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZm9yIChDU1NWYWx1ZUxpc3RJ
dGVyYXRvciBpID0gdmFsdWU7IGkuaGFzTW9yZSgpOyBpLmFkdmFuY2UoKSkgewotICAgICAgICBD
U1NWYWx1ZSogY3VyclZhbHVlID0gaS52YWx1ZSgpOwotICAgICAgICBHcmlkVHJhY2tTaXplIHRy
YWNrU2l6ZTsKLSAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tTaXplKGN1cnJWYWx1ZSwgdHJh
Y2tTaXplLCBzdGF0ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdHJh
Y2tTaXplcy5hcHBlbmQodHJhY2tTaXplKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LQotc3RhdGljIGJvb2wgY3JlYXRlR3JpZFBvc2l0aW9uKENTU1ZhbHVlKiB2YWx1ZSwgR3JpZFBv
c2l0aW9uJiBwb3NpdGlvbikKLXsKLSAgICAvLyBGb3Igbm93LCB3ZSBvbmx5IGFjY2VwdDogPGlu
dGVnZXI+IHwgJ2F1dG8nCi0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBpZiAocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHByaW1pdGl2ZVZh
bHVlLT5pc051bWJlcigpKTsKLSAgICBwb3NpdGlvbi5zZXRJbnRlZ2VyUG9zaXRpb24ocHJpbWl0
aXZlVmFsdWUtPmdldEludFZhbHVlKCkpOwotICAgIHJldHVybiB0cnVlOwotfQotCiAjaWYgRU5B
QkxFKENTU19WQVJJQUJMRVMpCiBzdGF0aWMgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZShDU1NW
YWx1ZSogdmFsdWUpCiB7CkBAIC0yMjA4LDk3NCArMjA4OCw2IEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6cmVzb2x2ZVZhcmlhYmxlcyhDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIFZl
Y3RvcjxzCiB9CiAjZW5kaWYKIAotdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENT
U1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKLXsKLSNpZiBFTkFCTEUoQ1NTX1ZBUklB
QkxFUykKLSAgICBpZiAoaWQgIT0gQ1NTUHJvcGVydHlWYXJpYWJsZSAmJiBoYXNWYXJpYWJsZVJl
ZmVyZW5jZSh2YWx1ZSkpIHsKLSAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDU1NQcm9wZXJ0eUlE
LCBTdHJpbmc+ID4ga25vd25FeHByZXNzaW9uczsKLSAgICAgICAgcmVzb2x2ZVZhcmlhYmxlcyhp
ZCwgdmFsdWUsIGtub3duRXhwcmVzc2lvbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2Vu
ZGlmCi0KLSAgICAvLyBDU1MgdmFyaWFibGVzIGRvbid0IHJlc29sdmUgc2hvcnRoYW5kcyBhdCBw
YXJzaW5nIHRpbWUsIHNvIHRoaXMgc2hvdWxkIGJlICphZnRlciogaGFuZGxpbmcgdmFyaWFibGVz
LgotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWlzRXhwYW5kZWRTaG9ydGhhbmQoaWQpLCAiU2hv
cnRoYW5kIHByb3BlcnR5IGlkID0gJWQgd2Fzbid0IGV4cGFuZGVkIGF0IHBhcnNpbmcgdGltZSIs
IGlkKTsKLQotICAgIFN0YXRlJiBzdGF0ZSA9IG1fc3RhdGU7Ci0gICAgYm9vbCBpc0luaGVyaXQg
PSBzdGF0ZS5wYXJlbnROb2RlKCkgJiYgdmFsdWUtPmlzSW5oZXJpdGVkVmFsdWUoKTsKLSAgICBi
b29sIGlzSW5pdGlhbCA9IHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpIHx8ICghc3RhdGUucGFyZW50
Tm9kZSgpICYmIHZhbHVlLT5pc0luaGVyaXRlZFZhbHVlKCkpOwotCi0gICAgQVNTRVJUKCFpc0lu
aGVyaXQgfHwgIWlzSW5pdGlhbCk7IC8vIGlzSW5oZXJpdCAtPiAhaXNJbml0aWFsICYmIGlzSW5p
dGlhbCAtPiAhaXNJbmhlcml0Ci0gICAgQVNTRVJUKCFpc0luaGVyaXQgfHwgKHN0YXRlLnBhcmVu
dE5vZGUoKSAmJiBzdGF0ZS5wYXJlbnRTdHlsZSgpKSk7IC8vIGlzSW5oZXJpdCAtPiAoc3RhdGUu
cGFyZW50Tm9kZSgpICYmIHN0YXRlLnBhcmVudFN0eWxlKCkpCi0KLSAgICBpZiAoIXN0YXRlLmFw
cGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpICYmICghc3RhdGUuYXBwbHlQcm9wZXJ0eVRvVmlz
aXRlZExpbmtTdHlsZSgpIHx8ICFpc1ZhbGlkVmlzaXRlZExpbmtQcm9wZXJ0eShpZCkpKSB7Ci0g
ICAgICAgIC8vIExpbWl0IHRoZSBwcm9wZXJ0aWVzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gb25s
eSB0aGUgb25lcyBob25vcmVkIGJ5IDp2aXNpdGVkLgotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGlzSW5oZXJpdCAmJiAhc3RhdGUucGFyZW50U3R5bGUoKS0+aGFzRXhwbGljaXRs
eUluaGVyaXRlZFByb3BlcnRpZXMoKSAmJiAhQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVy
dHkoaWQpKQotICAgICAgICBzdGF0ZS5wYXJlbnRTdHlsZSgpLT5zZXRIYXNFeHBsaWNpdGx5SW5o
ZXJpdGVkUHJvcGVydGllcygpOwotCi0jaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCi0gICAgaWYg
KGlkID09IENTU1Byb3BlcnR5VmFyaWFibGUpIHsKLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04odmFsdWUtPmlzVmFyaWFibGVWYWx1ZSgpKTsKLSAgICAgICAgQ1NTVmFy
aWFibGVWYWx1ZSogdmFyaWFibGUgPSBzdGF0aWNfY2FzdDxDU1NWYXJpYWJsZVZhbHVlKj4odmFs
dWUpOwotICAgICAgICBBU1NFUlQoIXZhcmlhYmxlLT5uYW1lKCkuaXNFbXB0eSgpKTsKLSAgICAg
ICAgQVNTRVJUKCF2YXJpYWJsZS0+dmFsdWUoKS5pc0VtcHR5KCkpOwotICAgICAgICBzdGF0ZS5z
dHlsZSgpLT5zZXRWYXJpYWJsZSh2YXJpYWJsZS0+bmFtZSgpLCB2YXJpYWJsZS0+dmFsdWUoKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIC8vIENoZWNrIGxvb2t1cCB0
YWJsZSBmb3IgaW1wbGVtZW50YXRpb25zIGFuZCB1c2Ugd2hlbiBhdmFpbGFibGUuCi0gICAgY29u
c3QgUHJvcGVydHlIYW5kbGVyJiBoYW5kbGVyID0gbV9kZXByZWNhdGVkU3R5bGVCdWlsZGVyLnBy
b3BlcnR5SGFuZGxlcihpZCk7Ci0gICAgaWYgKGhhbmRsZXIuaXNWYWxpZCgpKSB7Ci0gICAgICAg
IGlmIChpc0luaGVyaXQpCi0gICAgICAgICAgICBoYW5kbGVyLmFwcGx5SW5oZXJpdFZhbHVlKGlk
LCB0aGlzKTsKLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgaGFuZGxl
ci5hcHBseUluaXRpYWxWYWx1ZShpZCwgdGhpcyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGhhbmRsZXIuYXBwbHlWYWx1ZShpZCwgdGhpcywgdmFsdWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSA/IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
IDogMDsKLQotICAgIGZsb2F0IHpvb21GYWN0b3IgPSBzdGF0ZS5zdHlsZSgpLT5lZmZlY3RpdmVa
b29tKCk7Ci0KLSAgICAvLyBXaGF0IGZvbGxvd3MgaXMgYSBsaXN0IHRoYXQgbWFwcyB0aGUgQ1NT
IHByb3BlcnRpZXMgaW50byB0aGVpciBjb3JyZXNwb25kaW5nIGZyb250LWVuZAotICAgIC8vIFJl
bmRlclN0eWxlIHZhbHVlcy4KLSAgICBzd2l0Y2ggKGlkKSB7Ci0gICAgLy8gbGlzdHMKLSAgICBj
YXNlIENTU1Byb3BlcnR5Q29udGVudDoKLSAgICAgICAgLy8gbGlzdCBvZiBzdHJpbmcsIHVyaSwg
Y291bnRlciwgYXR0ciwgaQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSW4gQ1NT
MywgaXQgd2lsbCBiZSBwb3NzaWJsZSB0byBpbmhlcml0IGNvbnRlbnQuIEluIENTUzIgaXQgaXMg
bm90LiBUaGlzCi0gICAgICAgICAgICAvLyBub3RlIGlzIGEgcmVtaW5kZXIgdGhhdCBldmVudHVh
bGx5ICJpbmhlcml0IiBuZWVkcyB0byBiZSBzdXBwb3J0ZWQuCi0KLSAgICAgICAgICAgIGlmIChp
c0luaXRpYWwpIHsKLSAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5jbGVhckNvbnRlbnQo
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGlmICghdmFsdWUtPmlzVmFsdWVMaXN0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgICAgICBib29sIGRpZFNldCA9IGZhbHNlOwotICAgICAgICAgICAgZm9yIChDU1NWYWx1
ZUxpc3RJdGVyYXRvciBpID0gdmFsdWU7IGkuaGFzTW9yZSgpOyBpLmFkdmFuY2UoKSkgewotICAg
ICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gaS52YWx1ZSgpOwotICAgICAgICAgICAgICAg
IGlmIChpdGVtLT5pc0ltYWdlR2VuZXJhdG9yVmFsdWUoKSkgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoaXRlbS0+aXNHcmFkaWVudFZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBz
dGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZShzdGF0
aWNfY2FzdDxDU1NHcmFkaWVudFZhbHVlKj4oaXRlbSktPmdyYWRpZW50V2l0aFN0eWxlc1Jlc29s
dmVkKHRoaXMpLmdldCgpKSwgZGlkU2V0KTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudChTdHlsZUdlbmVy
YXRlZEltYWdlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSo+KGl0
ZW0pKSwgZGlkU2V0KTsKLSAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSNpZiBF
TkFCTEUoQ1NTX0lNQUdFX1NFVCkKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0tPmlz
SW1hZ2VTZXRWYWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNl
dENvbnRlbnQoc2V0T3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5Q29udGVudCwgc3RhdGlj
X2Nhc3Q8Q1NTSW1hZ2VTZXRWYWx1ZSo+KGl0ZW0pKSwgZGlkU2V0KTsKLSAgICAgICAgICAgICAg
ICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIGlmIChpdGVtLT5pc0ltYWdlVmFsdWUoKSkgewotICAgICAgICAgICAgICAgICAg
ICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KGNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQ
cm9wZXJ0eUNvbnRlbnQsIHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUqPihpdGVtKSksIGRpZFNl
dCk7Ci0gICAgICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICgh
aXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb250ZW50VmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOwotCi0gICAgICAgICAgICAgICAgaWYg
KGNvbnRlbnRWYWx1ZS0+aXNTdHJpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBzdGF0ZS5z
dHlsZSgpLT5zZXRDb250ZW50KGNvbnRlbnRWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKS5pbXBsKCks
IGRpZFNldCk7Ci0gICAgICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChjb250ZW50VmFsdWUtPmlzQXR0cigpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBDYW4gYSBuYW1lc3BhY2UgYmUgc3BlY2lmaWVkIGZvciBhbiBhdHRy
KGZvbyk/Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zdHlsZSgpLT5zdHlsZVR5cGUo
KSA9PSBOT1BTRVVETykKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNl
dFVuaXF1ZSgpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0ZS5wYXJlbnRTdHlsZSgpLT5zZXRVbmlxdWUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgUXVhbGlmaWVkTmFtZSBhdHRyKG51bGxBdG9tLCBjb250ZW50VmFsdWUtPmdldFN0cmluZ1Zh
bHVlKCkuaW1wbCgpLCBudWxsQXRvbSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUgPSBzdGF0ZS5lbGVtZW50KCktPmdldEF0dHJpYnV0ZShhdHRyKTsKLSAg
ICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudCh2YWx1ZS5pc051bGwo
KSA/IGVtcHR5QXRvbSA6IHZhbHVlLmltcGwoKSwgZGlkU2V0KTsKLSAgICAgICAgICAgICAgICAg
ICAgZGlkU2V0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgdGhlIGZh
Y3QgdGhhdCB0aGUgYXR0cmlidXRlIHZhbHVlIGFmZmVjdHMgdGhlIHN0eWxlCi0gICAgICAgICAg
ICAgICAgICAgIG1fcnVsZVNldHMuZmVhdHVyZXMoKS5hdHRyc0luUnVsZXMuYWRkKGF0dHIubG9j
YWxOYW1lKCkuaW1wbCgpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRWYWx1
ZS0+aXNDb3VudGVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgQ291bnRlciogY291bnRlclZh
bHVlID0gY29udGVudFZhbHVlLT5nZXRDb3VudGVyVmFsdWUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgRUxpc3RTdHlsZVR5cGUgbGlzdFN0eWxlVHlwZSA9IE5vbmVMaXN0U3R5bGU7Ci0gICAgICAg
ICAgICAgICAgICAgIGludCBsaXN0U3R5bGVJZGVudCA9IGNvdW50ZXJWYWx1ZS0+bGlzdFN0eWxl
SWRlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGxpc3RTdHlsZUlkZW50ICE9IENTU1Zh
bHVlTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0aWNf
Y2FzdDxFTGlzdFN0eWxlVHlwZT4obGlzdFN0eWxlSWRlbnQgLSBDU1NWYWx1ZURpc2MpOwotICAg
ICAgICAgICAgICAgICAgICBPd25QdHI8Q291bnRlckNvbnRlbnQ+IGNvdW50ZXIgPSBhZG9wdFB0
cihuZXcgQ291bnRlckNvbnRlbnQoY291bnRlclZhbHVlLT5pZGVudGlmaWVyKCksIGxpc3RTdHls
ZVR5cGUsIGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpKTsKLSAgICAgICAgICAgICAgICAgICAg
c3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudChjb3VudGVyLnJlbGVhc2UoKSwgZGlkU2V0KTsKLSAg
ICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRWYWx1ZS0+Z2V0SWRlbnQoKSkg
ewotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlT3BlblF1b3RlOgotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudChPUEVOX1FVT1RFLCBkaWRT
ZXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQ2xv
c2VRdW90ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldENvbnRl
bnQoQ0xPU0VfUVVPVEUsIGRpZFNldCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaWRTZXQg
PSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVOb09wZW5RdW90ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRlLnN0eWxlKCktPnNldENvbnRlbnQoTk9fT1BFTl9RVU9URSwgZGlkU2V0KTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vQ2xvc2VRdW90ZToKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldENvbnRlbnQoTk9fQ0xPU0Vf
UVVPVEUsIGRpZFNldCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBub3JtYWwgYW5kIG5vbmUgZG8gbm90IGhh
dmUgYW55IGVmZmVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIHsgfQotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKCFkaWRTZXQpCi0gICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+Y2xlYXJDb250ZW50
KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5
UXVvdGVzOgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBzdGF0ZS5zdHls
ZSgpLT5zZXRRdW90ZXMoc3RhdGUucGFyZW50U3R5bGUoKS0+cXVvdGVzKCkpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAg
ICAgIHN0YXRlLnN0eWxlKCktPnNldFF1b3RlcygwKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgICAgICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKLSAgICAgICAgICAg
IENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsK
LSAgICAgICAgICAgIFJlZlB0cjxRdW90ZXNEYXRhPiBxdW90ZXMgPSBRdW90ZXNEYXRhOjpjcmVh
dGUoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC0+bGVuZ3RoKCk7
IGkgKz0gMikgewotICAgICAgICAgICAgICAgIENTU1ZhbHVlKiBmaXJzdCA9IGxpc3QtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soaSk7Ci0gICAgICAgICAgICAgICAgLy8gaXRlbSgpIHJldHVybnMg
bnVsbCBpZiBvdXQgb2YgYm91bmRzIHNvIHRoaXMgaXMgc2FmZS4KLSAgICAgICAgICAgICAgICBD
U1NWYWx1ZSogc2Vjb25kID0gbGlzdC0+aXRlbShpICsgMSk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFzZWNvbmQpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAg
IEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGZpcnN0LT5pc1ByaW1pdGl2ZVZhbHVl
KCkpOwotICAgICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNl
Y29uZC0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgc3RhcnRR
dW90ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZmlyc3QpLT5nZXRTdHJpbmdW
YWx1ZSgpOwotICAgICAgICAgICAgICAgIFN0cmluZyBlbmRRdW90ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4oc2Vjb25kKS0+Z2V0U3RyaW5nVmFsdWUoKTsKLSAgICAgICAgICAg
ICAgICBxdW90ZXMtPmFkZFBhaXIoc3RkOjptYWtlX3BhaXIoc3RhcnRRdW90ZSwgZW5kUXVvdGUp
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFF1b3Rlcyhx
dW90ZXMpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcmlt
aXRpdmVWYWx1ZSkgewotICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRRdW90
ZXMoUXVvdGVzRGF0YTo6Y3JlYXRlKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAg
ICAvLyBTaG9ydGhhbmQgcHJvcGVydGllcy4KLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udDoKLSAg
ICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnRE
ZXNjcmlwdGlvbiA9IHN0YXRlLnBhcmVudFN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpOwotICAg
ICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TGluZUhlaWdodChzdGF0ZS5wYXJlbnRTdHlsZSgp
LT5zcGVjaWZpZWRMaW5lSGVpZ2h0KCkpOwotICAgICAgICAgICAgc3RhdGUuc2V0TGluZUhlaWdo
dFZhbHVlKDApOwotICAgICAgICAgICAgc2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlv
bik7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBTZXR0aW5n
cyogc2V0dGluZ3MgPSBkb2N1bWVudFNldHRpbmdzKCk7Ci0gICAgICAgICAgICBBU1NFUlQoc2V0
dGluZ3MpOyAvLyBJZiB3ZSdyZSBkb2luZyBzdHlsZSByZXNvbHV0aW9uLCB0aGlzIGRvY3VtZW50
IHNob3VsZCBhbHdheXMgYmUgaW4gYSBmcmFtZSBhbmQgdGh1cyBoYXZlIHNldHRpbmdzCi0gICAg
ICAgICAgICBpZiAoIXNldHRpbmdzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIGluaXRpYWxpemVGb250U3R5bGUoc2V0dGluZ3MpOwotICAgICAgICB9IGVsc2UgaWYgKHBy
aW1pdGl2ZVZhbHVlKSB7Ci0gICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRMaW5lSGVpZ2h0
KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKLSAgICAgICAgICAgIHN0YXRlLnNl
dExpbmVIZWlnaHRWYWx1ZSgwKTsKLQotICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnRE
ZXNjcmlwdGlvbjsKLSAgICAgICAgICAgIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+c3lz
dGVtRm9udChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSwgZm9udERlc2NyaXB0aW9uKTsKLQot
ICAgICAgICAgICAgLy8gRG91YmxlLWNoZWNrIGFuZCBzZWUgaWYgdGhlIHRoZW1lIGRpZCBhbnl0
aGluZy4gSWYgbm90LCBkb24ndCBib3RoZXIgdXBkYXRpbmcgdGhlIGZvbnQuCi0gICAgICAgICAg
ICBpZiAoZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCkpIHsKLSAgICAgICAgICAgICAg
ICAvLyBNYWtlIHN1cmUgdGhlIHJlbmRlcmluZyBtb2RlIGFuZCBwcmludGVyIGZvbnQgc2V0dGlu
Z3MgYXJlIHVwZGF0ZWQuCi0gICAgICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9j
dW1lbnRTZXR0aW5ncygpOwotICAgICAgICAgICAgICAgIEFTU0VSVChzZXR0aW5ncyk7IC8vIElm
IHdlJ3JlIGRvaW5nIHN0eWxlIHJlc29sdXRpb24sIHRoaXMgZG9jdW1lbnQgc2hvdWxkIGFsd2F5
cyBiZSBpbiBhIGZyYW1lIGFuZCB0aHVzIGhhdmUgc2V0dGluZ3MKLSAgICAgICAgICAgICAgICBp
ZiAoIXNldHRpbmdzKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldFJlbmRlcmluZ01vZGUoc2V0dGluZ3MtPmZvbnRSZW5kZXJp
bmdNb2RlKCkpOwotICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRVc2VQcmludGVy
Rm9udChkb2N1bWVudCgpLT5wcmludGluZygpIHx8ICFzZXR0aW5ncy0+c2NyZWVuRm9udFN1YnN0
aXR1dGlvbkVuYWJsZWQoKSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIHpvb20g
ZmFjdG9yLgotICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUo
Z2V0Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUoZG9jdW1lbnQoKSwgc3RhdGUuc3R5bGUo
KSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIGZvbnREZXNjcmlwdGlvbi5zcGVj
aWZpZWRTaXplKCksIHVzZVNWR1pvb21SdWxlcygpKSk7Ci0gICAgICAgICAgICAgICAgc2V0Rm9u
dERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0g
ZWxzZSBpZiAodmFsdWUtPmlzRm9udFZhbHVlKCkpIHsKLSAgICAgICAgICAgIEZvbnRWYWx1ZSog
Zm9udCA9IHN0YXRpY19jYXN0PEZvbnRWYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgICAgIGlmICgh
Zm9udC0+c3R5bGUgfHwgIWZvbnQtPnZhcmlhbnQgfHwgIWZvbnQtPndlaWdodAotICAgICAgICAg
ICAgICAgIHx8ICFmb250LT5zaXplIHx8ICFmb250LT5saW5lSGVpZ2h0IHx8ICFmb250LT5mYW1p
bHkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShD
U1NQcm9wZXJ0eUZvbnRTdHlsZSwgZm9udC0+c3R5bGUuZ2V0KCkpOwotICAgICAgICAgICAgYXBw
bHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCBmb250LT52YXJpYW50LmdldCgpKTsK
LSAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCBmb250LT53
ZWlnaHQuZ2V0KCkpOwotICAgICAgICAgICAgLy8gVGhlIHByZXZpb3VzIHByb3BlcnRpZXMgY2Fu
IGRpcnR5IG91ciBmb250IGJ1dCB0aGV5IGRvbid0IHRyeSB0byByZWFkIHRoZSBmb250J3MKLSAg
ICAgICAgICAgIC8vIHByb3BlcnRpZXMgYmFjaywgd2hpY2ggaXMgc2FmZS4gSG93ZXZlciBpZiBm
b250LXNpemUgaXMgdXNpbmcgdGhlICdleCcgdW5pdCwgaXQgd2lsbAotICAgICAgICAgICAgLy8g
bmVlZCBxdWVyeSB0aGUgZGlydGllZCBmb250J3MgeC1oZWlnaHQgdG8gZ2V0IHRoZSBjb21wdXRl
ZCBzaXplLiBUbyBiZSBzYWZlIGluIHRoaXMKLSAgICAgICAgICAgIC8vIGNhc2UsIGxldCdzIGp1
c3QgdXBkYXRlIHRoZSBmb250IG5vdy4KLSAgICAgICAgICAgIHVwZGF0ZUZvbnQoKTsKLSAgICAg
ICAgICAgIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgZm9udC0+c2l6ZS5nZXQo
KSk7Ci0KLSAgICAgICAgICAgIHN0YXRlLnNldExpbmVIZWlnaHRWYWx1ZShmb250LT5saW5lSGVp
Z2h0LmdldCgpKTsKLQotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRG
YW1pbHksIGZvbnQtPmZhbWlseS5nZXQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdDoK
LSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b206Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJJbWFnZToKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdDoKLSAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJS
aWdodDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZzoKLSAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcDoKLSAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHls
ZToKLSAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRs
aW5lOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvdzoKLSAgICBjYXNlIENTU1Byb3BlcnR5
UGFkZGluZzoKLSAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbjoKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0QW5pbWF0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJB
ZnRlcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlclN0YXJ0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJSYWRpdXM6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtblJ1bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXg6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEZsZXhGbG93OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlk
Q29sdW1uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkUm93OgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFzazoKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
UmVwZWF0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zaXRpb246Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbjoK
LSNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdy
YXA6Ci0jZW5kaWYKLSAgICAgICAgQVNTRVJUKGlzRXhwYW5kZWRTaG9ydGhhbmQoaWQpKTsKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgLy8gQ1NT
MyBQcm9wZXJ0aWVzCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRTaGFkb3c6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eUJveFNoYWRvdzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93
OiB7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIGlmIChpZCA9PSBDU1NQ
cm9wZXJ0eVRleHRTaGFkb3cpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlLnN0eWxlKCkt
PnNldFRleHRTaGFkb3coc3RhdGUucGFyZW50U3R5bGUoKS0+dGV4dFNoYWRvdygpID8gYWRvcHRQ
dHIobmV3IFNoYWRvd0RhdGEoKnN0YXRlLnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3coKSkpIDog
bnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGUuc3R5bGUoKS0+c2V0Qm94U2hhZG93
KHN0YXRlLnBhcmVudFN0eWxlKCktPmJveFNoYWRvdygpID8gYWRvcHRQdHIobmV3IFNoYWRvd0Rh
dGEoKnN0YXRlLnBhcmVudFN0eWxlKCktPmJveFNoYWRvdygpKSkgOiBudWxscHRyKTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAoaXNJbml0aWFsIHx8IHByaW1pdGl2ZVZhbHVlKSAvLyBpbml0aWFs
IHwgbm9uZQotICAgICAgICAgICAgcmV0dXJuIGlkID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdyA/
IHN0YXRlLnN0eWxlKCktPnNldFRleHRTaGFkb3cobnVsbHB0cikgOiBzdGF0ZS5zdHlsZSgpLT5z
ZXRCb3hTaGFkb3cobnVsbHB0cik7Ci0KLSAgICAgICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3Qo
KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3IgKENTU1ZhbHVlTGlzdEl0ZXJh
dG9yIGkgPSB2YWx1ZTsgaS5oYXNNb3JlKCk7IGkuYWR2YW5jZSgpKSB7Ci0gICAgICAgICAgICBD
U1NWYWx1ZSogY3VyclZhbHVlID0gaS52YWx1ZSgpOwotICAgICAgICAgICAgaWYgKCFjdXJyVmFs
dWUtPmlzU2hhZG93VmFsdWUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIFNoYWRvd1ZhbHVlKiBpdGVtID0gc3RhdGljX2Nhc3Q8U2hhZG93VmFsdWUqPihjdXJyVmFs
dWUpOwotICAgICAgICAgICAgaW50IHggPSBpdGVtLT54LT5jb21wdXRlTGVuZ3RoPGludD4oc3Rh
dGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKTsKLSAgICAg
ICAgICAgIGludCB5ID0gaXRlbS0+eS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0YXRlLnN0eWxlKCks
IHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICBpbnQg
Ymx1ciA9IGl0ZW0tPmJsdXIgPyBpdGVtLT5ibHVyLT5jb21wdXRlTGVuZ3RoPGludD4oc3RhdGUu
c3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKSA6IDA7Ci0gICAg
ICAgICAgICBpbnQgc3ByZWFkID0gaXRlbS0+c3ByZWFkID8gaXRlbS0+c3ByZWFkLT5jb21wdXRl
TGVuZ3RoPGludD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29t
RmFjdG9yKSA6IDA7Ci0gICAgICAgICAgICBTaGFkb3dTdHlsZSBzaGFkb3dTdHlsZSA9IGl0ZW0t
PnN0eWxlICYmIGl0ZW0tPnN0eWxlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW5zZXQgPyBJbnNl
dCA6IE5vcm1hbDsKLSAgICAgICAgICAgIENvbG9yIGNvbG9yOwotICAgICAgICAgICAgaWYgKGl0
ZW0tPmNvbG9yKQotICAgICAgICAgICAgICAgIGNvbG9yID0gY29sb3JGcm9tUHJpbWl0aXZlVmFs
dWUoaXRlbS0+Y29sb3IuZ2V0KCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoc3RhdGUuc3R5bGUo
KSkKLSAgICAgICAgICAgICAgICBjb2xvciA9IHN0YXRlLnN0eWxlKCktPmNvbG9yKCk7Ci0KLSAg
ICAgICAgICAgIE93blB0cjxTaGFkb3dEYXRhPiBzaGFkb3dEYXRhID0gYWRvcHRQdHIobmV3IFNo
YWRvd0RhdGEoSW50UG9pbnQoeCwgeSksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIGlkID09
IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENv
bG9yOjp0cmFuc3BhcmVudCkpOwotICAgICAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5VGV4
dFNoYWRvdykKLSAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KHNo
YWRvd0RhdGEucmVsZWFzZSgpLCBpLmluZGV4KCkpOyAvLyBhZGQgdG8gdGhlIGxpc3QgaWYgdGhp
cyBpcyBub3QgdGhlIGZpcnN0IGVudHJ5Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgc3RhdGUuc3R5bGUoKS0+c2V0Qm94U2hhZG93KHNoYWRvd0RhdGEucmVsZWFzZSgpLCBpLmlu
ZGV4KCkpOyAvLyBhZGQgdG8gdGhlIGxpc3QgaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGVudHJ5
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm94UmVmbGVjdDogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChi
b3hSZWZsZWN0LCBCb3hSZWZsZWN0KQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpIHsKLSAg
ICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEJveFJlZmxlY3QoUmVuZGVyU3R5bGU6OmluaXRp
YWxCb3hSZWZsZWN0KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKCF2YWx1ZS0+aXNSZWZsZWN0VmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBDU1NSZWZsZWN0VmFsdWUqIHJlZmxlY3RWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1Jl
ZmxlY3RWYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gcmVm
bGVjdGlvbiA9IFN0eWxlUmVmbGVjdGlvbjo6Y3JlYXRlKCk7Ci0gICAgICAgIHJlZmxlY3Rpb24t
PnNldERpcmVjdGlvbigqcmVmbGVjdFZhbHVlLT5kaXJlY3Rpb24oKSk7Ci0gICAgICAgIGlmIChy
ZWZsZWN0VmFsdWUtPm9mZnNldCgpKQotICAgICAgICAgICAgcmVmbGVjdGlvbi0+c2V0T2Zmc2V0
KHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252
ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oc3RhdGUu
c3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKSk7Ci0gICAgICAg
IE5pbmVQaWVjZUltYWdlIG1hc2s7Ci0gICAgICAgIG1hc2suc2V0TWFza0RlZmF1bHRzKCk7Ci0g
ICAgICAgIG1fc3R5bGVNYXAubWFwTmluZVBpZWNlSW1hZ2UoaWQsIHJlZmxlY3RWYWx1ZS0+bWFz
aygpLCBtYXNrKTsKLSAgICAgICAgcmVmbGVjdGlvbi0+c2V0TWFzayhtYXNrKTsKLQotICAgICAg
ICBzdGF0ZS5zdHlsZSgpLT5zZXRCb3hSZWZsZWN0KHJlZmxlY3Rpb24ucmVsZWFzZSgpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5U3JjOiAvLyBPbmx5IHVz
ZWQgaW4gQGZvbnQtZmFjZSBydWxlcy4KLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlVbmljb2RlUmFuZ2U6IC8vIE9ubHkgdXNlZCBpbiBAZm9udC1mYWNlIHJ1bGVzLgotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZTogewotICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChsb2NhbGUsIExvY2FsZSk7Ci0gICAgICAgIGlm
ICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAgICBzdGF0
ZS5zdHlsZSgpLT5zZXRMb2NhbGUobnVsbEF0b20pOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBzdGF0ZS5zdHlsZSgpLT5zZXRMb2NhbGUocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVl
KCkpOwotICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc3RhdGUuc3R5
bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTY3Jp
cHQobG9jYWxlVG9TY3JpcHRDb2RlRm9yRm9udFNlbGVjdGlvbihzdGF0ZS5zdHlsZSgpLT5sb2Nh
bGUoKSkpOwotICAgICAgICBzZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdERhc2hib2FyZFJlZ2lvbjoKLSAgICB7Ci0gICAgICAgIEhB
TkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGRhc2hib2FyZFJlZ2lvbnMsIERhc2hib2FyZFJlZ2lv
bnMpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkg
ewotICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0RGFzaGJvYXJkUmVnaW9ucyhSZW5kZXJT
dHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IHByaW1pdGl2ZVZhbHVl
LT5nZXREYXNoYm9hcmRSZWdpb25WYWx1ZSgpOwotICAgICAgICBpZiAoIXJlZ2lvbikKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBEYXNoYm9hcmRSZWdpb24qIGZpcnN0ID0gcmVnaW9u
OwotICAgICAgICB3aGlsZSAocmVnaW9uKSB7Ci0gICAgICAgICAgICBMZW5ndGggdG9wID0gY29u
dmVydFRvSW50TGVuZ3RoKHJlZ2lvbi0+dG9wKCksIHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RF
bGVtZW50U3R5bGUoKSk7Ci0gICAgICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252ZXJ0VG9JbnRM
ZW5ndGgocmVnaW9uLT5yaWdodCgpLCBzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0
eWxlKCkpOwotICAgICAgICAgICAgTGVuZ3RoIGJvdHRvbSA9IGNvbnZlcnRUb0ludExlbmd0aChy
ZWdpb24tPmJvdHRvbSgpLCBzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCkp
OwotICAgICAgICAgICAgTGVuZ3RoIGxlZnQgPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVnaW9uLT5s
ZWZ0KCksIHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSk7Ci0KLSAgICAg
ICAgICAgIGlmICh0b3AuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgICAgICB0b3AgPSBMZW5n
dGgoKTsKLSAgICAgICAgICAgIGlmIChyaWdodC5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAg
ICAgIHJpZ2h0ID0gTGVuZ3RoKCk7Ci0gICAgICAgICAgICBpZiAoYm90dG9tLmlzVW5kZWZpbmVk
KCkpCi0gICAgICAgICAgICAgICAgYm90dG9tID0gTGVuZ3RoKCk7Ci0gICAgICAgICAgICBpZiAo
bGVmdC5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgICAgIGxlZnQgPSBMZW5ndGgoKTsKLQot
ICAgICAgICAgICAgaWYgKHJlZ2lvbi0+bV9pc0NpcmNsZSkKLSAgICAgICAgICAgICAgICBzdGF0
ZS5zdHlsZSgpLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5bGVEYXNoYm9hcmRSZWdpb246OkNpcmNs
ZSwgcmVnaW9uLT5tX2xhYmVsLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIHJlZ2lvbiA9PSBm
aXJzdCA/IGZhbHNlIDogdHJ1ZSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChyZWdpb24tPm1faXNS
ZWN0YW5nbGUpCi0gICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0RGFzaGJvYXJkUmVn
aW9uKFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpSZWN0YW5nbGUsIHJlZ2lvbi0+bV9sYWJlbCwgdG9w
LCByaWdodCwgYm90dG9tLCBsZWZ0LCByZWdpb24gPT0gZmlyc3QgPyBmYWxzZSA6IHRydWUpOwot
ICAgICAgICAgICAgcmVnaW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBzdGF0ZS5kb2N1bWVudCgpLT5zZXRIYXNBbm5vdGF0ZWRSZWdpb25zKHRydWUpOwot
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRFJBR0dBQkxFX1JF
R0lPTikKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwUmVnaW9uOiB7Ci0gICAgICAgIGlm
ICghcHJpbWl0aXZlVmFsdWUgfHwgIXByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXREcmFnZ2FibGVSZWdpb25N
b2RlKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlRHJhZyA/IERyYWdnYWJs
ZVJlZ2lvbkRyYWcgOiBEcmFnZ2FibGVSZWdpb25Ob0RyYWcpOwotICAgICAgICBzdGF0ZS5kb2N1
bWVudCgpLT5zZXRIYXNBbm5vdGF0ZWRSZWdpb25zKHRydWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotI2VuZGlmCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aDog
ewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0ZXh0U3Ryb2tlV2lkdGgsIFRl
eHRTdHJva2VXaWR0aCkKLSAgICAgICAgZmxvYXQgd2lkdGggPSAwOwotICAgICAgICBzd2l0Y2gg
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVUaGlu
OgotICAgICAgICBjYXNlIENTU1ZhbHVlTWVkaXVtOgotICAgICAgICBjYXNlIENTU1ZhbHVlVGhp
Y2s6IHsKLSAgICAgICAgICAgIGRvdWJsZSByZXN1bHQgPSAxLjAgLyA0ODsKLSAgICAgICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU1lZGl1bSkKLSAgICAg
ICAgICAgICAgICByZXN1bHQgKj0gMzsKLSAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlVGhpY2spCi0gICAgICAgICAgICAgICAgcmVzdWx0
ICo9IDU7Ci0gICAgICAgICAgICB3aWR0aCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmVz
dWx0LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyktPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KHN0
YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSwgem9vbUZhY3Rvcik7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
d2lkdGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3RhdGUuc3R5bGUo
KSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFRleHRTdHJva2VXaWR0
aCh3aWR0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zZm9ybTogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0cmFu
c2Zvcm0sIFRyYW5zZm9ybSk7Ci0gICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9u
czsKLSAgICAgICAgY3JlYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyh2YWx1ZSwgc3RhdGUuc3R5bGUo
KSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCBvcGVyYXRpb25zKTsKLSAgICAgICAgc3RhdGUu
c3R5bGUoKS0+c2V0VHJhbnNmb3JtKG9wZXJhdGlvbnMpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZTogewotICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTChwZXJzcGVjdGl2ZSwgUGVyc3BlY3RpdmUpCi0KLSAgICAg
ICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKSB7Ci0gICAgICAg
ICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRQZXJzcGVjdGl2ZSgwKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIGZsb2F0IHBlcnNwZWN0aXZlVmFsdWU7Ci0gICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS0+aXNMZW5ndGgoKSkKLSAgICAgICAgICAgIHBlcnNwZWN0aXZl
VmFsdWUgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3RhdGUuc3R5bGUo
KSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKTsKLSAgICAgICAgZWxzZSBp
ZiAocHJpbWl0aXZlVmFsdWUtPmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgIC8vIEZvciBiYWNr
d2FyZCBjb21wYXRpYmlsaXR5LCB0cmVhdCB2YWx1ZWxlc3MgbnVtYmVycyBhcyBweC4KLSAgICAg
ICAgICAgIHBlcnNwZWN0aXZlVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHByaW1p
dGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKS0+
Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHls
ZSgpLCB6b29tRmFjdG9yKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgaWYgKHBlcnNwZWN0aXZlVmFsdWUgPj0gMC4wZikKLSAgICAgICAgICAgIHN0YXRl
LnN0eWxlKCktPnNldFBlcnNwZWN0aXZlKHBlcnNwZWN0aXZlVmFsdWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMKHRhcEhpZ2hsaWdodENvbG9yLCBUYXBIaWdobGlnaHRDb2xvcik7Ci0gICAgICAgIGlm
ICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBDb2xvciBj
b2wgPSBjb2xvckZyb21QcmltaXRpdmVWYWx1ZShwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgIHN0
YXRlLnN0eWxlKCktPnNldFRhcEhpZ2hsaWdodENvbG9yKGNvbCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5H
KQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRPdmVyZmxvd1Njcm9sbGluZzogewotICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nLCBV
c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKTsKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRVc2VUb3VjaE92
ZXJmbG93U2Nyb2xsaW5nKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlVG91
Y2gpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eUludmFsaWQ6Ci0gICAgICAgIHJldHVybjsKLSAgICAvLyBEaXJlY3Rpb25hbCBwcm9wZXJ0aWVz
IGFyZSByZXNvbHZlZCBieSByZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eSgpIGJlZm9yZSB0
aGUgc3dpdGNoLgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcjoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckVuZFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJTdGFydENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxl
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRoOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckJlZm9yZVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9y
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5FbmQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0Ogot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmU6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkFmdGVyOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5C
ZWZvcmVDb2xsYXBzZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFw
c2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2U6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRQYWRkaW5nRW5kOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRk
aW5nU3RhcnQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmU6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TG9naWNhbFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsSGVp
Z2h0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsV2lkdGg6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxIZWlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1heExvZ2ljYWxXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF4TG9n
aWNhbEhlaWdodDoKLSAgICB7Ci0gICAgICAgIENTU1Byb3BlcnR5SUQgbmV3SWQgPSBDU1NQcm9w
ZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoaWQsIHN0YXRlLnN0eWxlKCktPmRp
cmVjdGlvbigpLCBzdGF0ZS5zdHlsZSgpLT53cml0aW5nTW9kZSgpKTsKLSAgICAgICAgQVNTRVJU
KG5ld0lkICE9IGlkKTsKLSAgICAgICAgcmV0dXJuIGFwcGx5UHJvcGVydHkobmV3SWQsIHZhbHVl
KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHJldGNoOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlQYWdlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2g6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0TGluZVRocm91Z2hNb2RlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91
Z2hTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoV2lkdGg6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92
ZXJsaW5lQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGU6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlU
ZXh0T3ZlcmxpbmVXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZToKLSAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZUNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0VW5kZXJsaW5lTW9kZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVN0
eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGg6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGE6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHREZWNvcmF0aW9uc0luRWZmZWN0OgotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBDU1Mg
VGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZTogewotICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTCh3cml0aW5nTW9kZSwgV3JpdGluZ01vZGUpOwotICAgICAgICAKLSAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgc2V0V3JpdGluZ01vZGUoKnBy
aW1pdGl2ZVZhbHVlKTsKLQotICAgICAgICAvLyBGSVhNRTogSXQgaXMgbm90IG9rIHRvIG1vZGlm
eSBkb2N1bWVudCBzdGF0ZSB3aGlsZSBhcHBseWluZyBzdHlsZS4KLSAgICAgICAgaWYgKHN0YXRl
LmVsZW1lbnQoKSAmJiBzdGF0ZS5lbGVtZW50KCkgPT0gc3RhdGUuZG9jdW1lbnQoKS0+ZG9jdW1l
bnRFbGVtZW50KCkpCi0gICAgICAgICAgICBzdGF0ZS5kb2N1bWVudCgpLT5zZXRXcml0aW5nTW9k
ZVNldE9uRG9jdW1lbnRFbGVtZW50KHRydWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRPcmllbnRhdGlvbjogewotICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0ZXh0T3JpZW50YXRpb24sIFRleHRPcmllbnRhdGlvbik7
Ci0KLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgc2V0VGV4dE9yaWVu
dGF0aW9uKCpwcmltaXRpdmVWYWx1ZSk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQm94Q29udGFpbjogewotICAgICAgICBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTChsaW5lQm94Q29udGFpbiwgTGluZUJveENvbnRhaW4pCi0gICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBD
U1NWYWx1ZU5vbmUpIHsKLSAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldExpbmVCb3hDb250
YWluKExpbmVCb3hDb250YWluTm9uZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoIXZhbHVlLT5pc0NTU0xpbmVCb3hDb250YWluVmFsdWUoKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBDU1NMaW5lQm94Q29udGFpblZhbHVlKiBsaW5lQm94
Q29udGFpblZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTTGluZUJveENvbnRhaW5WYWx1ZSo+KHZhbHVl
KTsKLSAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TGluZUJveENvbnRhaW4obGluZUJveENvbnRh
aW5WYWx1ZS0+dmFsdWUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBDU1Mg
Rm9udHMgTW9kdWxlIExldmVsIDMKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udEZlYXR1
cmVTZXR0aW5nczogewotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpIHsKLSAgICAgICAgICAgIHNldEZvbnRE
ZXNjcmlwdGlvbihzdGF0ZS5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKS5tYWtlTm9ybWFsRmVh
dHVyZVNldHRpbmdzKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc3RhdGUuc3R5bGUoKS0+Zm9u
dERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0
PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKLSAgICAgICAgUmVmUHRyPEZvbnRGZWF0dXJlU2V0dGlu
Z3M+IHNldHRpbmdzID0gRm9udEZlYXR1cmVTZXR0aW5nczo6Y3JlYXRlKCk7Ci0gICAgICAgIGlu
dCBsZW4gPSBsaXN0LT5sZW5ndGgoKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47
ICsraSkgewotICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtV2l0aG91dEJv
dW5kc0NoZWNrKGkpOwotICAgICAgICAgICAgaWYgKCFpdGVtLT5pc0ZvbnRGZWF0dXJlVmFsdWUo
KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIEZvbnRGZWF0dXJlVmFs
dWUqIGZlYXR1cmUgPSBzdGF0aWNfY2FzdDxGb250RmVhdHVyZVZhbHVlKj4oaXRlbSk7Ci0gICAg
ICAgICAgICBzZXR0aW5ncy0+YXBwZW5kKEZvbnRGZWF0dXJlKGZlYXR1cmUtPnRhZygpLCBmZWF0
dXJlLT52YWx1ZSgpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEZl
YXR1cmVTZXR0aW5ncyhzZXR0aW5ncy5yZWxlYXNlKCkpOwotICAgICAgICBzZXRGb250RGVzY3Jp
cHRpb24oZm9udERlc2NyaXB0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotI2lmIEVO
QUJMRShDU1NfRklMVEVSUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmlsdGVyOiB7Ci0g
ICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGZpbHRlciwgRmlsdGVyKTsKLSAgICAg
ICAgRmlsdGVyT3BlcmF0aW9ucyBvcGVyYXRpb25zOwotICAgICAgICBpZiAoY3JlYXRlRmlsdGVy
T3BlcmF0aW9ucyh2YWx1ZSwgc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgp
LCBvcGVyYXRpb25zKSkKLSAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEZpbHRlcihvcGVy
YXRpb25zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRHcmlkQXV0b0NvbHVtbnM6IHsKLSAgICAgICAgR3JpZFRyYWNrU2l6ZSB0cmFj
a1NpemU7Ci0gICAgICAgIGlmICghY3JlYXRlR3JpZFRyYWNrU2l6ZSh2YWx1ZSwgdHJhY2tTaXpl
LCBzdGF0ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHN0YXRlLnN0eWxlKCktPnNl
dEdyaWRBdXRvQ29sdW1ucyh0cmFja1NpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQXV0b1Jvd3M6IHsKLSAgICAgICAgR3JpZFRyYWNr
U2l6ZSB0cmFja1NpemU7Ci0gICAgICAgIGlmICghY3JlYXRlR3JpZFRyYWNrU2l6ZSh2YWx1ZSwg
dHJhY2tTaXplLCBzdGF0ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHN0YXRlLnN0
eWxlKCktPnNldEdyaWRBdXRvUm93cyh0cmFja1NpemUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQ29sdW1uczogewotICAgICAgICBWZWN0
b3I8R3JpZFRyYWNrU2l6ZT4gdHJhY2tTaXplczsKLSAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJh
Y2tMaXN0KHZhbHVlLCB0cmFja1NpemVzLCBzdGF0ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEdyaWRDb2x1bW5zKHRyYWNrU2l6ZXMpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkUm93czogewot
ICAgICAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gdHJhY2tTaXplczsKLSAgICAgICAgaWYgKCFj
cmVhdGVHcmlkVHJhY2tMaXN0KHZhbHVlLCB0cmFja1NpemVzLCBzdGF0ZSkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEdyaWRSb3dzKHRyYWNrU2l6ZXMp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdy
aWRTdGFydDogewotICAgICAgICBHcmlkUG9zaXRpb24gc3RhcnRQb3NpdGlvbjsKLSAgICAgICAg
aWYgKCFjcmVhdGVHcmlkUG9zaXRpb24odmFsdWUsIHN0YXJ0UG9zaXRpb24pKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRHcmlkSXRlbVN0YXJ0KHN0YXJ0
UG9zaXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRHcmlkRW5kOiB7Ci0gICAgICAgIEdyaWRQb3NpdGlvbiBlbmRQb3NpdGlvbjsKLSAgICAg
ICAgaWYgKCFjcmVhdGVHcmlkUG9zaXRpb24odmFsdWUsIGVuZFBvc2l0aW9uKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0R3JpZEl0ZW1FbmQoZW5kUG9z
aXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEdyaWRCZWZvcmU6IHsKLSAgICAgICAgR3JpZFBvc2l0aW9uIGJlZm9yZVBvc2l0aW9uOwot
ICAgICAgICBpZiAoIWNyZWF0ZUdyaWRQb3NpdGlvbih2YWx1ZSwgYmVmb3JlUG9zaXRpb24pKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRHcmlkSXRlbUJl
Zm9yZShiZWZvcmVQb3NpdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEdyaWRBZnRlcjogewotICAgICAgICBHcmlkUG9zaXRpb24gYWZ0ZXJQ
b3NpdGlvbjsKLSAgICAgICAgaWYgKCFjcmVhdGVHcmlkUG9zaXRpb24odmFsdWUsIGFmdGVyUG9z
aXRpb24pKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRH
cmlkSXRlbUFmdGVyKGFmdGVyUG9zaXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgLy8gVGhlc2UgcHJvcGVydGllcyBhcmUgYWxpYXNlZCBhbmQgRGVwcmVjYXRlZFN0eWxlQnVp
bGRlciBhbHJlYWR5IGFwcGxpZWQgdGhlIHByb3BlcnR5IG9uIHRoZSBwcmVmaXhlZCB2ZXJzaW9u
LgotICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uRGVsYXk6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVRyYW5zaXRpb25EdXJhdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvblBy
b3BlcnR5OgotICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246Ci0g
ICAgICAgIHJldHVybjsKLSAgICAvLyBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBpbXBsZW1lbnRlZCBp
biB0aGUgRGVwcmVjYXRlZFN0eWxlQnVpbGRlciBsb29rdXAgdGFibGUuCi0gICAgY2FzZSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50OgotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQ2xpcDoKLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRPcmlnaW46Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblg6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblk6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRSZXBlYXRYOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0
WToKLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemU6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbUNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21M
ZWZ0UmFkaXVzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1czoK
LSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBz
ZToKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VPdXRzZXQ6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlckltYWdlUmVwZWF0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFn
ZVNsaWNlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZToKLSAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
TGVmdENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHRDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZToKLSAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyVG9wQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXM6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJUb3BTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGg6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvdHRvbToKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2l6
aW5nOgotICAgIGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZToKLSAgICBjYXNlIENTU1Byb3Bl
cnR5Q2xlYXI6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eUNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50OgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlDb3VudGVyUmVzZXQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlEaXNwbGF5
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlG
bG9hdDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eUZvbnRTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eUZvbnRXZWlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUhlaWdodDoKLSNpZiBF
TkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgIGNhc2UgQ1NTUHJvcGVydHlJbWFnZU9y
aWVudGF0aW9uOgotI2VuZGlmCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nOgot
I2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKLSAgICBjYXNlIENTU1Byb3BlcnR5SW1h
Z2VSZXNvbHV0aW9uOgotI2VuZGlmCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUxlZnQ6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpbmVIZWln
aHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlMaXN0U3R5bGVQb3NpdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlw
ZToKLSAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlNYXJnaW5MZWZ0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDoKLSAgICBjYXNl
IENTU1Byb3BlcnR5TWFyZ2luVG9wOgotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhIZWlnaHQ6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eU1heFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5IZWln
aHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlP
cGFjaXR5OgotICAgIGNhc2UgQ1NTUHJvcGVydHlPcnBoYW5zOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlPdXRsaW5lQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQ6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGlu
ZVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1dyYXA6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eU92ZXJmbG93WDoKLSAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dZOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tOgotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5n
TGVmdDoKLSAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0OgotICAgIGNhc2UgQ1NTUHJv
cGVydHlQYWRkaW5nVG9wOgotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlcjoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlQ
YWdlQnJlYWtJbnNpZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHM6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVBvc2l0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlSZXNpemU6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlTaXplOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlTcGVhazoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGFiU2l6ZToKLSAg
ICBjYXNlIENTU1Byb3BlcnR5VGFibGVMYXlvdXQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRB
bGlnbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb246Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRJbmRlbnQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdzoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZzoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dFRyYW5zZm9ybToKLSAgICBjYXNlIENTU1Byb3BlcnR5VG9wOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlVbmljb2RlQmlkaToKLSNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKLSAgICBjYXNlIENTU1By
b3BlcnR5VmFyaWFibGU6Ci0jZW5kaWYKLSAgICBjYXNlIENTU1Byb3BlcnR5VmVydGljYWxBbGln
bjoKLSAgICBjYXNlIENTU1Byb3BlcnR5VmlzaWJpbGl0eToKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uRGVsYXk6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
bkRpcmVjdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRHVyYXRpb246
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudDoKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uUGxheVN0YXRlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1p
bmdGdW5jdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0QXNwZWN0UmF0aW86Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJhY2tmYWNlVmlzaWJpbGl0eToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dy
b3VuZENsaXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGU6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRPcmlnaW46Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJGaXQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxT
cGFjaW5nOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZToKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3hBbGlnbjoKLSNpZiBFTkFCTEUoQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFL
KQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEZWNvcmF0aW9uQnJlYWs6Ci0jZW5kaWYK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3hGbGV4OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4R3Jv
dXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
eE9yaWVudDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFjazoKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5BeGlzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVy
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZToKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtbkNvdW50OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5HYXA6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblByb2dyZXNzaW9uOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtblJ1bGVTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVs
ZVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5TcGFuOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aDoKLSNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJ
VFkpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEN1cnNvclZpc2liaWxpdHk6Ci0jZW5kaWYK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QWxpZ25Db250ZW50OgotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRBbGlnbkl0ZW1zOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbGlnblNl
bGY6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhCYXNpczoKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0RmxleERpcmVjdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rmxl
eEdyb3c6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhTaHJpbms6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRKdXN0
aWZ5Q29udGVudDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0T3JkZXI6Ci0jaWYgRU5BQkxF
KENTU19SRUdJT05TKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbG93RnJvbToKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Rmxvd0ludG86Ci0jZW5kaWYKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Rm9udEtlcm5pbmc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9v
dGhpbmc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRWYXJpYW50TGlnYXR1cmVzOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIaWdobGlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlw
aGVuYXRlTGltaXRBZnRlcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGlt
aXRCZWZvcmU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXM6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdExpbmVBbGlnbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQ2xhbXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdExpbmVHcmlkOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lU25hcDoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbjoKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZVJlcGV0aXRpb246Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVl
ZDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tCb3hJbWFnZU91dHNldDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdl
UmVwZWF0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTbGljZToKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNlOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza0NsaXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGU6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZToKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFza09yaWdpbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
WDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWToKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXRZOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZToKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBl
cnNwZWN0aXZlT3JpZ2luOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9y
aWdpblg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWToKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UHJpbnRDb2xvckFkanVzdDoKLSNpZiBFTkFCTEUoQ1NT
X1JFR0lPTlMpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQWZ0ZXI6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRSZWdpb25CcmVha0luc2lkZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0UmVnaW9uT3ZlcmZsb3c6Ci0jZW5kaWYKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnRs
T3JkZXJpbmc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbjoKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmU6Ci0jaWYgRU5BQkxFKENTUzNfVEVYVCkK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25MaW5lOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvblN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0QWxpZ25MYXN0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0SnVzdGlmeToKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uOgotI2VuZGlmIC8v
IENTUzNfVEVYVAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcjoK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RmlsbENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2Vj
dXJpdHk6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcjoKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWDoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJh
bnNmb3JtT3JpZ2luWjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGU6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheToKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2l0aW9uUHJvcGVydHk6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
aXRpb25UaW1pbmdGdW5jdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWc6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnk6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENsaXBQYXRo
OgotI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
V3JhcEZsb3c6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNoYXBlTWFyZ2luOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRTaGFwZVBhZGRpbmc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFdyYXBUaHJvdWdoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTaGFwZUluc2lkZToK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0U2hhcGVPdXRzaWRlOgotI2VuZGlmCi0jaWYgRU5B
QkxFKENTU19TSEFERVJTKQotICAgIGNhc2UgQ1NTUHJvcGVydHlNaXg6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVBhcmFtZXRlcnM6Ci0jZW5kaWYKLSAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFj
ZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2lkb3dzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXaWR0
aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOgotICAgIGNhc2UgQ1NTUHJvcGVydHlX
b3JkU3BhY2luZzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V29yZFdyYXA6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVpJbmRleDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Wm9vbToKLSNpZiBFTkFCTEUoQ1NT
X0RFVklDRV9BREFQVEFUSU9OKQotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhab29tOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlNaW5ab29tOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPcmllbnRhdGlvbjoK
LSAgICBjYXNlIENTU1Byb3BlcnR5VXNlclpvb206Ci0jZW5kaWYKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBkZWZhdWx0OgotI2lmIEVOQUJMRShT
VkcpCi0gICAgICAgIC8vIFRyeSB0aGUgU1ZHIHByb3BlcnRpZXMKLSAgICAgICAgYXBwbHlTVkdQ
cm9wZXJ0eShpZCwgdmFsdWUpOwotI2VuZGlmCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0K
IFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVJbWFnZShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5LCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5pc0lt
YWdlVmFsdWUoKSkKQEAgLTQ1MjMsNyArMzQzNSw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6cmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QK
IAogICAgIGluZm8uYWRkTWVtYmVyKG1fZm9udFNlbGVjdG9yLCAiZm9udFNlbGVjdG9yIik7CiAg
ICAgaW5mby5hZGRNZW1iZXIobV92aWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRzLCAi
dmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0cyIpOwotICAgIGluZm8uaWdub3JlTWVt
YmVyKG1fZGVwcmVjYXRlZFN0eWxlQnVpbGRlcik7CisgICAgaW5mby5pZ25vcmVNZW1iZXIobV9z
dHlsZUJ1aWxkZXIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1faW5zcGVjdG9yQ1NTT01XcmFwcGVy
cyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9zY29wZVJlc29sdmVyLCAic2NvcGVSZXNvbHZlciIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCAyMGEzY2YwLi41ODNlZDk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
ICJTZWxlY3RvckNoZWNrZXIuaCIKICNpbmNsdWRlICJTZWxlY3RvckZpbHRlci5oIgogI2luY2x1
ZGUgIlNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVnaWVzLmgiCisjaW5jbHVkZSAiU3R5bGVCdWlsZGVy
LmgiCiAjaW5jbHVkZSAiU3R5bGVJbmhlcml0ZWREYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVTY29w
ZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRTdHlsZVJlc29sdmVyLmgiCkBAIC03OCw3
ICs3OSw2IEBAIGNsYXNzIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3Q7CiBjbGFzcyBDdXN0b21G
aWx0ZXJQcm9ncmFtOwogc3RydWN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5nczsKIGNs
YXNzIERvY3VtZW50OwotY2xhc3MgRGVwcmVjYXRlZFN0eWxlQnVpbGRlcjsKIGNsYXNzIEVsZW1l
bnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lVmlldzsKQEAgLTU4MiwxMSArNTgyLDcgQEAg
cHJpdmF0ZToKIHByaXZhdGU6CiAgICAgYm9vbCBjYW5TaGFyZVN0eWxlV2l0aENvbnRyb2woU3R5
bGVkRWxlbWVudCopIGNvbnN0OwogCi0gICAgdm9pZCBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5
SUQsIENTU1ZhbHVlKik7Ci0KLSNpZiBFTkFCTEUoU1ZHKQotICAgIHZvaWQgYXBwbHlTVkdQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSopOwotI2VuZGlmCisgICAgdm9pZCBhcHBseVBy
b3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkgeyBtX3N0eWxlQnVpbGRl
ci5hcHBseVRvUmVuZGVyU3R5bGUodGhpcywgaWQsIHZhbHVlKTsgfQogCiAgICAgUGFzc1JlZlB0
cjxTdHlsZUltYWdlPiBsb2FkUGVuZGluZ0ltYWdlKFN0eWxlUGVuZGluZ0ltYWdlKik7CiAgICAg
dm9pZCBsb2FkUGVuZGluZ0ltYWdlcygpOwpAQCAtNjMxLDcgKzYyNyw3IEBAIHByaXZhdGU6CiAg
ICAgUmVmUHRyPFZpZXdwb3J0U3R5bGVSZXNvbHZlcj4gbV92aWV3cG9ydFN0eWxlUmVzb2x2ZXI7
CiAjZW5kaWYKIAotICAgIGNvbnN0IERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXImIG1fZGVwcmVjYXRl
ZFN0eWxlQnVpbGRlcjsKKyAgICBTdHlsZUJ1aWxkZXIgbV9zdHlsZUJ1aWxkZXI7CiAKICAgICBP
d25QdHI8U3R5bGVTY29wZVJlc29sdmVyPiBtX3Njb3BlUmVzb2x2ZXI7CiAgICAgQ1NTVG9TdHls
ZU1hcCBtX3N0eWxlTWFwOwpAQCAtNjQ0LDYgKzY0MCw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
ICAgIGZyaWVuZCBjbGFzcyBEZXByZWNhdGVkU3R5bGVCdWlsZGVyOworICAgIC8vIEZJWE1FOiBS
ZW1vdmUgZnJpZW5kc2hpcCBhdCB0aGUgZW5kIG9mIHJlZmFjdG9yaW5nLgorICAgIGZyaWVuZCBj
bGFzcyBTdHlsZUJ1aWxkZXI7CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXRj
aGVkUHJvcGVydGllcyYsIGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJik7CiAgICAgZnJpZW5kIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBNYXRjaGVkUHJvcGVydGllcyYsIGNvbnN0IE1hdGNoZWRQcm9w
ZXJ0aWVzJik7CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXRjaFJhbmdlcyYs
IGNvbnN0IE1hdGNoUmFuZ2VzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oCmluZGV4IDRkYWZlMTIuLjA1OTI2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0xMzEsNiArMTMxLDcgQEAgY2xhc3Mg
UmVuZGVyU3R5bGU6IHB1YmxpYyBSZWZDb3VudGVkPFJlbmRlclN0eWxlPiB7CiAgICAgZnJpZW5k
IGNsYXNzIFJlbmRlclNWR1Jlc291cmNlOyAvLyBGSVhNRTogTmVlZHMgdG8gYWx0ZXIgdGhlIHZp
c2l0ZWQgc3RhdGUgYnkgaGFuZC4gU2hvdWxkIGNsZWFuIHRoZSBTVkcgY29kZSB1cCBhbmQgbW92
ZSBpdCBpbnRvIFJlbmRlclN0eWxlIHBlcmhhcHMuCiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlclRy
ZWVBc1RleHQ7IC8vIEZJWE1FOiBPbmx5IG5lZWRlZCBzbyB0aGUgcmVuZGVyIHRyZWUgY2FuIGtl
ZXAgbHlpbmcgYW5kIGR1bXAgdGhlIHdyb25nIGNvbG9ycy4gIFJlYmFzZWxpbmluZyB3b3VsZCBh
bGxvdyB0aGlzIHRvIGJlIHlhbmtlZC4KICAgICBmcmllbmQgY2xhc3MgU3R5bGVSZXNvbHZlcjsg
Ly8gU2V0cyBtZW1iZXJzIGRpcmVjdGx5LgorICAgIGZyaWVuZCBjbGFzcyBTdHlsZUJ1aWxkZXI7
IC8vIFNldHMgbWVtYmVycyBkaXJlY3RseS4KIHByb3RlY3RlZDoKIAogICAgIC8vIG5vbi1pbmhl
cml0ZWQgYXR0cmlidXRlcwo=
</data>
<flag name="commit-queue"
          id="220167"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198457</attachid>
            <date>2013-04-16 18:39:50 -0700</date>
            <delta_ts>2013-04-16 19:38:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>deprecateStyleBuilder2.patch</filename>
            <type>text/plain</type>
            <size>121216</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZGU1NzZmMy4uZDk3OGJmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEwODUsNiArMTA4NSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3Mv
U2VsZWN0b3JDaGVja2VyRmFzdFBhdGguY3BwCiAgICAgY3NzL1NlbGVjdG9yRmlsdGVyLmNwcAog
ICAgIGNzcy9TaGFkb3dWYWx1ZS5jcHAKKyAgICBjc3MvU3R5bGVCdWlsZGVyLmNwcAogICAgIGNz
cy9TdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmNwcAogICAgIGNzcy9TdHlsZU1lZGlhLmNwcAog
ICAgIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEyZGE2ODAuLjIwM2Iw
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMy0wNC0xNiAgRGlyayBTY2h1bHpl
ICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgYXBwbHlQcm9wZXJ0eSBmcm9tIFN0
eWxlUmVzb2x2ZXIgdG8gU3R5bGVCdWlsZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0NzE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlZCBhIG5ldyBjbGFzcyBTdHlsZUJ1aWxkZXIgdG8g
YXBwbHkgcHJvcGVydHkgc3R5bGVzIHRvIFJlbmRlclN0eWxlLgorICAgICAgICBNb3ZlZCBhcHBs
eVByb3BlcnR5IG1ldGhvZCBmcm9tIFN0eWxlUmVzb2x2ZXIgdG8gU3R5bGVCdWlsZGVyIGFuZCBy
ZW5hbWVkIGl0CisgICAgICAgIHRvIGFwcGx5VG9SZW5kZXJTdHlsZS4gU3R5bGVCdWlsZGVyIGlz
IGEgbWVtYmVyIG9mIFN0eWxlUmVzb2x2ZXIgbm93LgorICAgICAgICBJbiB0aGlzIGZpcnN0IHN0
ZXAsIGp1c3QgbmVjZXNzYXJ5IHN0YXRpYyBmdW5jdGlvbnMgd2VyZSBtb3ZlZCB0byBTdHlsZUJ1
aWxkZXIuCisgICAgICAgIEZ1dHVyZSBwYXRjaGVzIHdpbGwgY2xlYW51cCBTdHlsZVJlc29sdmVy
IG1vcmUgYW5kIG1vdmUgbW9yZSBmdW5jdGlvbmFsaXR5IHRvCisgICAgICAgIFN0eWxlQnVpbGRl
ci4KKworICAgICAgICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eSwgbm8gbmV3IHRlc3RzLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIFN0eWxlQnVpbGRlciB0byBidWlsZCBz
eXN0ZW1zLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0
LnByaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NBbGxJbk9u
ZS5jcHA6CisgICAgICAgICogY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwOiBJbmhlcml0IGZy
b20gU3R5bGVCdWlsZGVyIGluc3RlYWQgb2YgU3R5bGVSZXNvbHZlci4KKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlcjo6YXBwbHlUb1NWR1JlbmRlclN0eWxlKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVCdWlsZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdyaWRUcmFja0JyZWFkdGgpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
R3JpZFRyYWNrU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHcmlkVHJhY2tMaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdyaWRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZUJ1aWxkZXI6OlN0eWxlQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlk
VmlzaXRlZExpbmtQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXI6OmFw
cGx5VG9SZW5kZXJTdHlsZSk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU3R5bGVCdWlsZGVyKToKKyAgICAgICAgKiBj
c3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpT
dHlsZVJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KToK
KyAgICAgICAgKFN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oOgorCiAyMDEzLTA0LTE2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4OyBhZGQgbmV3IEpTQXVkaW9CdWZmZXIu
Y3BwIGZpbGUgdG8gbW9yZSBidWlsZCBzeXN0ZW1zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggZTc2ZTFkMC4uODM5ZWQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC0yNzMxLDYgKzI3MzEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL2Nzcy9TaGFkb3dWYWx1ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU2libGluZ1RyYXZlcnNhbFN0cmF0ZWdpZXMuaCBc
CisJU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZUJ1aWxkZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlSW52YWxpZGF0
aW9uQW5hbHlzaXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVJbnZhbGlkYXRpb25B
bmFseXNpcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKaW5kZXggMTNhMGZjMS4uZjM3ZDg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0zMzIsNiArMzMyLDcg
QEAgU09VUkNFUyArPSBcCiAgICAgY3NzL1NlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmNwcCBcCiAg
ICAgY3NzL1NlbGVjdG9yRmlsdGVyLmNwcCBcCiAgICAgY3NzL1NoYWRvd1ZhbHVlLmNwcCBcCisg
ICAgY3NzL1N0eWxlQnVpbGRlci5jcHAgXAogICAgIGNzcy9TdHlsZUludmFsaWRhdGlvbkFuYWx5
c2lzLmNwcCBcCiAgICAgY3NzL1N0eWxlTWVkaWEuY3BwIFwKICAgICBjc3MvU3R5bGVQcm9wZXJ0
eVNldC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCAwZjNmYjFmLi5kODAyYTdjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzg3MDcsNiArMzg3MDcsNjIgQEAKIAkJCQk+CiAJCQk8
L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXFN0eWxlQnVpbGRlci5j
cHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4z
MiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIK
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRl
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0Nh
aXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0i
RGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgor
CQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQ
cm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgor
CQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGNzc1xTdHlsZUJ1aWxkZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQog
CQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXFN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMuY3BwIgog
CQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCAzM2YzMjZjLi5iYTcyZjNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzCkBAIC0zNzQ0LDYgKzM3NDQsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cY3NzXFNoYWRvd1ZhbHVlLmNwcCI+CiAgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cY3NzXFN0eWxlQnVpbGRl
ci5jcHAiPgorICAgICAgPEZpbHRlcj5jc3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNzc1xTdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmNw
cCI+CiAgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMw
MDM3ZGMuLjg2ZmI1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTU3MjksNiArNTcyOSw4IEBACiAJCUZCMkMxNUMzMTY1RDY0
OUQwMDM5QzlGOCAvKiBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkIyQzE1QzIxNjVENjQ5MDAwMzlDOUY4
IC8qIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkIzMDU2QzIxNjlFNURBQzAwOTZBMjMyIC8qIENT
U0dyb3VwaW5nUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkIzMDU2QzExNjlFNURBQzAwOTZBMjMyIC8qIENTU0dyb3VwaW5nUnVsZS5oICovOyB9
OwogCQlGQjQ5QzM5RDE2Nzg0OTQ3MDA3RkZCNUQgLyogQ1NTSG9zdFJ1bGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCNDlDMzlDMTY3ODQ5NDcwMDdG
RkI1RCAvKiBDU1NIb3N0UnVsZS5oICovOyB9OworCQlGQjZFMEY5RDE3MUEyMEJCMDBBNUM1QkUg
LyogU3R5bGVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZCNkUwRjlCMTcxQTIwQkIwMEE1QzVCRSAvKiBTdHlsZUJ1aWxkZXIuY3BwICov
OyB9OworCQlGQjZFMEY5RTE3MUEyMEJCMDBBNUM1QkUgLyogU3R5bGVCdWlsZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjZFMEY5QzE3MUEyMEJC
MDBBNUM1QkUgLyogU3R5bGVCdWlsZGVyLmggKi87IH07CiAJCUZCNzhBRDJFMTUxQkY1RTYwMEZF
NTREMyAvKiBDU1NQYXJzZXJNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGQjc4QUQyQzE1MUJGNUQyMDBGRTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZCOTEz
OTI0MTZBRTRDMTcwMDFGRTY4MiAvKiBET01QYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjkxMzkyMDE2QUU0QjBCMDAxRkU2ODIgLyogRE9NUGF0
aC5oICovOyB9OwogCQlGQjkxMzkyNjE2QUU0QzJGMDAxRkU2ODIgLyogQ2FudmFzUGF0aE1ldGhv
ZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCOTEz
OTFGMTZBRTRCMEIwMDFGRTY4MiAvKiBDYW52YXNQYXRoTWV0aG9kcy5oICovOyB9OwpAQCAtMTI1
NzAsNiArMTI1NzIsOCBAQAogCQlGQjMwNTZDMTE2OUU1REFDMDA5NkEyMzIgLyogQ1NTR3JvdXBp
bmdSdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0dyb3VwaW5nUnVs
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjQ5QzM5QzE2Nzg0OTQ3MDA3RkZC
NUQgLyogQ1NTSG9zdFJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NT
SG9zdFJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI0OUMzOUUxNjc4NDk1
NDAwN0ZGQjVEIC8qIENTU0hvc3RSdWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NI
b3N0UnVsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZCNkUwRjlCMTcxQTIw
QkIwMEE1QzVCRSAvKiBTdHlsZUJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3R5bGVCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkI2RTBGOUMxNzFBMjBCQjAwQTVDNUJFIC8qIFN0eWxlQnVpbGRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkI3OEFEMkMxNTFCRjVEMjAwRkU1NEQzIC8qIENTU1BhcnNlck1vZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUGFyc2VyTW9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGQjkxMzkxRTE2QUU0QjBCMDAxRkU2ODIgLyogQ2FudmFz
UGF0aE1ldGhvZHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ2Fu
dmFzUGF0aE1ldGhvZHMuY3BwOyBwYXRoID0gY2FudmFzL0NhbnZhc1BhdGhNZXRob2RzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI5MTM5MUYxNkFFNEIwQjAwMUZFNjgyIC8q
IENhbnZhc1BhdGhNZXRob2RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENh
bnZhc1BhdGhNZXRob2RzLmg7IHBhdGggPSBjYW52YXMvQ2FudmFzUGF0aE1ldGhvZHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5ODIzLDYgKzE5ODI3LDggQEAKIAkJCQlBNzlC
QUQ5RTE2MUU3RjNGMDBDMkU2NTIgLyogUnVsZUZlYXR1cmUuaCAqLywKIAkJCQlBNzlCQUQ5RjE2
MUU3RjNGMDBDMkU2NTIgLyogUnVsZVNldC5jcHAgKi8sCiAJCQkJQTc5QkFEQTAxNjFFN0YzRjAw
QzJFNjUyIC8qIFJ1bGVTZXQuaCAqLywKKwkJCQlGQjZFMEY5QjE3MUEyMEJCMDBBNUM1QkUgLyog
U3R5bGVCdWlsZGVyLmNwcCAqLywKKwkJCQlGQjZFMEY5QzE3MUEyMEJCMDBBNUM1QkUgLyogU3R5
bGVCdWlsZGVyLmggKi8sCiAJCQkJRTQ0QjRCQjExNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9y
Q2hlY2tlci5jcHAgKi8sCiAJCQkJRTQ0QjRCQjIxNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9y
Q2hlY2tlci5oICovLAogCQkJCTQxQjhDRDQzMTZEMDQ1OTEwMDBFOENDMCAvKiBTZWxlY3RvckNo
ZWNrZXJGYXN0UGF0aC5jcHAgKi8sCkBAIC0yNDAzOSw2ICsyNDA0NSw3IEBACiAJCQkJRTE1MjU1
MTUxNkZEMjM1MDAwM0Q3QURCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCNTMzNDkxNzE3REVFMzAwRjIwNUY5
IC8qIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTg4RTBD
MjE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RkI2RTBGOUUxNzFBMjBCQjAwQTVDNUJFIC8qIFN0eWxlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0yNjk4OCw2ICsyNjk5NSw3IEBACiAJCQkJRTE1MjU1MTYxNkZEMjM1MDAwM0Q3QURCIC8q
IFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxQjUzMzQ3MTcxN0QwQTEwMEYyMDVGOSAvKiBDYWNoZWRTVkdEb2N1bWVu
dFJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBDMTE3MTVDRTI2MDA2NThE
OTggLyogVHJhY2tMaXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQjZFMEY5RDE3MUEy
MEJCMDBBNUM1QkUgLyogU3R5bGVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NBbGxJbk9uZS5jcHAKaW5kZXggMDIyYTM0OS4uNjRhNjAwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQWxsSW5PbmUuY3BwCkBAIC03OSw2ICs3OSw3IEBACiAjaW5jbHVkZSAiUnVsZVNldC5jcHAi
CiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguY3BwIgogI2luY2x1ZGUgIlNlbGVj
dG9yRmlsdGVyLmNwcCIKKyNpbmNsdWRlICJTdHlsZUJ1aWxkZXIuY3BwIgogI2luY2x1ZGUgIlN0
eWxlUHJvcGVydHlTZXQuY3BwIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuY3Bw
IgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NT
U1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDcwZDFjYTQuLjE1MGI5YjcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0yNywxNSArMjcsMTMgQEAKICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVkZSAiU3R5
bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgIlN0eWxlQnVpbGRlci5oIgogCiAjaW5jbHVkZSAiQ1NT
UHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIK
ICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1
ZGUgIlNoYWRvd1ZhbHVlLmgiCiAjaW5jbHVkZSAiU1ZHQ29sb3IuaCIKICNpbmNsdWRlICJTVkdO
YW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhaW50LmgiCkBAIC00Myw2ICs0MSw4IEBACiAjaW5jbHVk
ZSAiU1ZHUmVuZGVyU3R5bGVEZWZzLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgog
I2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYWRvd1ZhbHVlLmgiCisj
aW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CiAKQEAgLTEwMiwxNCArMTAyLDE0IEBAIHN0YXRpYyBDb2xvciBj
b2xvckZyb21TVkdDb2xvckNTU1ZhbHVlKFNWR0NvbG9yKiBzdmdDb2xvciwgY29uc3QgQ29sb3Im
IGZnQ29sb3IpCiAgICAgcmV0dXJuIGNvbG9yOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmFw
cGx5U1ZHUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQordm9pZCBT
dHlsZUJ1aWxkZXI6OmFwcGx5VG9TVkdSZW5kZXJTdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJl
c29sdmVyLCBDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgQVNTRVJU
KHZhbHVlKTsKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSAwOwogICAg
IGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogCi0gICAgY29uc3QgU3Rh
dGUmIHN0YXRlID0gbV9zdGF0ZTsKKyAgICBjb25zdCBTdHlsZVJlc29sdmVyOjpTdGF0ZSYgc3Rh
dGUgPSBzdHlsZVJlc29sdmVyLT5tX3N0YXRlOwogICAgIFNWR1JlbmRlclN0eWxlKiBzdmdzdHls
ZSA9IHN0YXRlLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7CiAKICAgICBib29sIGlzSW5oZXJp
dCA9IHN0YXRlLnBhcmVudE5vZGUoKSAmJiB2YWx1ZS0+aXNJbmhlcml0ZWRWYWx1ZSgpOwpAQCAt
MjMxLDE2ICsyMzEsMTYgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVNWR1Byb3BlcnR5KENT
U1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKGlzSW5oZXJpdCkgewogICAgICAgICAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlKiBz
dmdQYXJlbnRTdHlsZSA9IHN0YXRlLnBhcmVudFN0eWxlKCktPnN2Z1N0eWxlKCk7Ci0gICAgICAg
ICAgICAgICAgc3Znc3R5bGUtPnNldEZpbGxQYWludChzdmdQYXJlbnRTdHlsZS0+ZmlsbFBhaW50
VHlwZSgpLCBzdmdQYXJlbnRTdHlsZS0+ZmlsbFBhaW50Q29sb3IoKSwgc3ZnUGFyZW50U3R5bGUt
PmZpbGxQYWludFVyaSgpLCBhcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgYXBwbHlQcm9w
ZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0
RmlsbFBhaW50KHN2Z1BhcmVudFN0eWxlLT5maWxsUGFpbnRUeXBlKCksIHN2Z1BhcmVudFN0eWxl
LT5maWxsUGFpbnRDb2xvcigpLCBzdmdQYXJlbnRTdHlsZS0+ZmlsbFBhaW50VXJpKCksIHN0YXRl
LmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBzdGF0ZS5hcHBseVByb3BlcnR5VG9WaXNp
dGVkTGlua1N0eWxlKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgICAgICBzdmdzdHlsZS0+
c2V0RmlsbFBhaW50KFNWR1JlbmRlclN0eWxlOjppbml0aWFsRmlsbFBhaW50VHlwZSgpLCBTVkdS
ZW5kZXJTdHlsZTo6aW5pdGlhbEZpbGxQYWludENvbG9yKCksIFNWR1JlbmRlclN0eWxlOjppbml0
aWFsRmlsbFBhaW50VXJpKCksIGFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBhcHBseVBy
b3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkpOworICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5z
ZXRGaWxsUGFpbnQoU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxGaWxsUGFpbnRUeXBlKCksIFNWR1Jl
bmRlclN0eWxlOjppbml0aWFsRmlsbFBhaW50Q29sb3IoKSwgU1ZHUmVuZGVyU3R5bGU6OmluaXRp
YWxGaWxsUGFpbnRVcmkoKSwgc3RhdGUuYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCksIHN0
YXRlLmFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZhbHVlLT5pc1NWR1BhaW50
KCkpIHsKICAgICAgICAgICAgICAgICBTVkdQYWludCogc3ZnUGFpbnQgPSBzdGF0aWNfY2FzdDxT
VkdQYWludCo+KHZhbHVlKTsKLSAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0RmlsbFBhaW50
KHN2Z1BhaW50LT5wYWludFR5cGUoKSwgY29sb3JGcm9tU1ZHQ29sb3JDU1NWYWx1ZShzdmdQYWlu
dCwgc3RhdGUuc3R5bGUoKS0+Y29sb3IoKSksIHN2Z1BhaW50LT51cmkoKSwgYXBwbHlQcm9wZXJ0
eVRvUmVndWxhclN0eWxlKCksIGFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7Cisg
ICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldEZpbGxQYWludChzdmdQYWludC0+cGFpbnRUeXBl
KCksIGNvbG9yRnJvbVNWR0NvbG9yQ1NTVmFsdWUoc3ZnUGFpbnQsIHN0YXRlLnN0eWxlKCktPmNv
bG9yKCkpLCBzdmdQYWludC0+dXJpKCksIHN0YXRlLmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHls
ZSgpLCBzdGF0ZS5hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI0OCwxNiArMjQ4LDE2IEBA
IHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBD
U1NWYWx1ZSogdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChpc0luaGVyaXQpIHsK
ICAgICAgICAgICAgICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnUGFyZW50U3R5bGUgPSBz
dGF0ZS5wYXJlbnRTdHlsZSgpLT5zdmdTdHlsZSgpOwotICAgICAgICAgICAgICAgIHN2Z3N0eWxl
LT5zZXRTdHJva2VQYWludChzdmdQYXJlbnRTdHlsZS0+c3Ryb2tlUGFpbnRUeXBlKCksIHN2Z1Bh
cmVudFN0eWxlLT5zdHJva2VQYWludENvbG9yKCksIHN2Z1BhcmVudFN0eWxlLT5zdHJva2VQYWlu
dFVyaSgpLCBhcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgYXBwbHlQcm9wZXJ0eVRvVmlz
aXRlZExpbmtTdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0U3Ryb2tlUGFp
bnQoc3ZnUGFyZW50U3R5bGUtPnN0cm9rZVBhaW50VHlwZSgpLCBzdmdQYXJlbnRTdHlsZS0+c3Ry
b2tlUGFpbnRDb2xvcigpLCBzdmdQYXJlbnRTdHlsZS0+c3Ryb2tlUGFpbnRVcmkoKSwgc3RhdGUu
YXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCksIHN0YXRlLmFwcGx5UHJvcGVydHlUb1Zpc2l0
ZWRMaW5rU3R5bGUoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5z
ZXRTdHJva2VQYWludChTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbFN0cm9rZVBhaW50VHlwZSgpLCBT
VkdSZW5kZXJTdHlsZTo6aW5pdGlhbFN0cm9rZVBhaW50Q29sb3IoKSwgU1ZHUmVuZGVyU3R5bGU6
OmluaXRpYWxTdHJva2VQYWludFVyaSgpLCBhcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwg
YXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBzdmdz
dHlsZS0+c2V0U3Ryb2tlUGFpbnQoU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxTdHJva2VQYWludFR5
cGUoKSwgU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxTdHJva2VQYWludENvbG9yKCksIFNWR1JlbmRl
clN0eWxlOjppbml0aWFsU3Ryb2tlUGFpbnRVcmkoKSwgc3RhdGUuYXBwbHlQcm9wZXJ0eVRvUmVn
dWxhclN0eWxlKCksIHN0YXRlLmFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZh
bHVlLT5pc1NWR1BhaW50KCkpIHsKICAgICAgICAgICAgICAgICBTVkdQYWludCogc3ZnUGFpbnQg
PSBzdGF0aWNfY2FzdDxTVkdQYWludCo+KHZhbHVlKTsKLSAgICAgICAgICAgICAgICBzdmdzdHls
ZS0+c2V0U3Ryb2tlUGFpbnQoc3ZnUGFpbnQtPnBhaW50VHlwZSgpLCBjb2xvckZyb21TVkdDb2xv
ckNTU1ZhbHVlKHN2Z1BhaW50LCBzdGF0ZS5zdHlsZSgpLT5jb2xvcigpKSwgc3ZnUGFpbnQtPnVy
aSgpLCBhcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgYXBwbHlQcm9wZXJ0eVRvVmlzaXRl
ZExpbmtTdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0U3Ryb2tlUGFpbnQo
c3ZnUGFpbnQtPnBhaW50VHlwZSgpLCBjb2xvckZyb21TVkdDb2xvckNTU1ZhbHVlKHN2Z1BhaW50
LCBzdGF0ZS5zdHlsZSgpLT5jb2xvcigpKSwgc3ZnUGFpbnQtPnVyaSgpLCBzdGF0ZS5hcHBseVBy
b3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgc3RhdGUuYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtT
dHlsZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC01NzAsNyArNTcwLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVNWR1Byb3BlcnR5KENT
U1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICAgICAgICAgIGludCBibHVyID0g
aXRlbS0+Ymx1ciA/IGl0ZW0tPmJsdXItPmNvbXB1dGVMZW5ndGg8aW50PihzdGF0ZS5zdHlsZSgp
LCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCkpIDogMDsKICAgICAgICAgICAgIENvbG9yIGNvbG9y
OwogICAgICAgICAgICAgaWYgKGl0ZW0tPmNvbG9yKQotICAgICAgICAgICAgICAgIGNvbG9yID0g
Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoaXRlbS0+Y29sb3IuZ2V0KCkpOworICAgICAgICAgICAg
ICAgIGNvbG9yID0gc3R5bGVSZXNvbHZlci0+Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoaXRlbS0+
Y29sb3IuZ2V0KCkpOwogCiAgICAgICAgICAgICAvLyAtd2Via2l0LXN2Zy1zaGFkb3cgZG9lcyBz
aG91bGQgbm90IGhhdmUgYSBzcHJlYWQgb3Igc3R5bGUKICAgICAgICAgICAgIEFTU0VSVCghaXRl
bS0+c3ByZWFkKTsKQEAgLTYwNiw3ICs2MDYsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5
U1ZHUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogICAgICAgICB9
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvLyBJZiB5b3UgY3Jhc2ggaGVyZSwgaXQn
cyBiZWNhdXNlIHlvdSBhZGRlZCBhIGNzcyBwcm9wZXJ0eSBhbmQgYXJlIG5vdCBoYW5kbGluZyBp
dAotICAgICAgICAgICAgLy8gaW4gZWl0aGVyIHRoaXMgc3dpdGNoIHN0YXRlbWVudCBvciB0aGUg
b25lIGluIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkKKyAgICAgICAgICAgIC8vIGluIGVp
dGhlciB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQgb3IgdGhlIG9uZSBpbiBTdHlsZUJ1aWxkZXI6OmFw
cGx5VG9TVkdSZW5kZXJTdHlsZQogICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgwLCAi
dW5pbXBsZW1lbnRlZCBwcm9wZXJ0eUlEOiAlZCIsIGlkKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjZiMWVkYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVCdWlsZGVyLmNwcApAQCAtMCwwICsxLDEyMTcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykg
MjAwNC0yMDA1IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkKKyAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwNyBOaWNob2xhcyBTaGFua3MgKHdlYmtpdEBuaWNrc2hhbmtz
LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4KKyAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTEsIENvZGUgQXVyb3JhIEZvcnVtLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KA
nSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisg
KiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTdHlsZUJ1aWxkZXIuaCIKKworI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUu
aCIKKyNpbmNsdWRlICJDU1NHcmFkaWVudFZhbHVlLmgiCisjaWYgRU5BQkxFKENTU19JTUFHRV9T
RVQpCisjaW5jbHVkZSAiQ1NTSW1hZ2VTZXRWYWx1ZS5oIgorI2VuZGlmCisjaW5jbHVkZSAiQ1NT
UGFyc2VyLmgiIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBpbmNsdWRlIHdoZW4gQ1NTX1ZBUklBQkxF
UyB3YXMgZml4ZWQuCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJD
U1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNp
bmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ1NTUmVmbGVjdFZhbHVlLmgi
CisjaW5jbHVkZSAiQ291bnRlci5oIgorI2luY2x1ZGUgIkNvdW50ZXJDb250ZW50LmgiCisjaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQorI2luY2x1ZGUgIkRhc2hib2FyZFJlZ2lvbi5oIgor
I2VuZGlmCisjaW5jbHVkZSAiRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5oIgorI2luY2x1ZGUgIkZv
bnRGZWF0dXJlVmFsdWUuaCIKKyNpbmNsdWRlICJGb250VmFsdWUuaCIKKyNpbmNsdWRlICJMb2Nh
bGVUb1NjcmlwdE1hcHBpbmcuaCIKKyNpbmNsdWRlICJQYWlyLmgiCisjaW5jbHVkZSAiUXVvdGVz
RGF0YS5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
KyNpbmNsdWRlICJTaGFkb3dEYXRhLmgiCisjaW5jbHVkZSAiU2hhZG93VmFsdWUuaCIKKyNpbmNs
dWRlICJTdHlsZUdlbmVyYXRlZEltYWdlLmgiCisjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZC5oIgorI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTZXQuaCIKKyNpbmNsdWRlICJTdHlsZVJl
c29sdmVyLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKyNkZWZpbmUgSEFORExFX0lOSEVSSVQocHJvcCwgUHJvcCkgXAoraWYgKGlzSW5oZXJpdCkg
eyBcCisgICAgc3RhdGUuc3R5bGUoKS0+c2V0IyNQcm9wKHN0YXRlLnBhcmVudFN0eWxlKCktPnBy
b3AoKSk7IFwKKyAgICByZXR1cm47IFwKK30KKworI2RlZmluZSBIQU5ETEVfSU5IRVJJVF9BTkRf
SU5JVElBTChwcm9wLCBQcm9wKSBcCitIQU5ETEVfSU5IRVJJVChwcm9wLCBQcm9wKSBcCitpZiAo
aXNJbml0aWFsKSB7IFwKKyAgICBzdGF0ZS5zdHlsZSgpLT5zZXQjI1Byb3AoUmVuZGVyU3R5bGU6
OmluaXRpYWwjI1Byb3AoKSk7IFwKKyAgICByZXR1cm47IFwKK30KKworU3R5bGVCdWlsZGVyOjpT
dHlsZUJ1aWxkZXIoKQorICAgIDogbV9kZXByZWNhdGVkU3R5bGVCdWlsZGVyKERlcHJlY2F0ZWRT
dHlsZUJ1aWxkZXI6OnNoYXJlZFN0eWxlQnVpbGRlcigpKQoreworfQorCitzdGF0aWMgYm9vbCBj
cmVhdGVHcmlkVHJhY2tCcmVhZHRoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwg
Y29uc3QgU3R5bGVSZXNvbHZlcjo6U3RhdGUmIHN0YXRlLCBMZW5ndGgmIHdvcmtpbmdMZW5ndGgp
Cit7CisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlV2Via2l0
TWluQ29udGVudCkgeworICAgICAgICB3b3JraW5nTGVuZ3RoID0gTGVuZ3RoKE1pbkNvbnRlbnQp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkgPT0gQ1NTVmFsdWVXZWJraXRNYXhDb250ZW50KSB7CisgICAgICAgIHdvcmtp
bmdMZW5ndGggPSBMZW5ndGgoTWF4Q29udGVudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIHdvcmtpbmdMZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+Y29udmVydFRvTGVuZ3Ro
PEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IFZpZXdwb3J0UGVy
Y2VudGFnZUNvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4oc3RhdGUuc3R5bGUoKSwgc3RhdGUu
cm9vdEVsZW1lbnRTdHlsZSgpLCBzdGF0ZS5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOworICAg
IGlmICh3b3JraW5nTGVuZ3RoLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNMZW5ndGgoKSkKKyAgICAgICAgd29ya2luZ0xl
bmd0aC5zZXRRdWlyayhwcmltaXRpdmVWYWx1ZS0+aXNRdWlya1ZhbHVlKCkpOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGNyZWF0ZUdyaWRUcmFja1NpemUoQ1NTVmFsdWUq
IHZhbHVlLCBHcmlkVHJhY2tTaXplJiB0cmFja1NpemUsIGNvbnN0IFN0eWxlUmVzb2x2ZXI6OlN0
YXRlJiBzdGF0ZSkKK3sKKyAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIFBhaXIqIG1p
bk1heFRyYWNrQnJlYWR0aCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFsdWUoKTsKKyAgICBp
ZiAoIW1pbk1heFRyYWNrQnJlYWR0aCkgeworICAgICAgICBMZW5ndGggd29ya2luZ0xlbmd0aDsK
KyAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tCcmVhZHRoKHByaW1pdGl2ZVZhbHVlLCBzdGF0
ZSwgd29ya2luZ0xlbmd0aCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
dHJhY2tTaXplLnNldExlbmd0aCh3b3JraW5nTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgTGVuZ3RoIG1pblRyYWNrQnJlYWR0aDsKKyAgICBMZW5ndGggbWF4VHJh
Y2tCcmVhZHRoOworICAgIGlmICghY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChtaW5NYXhUcmFja0Jy
ZWFkdGgtPmZpcnN0KCksIHN0YXRlLCBtaW5UcmFja0JyZWFkdGgpIHx8ICFjcmVhdGVHcmlkVHJh
Y2tCcmVhZHRoKG1pbk1heFRyYWNrQnJlYWR0aC0+c2Vjb25kKCksIHN0YXRlLCBtYXhUcmFja0Jy
ZWFkdGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB0cmFja1NpemUuc2V0TWluTWF4
KG1pblRyYWNrQnJlYWR0aCwgbWF4VHJhY2tCcmVhZHRoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kworc3RhdGljIGJvb2wgY3JlYXRlR3JpZFRyYWNrTGlzdChDU1NWYWx1ZSogdmFsdWUsIFZlY3Rv
cjxHcmlkVHJhY2tTaXplPiYgdHJhY2tTaXplcywgY29uc3QgU3R5bGVSZXNvbHZlcjo6U3RhdGUm
IHN0YXRlKQoreworICAgIC8vIEhhbmRsZSAnbm9uZScuCisgICAgaWYgKHZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIHJldHVy
biBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmU7CisgICAgfQorCisg
ICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgZm9yIChDU1NWYWx1ZUxpc3RJdGVyYXRvciBpID0gdmFsdWU7IGkuaGFzTW9yZSgpOyBpLmFk
dmFuY2UoKSkgeworICAgICAgICBDU1NWYWx1ZSogY3VyclZhbHVlID0gaS52YWx1ZSgpOworICAg
ICAgICBHcmlkVHJhY2tTaXplIHRyYWNrU2l6ZTsKKyAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJh
Y2tTaXplKGN1cnJWYWx1ZSwgdHJhY2tTaXplLCBzdGF0ZSkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgdHJhY2tTaXplcy5hcHBlbmQodHJhY2tTaXplKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKKworc3RhdGljIGJvb2wgY3JlYXRlR3JpZFBvc2l0aW9uKENT
U1ZhbHVlKiB2YWx1ZSwgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbikKK3sKKyAgICAvLyBGb3Igbm93
LCB3ZSBvbmx5IGFjY2VwdDogPGludGVnZXI+IHwgJ2F1dG8nCisgICAgaWYgKCF2YWx1ZS0+aXNQ
cmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlKTsKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVB
dXRvKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKHByaW1pdGl2ZVZhbHVlLT5pc051bWJlcigpKTsKKyAgICBwb3NpdGlvbi5zZXRJ
bnRlZ2VyUG9zaXRpb24ocHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKCkpOworICAgIHJldHVy
biB0cnVlOworfQorCisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCitzdGF0aWMgYm9vbCBoYXNW
YXJpYWJsZVJlZmVyZW5jZShDU1NWYWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIHJl
dHVybiBwcmltaXRpdmVWYWx1ZS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKTsKKyAgICB9CisKKyAg
ICBpZiAodmFsdWUtPmlzQ2FsY3VsYXRpb25WYWx1ZSgpKQorICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q1NTQ2FsY1ZhbHVlKj4odmFsdWUpLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpOworCisg
ICAgaWYgKHZhbHVlLT5pc1JlZmxlY3RWYWx1ZSgpKSB7CisgICAgICAgIENTU1JlZmxlY3RWYWx1
ZSogcmVmbGVjdFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUmVmbGVjdFZhbHVlKj4odmFsdWUpOwor
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZGlyZWN0aW9uID0gcmVmbGVjdFZhbHVlLT5kaXJl
Y3Rpb24oKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIG9mZnNldCA9IHJlZmxlY3RWYWx1
ZS0+b2Zmc2V0KCk7CisgICAgICAgIENTU1ZhbHVlKiBtYXNrID0gcmVmbGVjdFZhbHVlLT5tYXNr
KCk7CisgICAgICAgIHJldHVybiAoZGlyZWN0aW9uICYmIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKGRp
cmVjdGlvbikpIHx8IChvZmZzZXQgJiYgaGFzVmFyaWFibGVSZWZlcmVuY2Uob2Zmc2V0KSkgfHwg
KG1hc2sgJiYgaGFzVmFyaWFibGVSZWZlcmVuY2UobWFzaykpOworICAgIH0KKworICAgIGZvciAo
Q1NTVmFsdWVMaXN0SXRlcmF0b3IgaSA9IHZhbHVlOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNlKCkp
IHsKKyAgICAgICAgaWYgKGhhc1ZhcmlhYmxlUmVmZXJlbmNlKGkudmFsdWUoKSkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQg
U3R5bGVCdWlsZGVyOjpyZXNvbHZlVmFyaWFibGVzKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2
ZXIsIENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgVmVjdG9yPHN0ZDo6cGFpcjxD
U1NQcm9wZXJ0eUlELCBTdHJpbmc+ID4mIGtub3duRXhwcmVzc2lvbnMpCit7CisgICAgc3RkOjpw
YWlyPENTU1Byb3BlcnR5SUQsIFN0cmluZz4gZXhwcmVzc2lvbihpZCwgdmFsdWUtPnNlcmlhbGl6
ZVJlc29sdmluZ1ZhcmlhYmxlcygqKHN0eWxlUmVzb2x2ZXItPm1fc3RhdGUuc3R5bGUoKS0+dmFy
aWFibGVzKCkpKTsKKworICAgIGlmIChrbm93bkV4cHJlc3Npb25zLmNvbnRhaW5zKGV4cHJlc3Np
b24pKQorICAgICAgICByZXR1cm47IC8vIGN5Y2xlIGRldGVjdGVkLgorCisgICAga25vd25FeHBy
ZXNzaW9ucy5hcHBlbmQoZXhwcmVzc2lvbik7CisKKyAgICAvLyBGSVhNRTogSXQgd291bGQgYmUg
ZmFzdGVyIG5vdCB0byByZS1wYXJzZSBmcm9tIHN0cmluZ3MsIGJ1dCBmb3Igbm93IENTUyBwcm9w
ZXJ0eSB2YWxpZGF0aW9uIGxpdmVzIGluc2lkZSB0aGUgcGFyc2VyIHNvIHdlIGRvIGl0IHRoZXJl
LgorICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4gcmVzdWx0U2V0ID0gTXV0YWJs
ZVN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOworICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZVZh
bHVlKHJlc3VsdFNldC5nZXQoKSwgaWQsIGV4cHJlc3Npb24uc2Vjb25kLCBmYWxzZSwgc3R5bGVS
ZXNvbHZlci0+ZG9jdW1lbnQoKSkpCisgICAgICAgIHJldHVybjsgLy8gZXhwcmVzc2lvbiBmYWls
ZWQgdG8gcGFyc2UuCisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0U2V0LT5w
cm9wZXJ0eUNvdW50KCk7IGkrKykgeworICAgICAgICBTdHlsZVByb3BlcnR5U2V0OjpQcm9wZXJ0
eVJlZmVyZW5jZSBwcm9wZXJ0eSA9IHJlc3VsdFNldC0+cHJvcGVydHlBdChpKTsKKyAgICAgICAg
aWYgKHByb3BlcnR5LmlkKCkgIT0gQ1NTUHJvcGVydHlWYXJpYWJsZSAmJiBoYXNWYXJpYWJsZVJl
ZmVyZW5jZShwcm9wZXJ0eS52YWx1ZSgpKSkKKyAgICAgICAgICAgIHJlc29sdmVWYXJpYWJsZXMo
c3R5bGVSZXNvbHZlciwgcHJvcGVydHkuaWQoKSwgcHJvcGVydHkudmFsdWUoKSwga25vd25FeHBy
ZXNzaW9ucyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFwcGx5VG9SZW5kZXJTdHlsZShz
dHlsZVJlc29sdmVyLCBwcm9wZXJ0eS5pZCgpLCBwcm9wZXJ0eS52YWx1ZSgpKTsKKyAgICB9Cit9
CisjZW5kaWYKKworaW5saW5lIGJvb2wgaXNWYWxpZFZpc2l0ZWRMaW5rUHJvcGVydHkoQ1NTUHJv
cGVydHlJRCBpZCkKK3sKKyAgICBzd2l0Y2ggKGlkKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJUb3BDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3I6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lQ29s
b3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvcjoKKyNpZiBFTkFC
TEUoQ1NTM19URVhUKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbkNv
bG9yOgorI2VuZGlmIC8vIENTUzNfVEVYVAorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXNDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yOgorI2lmIEVOQUJMRShT
VkcpCisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGw6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9r
ZToKKyNlbmRpZgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgU3R5bGVCdWlsZGVy
OjphcHBseVRvUmVuZGVyU3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTUHJv
cGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQoreworI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVT
KQorICAgIGlmIChpZCAhPSBDU1NQcm9wZXJ0eVZhcmlhYmxlICYmIGhhc1ZhcmlhYmxlUmVmZXJl
bmNlKHZhbHVlKSkgeworICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPENTU1Byb3BlcnR5SUQsIFN0
cmluZz4gPiBrbm93bkV4cHJlc3Npb25zOworICAgICAgICBzdHlsZVJlc29sdmVyLT5yZXNvbHZl
VmFyaWFibGVzKHN0eWxlUmVzb2x2ZXIsIGlkLCB2YWx1ZSwga25vd25FeHByZXNzaW9ucyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIC8vIENTUyB2YXJpYWJsZXMgZG9u
J3QgcmVzb2x2ZSBzaG9ydGhhbmRzIGF0IHBhcnNpbmcgdGltZSwgc28gdGhpcyBzaG91bGQgYmUg
KmFmdGVyKiBoYW5kbGluZyB2YXJpYWJsZXMuCisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghaXNF
eHBhbmRlZFNob3J0aGFuZChpZCksICJTaG9ydGhhbmQgcHJvcGVydHkgaWQgPSAlZCB3YXNuJ3Qg
ZXhwYW5kZWQgYXQgcGFyc2luZyB0aW1lIiwgaWQpOworCisgICAgU3R5bGVSZXNvbHZlcjo6U3Rh
dGUmIHN0YXRlID0gc3R5bGVSZXNvbHZlci0+bV9zdGF0ZTsKKyAgICBib29sIGlzSW5oZXJpdCA9
IHN0YXRlLnBhcmVudE5vZGUoKSAmJiB2YWx1ZS0+aXNJbmhlcml0ZWRWYWx1ZSgpOworICAgIGJv
b2wgaXNJbml0aWFsID0gdmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkgfHwgKCFzdGF0ZS5wYXJlbnRO
b2RlKCkgJiYgdmFsdWUtPmlzSW5oZXJpdGVkVmFsdWUoKSk7CisKKyAgICBBU1NFUlQoIWlzSW5o
ZXJpdCB8fCAhaXNJbml0aWFsKTsgLy8gaXNJbmhlcml0IC0+ICFpc0luaXRpYWwgJiYgaXNJbml0
aWFsIC0+ICFpc0luaGVyaXQKKyAgICBBU1NFUlQoIWlzSW5oZXJpdCB8fCAoc3RhdGUucGFyZW50
Tm9kZSgpICYmIHN0YXRlLnBhcmVudFN0eWxlKCkpKTsgLy8gaXNJbmhlcml0IC0+IChzdGF0ZS5w
YXJlbnROb2RlKCkgJiYgc3RhdGUucGFyZW50U3R5bGUoKSkKKworICAgIGlmICghc3RhdGUuYXBw
bHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCkgJiYgKCFzdGF0ZS5hcHBseVByb3BlcnR5VG9WaXNp
dGVkTGlua1N0eWxlKCkgfHwgIWlzVmFsaWRWaXNpdGVkTGlua1Byb3BlcnR5KGlkKSkpIHsKKyAg
ICAgICAgLy8gTGltaXQgdGhlIHByb3BlcnRpZXMgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBvbmx5
IHRoZSBvbmVzIGhvbm9yZWQgYnkgOnZpc2l0ZWQuCisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoaXNJbmhlcml0ICYmICFzdGF0ZS5wYXJlbnRTdHlsZSgpLT5oYXNFeHBsaWNpdGx5
SW5oZXJpdGVkUHJvcGVydGllcygpICYmICFDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0
eShpZCkpCisgICAgICAgIHN0YXRlLnBhcmVudFN0eWxlKCktPnNldEhhc0V4cGxpY2l0bHlJbmhl
cml0ZWRQcm9wZXJ0aWVzKCk7CisKKyAgICAvLyBDaGVjayBsb29rdXAgdGFibGUgZm9yIGltcGxl
bWVudGF0aW9ucyBhbmQgdXNlIHdoZW4gYXZhaWxhYmxlLgorICAgIGNvbnN0IFByb3BlcnR5SGFu
ZGxlciYgaGFuZGxlciA9IG1fZGVwcmVjYXRlZFN0eWxlQnVpbGRlci5wcm9wZXJ0eUhhbmRsZXIo
aWQpOworICAgIGlmIChoYW5kbGVyLmlzVmFsaWQoKSkgeworICAgICAgICBpZiAoaXNJbmhlcml0
KQorICAgICAgICAgICAgaGFuZGxlci5hcHBseUluaGVyaXRWYWx1ZShpZCwgc3R5bGVSZXNvbHZl
cik7CisgICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkKKyAgICAgICAgICAgIGhhbmRsZXIuYXBw
bHlJbml0aWFsVmFsdWUoaWQsIHN0eWxlUmVzb2x2ZXIpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBoYW5kbGVyLmFwcGx5VmFsdWUoaWQsIHN0eWxlUmVzb2x2ZXIsIHZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgPyBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKSA6IDA7CisKKyAgICBmbG9hdCB6b29tRmFjdG9yID0gc3RhdGUuc3R5bGUo
KS0+ZWZmZWN0aXZlWm9vbSgpOworCisgICAgLy8gV2hhdCBmb2xsb3dzIGlzIGEgbGlzdCB0aGF0
IG1hcHMgdGhlIENTUyBwcm9wZXJ0aWVzIGludG8gdGhlaXIgY29ycmVzcG9uZGluZyBmcm9udC1l
bmQKKyAgICAvLyBSZW5kZXJTdHlsZSB2YWx1ZXMuCisgICAgc3dpdGNoIChpZCkgeworICAgIC8v
IGxpc3RzCisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbnRlbnQ6CisgICAgICAgIC8vIExpc3Qgb2Yg
c3RyaW5nLCB1cmksIGNvdW50ZXIsIGF0dHIsIGkuCisgICAgICAgIHsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBJbiBDU1MzLCBpdCB3aWxsIGJlIHBvc3NpYmxlIHRvIGluaGVyaXQgY29udGVudC4g
SW4gQ1NTMiBpdCBpcyBub3QuIFRoaXMKKyAgICAgICAgICAgIC8vIG5vdGUgaXMgYSByZW1pbmRl
ciB0aGF0IGV2ZW50dWFsbHkgImluaGVyaXQiIG5lZWRzIHRvIGJlIHN1cHBvcnRlZC4KKworICAg
ICAgICAgICAgaWYgKGlzSW5pdGlhbCkgeworICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCkt
PmNsZWFyQ29udGVudCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgIGJvb2wgZGlkU2V0ID0gZmFsc2U7CisgICAgICAgICAg
ICBmb3IgKENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGkgPSB2YWx1ZTsgaS5oYXNNb3JlKCk7IGkuYWR2
YW5jZSgpKSB7CisgICAgICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBpLnZhbHVlKCk7Cisg
ICAgICAgICAgICAgICAgaWYgKGl0ZW0tPmlzSW1hZ2VHZW5lcmF0b3JWYWx1ZSgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChpdGVtLT5pc0dyYWRpZW50VmFsdWUoKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldENvbnRlbnQoU3R5bGVHZW5lcmF0ZWRJbWFn
ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PENTU0dyYWRpZW50VmFsdWUqPihpdGVtKS0+Z3JhZGllbnRX
aXRoU3R5bGVzUmVzb2x2ZWQoc3R5bGVSZXNvbHZlcikuZ2V0KCkpLCBkaWRTZXQpOworICAgICAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgp
LT5zZXRDb250ZW50KFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZShzdGF0aWNfY2FzdDxDU1NJ
bWFnZUdlbmVyYXRvclZhbHVlKj4oaXRlbSkpLCBkaWRTZXQpOworICAgICAgICAgICAgICAgICAg
ICBkaWRTZXQgPSB0cnVlOworI2lmIEVOQUJMRShDU1NfSU1BR0VfU0VUKQorICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoaXRlbS0+aXNJbWFnZVNldFZhbHVlKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudChzdHlsZVJlc29sdmVyLT5zZXRPclBlbmRp
bmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlDb250ZW50LCBzdGF0aWNfY2FzdDxDU1NJbWFnZVNldFZh
bHVlKj4oaXRlbSkpLCBkaWRTZXQpOworICAgICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVl
OworI2VuZGlmCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGl0ZW0t
PmlzSW1hZ2VWYWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNl
dENvbnRlbnQoc3R5bGVSZXNvbHZlci0+Y2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3Bl
cnR5Q29udGVudCwgc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VWYWx1ZSo+KGl0ZW0pKSwgZGlkU2V0KTsK
KyAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFpdGVt
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnRlbnRWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisKKyAgICAgICAgICAgICAgICBpZiAoY29u
dGVudFZhbHVlLT5pc1N0cmluZygpKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxl
KCktPnNldENvbnRlbnQoY29udGVudFZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpLmltcGwoKSwgZGlk
U2V0KTsKKyAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKGNvbnRlbnRWYWx1ZS0+aXNBdHRyKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IENhbiBhIG5hbWVzcGFjZSBiZSBzcGVjaWZpZWQgZm9yIGFuIGF0dHIoZm9v
KT8KKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLnN0eWxlKCktPnN0eWxlVHlwZSgpID09
IE5PUFNFVURPKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0VW5p
cXVlKCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRlLnBhcmVudFN0eWxlKCktPnNldFVuaXF1ZSgpOworICAgICAgICAgICAgICAgICAgICBR
dWFsaWZpZWROYW1lIGF0dHIobnVsbEF0b20sIGNvbnRlbnRWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUo
KS5pbXBsKCksIG51bGxBdG9tKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSA9IHN0YXRlLmVsZW1lbnQoKS0+Z2V0QXR0cmlidXRlKGF0dHIpOworICAgICAg
ICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KHZhbHVlLmlzTnVsbCgpID8g
ZW1wdHlBdG9tIDogdmFsdWUuaW1wbCgpLCBkaWRTZXQpOworICAgICAgICAgICAgICAgICAgICBk
aWRTZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciB0aGUgZmFjdCB0
aGF0IHRoZSBhdHRyaWJ1dGUgdmFsdWUgYWZmZWN0cyB0aGUgc3R5bGUKKyAgICAgICAgICAgICAg
ICAgICAgc3R5bGVSZXNvbHZlci0+cnVsZVNldHMoKS5mZWF0dXJlcygpLmF0dHJzSW5SdWxlcy5h
ZGQoYXR0ci5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
Y29udGVudFZhbHVlLT5pc0NvdW50ZXIoKSkgeworICAgICAgICAgICAgICAgICAgICBDb3VudGVy
KiBjb3VudGVyVmFsdWUgPSBjb250ZW50VmFsdWUtPmdldENvdW50ZXJWYWx1ZSgpOworICAgICAg
ICAgICAgICAgICAgICBFTGlzdFN0eWxlVHlwZSBsaXN0U3R5bGVUeXBlID0gTm9uZUxpc3RTdHls
ZTsKKyAgICAgICAgICAgICAgICAgICAgaW50IGxpc3RTdHlsZUlkZW50ID0gY291bnRlclZhbHVl
LT5saXN0U3R5bGVJZGVudCgpOworICAgICAgICAgICAgICAgICAgICBpZiAobGlzdFN0eWxlSWRl
bnQgIT0gQ1NTVmFsdWVOb25lKQorICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlVHlw
ZSA9IHN0YXRpY19jYXN0PEVMaXN0U3R5bGVUeXBlPihsaXN0U3R5bGVJZGVudCAtIENTU1ZhbHVl
RGlzYyk7CisgICAgICAgICAgICAgICAgICAgIE93blB0cjxDb3VudGVyQ29udGVudD4gY291bnRl
ciA9IGFkb3B0UHRyKG5ldyBDb3VudGVyQ29udGVudChjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIo
KSwgbGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSkpOworICAgICAgICAg
ICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KGNvdW50ZXIucmVsZWFzZSgpLCBk
aWRTZXQpOworICAgICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOworICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY29udGVudFZhbHVlLT5n
ZXRJZGVudCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVPcGVuUXVvdGU6
CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KE9QRU5f
UVVPVEUsIGRpZFNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVDbG9zZVF1b3RlOgorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUo
KS0+c2V0Q29udGVudChDTE9TRV9RVU9URSwgZGlkU2V0KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRpZFNldCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vT3BlblF1b3RlOgorICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudChOT19PUEVOX1FVT1RFLCBkaWRTZXQp
OworICAgICAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9DbG9z
ZVF1b3RlOgorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVu
dChOT19DTE9TRV9RVU9URSwgZGlkU2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZFNl
dCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbCBhbmQgbm9u
ZSBkbyBub3QgaGF2ZSBhbnkgZWZmZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgeyB9Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoIWRpZFNldCkKKyAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5j
bGVhckNvbnRlbnQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIGNhc2Ug
Q1NTUHJvcGVydHlRdW90ZXM6CisgICAgICAgIGlmIChpc0luaGVyaXQpIHsKKyAgICAgICAgICAg
IHN0YXRlLnN0eWxlKCktPnNldFF1b3RlcyhzdGF0ZS5wYXJlbnRTdHlsZSgpLT5xdW90ZXMoKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzSW5pdGlhbCkg
eworICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0UXVvdGVzKDApOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgewor
ICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0
Kj4odmFsdWUpOworICAgICAgICAgICAgUmVmUHRyPFF1b3Rlc0RhdGE+IHF1b3RlcyA9IFF1b3Rl
c0RhdGE6OmNyZWF0ZSgpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0
LT5sZW5ndGgoKTsgaSArPSAyKSB7CisgICAgICAgICAgICAgICAgQ1NTVmFsdWUqIGZpcnN0ID0g
bGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsKKyAgICAgICAgICAgICAgICAvLyBpdGVt
KCkgcmV0dXJucyBudWxsIGlmIG91dCBvZiBib3VuZHMgc28gdGhpcyBpcyBzYWZlLgorICAgICAg
ICAgICAgICAgIENTU1ZhbHVlKiBzZWNvbmQgPSBsaXN0LT5pdGVtKGkgKyAxKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIXNlY29uZCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oZmlyc3QtPmlzUHJp
bWl0aXZlVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oc2Vjb25kLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOworICAgICAgICAgICAgICAgIFN0
cmluZyBzdGFydFF1b3RlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihmaXJzdCkt
PmdldFN0cmluZ1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGVuZFF1b3RlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihzZWNvbmQpLT5nZXRTdHJpbmdWYWx1ZSgpOwor
ICAgICAgICAgICAgICAgIHF1b3Rlcy0+YWRkUGFpcihzdGQ6Om1ha2VfcGFpcihzdGFydFF1b3Rl
LCBlbmRRdW90ZSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+
c2V0UXVvdGVzKHF1b3Rlcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlKSB7CisgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxl
KCktPnNldFF1b3RlcyhRdW90ZXNEYXRhOjpjcmVhdGUoKSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuOworICAgIC8vIFNob3J0aGFuZCBwcm9wZXJ0aWVzLgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlGb250OgorICAgICAgICBpZiAoaXNJbmhlcml0KSB7CisgICAgICAgICAgICBGb250RGVzY3Jp
cHRpb24gZm9udERlc2NyaXB0aW9uID0gc3RhdGUucGFyZW50U3R5bGUoKS0+Zm9udERlc2NyaXB0
aW9uKCk7CisgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRMaW5lSGVpZ2h0KHN0YXRlLnBh
cmVudFN0eWxlKCktPnNwZWNpZmllZExpbmVIZWlnaHQoKSk7CisgICAgICAgICAgICBzdGF0ZS5z
ZXRMaW5lSGVpZ2h0VmFsdWUoMCk7CisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRGb250
RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0luaXRp
YWwpIHsKKyAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IHN0eWxlUmVzb2x2ZXItPmRv
Y3VtZW50U2V0dGluZ3MoKTsKKyAgICAgICAgICAgIEFTU0VSVChzZXR0aW5ncyk7IC8vIElmIHdl
J3JlIGRvaW5nIHN0eWxlIHJlc29sdXRpb24sIHRoaXMgZG9jdW1lbnQgc2hvdWxkIGFsd2F5cyBi
ZSBpbiBhIGZyYW1lIGFuZCB0aHVzIGhhdmUgc2V0dGluZ3MKKyAgICAgICAgICAgIGlmICghc2V0
dGluZ3MpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgc3R5bGVSZXNvbHZl
ci0+aW5pdGlhbGl6ZUZvbnRTdHlsZShzZXR0aW5ncyk7CisgICAgICAgIH0gZWxzZSBpZiAocHJp
bWl0aXZlVmFsdWUpIHsKKyAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldExpbmVIZWlnaHQo
UmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOworICAgICAgICAgICAgc3RhdGUuc2V0
TGluZUhlaWdodFZhbHVlKDApOworCisgICAgICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERl
c2NyaXB0aW9uOworICAgICAgICAgICAgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5zeXN0
ZW1Gb250KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpLCBmb250RGVzY3JpcHRpb24pOworCisg
ICAgICAgICAgICAvLyBEb3VibGUtY2hlY2sgYW5kIHNlZSBpZiB0aGUgdGhlbWUgZGlkIGFueXRo
aW5nLiBJZiBub3QsIGRvbid0IGJvdGhlciB1cGRhdGluZyB0aGUgZm9udC4KKyAgICAgICAgICAg
IGlmIChmb250RGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSkgeworICAgICAgICAgICAgICAg
IC8vIE1ha2Ugc3VyZSB0aGUgcmVuZGVyaW5nIG1vZGUgYW5kIHByaW50ZXIgZm9udCBzZXR0aW5n
cyBhcmUgdXBkYXRlZC4KKyAgICAgICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBzdHls
ZVJlc29sdmVyLT5kb2N1bWVudFNldHRpbmdzKCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHNl
dHRpbmdzKTsgLy8gSWYgd2UncmUgZG9pbmcgc3R5bGUgcmVzb2x1dGlvbiwgdGhpcyBkb2N1bWVu
dCBzaG91bGQgYWx3YXlzIGJlIGluIGEgZnJhbWUgYW5kIHRodXMgaGF2ZSBzZXR0aW5ncworICAg
ICAgICAgICAgICAgIGlmICghc2V0dGluZ3MpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0UmVuZGVyaW5nTW9kZShzZXR0aW5n
cy0+Zm9udFJlbmRlcmluZ01vZGUoKSk7CisgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9u
LnNldFVzZVByaW50ZXJGb250KHN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCktPnByaW50aW5nKCkg
fHwgIXNldHRpbmdzLT5zY3JlZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZCgpKTsKKworICAgICAg
ICAgICAgICAgIC8vIEhhbmRsZSB0aGUgem9vbSBmYWN0b3IuCisgICAgICAgICAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShzdHlsZVJlc29sdmVyLT5nZXRDb21wdXRlZFNp
emVGcm9tU3BlY2lmaWVkU2l6ZShzdHlsZVJlc29sdmVyLT5kb2N1bWVudCgpLCBzdGF0ZS5zdHls
ZSgpLCBmb250RGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSwgZm9udERlc2NyaXB0aW9uLnNw
ZWNpZmllZFNpemUoKSwgc3R5bGVSZXNvbHZlci0+dXNlU1ZHWm9vbVJ1bGVzKCkpKTsKKyAgICAg
ICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0
aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS0+aXNGb250VmFs
dWUoKSkgeworICAgICAgICAgICAgRm9udFZhbHVlKiBmb250ID0gc3RhdGljX2Nhc3Q8Rm9udFZh
bHVlKj4odmFsdWUpOworICAgICAgICAgICAgaWYgKCFmb250LT5zdHlsZSB8fCAhZm9udC0+dmFy
aWFudCB8fCAhZm9udC0+d2VpZ2h0CisgICAgICAgICAgICAgICAgfHwgIWZvbnQtPnNpemUgfHwg
IWZvbnQtPmxpbmVIZWlnaHQgfHwgIWZvbnQtPmZhbWlseSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICBhcHBseVRvUmVuZGVyU3R5bGUoc3R5bGVSZXNvbHZlciwgQ1NTUHJv
cGVydHlGb250U3R5bGUsIGZvbnQtPnN0eWxlLmdldCgpKTsKKyAgICAgICAgICAgIGFwcGx5VG9S
ZW5kZXJTdHlsZShzdHlsZVJlc29sdmVyLCBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCBmb250LT52
YXJpYW50LmdldCgpKTsKKyAgICAgICAgICAgIGFwcGx5VG9SZW5kZXJTdHlsZShzdHlsZVJlc29s
dmVyLCBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIGZvbnQtPndlaWdodC5nZXQoKSk7CisgICAgICAg
ICAgICAvLyBUaGUgcHJldmlvdXMgcHJvcGVydGllcyBjYW4gZGlydHkgb3VyIGZvbnQgYnV0IHRo
ZXkgZG9uJ3QgdHJ5IHRvIHJlYWQgdGhlIGZvbnQncworICAgICAgICAgICAgLy8gcHJvcGVydGll
cyBiYWNrLCB3aGljaCBpcyBzYWZlLiBIb3dldmVyIGlmIGZvbnQtc2l6ZSBpcyB1c2luZyB0aGUg
J2V4JyB1bml0LCBpdCB3aWxsCisgICAgICAgICAgICAvLyBuZWVkIHF1ZXJ5IHRoZSBkaXJ0aWVk
IGZvbnQncyB4LWhlaWdodCB0byBnZXQgdGhlIGNvbXB1dGVkIHNpemUuIFRvIGJlIHNhZmUgaW4g
dGhpcworICAgICAgICAgICAgLy8gY2FzZSwgbGV0J3MganVzdCB1cGRhdGUgdGhlIGZvbnQgbm93
LgorICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+dXBkYXRlRm9udCgpOworICAgICAgICAgICAg
YXBwbHlUb1JlbmRlclN0eWxlKHN0eWxlUmVzb2x2ZXIsIENTU1Byb3BlcnR5Rm9udFNpemUsIGZv
bnQtPnNpemUuZ2V0KCkpOworCisgICAgICAgICAgICBzdGF0ZS5zZXRMaW5lSGVpZ2h0VmFsdWUo
Zm9udC0+bGluZUhlaWdodC5nZXQoKSk7CisKKyAgICAgICAgICAgIGFwcGx5VG9SZW5kZXJTdHls
ZShzdHlsZVJlc29sdmVyLCBDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIGZvbnQtPmZhbWlseS5nZXQo
KSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b206CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmFk
aXVzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyU3BhY2luZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGU6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyV2lk
dGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
TWFyZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlPdmVyZmxvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZzoKKyAgICBjYXNlIENTU1By
b3BlcnR5VHJhbnNpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyQmVmb3JlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJF
bmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0OgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtbnM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEZsZXg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhGbG93
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQ29sdW1uOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRHcmlkUm93OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xs
YXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFzazoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0RW1waGFzaXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRT
dHJva2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbjoKKyNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lP
TlMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXA6CisjZW5kaWYKKyAgICAgICAgQVNT
RVJUKGlzRXhwYW5kZWRTaG9ydGhhbmQoaWQpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIGJyZWFrOworCisgICAgLy8gQ1NTMyBQcm9wZXJ0aWVzCisgICAgY2FzZSBD
U1NQcm9wZXJ0eVRleHRTaGFkb3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNoYWRvdzoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93OiB7CisgICAgICAgIGlmIChpc0luaGVy
aXQpIHsKKyAgICAgICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0YXRlLnN0eWxlKCktPnNldFRleHRTaGFkb3coc3RhdGUucGFy
ZW50U3R5bGUoKS0+dGV4dFNoYWRvdygpID8gYWRvcHRQdHIobmV3IFNoYWRvd0RhdGEoKnN0YXRl
LnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3coKSkpIDogbnVsbHB0cik7CisgICAgICAgICAgICBy
ZXR1cm4gc3RhdGUuc3R5bGUoKS0+c2V0Qm94U2hhZG93KHN0YXRlLnBhcmVudFN0eWxlKCktPmJv
eFNoYWRvdygpID8gYWRvcHRQdHIobmV3IFNoYWRvd0RhdGEoKnN0YXRlLnBhcmVudFN0eWxlKCkt
PmJveFNoYWRvdygpKSkgOiBudWxscHRyKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNJbml0
aWFsIHx8IHByaW1pdGl2ZVZhbHVlKSAvLyBpbml0aWFsIHwgbm9uZQorICAgICAgICAgICAgcmV0
dXJuIGlkID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdyA/IHN0YXRlLnN0eWxlKCktPnNldFRleHRT
aGFkb3cobnVsbHB0cikgOiBzdGF0ZS5zdHlsZSgpLT5zZXRCb3hTaGFkb3cobnVsbHB0cik7CisK
KyAgICAgICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBmb3IgKENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGkgPSB2YWx1ZTsgaS5oYXNNb3Jl
KCk7IGkuYWR2YW5jZSgpKSB7CisgICAgICAgICAgICBDU1NWYWx1ZSogY3VyclZhbHVlID0gaS52
YWx1ZSgpOworICAgICAgICAgICAgaWYgKCFjdXJyVmFsdWUtPmlzU2hhZG93VmFsdWUoKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIFNoYWRvd1ZhbHVlKiBpdGVtID0g
c3RhdGljX2Nhc3Q8U2hhZG93VmFsdWUqPihjdXJyVmFsdWUpOworICAgICAgICAgICAgaW50IHgg
PSBpdGVtLT54LT5jb21wdXRlTGVuZ3RoPGludD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVs
ZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKTsKKyAgICAgICAgICAgIGludCB5ID0gaXRlbS0+eS0+
Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUo
KSwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICBpbnQgYmx1ciA9IGl0ZW0tPmJsdXIgPyBpdGVt
LT5ibHVyLT5jb21wdXRlTGVuZ3RoPGludD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1l
bnRTdHlsZSgpLCB6b29tRmFjdG9yKSA6IDA7CisgICAgICAgICAgICBpbnQgc3ByZWFkID0gaXRl
bS0+c3ByZWFkID8gaXRlbS0+c3ByZWFkLT5jb21wdXRlTGVuZ3RoPGludD4oc3RhdGUuc3R5bGUo
KSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKSA6IDA7CisgICAgICAgICAg
ICBTaGFkb3dTdHlsZSBzaGFkb3dTdHlsZSA9IGl0ZW0tPnN0eWxlICYmIGl0ZW0tPnN0eWxlLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlSW5zZXQgPyBJbnNldCA6IE5vcm1hbDsKKyAgICAgICAgICAg
IENvbG9yIGNvbG9yOworICAgICAgICAgICAgaWYgKGl0ZW0tPmNvbG9yKQorICAgICAgICAgICAg
ICAgIGNvbG9yID0gc3R5bGVSZXNvbHZlci0+Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoaXRlbS0+
Y29sb3IuZ2V0KCkpOworICAgICAgICAgICAgZWxzZSBpZiAoc3RhdGUuc3R5bGUoKSkKKyAgICAg
ICAgICAgICAgICBjb2xvciA9IHN0YXRlLnN0eWxlKCktPmNvbG9yKCk7CisKKyAgICAgICAgICAg
IE93blB0cjxTaGFkb3dEYXRhPiBzaGFkb3dEYXRhID0gYWRvcHRQdHIobmV3IFNoYWRvd0RhdGEo
SW50UG9pbnQoeCwgeSksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIGlkID09IENTU1Byb3Bl
cnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFu
c3BhcmVudCkpOworICAgICAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdykK
KyAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KHNoYWRvd0RhdGEu
cmVsZWFzZSgpLCBpLmluZGV4KCkpOyAvLyBhZGQgdG8gdGhlIGxpc3QgaWYgdGhpcyBpcyBub3Qg
dGhlIGZpcnN0IGVudHJ5CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3RhdGUu
c3R5bGUoKS0+c2V0Qm94U2hhZG93KHNoYWRvd0RhdGEucmVsZWFzZSgpLCBpLmluZGV4KCkpOyAv
LyBhZGQgdG8gdGhlIGxpc3QgaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGVudHJ5CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3hSZWZsZWN0OiB7CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGJveFJlZmxl
Y3QsIEJveFJlZmxlY3QpCisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkgeworICAgICAgICAg
ICAgc3RhdGUuc3R5bGUoKS0+c2V0Qm94UmVmbGVjdChSZW5kZXJTdHlsZTo6aW5pdGlhbEJveFJl
ZmxlY3QoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAo
IXZhbHVlLT5pc1JlZmxlY3RWYWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IENTU1JlZmxlY3RWYWx1ZSogcmVmbGVjdFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUmVmbGVjdFZh
bHVlKj4odmFsdWUpOworICAgICAgICBSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiByZWZsZWN0aW9u
ID0gU3R5bGVSZWZsZWN0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgcmVmbGVjdGlvbi0+c2V0RGly
ZWN0aW9uKCpyZWZsZWN0VmFsdWUtPmRpcmVjdGlvbigpKTsKKyAgICAgICAgaWYgKHJlZmxlY3RW
YWx1ZS0+b2Zmc2V0KCkpCisgICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRPZmZzZXQocmVmbGVj
dFZhbHVlLT5vZmZzZXQoKS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24g
fCBQZXJjZW50Q29udmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uPihzdGF0ZS5zdHlsZSgp
LCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHpvb21GYWN0b3IpKTsKKyAgICAgICAgTmluZVBp
ZWNlSW1hZ2UgbWFzazsKKyAgICAgICAgbWFzay5zZXRNYXNrRGVmYXVsdHMoKTsKKyAgICAgICAg
c3R5bGVSZXNvbHZlci0+c3R5bGVNYXAoKS0+bWFwTmluZVBpZWNlSW1hZ2UoaWQsIHJlZmxlY3RW
YWx1ZS0+bWFzaygpLCBtYXNrKTsKKyAgICAgICAgcmVmbGVjdGlvbi0+c2V0TWFzayhtYXNrKTsK
KworICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRCb3hSZWZsZWN0KHJlZmxlY3Rpb24ucmVsZWFz
ZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5U3JjOiAv
LyBPbmx5IHVzZWQgaW4gQGZvbnQtZmFjZSBydWxlcy4KKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2U6IC8vIE9ubHkgdXNlZCBpbiBAZm9udC1mYWNlIHJ1
bGVzLgorICAgICAgICByZXR1cm47CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZTog
eworICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChsb2NhbGUsIExvY2FsZSk7Cisg
ICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAg
ICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRMb2NhbGUobnVsbEF0b20pOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRMb2NhbGUocHJpbWl0aXZlVmFsdWUtPmdldFN0
cmluZ1ZhbHVlKCkpOworICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0g
c3RhdGUuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRTY3JpcHQobG9jYWxlVG9TY3JpcHRDb2RlRm9yRm9udFNlbGVjdGlvbihzdGF0ZS5zdHls
ZSgpLT5sb2NhbGUoKSkpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRGb250RGVzY3JpcHRp
b24oZm9udERlc2NyaXB0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNpZiBFTkFCTEUo
REFTSEJPQVJEX1NVUFBPUlQpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdERhc2hib2FyZFJl
Z2lvbjoKKyAgICB7CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGRhc2hib2Fy
ZFJlZ2lvbnMsIERhc2hib2FyZFJlZ2lvbnMpCisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlTm9uZSkgeworICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0
RGFzaGJvYXJkUmVnaW9ucyhSZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMoKSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBEYXNoYm9hcmRSZWdpb24q
IHJlZ2lvbiA9IHByaW1pdGl2ZVZhbHVlLT5nZXREYXNoYm9hcmRSZWdpb25WYWx1ZSgpOworICAg
ICAgICBpZiAoIXJlZ2lvbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBEYXNoYm9h
cmRSZWdpb24qIGZpcnN0ID0gcmVnaW9uOworICAgICAgICB3aGlsZSAocmVnaW9uKSB7CisgICAg
ICAgICAgICBMZW5ndGggdG9wID0gc3R5bGVSZXNvbHZlci0+Y29udmVydFRvSW50TGVuZ3RoKHJl
Z2lvbi0+dG9wKCksIHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSk7Cisg
ICAgICAgICAgICBMZW5ndGggcmlnaHQgPSBzdHlsZVJlc29sdmVyLT5jb252ZXJ0VG9JbnRMZW5n
dGgocmVnaW9uLT5yaWdodCgpLCBzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxl
KCkpOworICAgICAgICAgICAgTGVuZ3RoIGJvdHRvbSA9IHN0eWxlUmVzb2x2ZXItPmNvbnZlcnRU
b0ludExlbmd0aChyZWdpb24tPmJvdHRvbSgpLCBzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxl
bWVudFN0eWxlKCkpOworICAgICAgICAgICAgTGVuZ3RoIGxlZnQgPSBzdHlsZVJlc29sdmVyLT5j
b252ZXJ0VG9JbnRMZW5ndGgocmVnaW9uLT5sZWZ0KCksIHN0YXRlLnN0eWxlKCksIHN0YXRlLnJv
b3RFbGVtZW50U3R5bGUoKSk7CisKKyAgICAgICAgICAgIGlmICh0b3AuaXNVbmRlZmluZWQoKSkK
KyAgICAgICAgICAgICAgICB0b3AgPSBMZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChyaWdodC5p
c1VuZGVmaW5lZCgpKQorICAgICAgICAgICAgICAgIHJpZ2h0ID0gTGVuZ3RoKCk7CisgICAgICAg
ICAgICBpZiAoYm90dG9tLmlzVW5kZWZpbmVkKCkpCisgICAgICAgICAgICAgICAgYm90dG9tID0g
TGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAobGVmdC5pc1VuZGVmaW5lZCgpKQorICAgICAgICAg
ICAgICAgIGxlZnQgPSBMZW5ndGgoKTsKKworICAgICAgICAgICAgaWYgKHJlZ2lvbi0+bV9pc0Np
cmNsZSkKKyAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXREYXNoYm9hcmRSZWdpb24o
U3R5bGVEYXNoYm9hcmRSZWdpb246OkNpcmNsZSwgcmVnaW9uLT5tX2xhYmVsLCB0b3AsIHJpZ2h0
LCBib3R0b20sIGxlZnQsIHJlZ2lvbiA9PSBmaXJzdCA/IGZhbHNlIDogdHJ1ZSk7CisgICAgICAg
ICAgICBlbHNlIGlmIChyZWdpb24tPm1faXNSZWN0YW5nbGUpCisgICAgICAgICAgICAgICAgc3Rh
dGUuc3R5bGUoKS0+c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpSZWN0
YW5nbGUsIHJlZ2lvbi0+bV9sYWJlbCwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCByZWdpb24g
PT0gZmlyc3QgPyBmYWxzZSA6IHRydWUpOworICAgICAgICAgICAgcmVnaW9uID0gcmVnaW9uLT5t
X25leHQuZ2V0KCk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0ZS5kb2N1bWVudCgpLT5zZXRI
YXNBbm5vdGF0ZWRSZWdpb25zKHRydWUpOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5k
aWYKKyNpZiBFTkFCTEUoRFJBR0dBQkxFX1JFR0lPTikKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0QXBwUmVnaW9uOiB7CisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgIXByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdGF0ZS5z
dHlsZSgpLT5zZXREcmFnZ2FibGVSZWdpb25Nb2RlKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlRHJhZyA/IERyYWdnYWJsZVJlZ2lvbkRyYWcgOiBEcmFnZ2FibGVSZWdpb25O
b0RyYWcpOworICAgICAgICBzdGF0ZS5kb2N1bWVudCgpLT5zZXRIYXNBbm5vdGF0ZWRSZWdpb25z
KHRydWUpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aDogeworICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRf
SU5JVElBTCh0ZXh0U3Ryb2tlV2lkdGgsIFRleHRTdHJva2VXaWR0aCkKKyAgICAgICAgZmxvYXQg
d2lkdGggPSAwOworICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7
CisgICAgICAgIGNhc2UgQ1NTVmFsdWVUaGluOgorICAgICAgICBjYXNlIENTU1ZhbHVlTWVkaXVt
OgorICAgICAgICBjYXNlIENTU1ZhbHVlVGhpY2s6IHsKKyAgICAgICAgICAgIGRvdWJsZSByZXN1
bHQgPSAxLjAgLyA0ODsKKyAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSA9PSBDU1NWYWx1ZU1lZGl1bSkKKyAgICAgICAgICAgICAgICByZXN1bHQgKj0gMzsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlVGhp
Y2spCisgICAgICAgICAgICAgICAgcmVzdWx0ICo9IDU7CisgICAgICAgICAgICB3aWR0aCA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmVzdWx0LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VN
UyktPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50
U3R5bGUoKSwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgd2lkdGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0
ZUxlbmd0aDxmbG9hdD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6
b29tRmFjdG9yKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHN0YXRl
LnN0eWxlKCktPnNldFRleHRTdHJva2VXaWR0aCh3aWR0aCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybTogeworICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0cmFuc2Zvcm0sIFRyYW5zZm9ybSk7CisgICAgICAgIFRy
YW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+Y3Jl
YXRlVHJhbnNmb3JtT3BlcmF0aW9ucyh2YWx1ZSwgc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVs
ZW1lbnRTdHlsZSgpLCBvcGVyYXRpb25zKTsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0VHJh
bnNmb3JtKG9wZXJhdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZTogeworICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRf
SU5JVElBTChwZXJzcGVjdGl2ZSwgUGVyc3BlY3RpdmUpCisKKyAgICAgICAgaWYgKCFwcmltaXRp
dmVWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKSB7CisgICAgICAgICAgICBzdGF0ZS5zdHls
ZSgpLT5zZXRQZXJzcGVjdGl2ZSgwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGZsb2F0IHBlcnNwZWN0aXZlVmFsdWU7CisgICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+aXNMZW5ndGgoKSkKKyAgICAgICAgICAgIHBlcnNwZWN0aXZlVmFsdWUgPSBwcmltaXRp
dmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVs
ZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKTsKKyAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFs
dWUtPmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIC8vIEZvciBiYWNrd2FyZCBjb21wYXRpYmls
aXR5LCB0cmVhdCB2YWx1ZWxlc3MgbnVtYmVycyBhcyBweC4KKyAgICAgICAgICAgIHBlcnNwZWN0
aXZlVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHByaW1pdGl2ZVZhbHVlLT5nZXRE
b3VibGVWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKS0+Y29tcHV0ZUxlbmd0aDxm
bG9hdD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9y
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHBl
cnNwZWN0aXZlVmFsdWUgPj0gMC4wZikKKyAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFBl
cnNwZWN0aXZlKHBlcnNwZWN0aXZlVmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRhcEhpZ2hs
aWdodENvbG9yOiB7CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRhcEhpZ2hs
aWdodENvbG9yLCBUYXBIaWdobGlnaHRDb2xvcik7CisgICAgICAgIGlmICghcHJpbWl0aXZlVmFs
dWUpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBDb2xvciBjb2wgPSBzdHlsZVJlc29s
dmVyLT5jb2xvckZyb21QcmltaXRpdmVWYWx1ZShwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgIHN0
YXRlLnN0eWxlKCktPnNldFRhcEhpZ2hsaWdodENvbG9yKGNvbCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5H
KQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRPdmVyZmxvd1Njcm9sbGluZzogeworICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nLCBV
c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKTsKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRVc2VUb3VjaE92
ZXJmbG93U2Nyb2xsaW5nKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlVG91
Y2gpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgY2FzZSBDU1NQcm9wZXJ0
eUludmFsaWQ6CisgICAgICAgIHJldHVybjsKKyAgICAvLyBEaXJlY3Rpb25hbCBwcm9wZXJ0aWVz
IGFyZSByZXNvbHZlZCBieSByZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eSgpIGJlZm9yZSB0
aGUgc3dpdGNoLgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGU6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckVuZFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJTdGFydENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRoOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckJlZm9yZVdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9y
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5FbmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmU6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkFmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5C
ZWZvcmVDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFw
c2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2U6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRQYWRkaW5nRW5kOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRk
aW5nU3RhcnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmU6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TG9naWNhbFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsSGVp
Z2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsV2lkdGg6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxIZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1heExvZ2ljYWxXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF4TG9n
aWNhbEhlaWdodDoKKyAgICB7CisgICAgICAgIENTU1Byb3BlcnR5SUQgbmV3SWQgPSBDU1NQcm9w
ZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoaWQsIHN0YXRlLnN0eWxlKCktPmRp
cmVjdGlvbigpLCBzdGF0ZS5zdHlsZSgpLT53cml0aW5nTW9kZSgpKTsKKyAgICAgICAgQVNTRVJU
KG5ld0lkICE9IGlkKTsKKyAgICAgICAgcmV0dXJuIGFwcGx5VG9SZW5kZXJTdHlsZShzdHlsZVJl
c29sdmVyLCBuZXdJZCwgdmFsdWUpOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0
cmV0Y2g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRl
eHRMaW5lVGhyb3VnaDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoQ29sb3I6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRMaW5lVGhyb3VnaFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGlu
ZVRocm91Z2hXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dE92ZXJsaW5lTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGU6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0VW5kZXJsaW5lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lQ29sb3I6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2RlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0VW5kZXJsaW5lU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxp
bmVXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3Q6CisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIENTUyBUZXh0IExheW91dCBNb2R1bGUgTGV2ZWwgMzogVmVydGljYWwg
d3JpdGluZyBzdXBwb3J0CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlOiB7
CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHdyaXRpbmdNb2RlLCBXcml0aW5n
TW9kZSk7CisgICAgICAgIAorICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAg
ICBzdHlsZVJlc29sdmVyLT5zZXRXcml0aW5nTW9kZSgqcHJpbWl0aXZlVmFsdWUpOworCisgICAg
ICAgIC8vIEZJWE1FOiBJdCBpcyBub3Qgb2sgdG8gbW9kaWZ5IGRvY3VtZW50IHN0YXRlIHdoaWxl
IGFwcGx5aW5nIHN0eWxlLgorICAgICAgICBpZiAoc3RhdGUuZWxlbWVudCgpICYmIHN0YXRlLmVs
ZW1lbnQoKSA9PSBzdGF0ZS5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkKKyAgICAgICAg
ICAgIHN0YXRlLmRvY3VtZW50KCktPnNldFdyaXRpbmdNb2RlU2V0T25Eb2N1bWVudEVsZW1lbnQo
dHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dE9yaWVudGF0aW9uOiB7CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
KHRleHRPcmllbnRhdGlvbiwgVGV4dE9yaWVudGF0aW9uKTsKKworICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUpCisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRUZXh0T3JpZW50YXRpb24o
KnByaW1pdGl2ZVZhbHVlKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdExpbmVCb3hDb250YWluOiB7CisgICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMKGxpbmVCb3hDb250YWluLCBMaW5lQm94Q29udGFpbikKKyAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVl
Tm9uZSkgeworICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TGluZUJveENvbnRhaW4oTGlu
ZUJveENvbnRhaW5Ob25lKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghdmFsdWUtPmlzQ1NTTGluZUJveENvbnRhaW5WYWx1ZSgpKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIENTU0xpbmVCb3hDb250YWluVmFsdWUqIGxpbmVCb3hDb250YWlu
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NMaW5lQm94Q29udGFpblZhbHVlKj4odmFsdWUpOworICAg
ICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRMaW5lQm94Q29udGFpbihsaW5lQm94Q29udGFpblZhbHVl
LT52YWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIENTUyBGb250cyBN
b2R1bGUgTGV2ZWwgMworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250RmVhdHVyZVNldHRp
bmdzOiB7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkgeworICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+
c2V0Rm9udERlc2NyaXB0aW9uKHN0YXRlLnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLm1ha2VO
b3JtYWxGZWF0dXJlU2V0dGluZ3MoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzdGF0ZS5zdHls
ZSgpLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3Rh
dGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworICAgICAgICBSZWZQdHI8Rm9udEZlYXR1
cmVTZXR0aW5ncz4gc2V0dGluZ3MgPSBGb250RmVhdHVyZVNldHRpbmdzOjpjcmVhdGUoKTsKKyAg
ICAgICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0aCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGxlbjsgKytpKSB7CisgICAgICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGxpc3QtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soaSk7CisgICAgICAgICAgICBpZiAoIWl0ZW0tPmlzRm9udEZlYXR1
cmVWYWx1ZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgRm9udEZl
YXR1cmVWYWx1ZSogZmVhdHVyZSA9IHN0YXRpY19jYXN0PEZvbnRGZWF0dXJlVmFsdWUqPihpdGVt
KTsKKyAgICAgICAgICAgIHNldHRpbmdzLT5hcHBlbmQoRm9udEZlYXR1cmUoZmVhdHVyZS0+dGFn
KCksIGZlYXR1cmUtPnZhbHVlKCkpKTsKKyAgICAgICAgfQorICAgICAgICBmb250RGVzY3JpcHRp
b24uc2V0RmVhdHVyZVNldHRpbmdzKHNldHRpbmdzLnJlbGVhc2UoKSk7CisgICAgICAgIHN0eWxl
UmVzb2x2ZXItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0RmlsdGVyOiB7CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGZp
bHRlciwgRmlsdGVyKTsKKyAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBvcGVyYXRpb25zOworICAg
ICAgICBpZiAoc3R5bGVSZXNvbHZlci0+Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyh2YWx1ZSwgc3Rh
dGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCBvcGVyYXRpb25zKSkKKyAgICAg
ICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEZpbHRlcihvcGVyYXRpb25zKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyNlbmRpZgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQXV0b0Nv
bHVtbnM6IHsKKyAgICAgICAgR3JpZFRyYWNrU2l6ZSB0cmFja1NpemU7CisgICAgICAgIGlmICgh
Y3JlYXRlR3JpZFRyYWNrU2l6ZSh2YWx1ZSwgdHJhY2tTaXplLCBzdGF0ZSkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEdyaWRBdXRvQ29sdW1ucyh0cmFj
a1NpemUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRHcmlkQXV0b1Jvd3M6IHsKKyAgICAgICAgR3JpZFRyYWNrU2l6ZSB0cmFja1NpemU7CisgICAg
ICAgIGlmICghY3JlYXRlR3JpZFRyYWNrU2l6ZSh2YWx1ZSwgdHJhY2tTaXplLCBzdGF0ZSkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEdyaWRBdXRvUm93
cyh0cmFja1NpemUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRHcmlkQ29sdW1uczogeworICAgICAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gdHJh
Y2tTaXplczsKKyAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tMaXN0KHZhbHVlLCB0cmFja1Np
emVzLCBzdGF0ZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0YXRlLnN0eWxlKCkt
PnNldEdyaWRDb2x1bW5zKHRyYWNrU2l6ZXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkUm93czogeworICAgICAgICBWZWN0b3I8R3JpZFRy
YWNrU2l6ZT4gdHJhY2tTaXplczsKKyAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tMaXN0KHZh
bHVlLCB0cmFja1NpemVzLCBzdGF0ZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0
YXRlLnN0eWxlKCktPnNldEdyaWRSb3dzKHRyYWNrU2l6ZXMpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRTdGFydDogeworICAgICAgICBH
cmlkUG9zaXRpb24gc3RhcnRQb3NpdGlvbjsKKyAgICAgICAgaWYgKCFjcmVhdGVHcmlkUG9zaXRp
b24odmFsdWUsIHN0YXJ0UG9zaXRpb24pKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBz
dGF0ZS5zdHlsZSgpLT5zZXRHcmlkSXRlbVN0YXJ0KHN0YXJ0UG9zaXRpb24pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkRW5kOiB7CisgICAg
ICAgIEdyaWRQb3NpdGlvbiBlbmRQb3NpdGlvbjsKKyAgICAgICAgaWYgKCFjcmVhdGVHcmlkUG9z
aXRpb24odmFsdWUsIGVuZFBvc2l0aW9uKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
c3RhdGUuc3R5bGUoKS0+c2V0R3JpZEl0ZW1FbmQoZW5kUG9zaXRpb24pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRCZWZvcmU6IHsKKyAg
ICAgICAgR3JpZFBvc2l0aW9uIGJlZm9yZVBvc2l0aW9uOworICAgICAgICBpZiAoIWNyZWF0ZUdy
aWRQb3NpdGlvbih2YWx1ZSwgYmVmb3JlUG9zaXRpb24pKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRHcmlkSXRlbUJlZm9yZShiZWZvcmVQb3NpdGlvbik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRB
ZnRlcjogeworICAgICAgICBHcmlkUG9zaXRpb24gYWZ0ZXJQb3NpdGlvbjsKKyAgICAgICAgaWYg
KCFjcmVhdGVHcmlkUG9zaXRpb24odmFsdWUsIGFmdGVyUG9zaXRpb24pKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRHcmlkSXRlbUFmdGVyKGFmdGVyUG9z
aXRpb24pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVGhlc2UgcHJvcGVydGll
cyBhcmUgYWxpYXNlZCBhbmQgRGVwcmVjYXRlZFN0eWxlQnVpbGRlciBhbHJlYWR5IGFwcGxpZWQg
dGhlIHByb3BlcnR5IG9uIHRoZSBwcmVmaXhlZCB2ZXJzaW9uLgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlUcmFuc2l0aW9uRGVsYXk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25EdXJhdGlv
bjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvblByb3BlcnR5OgorICAgIGNhc2UgQ1NT
UHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246CisgICAgICAgIHJldHVybjsKKyAgICAv
LyBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBpbXBsZW1lbnRlZCBpbiB0aGUgRGVwcmVjYXRlZFN0eWxl
QnVpbGRlciBsb29rdXAgdGFibGUuCisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRh
Y2htZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
SW1hZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW46CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRQb3NpdGlvblk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5QmFja2dyb3VuZFNpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9y
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1czoKKyAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRo
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVySW1hZ2VPdXRzZXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlUmVw
ZWF0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNsaWNlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1h
Z2VXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHRXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3I6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlclRvcFJpZ2h0UmFkaXVzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvdHRvbToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2l6aW5nOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlDYXB0aW9uU2lkZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2xlYXI6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUNsaXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlDb3VudGVySW5jcmVtZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb3VudGVyUmVz
ZXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5RGly
ZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlEaXNwbGF5OgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlFbXB0eUNlbGxzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDoKKyAgICBjYXNlIENTU1By
b3BlcnR5Rm9udFNpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZToKKyAgICBjYXNl
IENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQ6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUhlaWdodDoKKyNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVO
VEFUSU9OKQorICAgIGNhc2UgQ1NTUHJvcGVydHlJbWFnZU9yaWVudGF0aW9uOgorI2VuZGlmCisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nOgorI2lmIEVOQUJMRShDU1NfSU1BR0Vf
UkVTT0xVVElPTikKKyAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZXNvbHV0aW9uOgorI2VuZGlm
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxldHRlclNw
YWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUxpc3RTdHlsZUltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlv
bjoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5TWFyZ2luQm90dG9tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0OgorICAgIGNh
c2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luVG9w
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhIZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1h
eFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5IZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eU1pbldpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPcGFjaXR5OgorICAgIGNhc2UgQ1NT
UHJvcGVydHlPcnBoYW5zOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3I6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxp
bmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlPdmVyZmxvd1dyYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dZOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5n
Qm90dG9tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdDoKKyAgICBjYXNlIENTU1By
b3BlcnR5UGFkZGluZ1JpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nVG9wOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFn
ZUJyZWFrQmVmb3JlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGU6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBvc2l0
aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlSZXNpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJp
Z2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlTaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTcGVh
azoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGFiU2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGFi
bGVMYXlvdXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbGlnbjoKKyAgICBjYXNlIENTU1By
b3BlcnR5VGV4dERlY29yYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRJbmRlbnQ6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dFJlbmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybToKKyAgICBjYXNl
IENTU1Byb3BlcnR5VG9wOgorICAgIGNhc2UgQ1NTUHJvcGVydHlVbmljb2RlQmlkaToKKyNpZiBF
TkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAgICBjYXNlIENTU1Byb3BlcnR5VmFyaWFibGU6CisjZW5k
aWYKKyAgICBjYXNlIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VmlzaWJpbGl0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXk6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRHVyYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmlt
YXRpb25JdGVyYXRpb25Db3VudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
TmFtZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
QXNwZWN0UmF0aW86CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0
eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXA6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJhY2tncm91bmRPcmlnaW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tn
cm91bmRTaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQ6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyVmVydGljYWxTcGFjaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbjoK
KyNpZiBFTkFCTEUoQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKQorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3hEZWNvcmF0aW9uQnJlYWs6CisjZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm94RGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4R3JvdXA6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJveExpbmVzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFs
R3JvdXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yaWVudDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Qm94UGFjazoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sb3JD
b3JyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5BeGlzOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uQnJlYWtJbnNpZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5HYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtblByb2dyZXNzaW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5SdWxlQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5TcGFuOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5XaWR0aDoKKyNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEN1cnNvclZpc2liaWxpdHk6CisjZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QWxpZ25Db250ZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbGlnbkl0ZW1z
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbGlnblNlbGY6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEZsZXhCYXNpczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVj
dGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEdyb3c6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEZsZXhTaHJpbms6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhX
cmFwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRKdXN0aWZ5Q29udGVudDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0T3JkZXI6CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRGbG93RnJvbToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Rmxvd0ludG86CisjZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udEtlcm5pbmc6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmc6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEZvbnRWYXJpYW50TGlnYXR1cmVzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRIaWdobGlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJh
Y3RlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRBZnRlcjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEh5cGhlbnM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVBbGlnbjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRMaW5lQ2xhbXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVHcmlkOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lU25hcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZURpcmVjdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUlu
Y3JlbWVudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb246Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFycXVlZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94
SW1hZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZU91dHNldDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlUmVwZWF0OgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTbGljZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza0JveEltYWdlU291cmNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94
SW1hZ2VXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXA6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tJbWFnZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFza1Bvc2l0aW9uWToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Jl
cGVhdFg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TmJz
cE1vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblg6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0UHJpbnRDb2xvckFkanVzdDoKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFJlZ2lvbkJyZWFrQmVmb3JlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSZWdpb25C
cmVha0luc2lkZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uT3ZlcmZsb3c6Cisj
ZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmc6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VGV4dENvbWJpbmU6CisjaWYgRU5BQkxFKENTUzNfVEVYVCkKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VGV4dERlY29yYXRpb25MaW5lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0
RGVjb3JhdGlvblN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlv
bkNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0QWxpZ25MYXN0OgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0SnVzdGlmeToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dFVuZGVybGluZVBvc2l0aW9uOgorI2VuZGlmIC8vIENTUzNfVEVYVAorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRFbXBoYXNpc1N0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9y
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHk6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VHJhbnNmb3JtT3JpZ2luWDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3Jp
Z2luWToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zaXRpb25EZWxheToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNp
dGlvbkR1cmF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVy
dHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWc6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFVzZXJNb2RpZnk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENsaXBQYXRoOgorI2lmIEVOQUJMRShDU1NfRVhD
TFVTSU9OUykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3c6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFNoYXBlTWFyZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRT
aGFwZVBhZGRpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBUaHJvdWdoOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTaGFwZUluc2lkZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0U2hhcGVPdXRzaWRlOgorI2VuZGlmCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAg
IGNhc2UgQ1NTUHJvcGVydHlNaXg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhcmFtZXRlcnM6Cisj
ZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2lkb3dzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXaWR0aDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V29yZEJyZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkU3BhY2luZzoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V29yZFdyYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVpJbmRleDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5Wm9vbToKKyNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQor
ICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhab29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5ab29t
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlPcmllbnRhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
VXNlclpvb206CisjZW5kaWYKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybjsKKyAgICBkZWZhdWx0OgorI2lmIEVOQUJMRShTVkcpCisgICAgICAgIC8vIFRyeSB0
aGUgU1ZHIHByb3BlcnRpZXMKKyAgICAgICAgYXBwbHlUb1NWR1JlbmRlclN0eWxlKHN0eWxlUmVz
b2x2ZXIsIGlkLCB2YWx1ZSk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkYmQ5MDEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMK
KyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisg
KiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTdHlsZUJ1aWxkZXJfaAorI2RlZmlu
ZSBTdHlsZUJ1aWxkZXJfaAorCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTUHJv
cGVydHk7CitjbGFzcyBDU1NWYWx1ZTsKK2NsYXNzIERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXI7Citj
bGFzcyBTdHlsZVJlc29sdmVyOworCitjbGFzcyBTdHlsZUJ1aWxkZXIgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFN0eWxlQnVpbGRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIFN0eWxlQnVpbGRlcigpOworCisgICAgdm9pZCBhcHBseVRvUmVuZGVyU3R5bGUo
U3R5bGVSZXNvbHZlciosIENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKik7CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCBhcHBseVRvU1ZHUmVuZGVyU3R5bGUoU3R5bGVSZXNvbHZlciosIENTU1Byb3BlcnR5
SUQsIENTU1ZhbHVlKik7CisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgdm9pZCByZXNv
bHZlVmFyaWFibGVzKFN0eWxlUmVzb2x2ZXIqLCBDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSosIFZl
Y3RvcjxzdGQ6OnBhaXI8Q1NTUHJvcGVydHlJRCwgU3RyaW5nPiA+JiBrbm93bkV4cHJlc3Npb25z
KTsKKyNlbmRpZgorCisgICAgY29uc3QgRGVwcmVjYXRlZFN0eWxlQnVpbGRlciYgbV9kZXByZWNh
dGVkU3R5bGVCdWlsZGVyOworfTsKKworfQorCisjZW5kaWYgLy8gU3R5bGVCdWlsZGVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAyNzYwYTczLi5mMWQ2MTE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC01NSwxMCArNTUsNyBAQAogI2luY2x1
ZGUgIkNhbGN1bGF0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJDb250ZW50RGF0YS5oIgogI2luY2x1
ZGUgIkNvbnRleHRGZWF0dXJlcy5oIgotI2luY2x1ZGUgIkNvdW50ZXIuaCIKLSNpbmNsdWRlICJD
b3VudGVyQ29udGVudC5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKLSNpbmNsdWRlICJEZXBy
ZWNhdGVkU3R5bGVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbi5oIgogI2luY2x1ZGUgIkVsZW1lbnRSdWxlQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiRWxl
bWVudFNoYWRvdy5oIgpAQCAtODksOSArODYsNyBAQAogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VSdWxlQ29sbGVjdG9y
LmgiCi0jaW5jbHVkZSAiUGFpci5oIgogI2luY2x1ZGUgIlBlcnNwZWN0aXZlVHJhbnNmb3JtT3Bl
cmF0aW9uLmgiCi0jaW5jbHVkZSAiUXVvdGVzRGF0YS5oIgogI2luY2x1ZGUgIlJlY3QuaCIKICNp
bmNsdWRlICJSZW5kZXJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXIuaCIKQEAg
LTI1OCw3ICsyNTMsNiBAQCBTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKERvY3VtZW50KiBk
b2N1bWVudCwgYm9vbCBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpCiAjaWYgRU5BQkxFKENTU19E
RVZJQ0VfQURBUFRBVElPTikKICAgICAsIG1fdmlld3BvcnRTdHlsZVJlc29sdmVyKFZpZXdwb3J0
U3R5bGVSZXNvbHZlcjo6Y3JlYXRlKGRvY3VtZW50KSkKICNlbmRpZgotICAgICwgbV9kZXByZWNh
dGVkU3R5bGVCdWlsZGVyKERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXI6OnNoYXJlZFN0eWxlQnVpbGRl
cigpKQogICAgICwgbV9zdHlsZU1hcCh0aGlzKQogewogICAgIEVsZW1lbnQqIHJvb3QgPSBkb2N1
bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CkBAIC0xOTcyLDM1ICsxOTY2LDYgQEAgdm9pZCBTdHls
ZVJlc29sdmVyOjphcHBseVByb3BlcnR5VG9DdXJyZW50U3R5bGUoQ1NTUHJvcGVydHlJRCBpZCwg
Q1NTVmFsdWUqIHZhbHUKICAgICAgICAgYXBwbHlQcm9wZXJ0eShpZCwgdmFsdWUpOwogfQogCi1p
bmxpbmUgYm9vbCBpc1ZhbGlkVmlzaXRlZExpbmtQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkKQot
ewotICAgIHN3aXRjaCAoaWQpIHsKLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3I6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0Q29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9y
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcjoKLSAgICBjYXNlIENTU1By
b3BlcnR5Q29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcjoKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yOgotI2lmIEVOQUJMRShDU1MzX1RFWFQp
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uQ29sb3I6Ci0jZW5kaWYg
Ly8gQ1NTM19URVhUCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9y
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3I6Ci0jaWYgRU5BQkxFKFNWRykKLSAgICBjYXNl
IENTU1Byb3BlcnR5RmlsbDoKLSAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlOgotI2VuZGlmCi0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nz
My1yZWdpb25zLyN0aGUtYXQtcmVnaW9uLXN0eWxlLXJ1bGUKIC8vIEZJWE1FOiBhZGQgaW5jcmVt
ZW50YWwgc3VwcG9ydCBmb3Igb3RoZXIgcmVnaW9uIHN0eWxpbmcgcHJvcGVydGllcy4KIGlubGlu
ZSBib29sIFN0eWxlUmVzb2x2ZXI6OmlzVmFsaWRSZWdpb25TdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5SUQgaWQpCkBAIC0yMDcyLDExMTAgKzIwMzcsNiBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OnVz
ZVNWR1pvb21SdWxlcygpCiAgICAgcmV0dXJuIG1fc3RhdGUuZWxlbWVudCgpICYmIG1fc3RhdGUu
ZWxlbWVudCgpLT5pc1NWR0VsZW1lbnQoKTsKIH0KIAotc3RhdGljIGJvb2wgY3JlYXRlR3JpZFRy
YWNrQnJlYWR0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIGNvbnN0IFN0eWxl
UmVzb2x2ZXI6OlN0YXRlJiBzdGF0ZSwgTGVuZ3RoJiB3b3JraW5nTGVuZ3RoKQotewotICAgIGlm
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVdlYmtpdE1pbkNvbnRlbnQp
IHsKLSAgICAgICAgd29ya2luZ0xlbmd0aCA9IExlbmd0aChNaW5Db250ZW50KTsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlV2Via2l0TWF4Q29udGVudCkgewotICAgICAgICB3b3JraW5nTGVuZ3RoID0g
TGVuZ3RoKE1heENvbnRlbnQpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICB3
b3JraW5nTGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVn
ZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBWaWV3cG9ydFBlcmNlbnRhZ2VDb252
ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50
U3R5bGUoKSwgc3RhdGUuc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKLSAgICBpZiAod29ya2lu
Z0xlbmd0aC5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPmlzTGVuZ3RoKCkpCi0gICAgICAgIHdvcmtpbmdMZW5ndGguc2V0UXVp
cmsocHJpbWl0aXZlVmFsdWUtPmlzUXVpcmtWYWx1ZSgpKTsKLQotICAgIHJldHVybiB0cnVlOwot
fQotCi1zdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tTaXplKENTU1ZhbHVlKiB2YWx1ZSwgR3Jp
ZFRyYWNrU2l6ZSYgdHJhY2tTaXplLCBjb25zdCBTdHlsZVJlc29sdmVyOjpTdGF0ZSYgc3RhdGUp
Ci17Ci0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBQYWlyKiBtaW5NYXhUcmFja0Jy
ZWFkdGggPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCk7Ci0gICAgaWYgKCFtaW5NYXhU
cmFja0JyZWFkdGgpIHsKLSAgICAgICAgTGVuZ3RoIHdvcmtpbmdMZW5ndGg7Ci0gICAgICAgIGlm
ICghY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChwcmltaXRpdmVWYWx1ZSwgc3RhdGUsIHdvcmtpbmdM
ZW5ndGgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHRyYWNrU2l6ZS5z
ZXRMZW5ndGgod29ya2luZ0xlbmd0aCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQot
ICAgIExlbmd0aCBtaW5UcmFja0JyZWFkdGg7Ci0gICAgTGVuZ3RoIG1heFRyYWNrQnJlYWR0aDsK
LSAgICBpZiAoIWNyZWF0ZUdyaWRUcmFja0JyZWFkdGgobWluTWF4VHJhY2tCcmVhZHRoLT5maXJz
dCgpLCBzdGF0ZSwgbWluVHJhY2tCcmVhZHRoKSB8fCAhY3JlYXRlR3JpZFRyYWNrQnJlYWR0aCht
aW5NYXhUcmFja0JyZWFkdGgtPnNlY29uZCgpLCBzdGF0ZSwgbWF4VHJhY2tCcmVhZHRoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdHJhY2tTaXplLnNldE1pbk1heChtaW5UcmFja0Jy
ZWFkdGgsIG1heFRyYWNrQnJlYWR0aCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBi
b29sIGNyZWF0ZUdyaWRUcmFja0xpc3QoQ1NTVmFsdWUqIHZhbHVlLCBWZWN0b3I8R3JpZFRyYWNr
U2l6ZT4mIHRyYWNrU2l6ZXMsIGNvbnN0IFN0eWxlUmVzb2x2ZXI6OlN0YXRlJiBzdGF0ZSkKLXsK
LSAgICAvLyBIYW5kbGUgJ25vbmUnLgotICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KSB7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotICAgICAgICByZXR1cm4gcHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lOwotICAgIH0KLQotICAgIGlmICghdmFs
dWUtPmlzVmFsdWVMaXN0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvciAoQ1NT
VmFsdWVMaXN0SXRlcmF0b3IgaSA9IHZhbHVlOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNlKCkpIHsK
LSAgICAgICAgQ1NTVmFsdWUqIGN1cnJWYWx1ZSA9IGkudmFsdWUoKTsKLSAgICAgICAgR3JpZFRy
YWNrU2l6ZSB0cmFja1NpemU7Ci0gICAgICAgIGlmICghY3JlYXRlR3JpZFRyYWNrU2l6ZShjdXJy
VmFsdWUsIHRyYWNrU2l6ZSwgc3RhdGUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgICAgIHRyYWNrU2l6ZXMuYXBwZW5kKHRyYWNrU2l6ZSk7Ci0gICAgfQotICAgIHJldHVybiB0
cnVlOwotfQotCi0KLXN0YXRpYyBib29sIGNyZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1ZSogdmFs
dWUsIEdyaWRQb3NpdGlvbiYgcG9zaXRpb24pCi17Ci0gICAgLy8gRm9yIG5vdywgd2Ugb25seSBh
Y2NlcHQ6IDxpbnRlZ2VyPiB8ICdhdXRvJwotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0g
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihw
cmltaXRpdmVWYWx1ZS0+aXNOdW1iZXIoKSk7Ci0gICAgcG9zaXRpb24uc2V0SW50ZWdlclBvc2l0
aW9uKHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQotc3RhdGljIGJvb2wgaGFzVmFyaWFibGVSZWZl
cmVuY2UoQ1NTVmFsdWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKSB7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotICAgICAgICByZXR1cm4gcHJpbWl0
aXZlVmFsdWUtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCk7Ci0gICAgfQotCi0gICAgaWYgKHZhbHVl
LT5pc0NhbGN1bGF0aW9uVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU0Nh
bGNWYWx1ZSo+KHZhbHVlKS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKTsKLQotICAgIGlmICh2YWx1
ZS0+aXNSZWZsZWN0VmFsdWUoKSkgewotICAgICAgICBDU1NSZWZsZWN0VmFsdWUqIHJlZmxlY3RW
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1JlZmxlY3RWYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIGRpcmVjdGlvbiA9IHJlZmxlY3RWYWx1ZS0+ZGlyZWN0aW9uKCk7Ci0g
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBvZmZzZXQgPSByZWZsZWN0VmFsdWUtPm9mZnNldCgp
OwotICAgICAgICBDU1NWYWx1ZSogbWFzayA9IHJlZmxlY3RWYWx1ZS0+bWFzaygpOwotICAgICAg
ICByZXR1cm4gKGRpcmVjdGlvbiAmJiBoYXNWYXJpYWJsZVJlZmVyZW5jZShkaXJlY3Rpb24pKSB8
fCAob2Zmc2V0ICYmIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKG9mZnNldCkpIHx8IChtYXNrICYmIGhh
c1ZhcmlhYmxlUmVmZXJlbmNlKG1hc2spKTsKLSAgICB9Ci0KLSAgICBmb3IgKENTU1ZhbHVlTGlz
dEl0ZXJhdG9yIGkgPSB2YWx1ZTsgaS5oYXNNb3JlKCk7IGkuYWR2YW5jZSgpKSB7Ci0gICAgICAg
IGlmIChoYXNWYXJpYWJsZVJlZmVyZW5jZShpLnZhbHVlKCkpKQotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIFN0eWxlUmVzb2x2
ZXI6OnJlc29sdmVWYXJpYWJsZXMoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBW
ZWN0b3I8c3RkOjpwYWlyPENTU1Byb3BlcnR5SUQsIFN0cmluZz4gPiYga25vd25FeHByZXNzaW9u
cykKLXsKLSAgICBzdGQ6OnBhaXI8Q1NTUHJvcGVydHlJRCwgU3RyaW5nPiBleHByZXNzaW9uKGlk
LCB2YWx1ZS0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKCptX3N0YXRlLnN0eWxlKCktPnZh
cmlhYmxlcygpKSk7Ci0KLSAgICBpZiAoa25vd25FeHByZXNzaW9ucy5jb250YWlucyhleHByZXNz
aW9uKSkKLSAgICAgICAgcmV0dXJuOyAvLyBjeWNsZSBkZXRlY3RlZC4KLQotICAgIGtub3duRXhw
cmVzc2lvbnMuYXBwZW5kKGV4cHJlc3Npb24pOwotCi0gICAgLy8gRklYTUU6IEl0IHdvdWxkIGJl
IGZhc3RlciBub3QgdG8gcmUtcGFyc2UgZnJvbSBzdHJpbmdzLCBidXQgZm9yIG5vdyBDU1MgcHJv
cGVydHkgdmFsaWRhdGlvbiBsaXZlcyBpbnNpZGUgdGhlIHBhcnNlciBzbyB3ZSBkbyBpdCB0aGVy
ZS4KLSAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ+IHJlc3VsdFNldCA9IE11dGFi
bGVTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKLSAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VW
YWx1ZShyZXN1bHRTZXQuZ2V0KCksIGlkLCBleHByZXNzaW9uLnNlY29uZCwgZmFsc2UsIGRvY3Vt
ZW50KCkpKQotICAgICAgICByZXR1cm47IC8vIGV4cHJlc3Npb24gZmFpbGVkIHRvIHBhcnNlLgot
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdFNldC0+cHJvcGVydHlDb3VudCgp
OyBpKyspIHsKLSAgICAgICAgU3R5bGVQcm9wZXJ0eVNldDo6UHJvcGVydHlSZWZlcmVuY2UgcHJv
cGVydHkgPSByZXN1bHRTZXQtPnByb3BlcnR5QXQoaSk7Ci0gICAgICAgIGlmIChwcm9wZXJ0eS5p
ZCgpICE9IENTU1Byb3BlcnR5VmFyaWFibGUgJiYgaGFzVmFyaWFibGVSZWZlcmVuY2UocHJvcGVy
dHkudmFsdWUoKSkpCi0gICAgICAgICAgICByZXNvbHZlVmFyaWFibGVzKHByb3BlcnR5LmlkKCks
IHByb3BlcnR5LnZhbHVlKCksIGtub3duRXhwcmVzc2lvbnMpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBhcHBseVByb3BlcnR5KHByb3BlcnR5LmlkKCksIHByb3BlcnR5LnZhbHVlKCkpOwot
ICAgIH0KLX0KLSNlbmRpZgotCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NT
UHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQotewotI2lmIEVOQUJMRShDU1NfVkFSSUFC
TEVTKQotICAgIGlmIChpZCAhPSBDU1NQcm9wZXJ0eVZhcmlhYmxlICYmIGhhc1ZhcmlhYmxlUmVm
ZXJlbmNlKHZhbHVlKSkgewotICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPENTU1Byb3BlcnR5SUQs
IFN0cmluZz4gPiBrbm93bkV4cHJlc3Npb25zOwotICAgICAgICByZXNvbHZlVmFyaWFibGVzKGlk
LCB2YWx1ZSwga25vd25FeHByZXNzaW9ucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5k
aWYKLQotICAgIC8vIENTUyB2YXJpYWJsZXMgZG9uJ3QgcmVzb2x2ZSBzaG9ydGhhbmRzIGF0IHBh
cnNpbmcgdGltZSwgc28gdGhpcyBzaG91bGQgYmUgKmFmdGVyKiBoYW5kbGluZyB2YXJpYWJsZXMu
Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghaXNFeHBhbmRlZFNob3J0aGFuZChpZCksICJTaG9y
dGhhbmQgcHJvcGVydHkgaWQgPSAlZCB3YXNuJ3QgZXhwYW5kZWQgYXQgcGFyc2luZyB0aW1lIiwg
aWQpOwotCi0gICAgU3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKLSAgICBib29sIGlzSW5oZXJpdCA9
IHN0YXRlLnBhcmVudE5vZGUoKSAmJiB2YWx1ZS0+aXNJbmhlcml0ZWRWYWx1ZSgpOwotICAgIGJv
b2wgaXNJbml0aWFsID0gdmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkgfHwgKCFzdGF0ZS5wYXJlbnRO
b2RlKCkgJiYgdmFsdWUtPmlzSW5oZXJpdGVkVmFsdWUoKSk7Ci0KLSAgICBBU1NFUlQoIWlzSW5o
ZXJpdCB8fCAhaXNJbml0aWFsKTsgLy8gaXNJbmhlcml0IC0+ICFpc0luaXRpYWwgJiYgaXNJbml0
aWFsIC0+ICFpc0luaGVyaXQKLSAgICBBU1NFUlQoIWlzSW5oZXJpdCB8fCAoc3RhdGUucGFyZW50
Tm9kZSgpICYmIHN0YXRlLnBhcmVudFN0eWxlKCkpKTsgLy8gaXNJbmhlcml0IC0+IChzdGF0ZS5w
YXJlbnROb2RlKCkgJiYgc3RhdGUucGFyZW50U3R5bGUoKSkKLQotICAgIGlmICghc3RhdGUuYXBw
bHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCkgJiYgKCFzdGF0ZS5hcHBseVByb3BlcnR5VG9WaXNp
dGVkTGlua1N0eWxlKCkgfHwgIWlzVmFsaWRWaXNpdGVkTGlua1Byb3BlcnR5KGlkKSkpIHsKLSAg
ICAgICAgLy8gTGltaXQgdGhlIHByb3BlcnRpZXMgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBvbmx5
IHRoZSBvbmVzIGhvbm9yZWQgYnkgOnZpc2l0ZWQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoaXNJbmhlcml0ICYmICFzdGF0ZS5wYXJlbnRTdHlsZSgpLT5oYXNFeHBsaWNpdGx5
SW5oZXJpdGVkUHJvcGVydGllcygpICYmICFDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0
eShpZCkpCi0gICAgICAgIHN0YXRlLnBhcmVudFN0eWxlKCktPnNldEhhc0V4cGxpY2l0bHlJbmhl
cml0ZWRQcm9wZXJ0aWVzKCk7Ci0KLSNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKLSAgICBpZiAo
aWQgPT0gQ1NTUHJvcGVydHlWYXJpYWJsZSkgewotICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTih2YWx1ZS0+aXNWYXJpYWJsZVZhbHVlKCkpOwotICAgICAgICBDU1NWYXJp
YWJsZVZhbHVlKiB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PENTU1ZhcmlhYmxlVmFsdWUqPih2YWx1
ZSk7Ci0gICAgICAgIEFTU0VSVCghdmFyaWFibGUtPm5hbWUoKS5pc0VtcHR5KCkpOwotICAgICAg
ICBBU1NFUlQoIXZhcmlhYmxlLT52YWx1ZSgpLmlzRW1wdHkoKSk7Ci0gICAgICAgIHN0YXRlLnN0
eWxlKCktPnNldFZhcmlhYmxlKHZhcmlhYmxlLT5uYW1lKCksIHZhcmlhYmxlLT52YWx1ZSgpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgLy8gQ2hlY2sgbG9va3VwIHRh
YmxlIGZvciBpbXBsZW1lbnRhdGlvbnMgYW5kIHVzZSB3aGVuIGF2YWlsYWJsZS4KLSAgICBjb25z
dCBQcm9wZXJ0eUhhbmRsZXImIGhhbmRsZXIgPSBtX2RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIucHJv
cGVydHlIYW5kbGVyKGlkKTsKLSAgICBpZiAoaGFuZGxlci5pc1ZhbGlkKCkpIHsKLSAgICAgICAg
aWYgKGlzSW5oZXJpdCkKLSAgICAgICAgICAgIGhhbmRsZXIuYXBwbHlJbmhlcml0VmFsdWUoaWQs
IHRoaXMpOwotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBoYW5kbGVy
LmFwcGx5SW5pdGlhbFZhbHVlKGlkLCB0aGlzKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
aGFuZGxlci5hcHBseVZhbHVlKGlkLCB0aGlzLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB2YWx1ZS0+aXNQ
cmltaXRpdmVWYWx1ZSgpID8gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSkg
OiAwOwotCi0gICAgZmxvYXQgem9vbUZhY3RvciA9IHN0YXRlLnN0eWxlKCktPmVmZmVjdGl2ZVpv
b20oKTsKLQotICAgIC8vIFdoYXQgZm9sbG93cyBpcyBhIGxpc3QgdGhhdCBtYXBzIHRoZSBDU1Mg
cHJvcGVydGllcyBpbnRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgZnJvbnQtZW5kCi0gICAgLy8gUmVu
ZGVyU3R5bGUgdmFsdWVzLgotICAgIHN3aXRjaCAoaWQpIHsKLSAgICAvLyBsaXN0cwotICAgIGNh
c2UgQ1NTUHJvcGVydHlDb250ZW50OgotICAgICAgICAvLyBsaXN0IG9mIHN0cmluZywgdXJpLCBj
b3VudGVyLCBhdHRyLCBpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBJbiBDU1Mz
LCBpdCB3aWxsIGJlIHBvc3NpYmxlIHRvIGluaGVyaXQgY29udGVudC4gSW4gQ1NTMiBpdCBpcyBu
b3QuIFRoaXMKLSAgICAgICAgICAgIC8vIG5vdGUgaXMgYSByZW1pbmRlciB0aGF0IGV2ZW50dWFs
bHkgImluaGVyaXQiIG5lZWRzIHRvIGJlIHN1cHBvcnRlZC4KLQotICAgICAgICAgICAgaWYgKGlz
SW5pdGlhbCkgewotICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPmNsZWFyQ29udGVudCgp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
aWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgIGJvb2wgZGlkU2V0ID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKENTU1ZhbHVl
TGlzdEl0ZXJhdG9yIGkgPSB2YWx1ZTsgaS5oYXNNb3JlKCk7IGkuYWR2YW5jZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBpLnZhbHVlKCk7Ci0gICAgICAgICAgICAgICAg
aWYgKGl0ZW0tPmlzSW1hZ2VHZW5lcmF0b3JWYWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChpdGVtLT5pc0dyYWRpZW50VmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRlLnN0eWxlKCktPnNldENvbnRlbnQoU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKHN0YXRp
Y19jYXN0PENTU0dyYWRpZW50VmFsdWUqPihpdGVtKS0+Z3JhZGllbnRXaXRoU3R5bGVzUmVzb2x2
ZWQodGhpcykuZ2V0KCkpLCBkaWRTZXQpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KFN0eWxlR2VuZXJh
dGVkSW1hZ2U6OmNyZWF0ZShzdGF0aWNfY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlKj4oaXRl
bSkpLCBkaWRTZXQpOwotICAgICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwotI2lmIEVO
QUJMRShDU1NfSU1BR0VfU0VUKQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS0+aXNJ
bWFnZVNldFZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0
Q29udGVudChzZXRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlDb250ZW50LCBzdGF0aWNf
Y2FzdDxDU1NJbWFnZVNldFZhbHVlKj4oaXRlbSkpLCBkaWRTZXQpOwotICAgICAgICAgICAgICAg
ICAgICBkaWRTZXQgPSB0cnVlOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgaWYgKGl0ZW0tPmlzSW1hZ2VWYWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHN0YXRlLnN0eWxlKCktPnNldENvbnRlbnQoY2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1By
b3BlcnR5Q29udGVudCwgc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VWYWx1ZSo+KGl0ZW0pKSwgZGlkU2V0
KTsKLSAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCFp
dGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnRlbnRWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAo
Y29udGVudFZhbHVlLT5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0
eWxlKCktPnNldENvbnRlbnQoY29udGVudFZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpLmltcGwoKSwg
ZGlkU2V0KTsKLSAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGNvbnRlbnRWYWx1ZS0+aXNBdHRyKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IENhbiBhIG5hbWVzcGFjZSBiZSBzcGVjaWZpZWQgZm9yIGFuIGF0dHIo
Zm9vKT8KLSAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLnN0eWxlKCktPnN0eWxlVHlwZSgp
ID09IE5PUFNFVURPKQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0
VW5pcXVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRlLnBhcmVudFN0eWxlKCktPnNldFVuaXF1ZSgpOwotICAgICAgICAgICAgICAgICAg
ICBRdWFsaWZpZWROYW1lIGF0dHIobnVsbEF0b20sIGNvbnRlbnRWYWx1ZS0+Z2V0U3RyaW5nVmFs
dWUoKS5pbXBsKCksIG51bGxBdG9tKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSA9IHN0YXRlLmVsZW1lbnQoKS0+Z2V0QXR0cmlidXRlKGF0dHIpOwotICAg
ICAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KHZhbHVlLmlzTnVsbCgp
ID8gZW1wdHlBdG9tIDogdmFsdWUuaW1wbCgpLCBkaWRTZXQpOwotICAgICAgICAgICAgICAgICAg
ICBkaWRTZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciB0aGUgZmFj
dCB0aGF0IHRoZSBhdHRyaWJ1dGUgdmFsdWUgYWZmZWN0cyB0aGUgc3R5bGUKLSAgICAgICAgICAg
ICAgICAgICAgbV9ydWxlU2V0cy5mZWF0dXJlcygpLmF0dHJzSW5SdWxlcy5hZGQoYXR0ci5sb2Nh
bE5hbWUoKS5pbXBsKCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGVudFZhbHVl
LT5pc0NvdW50ZXIoKSkgewotICAgICAgICAgICAgICAgICAgICBDb3VudGVyKiBjb3VudGVyVmFs
dWUgPSBjb250ZW50VmFsdWUtPmdldENvdW50ZXJWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAg
ICBFTGlzdFN0eWxlVHlwZSBsaXN0U3R5bGVUeXBlID0gTm9uZUxpc3RTdHlsZTsKLSAgICAgICAg
ICAgICAgICAgICAgaW50IGxpc3RTdHlsZUlkZW50ID0gY291bnRlclZhbHVlLT5saXN0U3R5bGVJ
ZGVudCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAobGlzdFN0eWxlSWRlbnQgIT0gQ1NTVmFs
dWVOb25lKQotICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlVHlwZSA9IHN0YXRpY19j
YXN0PEVMaXN0U3R5bGVUeXBlPihsaXN0U3R5bGVJZGVudCAtIENTU1ZhbHVlRGlzYyk7Ci0gICAg
ICAgICAgICAgICAgICAgIE93blB0cjxDb3VudGVyQ29udGVudD4gY291bnRlciA9IGFkb3B0UHRy
KG5ldyBDb3VudGVyQ29udGVudChjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxl
VHlwZSwgY291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSkpOwotICAgICAgICAgICAgICAgICAgICBz
dGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KGNvdW50ZXIucmVsZWFzZSgpLCBkaWRTZXQpOwotICAg
ICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY29udGVudFZhbHVlLT5nZXRJZGVudCgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVPcGVuUXVvdGU6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KE9QRU5fUVVPVEUsIGRpZFNl
dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDbG9z
ZVF1b3RlOgotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVu
dChDTE9TRV9RVU9URSwgZGlkU2V0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpZFNldCA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBDU1NWYWx1ZU5vT3BlblF1b3RlOgotICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGUuc3R5bGUoKS0+c2V0Q29udGVudChOT19PUEVOX1FVT1RFLCBkaWRTZXQpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9DbG9zZVF1b3RlOgotICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudChOT19DTE9TRV9R
VU9URSwgZGlkU2V0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbCBhbmQgbm9uZSBkbyBub3QgaGF2
ZSBhbnkgZWZmZWN0LgotICAgICAgICAgICAgICAgICAgICAgICAgeyB9Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAoIWRpZFNldCkKLSAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5jbGVhckNvbnRlbnQo
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlR
dW90ZXM6Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIHN0YXRlLnN0eWxl
KCktPnNldFF1b3RlcyhzdGF0ZS5wYXJlbnRTdHlsZSgpLT5xdW90ZXMoKSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAg
ICAgc3RhdGUuc3R5bGUoKS0+c2V0UXVvdGVzKDApOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAgICAgICAg
Q1NTVmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwot
ICAgICAgICAgICAgUmVmUHRyPFF1b3Rlc0RhdGE+IHF1b3RlcyA9IFF1b3Rlc0RhdGE6OmNyZWF0
ZSgpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0LT5sZW5ndGgoKTsg
aSArPSAyKSB7Ci0gICAgICAgICAgICAgICAgQ1NTVmFsdWUqIGZpcnN0ID0gbGlzdC0+aXRlbVdp
dGhvdXRCb3VuZHNDaGVjayhpKTsKLSAgICAgICAgICAgICAgICAvLyBpdGVtKCkgcmV0dXJucyBu
dWxsIGlmIG91dCBvZiBib3VuZHMgc28gdGhpcyBpcyBzYWZlLgotICAgICAgICAgICAgICAgIENT
U1ZhbHVlKiBzZWNvbmQgPSBsaXN0LT5pdGVtKGkgKyAxKTsKLSAgICAgICAgICAgICAgICBpZiAo
IXNlY29uZCkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oZmlyc3QtPmlzUHJpbWl0aXZlVmFsdWUo
KSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc2Vj
b25kLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwotICAgICAgICAgICAgICAgIFN0cmluZyBzdGFydFF1
b3RlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihmaXJzdCktPmdldFN0cmluZ1Zh
bHVlKCk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGVuZFF1b3RlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPihzZWNvbmQpLT5nZXRTdHJpbmdWYWx1ZSgpOwotICAgICAgICAgICAg
ICAgIHF1b3Rlcy0+YWRkUGFpcihzdGQ6Om1ha2VfcGFpcihzdGFydFF1b3RlLCBlbmRRdW90ZSkp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0UXVvdGVzKHF1
b3Rlcyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFF1b3Rl
cyhRdW90ZXNEYXRhOjpjcmVhdGUoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAg
IC8vIFNob3J0aGFuZCBwcm9wZXJ0aWVzLgotICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OgotICAg
ICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERl
c2NyaXB0aW9uID0gc3RhdGUucGFyZW50U3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAg
ICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRMaW5lSGVpZ2h0KHN0YXRlLnBhcmVudFN0eWxlKCkt
PnNwZWNpZmllZExpbmVIZWlnaHQoKSk7Ci0gICAgICAgICAgICBzdGF0ZS5zZXRMaW5lSGVpZ2h0
VmFsdWUoMCk7Ci0gICAgICAgICAgICBzZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9u
KTsKLSAgICAgICAgfSBlbHNlIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIFNldHRpbmdz
KiBzZXR0aW5ncyA9IGRvY3VtZW50U2V0dGluZ3MoKTsKLSAgICAgICAgICAgIEFTU0VSVChzZXR0
aW5ncyk7IC8vIElmIHdlJ3JlIGRvaW5nIHN0eWxlIHJlc29sdXRpb24sIHRoaXMgZG9jdW1lbnQg
c2hvdWxkIGFsd2F5cyBiZSBpbiBhIGZyYW1lIGFuZCB0aHVzIGhhdmUgc2V0dGluZ3MKLSAgICAg
ICAgICAgIGlmICghc2V0dGluZ3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgaW5pdGlhbGl6ZUZvbnRTdHlsZShzZXR0aW5ncyk7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJp
bWl0aXZlVmFsdWUpIHsKLSAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldExpbmVIZWlnaHQo
UmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOwotICAgICAgICAgICAgc3RhdGUuc2V0
TGluZUhlaWdodFZhbHVlKDApOwotCi0gICAgICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERl
c2NyaXB0aW9uOwotICAgICAgICAgICAgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5zeXN0
ZW1Gb250KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpLCBmb250RGVzY3JpcHRpb24pOwotCi0g
ICAgICAgICAgICAvLyBEb3VibGUtY2hlY2sgYW5kIHNlZSBpZiB0aGUgdGhlbWUgZGlkIGFueXRo
aW5nLiBJZiBub3QsIGRvbid0IGJvdGhlciB1cGRhdGluZyB0aGUgZm9udC4KLSAgICAgICAgICAg
IGlmIChmb250RGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSkgewotICAgICAgICAgICAgICAg
IC8vIE1ha2Ugc3VyZSB0aGUgcmVuZGVyaW5nIG1vZGUgYW5kIHByaW50ZXIgZm9udCBzZXR0aW5n
cyBhcmUgdXBkYXRlZC4KLSAgICAgICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1
bWVudFNldHRpbmdzKCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHNldHRpbmdzKTsgLy8gSWYg
d2UncmUgZG9pbmcgc3R5bGUgcmVzb2x1dGlvbiwgdGhpcyBkb2N1bWVudCBzaG91bGQgYWx3YXlz
IGJlIGluIGEgZnJhbWUgYW5kIHRodXMgaGF2ZSBzZXR0aW5ncwotICAgICAgICAgICAgICAgIGlm
ICghc2V0dGluZ3MpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICBmb250RGVzY3JpcHRpb24uc2V0UmVuZGVyaW5nTW9kZShzZXR0aW5ncy0+Zm9udFJlbmRlcmlu
Z01vZGUoKSk7Ci0gICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFVzZVByaW50ZXJG
b250KGRvY3VtZW50KCktPnByaW50aW5nKCkgfHwgIXNldHRpbmdzLT5zY3JlZW5Gb250U3Vic3Rp
dHV0aW9uRW5hYmxlZCgpKTsKLQotICAgICAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgem9vbSBm
YWN0b3IuCi0gICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShn
ZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZShkb2N1bWVudCgpLCBzdGF0ZS5zdHlsZSgp
LCBmb250RGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSwgZm9udERlc2NyaXB0aW9uLnNwZWNp
ZmllZFNpemUoKSwgdXNlU1ZHWm9vbVJ1bGVzKCkpKTsKLSAgICAgICAgICAgICAgICBzZXRGb250
RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIGlmICh2YWx1ZS0+aXNGb250VmFsdWUoKSkgewotICAgICAgICAgICAgRm9udFZhbHVlKiBm
b250ID0gc3RhdGljX2Nhc3Q8Rm9udFZhbHVlKj4odmFsdWUpOwotICAgICAgICAgICAgaWYgKCFm
b250LT5zdHlsZSB8fCAhZm9udC0+dmFyaWFudCB8fCAhZm9udC0+d2VpZ2h0Ci0gICAgICAgICAg
ICAgICAgfHwgIWZvbnQtPnNpemUgfHwgIWZvbnQtPmxpbmVIZWlnaHQgfHwgIWZvbnQtPmZhbWls
eSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBhcHBseVByb3BlcnR5KENT
U1Byb3BlcnR5Rm9udFN0eWxlLCBmb250LT5zdHlsZS5nZXQoKSk7Ci0gICAgICAgICAgICBhcHBs
eVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsIGZvbnQtPnZhcmlhbnQuZ2V0KCkpOwot
ICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIGZvbnQtPndl
aWdodC5nZXQoKSk7Ci0gICAgICAgICAgICAvLyBUaGUgcHJldmlvdXMgcHJvcGVydGllcyBjYW4g
ZGlydHkgb3VyIGZvbnQgYnV0IHRoZXkgZG9uJ3QgdHJ5IHRvIHJlYWQgdGhlIGZvbnQncwotICAg
ICAgICAgICAgLy8gcHJvcGVydGllcyBiYWNrLCB3aGljaCBpcyBzYWZlLiBIb3dldmVyIGlmIGZv
bnQtc2l6ZSBpcyB1c2luZyB0aGUgJ2V4JyB1bml0LCBpdCB3aWxsCi0gICAgICAgICAgICAvLyBu
ZWVkIHF1ZXJ5IHRoZSBkaXJ0aWVkIGZvbnQncyB4LWhlaWdodCB0byBnZXQgdGhlIGNvbXB1dGVk
IHNpemUuIFRvIGJlIHNhZmUgaW4gdGhpcwotICAgICAgICAgICAgLy8gY2FzZSwgbGV0J3MganVz
dCB1cGRhdGUgdGhlIGZvbnQgbm93LgotICAgICAgICAgICAgdXBkYXRlRm9udCgpOwotICAgICAg
ICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBmb250LT5zaXplLmdldCgp
KTsKLQotICAgICAgICAgICAgc3RhdGUuc2V0TGluZUhlaWdodFZhbHVlKGZvbnQtPmxpbmVIZWln
aHQuZ2V0KCkpOwotCi0gICAgICAgICAgICBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZh
bWlseSwgZm9udC0+ZmFtaWx5LmdldCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0K
LSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZDoKLSAgICBjYXNlIENTU1Byb3BlcnR5QmFj
a2dyb3VuZFBvc2l0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0Ogot
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbToKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckltYWdlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0OgotICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJp
Z2h0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxl
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW46Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxp
bmU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93OgotICAgIGNhc2UgQ1NTUHJvcGVydHlQ
YWRkaW5nOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb246Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFm
dGVyOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmU6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyU3RhcnQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJhZGl1czoKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uczoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uUnVsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleDoKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0RmxleEZsb3c6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRD
b2x1bW46Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRSb3c6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXJxdWVlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXNrUG9zaXRpb246Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tS
ZXBlYXQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpczoKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VHJhbnNpdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luOgot
I2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3Jh
cDoKLSNlbmRpZgotICAgICAgICBBU1NFUlQoaXNFeHBhbmRlZFNob3J0aGFuZChpZCkpOwotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAvLyBDU1Mz
IFByb3BlcnRpZXMKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFNoYWRvdzoKLSAgICBjYXNlIENT
U1Byb3BlcnR5Qm94U2hhZG93OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3c6
IHsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgaWYgKGlkID09IENTU1By
b3BlcnR5VGV4dFNoYWRvdykKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGUuc3R5bGUoKS0+
c2V0VGV4dFNoYWRvdyhzdGF0ZS5wYXJlbnRTdHlsZSgpLT50ZXh0U2hhZG93KCkgPyBhZG9wdFB0
cihuZXcgU2hhZG93RGF0YSgqc3RhdGUucGFyZW50U3R5bGUoKS0+dGV4dFNoYWRvdygpKSkgOiBu
dWxscHRyKTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0ZS5zdHlsZSgpLT5zZXRCb3hTaGFkb3co
c3RhdGUucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkgPyBhZG9wdFB0cihuZXcgU2hhZG93RGF0
YSgqc3RhdGUucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkpKSA6IG51bGxwdHIpOwotICAgICAg
ICB9Ci0gICAgICAgIGlmIChpc0luaXRpYWwgfHwgcHJpbWl0aXZlVmFsdWUpIC8vIGluaXRpYWwg
fCBub25lCi0gICAgICAgICAgICByZXR1cm4gaWQgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93ID8g
c3RhdGUuc3R5bGUoKS0+c2V0VGV4dFNoYWRvdyhudWxscHRyKSA6IHN0YXRlLnN0eWxlKCktPnNl
dEJveFNoYWRvdyhudWxscHRyKTsKLQotICAgICAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgp
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZvciAoQ1NTVmFsdWVMaXN0SXRlcmF0
b3IgaSA9IHZhbHVlOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNlKCkpIHsKLSAgICAgICAgICAgIENT
U1ZhbHVlKiBjdXJyVmFsdWUgPSBpLnZhbHVlKCk7Ci0gICAgICAgICAgICBpZiAoIWN1cnJWYWx1
ZS0+aXNTaGFkb3dWYWx1ZSgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgU2hhZG93VmFsdWUqIGl0ZW0gPSBzdGF0aWNfY2FzdDxTaGFkb3dWYWx1ZSo+KGN1cnJWYWx1
ZSk7Ci0gICAgICAgICAgICBpbnQgeCA9IGl0ZW0tPngtPmNvbXB1dGVMZW5ndGg8aW50PihzdGF0
ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHpvb21GYWN0b3IpOwotICAgICAg
ICAgICAgaW50IHkgPSBpdGVtLT55LT5jb21wdXRlTGVuZ3RoPGludD4oc3RhdGUuc3R5bGUoKSwg
c3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGludCBi
bHVyID0gaXRlbS0+Ymx1ciA/IGl0ZW0tPmJsdXItPmNvbXB1dGVMZW5ndGg8aW50PihzdGF0ZS5z
dHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHpvb21GYWN0b3IpIDogMDsKLSAgICAg
ICAgICAgIGludCBzcHJlYWQgPSBpdGVtLT5zcHJlYWQgPyBpdGVtLT5zcHJlYWQtPmNvbXB1dGVM
ZW5ndGg8aW50PihzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHpvb21G
YWN0b3IpIDogMDsKLSAgICAgICAgICAgIFNoYWRvd1N0eWxlIHNoYWRvd1N0eWxlID0gaXRlbS0+
c3R5bGUgJiYgaXRlbS0+c3R5bGUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVJbnNldCA/IEluc2V0
IDogTm9ybWFsOwotICAgICAgICAgICAgQ29sb3IgY29sb3I7Ci0gICAgICAgICAgICBpZiAoaXRl
bS0+Y29sb3IpCi0gICAgICAgICAgICAgICAgY29sb3IgPSBjb2xvckZyb21QcmltaXRpdmVWYWx1
ZShpdGVtLT5jb2xvci5nZXQoKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChzdGF0ZS5zdHlsZSgp
KQotICAgICAgICAgICAgICAgIGNvbG9yID0gc3RhdGUuc3R5bGUoKS0+Y29sb3IoKTsKLQotICAg
ICAgICAgICAgT3duUHRyPFNoYWRvd0RhdGE+IHNoYWRvd0RhdGEgPSBhZG9wdFB0cihuZXcgU2hh
ZG93RGF0YShJbnRQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgaWQgPT0g
Q1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29s
b3I6OnRyYW5zcGFyZW50KSk7Ci0gICAgICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlUZXh0
U2hhZG93KQotICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFRleHRTaGFkb3coc2hh
ZG93RGF0YS5yZWxlYXNlKCksIGkuaW5kZXgoKSk7IC8vIGFkZCB0byB0aGUgbGlzdCBpZiB0aGlz
IGlzIG5vdCB0aGUgZmlyc3QgZW50cnkKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBzdGF0ZS5zdHlsZSgpLT5zZXRCb3hTaGFkb3coc2hhZG93RGF0YS5yZWxlYXNlKCksIGkuaW5k
ZXgoKSk7IC8vIGFkZCB0byB0aGUgbGlzdCBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgZW50cnkK
LSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3hSZWZsZWN0OiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGJv
eFJlZmxlY3QsIEJveFJlZmxlY3QpCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkgewotICAg
ICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Qm94UmVmbGVjdChSZW5kZXJTdHlsZTo6aW5pdGlh
bEJveFJlZmxlY3QoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoIXZhbHVlLT5pc1JlZmxlY3RWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIENTU1JlZmxlY3RWYWx1ZSogcmVmbGVjdFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUmVm
bGVjdFZhbHVlKj4odmFsdWUpOwotICAgICAgICBSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiByZWZs
ZWN0aW9uID0gU3R5bGVSZWZsZWN0aW9uOjpjcmVhdGUoKTsKLSAgICAgICAgcmVmbGVjdGlvbi0+
c2V0RGlyZWN0aW9uKCpyZWZsZWN0VmFsdWUtPmRpcmVjdGlvbigpKTsKLSAgICAgICAgaWYgKHJl
ZmxlY3RWYWx1ZS0+b2Zmc2V0KCkpCi0gICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRPZmZzZXQo
cmVmbGVjdFZhbHVlLT5vZmZzZXQoKS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZl
cnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uPihzdGF0ZS5z
dHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHpvb21GYWN0b3IpKTsKLSAgICAgICAg
TmluZVBpZWNlSW1hZ2UgbWFzazsKLSAgICAgICAgbWFzay5zZXRNYXNrRGVmYXVsdHMoKTsKLSAg
ICAgICAgbV9zdHlsZU1hcC5tYXBOaW5lUGllY2VJbWFnZShpZCwgcmVmbGVjdFZhbHVlLT5tYXNr
KCksIG1hc2spOwotICAgICAgICByZWZsZWN0aW9uLT5zZXRNYXNrKG1hc2spOwotCi0gICAgICAg
IHN0YXRlLnN0eWxlKCktPnNldEJveFJlZmxlY3QocmVmbGVjdGlvbi5yZWxlYXNlKCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlTcmM6IC8vIE9ubHkgdXNl
ZCBpbiBAZm9udC1mYWNlIHJ1bGVzLgotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVVuaWNvZGVSYW5nZTogLy8gT25seSB1c2VkIGluIEBmb250LWZhY2UgcnVsZXMuCi0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9jYWxlOiB7Ci0gICAgICAg
IEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGxvY2FsZSwgTG9jYWxlKTsKLSAgICAgICAgaWYg
KCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAgICAgIHN0YXRl
LnN0eWxlKCktPnNldExvY2FsZShudWxsQXRvbSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHN0YXRlLnN0eWxlKCktPnNldExvY2FsZShwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUo
KSk7Ci0gICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzdGF0ZS5zdHls
ZSgpLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFNjcmlw
dChsb2NhbGVUb1NjcmlwdENvZGVGb3JGb250U2VsZWN0aW9uKHN0YXRlLnN0eWxlKCktPmxvY2Fs
ZSgpKSk7Ci0gICAgICAgIHNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uOgotICAgIHsKLSAgICAgICAgSEFO
RExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoZGFzaGJvYXJkUmVnaW9ucywgRGFzaGJvYXJkUmVnaW9u
cykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKSB7
Ci0gICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXREYXNoYm9hcmRSZWdpb25zKFJlbmRlclN0
eWxlOjpub25lRGFzaGJvYXJkUmVnaW9ucygpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIERhc2hib2FyZFJlZ2lvbiogcmVnaW9uID0gcHJpbWl0aXZlVmFsdWUt
PmdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7Ci0gICAgICAgIGlmICghcmVnaW9uKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIERhc2hib2FyZFJlZ2lvbiogZmlyc3QgPSByZWdpb247
Ci0gICAgICAgIHdoaWxlIChyZWdpb24pIHsKLSAgICAgICAgICAgIExlbmd0aCB0b3AgPSBjb252
ZXJ0VG9JbnRMZW5ndGgocmVnaW9uLT50b3AoKSwgc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVs
ZW1lbnRTdHlsZSgpKTsKLSAgICAgICAgICAgIExlbmd0aCByaWdodCA9IGNvbnZlcnRUb0ludExl
bmd0aChyZWdpb24tPnJpZ2h0KCksIHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5
bGUoKSk7Ci0gICAgICAgICAgICBMZW5ndGggYm90dG9tID0gY29udmVydFRvSW50TGVuZ3RoKHJl
Z2lvbi0+Ym90dG9tKCksIHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSk7
Ci0gICAgICAgICAgICBMZW5ndGggbGVmdCA9IGNvbnZlcnRUb0ludExlbmd0aChyZWdpb24tPmxl
ZnQoKSwgc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpKTsKLQotICAgICAg
ICAgICAgaWYgKHRvcC5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgICAgIHRvcCA9IExlbmd0
aCgpOwotICAgICAgICAgICAgaWYgKHJpZ2h0LmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICAg
ICAgcmlnaHQgPSBMZW5ndGgoKTsKLSAgICAgICAgICAgIGlmIChib3R0b20uaXNVbmRlZmluZWQo
KSkKLSAgICAgICAgICAgICAgICBib3R0b20gPSBMZW5ndGgoKTsKLSAgICAgICAgICAgIGlmIChs
ZWZ0LmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICAgICAgbGVmdCA9IExlbmd0aCgpOwotCi0g
ICAgICAgICAgICBpZiAocmVnaW9uLT5tX2lzQ2lyY2xlKQotICAgICAgICAgICAgICAgIHN0YXRl
LnN0eWxlKCktPnNldERhc2hib2FyZFJlZ2lvbihTdHlsZURhc2hib2FyZFJlZ2lvbjo6Q2lyY2xl
LCByZWdpb24tPm1fbGFiZWwsIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgcmVnaW9uID09IGZp
cnN0ID8gZmFsc2UgOiB0cnVlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9pc1Jl
Y3RhbmdsZSkKLSAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXREYXNoYm9hcmRSZWdp
b24oU3R5bGVEYXNoYm9hcmRSZWdpb246OlJlY3RhbmdsZSwgcmVnaW9uLT5tX2xhYmVsLCB0b3As
IHJpZ2h0LCBib3R0b20sIGxlZnQsIHJlZ2lvbiA9PSBmaXJzdCA/IGZhbHNlIDogdHJ1ZSk7Ci0g
ICAgICAgICAgICByZWdpb24gPSByZWdpb24tPm1fbmV4dC5nZXQoKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHN0YXRlLmRvY3VtZW50KCktPnNldEhhc0Fubm90YXRlZFJlZ2lvbnModHJ1ZSk7Ci0K
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShEUkFHR0FCTEVfUkVH
SU9OKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBSZWdpb246IHsKLSAgICAgICAgaWYg
KCFwcmltaXRpdmVWYWx1ZSB8fCAhcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIHN0YXRlLnN0eWxlKCktPnNldERyYWdnYWJsZVJlZ2lvbk1v
ZGUocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVEcmFnID8gRHJhZ2dhYmxl
UmVnaW9uRHJhZyA6IERyYWdnYWJsZVJlZ2lvbk5vRHJhZyk7Ci0gICAgICAgIHN0YXRlLmRvY3Vt
ZW50KCktPnNldEhhc0Fubm90YXRlZFJlZ2lvbnModHJ1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0jZW5kaWYKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoOiB7
Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRleHRTdHJva2VXaWR0aCwgVGV4
dFN0cm9rZVdpZHRoKQotICAgICAgICBmbG9hdCB3aWR0aCA9IDA7Ci0gICAgICAgIHN3aXRjaCAo
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZVRoaW46
Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVNZWRpdW06Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVUaGlj
azogewotICAgICAgICAgICAgZG91YmxlIHJlc3VsdCA9IDEuMCAvIDQ4OwotICAgICAgICAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTWVkaXVtKQotICAgICAg
ICAgICAgICAgIHJlc3VsdCAqPSAzOwotICAgICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVUaGljaykKLSAgICAgICAgICAgICAgICByZXN1bHQg
Kj0gNTsKLSAgICAgICAgICAgIHdpZHRoID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyZXN1
bHQsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TKS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3Rh
dGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICB3
aWR0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdGF0ZS5zdHlsZSgp
LCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0VGV4dFN0cm9rZVdpZHRo
KHdpZHRoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNmb3JtOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRyYW5z
Zm9ybSwgVHJhbnNmb3JtKTsKLSAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25z
OwotICAgICAgICBjcmVhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZhbHVlLCBzdGF0ZS5zdHlsZSgp
LCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIG9wZXJhdGlvbnMpOwotICAgICAgICBzdGF0ZS5z
dHlsZSgpLT5zZXRUcmFuc2Zvcm0ob3BlcmF0aW9ucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlOiB7Ci0gICAgICAgIEhBTkRM
RV9JTkhFUklUX0FORF9JTklUSUFMKHBlcnNwZWN0aXZlLCBQZXJzcGVjdGl2ZSkKLQotICAgICAg
ICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsKLSAgICAgICAg
ICAgIHN0YXRlLnN0eWxlKCktPnNldFBlcnNwZWN0aXZlKDApOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgZmxvYXQgcGVyc3BlY3RpdmVWYWx1ZTsKLSAgICAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKQotICAgICAgICAgICAgcGVyc3BlY3RpdmVW
YWx1ZSA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdGF0ZS5zdHlsZSgp
LCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHpvb21GYWN0b3IpOwotICAgICAgICBlbHNlIGlm
IChwcmltaXRpdmVWYWx1ZS0+aXNOdW1iZXIoKSkgewotICAgICAgICAgICAgLy8gRm9yIGJhY2t3
YXJkIGNvbXBhdGliaWxpdHksIHRyZWF0IHZhbHVlbGVzcyBudW1iZXJzIGFzIHB4LgotICAgICAg
ICAgICAgcGVyc3BlY3RpdmVWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocHJpbWl0
aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpLT5j
b21wdXRlTGVuZ3RoPGZsb2F0PihzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxl
KCksIHpvb21GYWN0b3IpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBpZiAocGVyc3BlY3RpdmVWYWx1ZSA+PSAwLjBmKQotICAgICAgICAgICAgc3RhdGUu
c3R5bGUoKS0+c2V0UGVyc3BlY3RpdmUocGVyc3BlY3RpdmVWYWx1ZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUwodGFwSGlnaGxpZ2h0Q29sb3IsIFRhcEhpZ2hsaWdodENvbG9yKTsKLSAgICAgICAgaWYg
KCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIENvbG9yIGNv
bCA9IGNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKHByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgc3Rh
dGUuc3R5bGUoKS0+c2V0VGFwSGlnaGxpZ2h0Q29sb3IoY29sKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcp
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nOiB7Ci0gICAgICAg
IEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcsIFVz
ZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcpOwotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFVzZVRvdWNoT3Zl
cmZsb3dTY3JvbGxpbmcocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVUb3Vj
aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBjYXNlIENTU1Byb3BlcnR5
SW52YWxpZDoKLSAgICAgICAgcmV0dXJuOwotICAgIC8vIERpcmVjdGlvbmFsIHByb3BlcnRpZXMg
YXJlIHJlc29sdmVkIGJ5IHJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KCkgYmVmb3JlIHRo
ZSBzd2l0Y2guCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZToKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyRW5kV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
clN0YXJ0Q29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGU6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGg6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJCZWZvcmVTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
QmVmb3JlV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3I6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGU6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpbkVuZDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luU3RhcnQ6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZToKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQWZ0ZXI6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJl
Zm9yZUNvbGxhcHNlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBz
ZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZToKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRp
bmdTdGFydDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0JlZm9yZToKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0FmdGVyOgotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRMb2dpY2FsV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxIZWln
aHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aDoKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhlaWdodDoKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWF4TG9naWNhbFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dp
Y2FsSGVpZ2h0OgotICAgIHsKLSAgICAgICAgQ1NTUHJvcGVydHlJRCBuZXdJZCA9IENTU1Byb3Bl
cnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCwgc3RhdGUuc3R5bGUoKS0+ZGly
ZWN0aW9uKCksIHN0YXRlLnN0eWxlKCktPndyaXRpbmdNb2RlKCkpOwotICAgICAgICBBU1NFUlQo
bmV3SWQgIT0gaWQpOwotICAgICAgICByZXR1cm4gYXBwbHlQcm9wZXJ0eShuZXdJZCwgdmFsdWUp
OwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0cmV0Y2g6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVBhZ2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaDoKLSAgICBj
YXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRMaW5lVGhyb3VnaE1vZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3Vn
aFN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hXaWR0aDoKLSAgICBj
YXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3Zl
cmxpbmVDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lTW9kZToKLSAgICBj
YXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRl
eHRPdmVybGluZVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRVbmRlcmxpbmVNb2RlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5
bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aDoKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VGV4dERlY29yYXRpb25zSW5FZmZlY3Q6Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIENTUyBU
ZXh0IExheW91dCBNb2R1bGUgTGV2ZWwgMzogVmVydGljYWwgd3JpdGluZyBzdXBwb3J0Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMKHdyaXRpbmdNb2RlLCBXcml0aW5nTW9kZSk7Ci0gICAgICAgIAotICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICBzZXRXcml0aW5nTW9kZSgqcHJp
bWl0aXZlVmFsdWUpOwotCi0gICAgICAgIC8vIEZJWE1FOiBJdCBpcyBub3Qgb2sgdG8gbW9kaWZ5
IGRvY3VtZW50IHN0YXRlIHdoaWxlIGFwcGx5aW5nIHN0eWxlLgotICAgICAgICBpZiAoc3RhdGUu
ZWxlbWVudCgpICYmIHN0YXRlLmVsZW1lbnQoKSA9PSBzdGF0ZS5kb2N1bWVudCgpLT5kb2N1bWVu
dEVsZW1lbnQoKSkKLSAgICAgICAgICAgIHN0YXRlLmRvY3VtZW50KCktPnNldFdyaXRpbmdNb2Rl
U2V0T25Eb2N1bWVudEVsZW1lbnQodHJ1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9uOiB7Ci0gICAgICAgIEhBTkRM
RV9JTkhFUklUX0FORF9JTklUSUFMKHRleHRPcmllbnRhdGlvbiwgVGV4dE9yaWVudGF0aW9uKTsK
LQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICBzZXRUZXh0T3JpZW50
YXRpb24oKnByaW1pdGl2ZVZhbHVlKTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCb3hDb250YWluOiB7Ci0gICAgICAgIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMKGxpbmVCb3hDb250YWluLCBMaW5lQm94Q29udGFpbikKLSAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENT
U1ZhbHVlTm9uZSkgewotICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TGluZUJveENvbnRh
aW4oTGluZUJveENvbnRhaW5Ob25lKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICghdmFsdWUtPmlzQ1NTTGluZUJveENvbnRhaW5WYWx1ZSgpKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIENTU0xpbmVCb3hDb250YWluVmFsdWUqIGxpbmVCb3hD
b250YWluVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NMaW5lQm94Q29udGFpblZhbHVlKj4odmFsdWUp
OwotICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRMaW5lQm94Q29udGFpbihsaW5lQm94Q29udGFp
blZhbHVlLT52YWx1ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIENTUyBG
b250cyBNb2R1bGUgTGV2ZWwgMwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250RmVhdHVy
ZVNldHRpbmdzOiB7Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkgewotICAgICAgICAgICAgc2V0Rm9udERl
c2NyaXB0aW9uKHN0YXRlLnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLm1ha2VOb3JtYWxGZWF0
dXJlU2V0dGluZ3MoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzdGF0ZS5zdHlsZSgpLT5mb250
RGVzY3JpcHRpb24oKTsKLSAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8
Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwotICAgICAgICBSZWZQdHI8Rm9udEZlYXR1cmVTZXR0aW5n
cz4gc2V0dGluZ3MgPSBGb250RmVhdHVyZVNldHRpbmdzOjpjcmVhdGUoKTsKLSAgICAgICAgaW50
IGxlbiA9IGxpc3QtPmxlbmd0aCgpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsg
KytpKSB7Ci0gICAgICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGxpc3QtPml0ZW1XaXRob3V0Qm91
bmRzQ2hlY2soaSk7Ci0gICAgICAgICAgICBpZiAoIWl0ZW0tPmlzRm9udEZlYXR1cmVWYWx1ZSgp
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgRm9udEZlYXR1cmVWYWx1
ZSogZmVhdHVyZSA9IHN0YXRpY19jYXN0PEZvbnRGZWF0dXJlVmFsdWUqPihpdGVtKTsKLSAgICAg
ICAgICAgIHNldHRpbmdzLT5hcHBlbmQoRm9udEZlYXR1cmUoZmVhdHVyZS0+dGFnKCksIGZlYXR1
cmUtPnZhbHVlKCkpKTsKLSAgICAgICAgfQotICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0RmVh
dHVyZVNldHRpbmdzKHNldHRpbmdzLnJlbGVhc2UoKSk7Ci0gICAgICAgIHNldEZvbnREZXNjcmlw
dGlvbihmb250RGVzY3JpcHRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0jaWYgRU5B
QkxFKENTU19GSUxURVJTKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGaWx0ZXI6IHsKLSAg
ICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoZmlsdGVyLCBGaWx0ZXIpOwotICAgICAg
ICBGaWx0ZXJPcGVyYXRpb25zIG9wZXJhdGlvbnM7Ci0gICAgICAgIGlmIChjcmVhdGVGaWx0ZXJP
cGVyYXRpb25zKHZhbHVlLCBzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCks
IG9wZXJhdGlvbnMpKQotICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0RmlsdGVyKG9wZXJh
dGlvbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEdyaWRBdXRvQ29sdW1uczogewotICAgICAgICBHcmlkVHJhY2tTaXplIHRyYWNr
U2l6ZTsKLSAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tTaXplKHZhbHVlLCB0cmFja1NpemUs
IHN0YXRlKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0
R3JpZEF1dG9Db2x1bW5zKHRyYWNrU2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRBdXRvUm93czogewotICAgICAgICBHcmlkVHJhY2tT
aXplIHRyYWNrU2l6ZTsKLSAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tTaXplKHZhbHVlLCB0
cmFja1NpemUsIHN0YXRlKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc3RhdGUuc3R5
bGUoKS0+c2V0R3JpZEF1dG9Sb3dzKHRyYWNrU2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRDb2x1bW5zOiB7Ci0gICAgICAgIFZlY3Rv
cjxHcmlkVHJhY2tTaXplPiB0cmFja1NpemVzOwotICAgICAgICBpZiAoIWNyZWF0ZUdyaWRUcmFj
a0xpc3QodmFsdWUsIHRyYWNrU2l6ZXMsIHN0YXRlKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0R3JpZENvbHVtbnModHJhY2tTaXplcyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRSb3dzOiB7Ci0g
ICAgICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiB0cmFja1NpemVzOwotICAgICAgICBpZiAoIWNy
ZWF0ZUdyaWRUcmFja0xpc3QodmFsdWUsIHRyYWNrU2l6ZXMsIHN0YXRlKSkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0R3JpZFJvd3ModHJhY2tTaXplcyk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3Jp
ZFN0YXJ0OiB7Ci0gICAgICAgIEdyaWRQb3NpdGlvbiBzdGFydFBvc2l0aW9uOwotICAgICAgICBp
ZiAoIWNyZWF0ZUdyaWRQb3NpdGlvbih2YWx1ZSwgc3RhcnRQb3NpdGlvbikpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEdyaWRJdGVtU3RhcnQoc3RhcnRQ
b3NpdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEdyaWRFbmQ6IHsKLSAgICAgICAgR3JpZFBvc2l0aW9uIGVuZFBvc2l0aW9uOwotICAgICAg
ICBpZiAoIWNyZWF0ZUdyaWRQb3NpdGlvbih2YWx1ZSwgZW5kUG9zaXRpb24pKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRHcmlkSXRlbUVuZChlbmRQb3Np
dGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0R3JpZEJlZm9yZTogewotICAgICAgICBHcmlkUG9zaXRpb24gYmVmb3JlUG9zaXRpb247Ci0g
ICAgICAgIGlmICghY3JlYXRlR3JpZFBvc2l0aW9uKHZhbHVlLCBiZWZvcmVQb3NpdGlvbikpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEdyaWRJdGVtQmVm
b3JlKGJlZm9yZVBvc2l0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0R3JpZEFmdGVyOiB7Ci0gICAgICAgIEdyaWRQb3NpdGlvbiBhZnRlclBv
c2l0aW9uOwotICAgICAgICBpZiAoIWNyZWF0ZUdyaWRQb3NpdGlvbih2YWx1ZSwgYWZ0ZXJQb3Np
dGlvbikpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEdy
aWRJdGVtQWZ0ZXIoYWZ0ZXJQb3NpdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICAvLyBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBhbGlhc2VkIGFuZCBEZXByZWNhdGVkU3R5bGVCdWls
ZGVyIGFscmVhZHkgYXBwbGllZCB0aGUgcHJvcGVydHkgb24gdGhlIHByZWZpeGVkIHZlcnNpb24u
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25EZWxheToKLSAgICBjYXNlIENTU1Byb3Bl
cnR5VHJhbnNpdGlvbkR1cmF0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uUHJv
cGVydHk6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbjoKLSAg
ICAgICAgcmV0dXJuOwotICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgYXJlIGltcGxlbWVudGVkIGlu
IHRoZSBEZXByZWNhdGVkU3R5bGVCdWlsZGVyIGxvb2t1cCB0YWJsZS4KLSAgICBjYXNlIENTU1By
b3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRDbGlwOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZToKLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZE9yaWdpbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWDoKLSAgICBj
YXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWToKLSAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZFJlcGVhdFg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZ
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZToKLSAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxl
ZnRSYWRpdXM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZToKLSAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNl
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNldDoKLSAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVySW1hZ2VSZXBlYXQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdl
U2xpY2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJJbWFnZVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJM
ZWZ0Q29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZToKLSAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJS
aWdodENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1czoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXM6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlclRvcFN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aDoK
LSAgICBjYXNlIENTU1Byb3BlcnR5Qm90dG9tOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3hTaXpp
bmc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUNhcHRpb25TaWRlOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlDbGVhcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5Q2xpcDoKLSAgICBjYXNlIENTU1Byb3BlcnR5
Q29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQ6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eUNvdW50ZXJSZXNldDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Q3Vyc29yOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlEaXJlY3Rpb246Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eURpc3BsYXk6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUZs
b2F0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U2l6ZToKLSAgICBjYXNlIENTU1Byb3BlcnR5
Rm9udFN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWFudDoKLSAgICBjYXNlIENT
U1Byb3BlcnR5Rm9udFdlaWdodDoKLSAgICBjYXNlIENTU1Byb3BlcnR5SGVpZ2h0OgotI2lmIEVO
QUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUltYWdlT3Jp
ZW50YXRpb246Ci0jZW5kaWYKLSAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmc6Ci0j
aWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQotICAgIGNhc2UgQ1NTUHJvcGVydHlJbWFn
ZVJlc29sdXRpb246Ci0jZW5kaWYKLSAgICBjYXNlIENTU1Byb3BlcnR5TGVmdDoKLSAgICBjYXNl
IENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZzoKLSAgICBjYXNlIENTU1Byb3BlcnR5TGluZUhlaWdo
dDoKLSAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2U6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUxpc3RTdHlsZVBvc2l0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBl
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b206Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eU1hcmdpbkxlZnQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0OgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlNYXJnaW5Ub3A6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1heEhlaWdodDoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5TWF4V2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdo
dDoKLSAgICBjYXNlIENTU1Byb3BlcnR5TWluV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU9w
YWNpdHk6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU9ycGhhbnM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eU91dGxpbmVDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZU9mZnNldDoKLSAgICBj
YXNlIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5l
V2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93V3JhcDoKLSAgICBjYXNlIENTU1By
b3BlcnR5T3ZlcmZsb3dYOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1k6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b206Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdM
ZWZ0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVBhZGRpbmdUb3A6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBh
Z2VCcmVha0luc2lkZToKLSAgICBjYXNlIENTU1Byb3BlcnR5UG9pbnRlckV2ZW50czoKLSAgICBj
YXNlIENTU1Byb3BlcnR5UG9zaXRpb246Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVJlc2l6ZToKLSAg
ICBjYXNlIENTU1Byb3BlcnR5UmlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVNpemU6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVNwZWFrOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUYWJTaXplOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlUYWJsZUxheW91dDoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFs
aWduOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbjoKLSAgICBjYXNlIENTU1By
b3BlcnR5VGV4dEluZGVudDoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJmbG93OgotICAg
IGNhc2UgQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0
VHJhbnNmb3JtOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUb3A6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVVuaWNvZGVCaWRpOgotI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQotICAgIGNhc2UgQ1NTUHJv
cGVydHlWYXJpYWJsZToKLSNlbmRpZgotICAgIGNhc2UgQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWdu
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlWaXNpYmlsaXR5OgotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRBbmltYXRpb25EZWxheToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
RGlyZWN0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbjoK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGU6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OgotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25OYW1lOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmlt
YXRpb25QbGF5U3RhdGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWlu
Z0Z1bmN0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRBc3BlY3RSYXRpbzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0QmFja2ZhY2VWaXNpYmlsaXR5OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3Jv
dW5kQ2xpcDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZToK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9yaWdpbjoKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckZpdDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNw
YWNpbmc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmc6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJveEFsaWduOgotI2lmIEVOQUJMRShDU1NfQk9YX0RFQ09SQVRJT05fQlJFQUsp
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERlY29yYXRpb25CcmVhazoKLSNlbmRpZgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJveEZsZXg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXhHcm91
cDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXM6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJveE9yZGluYWxHcm91cDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94
T3JpZW50OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb246Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbkF4aXM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXI6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVmb3JlOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZToKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uQ291bnQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkdhcDoK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUHJvZ3Jlc3Npb246Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uUnVsZVN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxl
V2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW46Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoOgotI2lmIEVOQUJMRShDVVJTT1JfVklTSUJJTElU
WSkKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q3Vyc29yVmlzaWJpbGl0eToKLSNlbmRpZgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbGlnbkNvbnRlbnQ6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEFsaWduSXRlbXM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFsaWduU2Vs
ZjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEJhc2lzOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRGbGV4RGlyZWN0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4
R3JvdzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleFNocmluazoKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0RmxleFdyYXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEp1c3Rp
ZnlDb250ZW50OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRPcmRlcjoKLSNpZiBFTkFCTEUo
Q1NTX1JFR0lPTlMpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsb3dGcm9tOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRGbG93SW50bzoKLSNlbmRpZgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRGb250S2VybmluZzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290
aGluZzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFZhcmlhbnRMaWdhdHVyZXM6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdodDoKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBo
ZW5hdGVMaW1pdEFmdGVyOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1p
dEJlZm9yZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRMaW5lczoK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuczoKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TGluZUFsaWduOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWs6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVDbGFtcDoKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TGluZUdyaWQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVTbmFwOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXJxdWVlUmVwZXRpdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVk
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGU6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFz
a0JveEltYWdlT3V0c2V0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VS
ZXBlYXQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNsaWNlOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2U6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrQ2xpcDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZToKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrT3JpZ2luOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25Y
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFz
a1JlcGVhdFk6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXROYnNwTW9kZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVy
c3BlY3RpdmVPcmlnaW46Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3Jp
Z2luWDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmludENvbG9yQWRqdXN0OgotI2lmIEVOQUJMRShDU1Nf
UkVHSU9OUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtBZnRlcjoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtCZWZvcmU6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrSW5zaWRlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRSZWdpb25PdmVyZmxvdzoKLSNlbmRpZgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdGxP
cmRlcmluZzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZToKLSNpZiBFTkFCTEUoQ1NTM19URVhUKQot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbkxpbmU6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRleHREZWNvcmF0aW9uQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRBbGlnbkxhc3Q6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRKdXN0aWZ5OgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0VW5kZXJsaW5lUG9zaXRpb246Ci0jZW5kaWYgLy8g
Q1NTM19URVhUCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbjoKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRGaWxsQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1
cml0eToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1PcmlnaW5aOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1TdHlsZToK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5OgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb246Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zaXRpb25Qcm9wZXJ0eToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNp
dGlvblRpbWluZ0Z1bmN0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZzoK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeToKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VXNlclNlbGVjdDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q2xpcFBhdGg6
Ci0jaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRX
cmFwRmxvdzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0U2hhcGVNYXJnaW46Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFNoYXBlUGFkZGluZzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0V3JhcFRocm91Z2g6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNoYXBlSW5zaWRlOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTaGFwZU91dHNpZGU6Ci0jZW5kaWYKLSNpZiBFTkFC
TEUoQ1NTX1NIQURFUlMpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eU1peDoKLSAgICBjYXNlIENTU1By
b3BlcnR5UGFyYW1ldGVyczoKLSNlbmRpZgotICAgIGNhc2UgQ1NTUHJvcGVydHlXaGl0ZVNwYWNl
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXaWRvd3M6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdpZHRo
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdv
cmRTcGFjaW5nOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDoKLSAgICBjYXNlIENTU1By
b3BlcnR5WkluZGV4OgotICAgIGNhc2UgQ1NTUHJvcGVydHlab29tOgotI2lmIEVOQUJMRShDU1Nf
REVWSUNFX0FEQVBUQVRJT04pCi0gICAgY2FzZSBDU1NQcm9wZXJ0eU1heFpvb206Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eU1pblpvb206Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU9yaWVudGF0aW9uOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlVc2VyWm9vbToKLSNlbmRpZgotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGRlZmF1bHQ6Ci0jaWYgRU5BQkxFKFNW
RykKLSAgICAgICAgLy8gVHJ5IHRoZSBTVkcgcHJvcGVydGllcwotICAgICAgICBhcHBseVNWR1By
b3BlcnR5KGlkLCB2YWx1ZSk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQog
UGFzc1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUltYWdlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHksIENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmlzSW1h
Z2VWYWx1ZSgpKQpAQCAtNDUyMyw3ICszMzg0LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpyZXBv
cnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAog
CiAgICAgaW5mby5hZGRNZW1iZXIobV9mb250U2VsZWN0b3IsICJmb250U2VsZWN0b3IiKTsKICAg
ICBpbmZvLmFkZE1lbWJlcihtX3ZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdHMsICJ2
aWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRzIik7Ci0gICAgaW5mby5pZ25vcmVNZW1i
ZXIobV9kZXByZWNhdGVkU3R5bGVCdWlsZGVyKTsKKyAgICBpbmZvLmlnbm9yZU1lbWJlcihtX3N0
eWxlQnVpbGRlcik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9pbnNwZWN0b3JDU1NPTVdyYXBwZXJz
KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3Njb3BlUmVzb2x2ZXIsICJzY29wZVJlc29sdmVyIik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDIwYTNjZjAuLjMyOGYyNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlNlbGVjdG9yRmlsdGVyLmgiCiAjaW5jbHVk
ZSAiU2libGluZ1RyYXZlcnNhbFN0cmF0ZWdpZXMuaCIKKyNpbmNsdWRlICJTdHlsZUJ1aWxkZXIu
aCIKICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERhdGEuaCIKICNpbmNsdWRlICJTdHlsZVNjb3Bl
UmVzb2x2ZXIuaCIKICNpbmNsdWRlICJWaWV3cG9ydFN0eWxlUmVzb2x2ZXIuaCIKQEAgLTc4LDcg
Kzc5LDYgQEAgY2xhc3MgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdDsKIGNsYXNzIEN1c3RvbUZp
bHRlclByb2dyYW07CiBzdHJ1Y3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzOwogY2xh
c3MgRG9jdW1lbnQ7Ci1jbGFzcyBEZXByZWNhdGVkU3R5bGVCdWlsZGVyOwogY2xhc3MgRWxlbWVu
dDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVWaWV3OwpAQCAtNDAwLDkgKzQwMCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IE1hdGNoUmVzdWx0
JiwgYm9vbCBpbXBvcnRhbnQsIGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5kZXgsIGJvb2wgaW5o
ZXJpdGVkT25seSk7CiAgICAgdGVtcGxhdGUgPFN0eWxlQXBwbGljYXRpb25QYXNzIHBhc3M+CiAg
ICAgdm9pZCBhcHBseVByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGll
cywgU3R5bGVSdWxlKiwgYm9vbCBpc0ltcG9ydGFudCwgYm9vbCBpbmhlcml0ZWRPbmx5LCBQcm9w
ZXJ0eVdoaXRlbGlzdFR5cGUgPSBQcm9wZXJ0eVdoaXRlbGlzdE5vbmUpOwotI2lmIEVOQUJMRShD
U1NfVkFSSUFCTEVTKQotICAgIHZvaWQgcmVzb2x2ZVZhcmlhYmxlcyhDU1NQcm9wZXJ0eUlELCBD
U1NWYWx1ZSosIFZlY3RvcjxzdGQ6OnBhaXI8Q1NTUHJvcGVydHlJRCwgU3RyaW5nPiA+JiBrbm93
bkV4cHJlc3Npb25zKTsKLSNlbmRpZgorCiAgICAgc3RhdGljIGJvb2wgaXNWYWxpZFJlZ2lvblN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCk7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
IHN0YXRpYyBib29sIGlzVmFsaWRDdWVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQpOwpAQCAt
NTgyLDExICs1ODAsNyBAQCBwcml2YXRlOgogcHJpdmF0ZToKICAgICBib29sIGNhblNoYXJlU3R5
bGVXaXRoQ29udHJvbChTdHlsZWRFbGVtZW50KikgY29uc3Q7CiAKLSAgICB2b2lkIGFwcGx5UHJv
cGVydHkoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUqKTsKLQotI2lmIEVOQUJMRShTVkcpCi0gICAg
dm9pZCBhcHBseVNWR1Byb3BlcnR5KENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKik7Ci0jZW5kaWYK
KyAgICB2b2lkIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVl
KSB7IG1fc3R5bGVCdWlsZGVyLmFwcGx5VG9SZW5kZXJTdHlsZSh0aGlzLCBpZCwgdmFsdWUpOyB9
CiAKICAgICBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGxvYWRQZW5kaW5nSW1hZ2UoU3R5bGVQZW5k
aW5nSW1hZ2UqKTsKICAgICB2b2lkIGxvYWRQZW5kaW5nSW1hZ2VzKCk7CkBAIC02MzEsNyArNjI1
LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Vmlld3BvcnRTdHlsZVJlc29sdmVyPiBtX3ZpZXdw
b3J0U3R5bGVSZXNvbHZlcjsKICNlbmRpZgogCi0gICAgY29uc3QgRGVwcmVjYXRlZFN0eWxlQnVp
bGRlciYgbV9kZXByZWNhdGVkU3R5bGVCdWlsZGVyOworICAgIFN0eWxlQnVpbGRlciBtX3N0eWxl
QnVpbGRlcjsKIAogICAgIE93blB0cjxTdHlsZVNjb3BlUmVzb2x2ZXI+IG1fc2NvcGVSZXNvbHZl
cjsKICAgICBDU1NUb1N0eWxlTWFwIG1fc3R5bGVNYXA7CkBAIC02NDQsNiArNjM4LDggQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAgICAgZnJpZW5kIGNsYXNzIERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXI7
CisgICAgLy8gRklYTUU6IFJlbW92ZSBmcmllbmRzaGlwIGF0IHRoZSBlbmQgb2YgcmVmYWN0b3Jp
bmcuCisgICAgZnJpZW5kIGNsYXNzIFN0eWxlQnVpbGRlcjsKICAgICBmcmllbmQgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJiwgY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMm
KTsKICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJiwg
Y29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmKTsKICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IE1hdGNoUmFuZ2VzJiwgY29uc3QgTWF0Y2hSYW5nZXMmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNGRhZmUxMi4uMDU5MjY5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTEzMSw2
ICsxMzEsNyBAQCBjbGFzcyBSZW5kZXJTdHlsZTogcHVibGljIFJlZkNvdW50ZWQ8UmVuZGVyU3R5
bGU+IHsKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2U7IC8vIEZJWE1FOiBOZWVk
cyB0byBhbHRlciB0aGUgdmlzaXRlZCBzdGF0ZSBieSBoYW5kLiBTaG91bGQgY2xlYW4gdGhlIFNW
RyBjb2RlIHVwIGFuZCBtb3ZlIGl0IGludG8gUmVuZGVyU3R5bGUgcGVyaGFwcy4KICAgICBmcmll
bmQgY2xhc3MgUmVuZGVyVHJlZUFzVGV4dDsgLy8gRklYTUU6IE9ubHkgbmVlZGVkIHNvIHRoZSBy
ZW5kZXIgdHJlZSBjYW4ga2VlcCBseWluZyBhbmQgZHVtcCB0aGUgd3JvbmcgY29sb3JzLiAgUmVi
YXNlbGluaW5nIHdvdWxkIGFsbG93IHRoaXMgdG8gYmUgeWFua2VkLgogICAgIGZyaWVuZCBjbGFz
cyBTdHlsZVJlc29sdmVyOyAvLyBTZXRzIG1lbWJlcnMgZGlyZWN0bHkuCisgICAgZnJpZW5kIGNs
YXNzIFN0eWxlQnVpbGRlcjsgLy8gU2V0cyBtZW1iZXJzIGRpcmVjdGx5LgogcHJvdGVjdGVkOgog
CiAgICAgLy8gbm9uLWluaGVyaXRlZCBhdHRyaWJ1dGVzCg==
</data>
<flag name="commit-queue"
          id="220171"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198460</attachid>
            <date>2013-04-16 19:38:04 -0700</date>
            <delta_ts>2013-04-16 21:57:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>deprecateStyleBuilder2.patch</filename>
            <type>text/plain</type>
            <size>121196</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZGU1NzZmMy4uZDk3OGJmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEwODUsNiArMTA4NSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3Mv
U2VsZWN0b3JDaGVja2VyRmFzdFBhdGguY3BwCiAgICAgY3NzL1NlbGVjdG9yRmlsdGVyLmNwcAog
ICAgIGNzcy9TaGFkb3dWYWx1ZS5jcHAKKyAgICBjc3MvU3R5bGVCdWlsZGVyLmNwcAogICAgIGNz
cy9TdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmNwcAogICAgIGNzcy9TdHlsZU1lZGlhLmNwcAog
ICAgIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEyZGE2ODAuLjIwM2Iw
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMy0wNC0xNiAgRGlyayBTY2h1bHpl
ICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgYXBwbHlQcm9wZXJ0eSBmcm9tIFN0
eWxlUmVzb2x2ZXIgdG8gU3R5bGVCdWlsZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0NzE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlZCBhIG5ldyBjbGFzcyBTdHlsZUJ1aWxkZXIgdG8g
YXBwbHkgcHJvcGVydHkgc3R5bGVzIHRvIFJlbmRlclN0eWxlLgorICAgICAgICBNb3ZlZCBhcHBs
eVByb3BlcnR5IG1ldGhvZCBmcm9tIFN0eWxlUmVzb2x2ZXIgdG8gU3R5bGVCdWlsZGVyIGFuZCBy
ZW5hbWVkIGl0CisgICAgICAgIHRvIGFwcGx5VG9SZW5kZXJTdHlsZS4gU3R5bGVCdWlsZGVyIGlz
IGEgbWVtYmVyIG9mIFN0eWxlUmVzb2x2ZXIgbm93LgorICAgICAgICBJbiB0aGlzIGZpcnN0IHN0
ZXAsIGp1c3QgbmVjZXNzYXJ5IHN0YXRpYyBmdW5jdGlvbnMgd2VyZSBtb3ZlZCB0byBTdHlsZUJ1
aWxkZXIuCisgICAgICAgIEZ1dHVyZSBwYXRjaGVzIHdpbGwgY2xlYW51cCBTdHlsZVJlc29sdmVy
IG1vcmUgYW5kIG1vdmUgbW9yZSBmdW5jdGlvbmFsaXR5IHRvCisgICAgICAgIFN0eWxlQnVpbGRl
ci4KKworICAgICAgICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eSwgbm8gbmV3IHRlc3RzLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIFN0eWxlQnVpbGRlciB0byBidWlsZCBz
eXN0ZW1zLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0
LnByaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NBbGxJbk9u
ZS5jcHA6CisgICAgICAgICogY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwOiBJbmhlcml0IGZy
b20gU3R5bGVCdWlsZGVyIGluc3RlYWQgb2YgU3R5bGVSZXNvbHZlci4KKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlcjo6YXBwbHlUb1NWR1JlbmRlclN0eWxlKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVCdWlsZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdyaWRUcmFja0JyZWFkdGgpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
R3JpZFRyYWNrU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHcmlkVHJhY2tMaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdyaWRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZUJ1aWxkZXI6OlN0eWxlQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlk
VmlzaXRlZExpbmtQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXI6OmFw
cGx5VG9SZW5kZXJTdHlsZSk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU3R5bGVCdWlsZGVyKToKKyAgICAgICAgKiBj
c3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpT
dHlsZVJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KToK
KyAgICAgICAgKFN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oOgorCiAyMDEzLTA0LTE2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4OyBhZGQgbmV3IEpTQXVkaW9CdWZmZXIu
Y3BwIGZpbGUgdG8gbW9yZSBidWlsZCBzeXN0ZW1zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggZTc2ZTFkMC4uODM5ZWQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC0yNzMxLDYgKzI3MzEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL2Nzcy9TaGFkb3dWYWx1ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU2libGluZ1RyYXZlcnNhbFN0cmF0ZWdpZXMuaCBc
CisJU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZUJ1aWxkZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlSW52YWxpZGF0
aW9uQW5hbHlzaXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVJbnZhbGlkYXRpb25B
bmFseXNpcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKaW5kZXggMTNhMGZjMS4uZjM3ZDg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0zMzIsNiArMzMyLDcg
QEAgU09VUkNFUyArPSBcCiAgICAgY3NzL1NlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmNwcCBcCiAg
ICAgY3NzL1NlbGVjdG9yRmlsdGVyLmNwcCBcCiAgICAgY3NzL1NoYWRvd1ZhbHVlLmNwcCBcCisg
ICAgY3NzL1N0eWxlQnVpbGRlci5jcHAgXAogICAgIGNzcy9TdHlsZUludmFsaWRhdGlvbkFuYWx5
c2lzLmNwcCBcCiAgICAgY3NzL1N0eWxlTWVkaWEuY3BwIFwKICAgICBjc3MvU3R5bGVQcm9wZXJ0
eVNldC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCAwZjNmYjFmLi5kODAyYTdjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzg3MDcsNiArMzg3MDcsNjIgQEAKIAkJCQk+CiAJCQk8
L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXFN0eWxlQnVpbGRlci5j
cHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4z
MiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIK
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRl
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0Nh
aXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0i
RGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgor
CQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQ
cm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgor
CQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGNzc1xTdHlsZUJ1aWxkZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQog
CQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXFN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMuY3BwIgog
CQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCAzM2YzMjZjLi5iYTcyZjNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzCkBAIC0zNzQ0LDYgKzM3NDQsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cY3NzXFNoYWRvd1ZhbHVlLmNwcCI+CiAgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cY3NzXFN0eWxlQnVpbGRl
ci5jcHAiPgorICAgICAgPEZpbHRlcj5jc3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNzc1xTdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmNw
cCI+CiAgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMw
MDM3ZGMuLjg2ZmI1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTU3MjksNiArNTcyOSw4IEBACiAJCUZCMkMxNUMzMTY1RDY0
OUQwMDM5QzlGOCAvKiBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkIyQzE1QzIxNjVENjQ5MDAwMzlDOUY4
IC8qIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkIzMDU2QzIxNjlFNURBQzAwOTZBMjMyIC8qIENT
U0dyb3VwaW5nUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkIzMDU2QzExNjlFNURBQzAwOTZBMjMyIC8qIENTU0dyb3VwaW5nUnVsZS5oICovOyB9
OwogCQlGQjQ5QzM5RDE2Nzg0OTQ3MDA3RkZCNUQgLyogQ1NTSG9zdFJ1bGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCNDlDMzlDMTY3ODQ5NDcwMDdG
RkI1RCAvKiBDU1NIb3N0UnVsZS5oICovOyB9OworCQlGQjZFMEY5RDE3MUEyMEJCMDBBNUM1QkUg
LyogU3R5bGVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZCNkUwRjlCMTcxQTIwQkIwMEE1QzVCRSAvKiBTdHlsZUJ1aWxkZXIuY3BwICov
OyB9OworCQlGQjZFMEY5RTE3MUEyMEJCMDBBNUM1QkUgLyogU3R5bGVCdWlsZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjZFMEY5QzE3MUEyMEJC
MDBBNUM1QkUgLyogU3R5bGVCdWlsZGVyLmggKi87IH07CiAJCUZCNzhBRDJFMTUxQkY1RTYwMEZF
NTREMyAvKiBDU1NQYXJzZXJNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGQjc4QUQyQzE1MUJGNUQyMDBGRTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZCOTEz
OTI0MTZBRTRDMTcwMDFGRTY4MiAvKiBET01QYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjkxMzkyMDE2QUU0QjBCMDAxRkU2ODIgLyogRE9NUGF0
aC5oICovOyB9OwogCQlGQjkxMzkyNjE2QUU0QzJGMDAxRkU2ODIgLyogQ2FudmFzUGF0aE1ldGhv
ZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCOTEz
OTFGMTZBRTRCMEIwMDFGRTY4MiAvKiBDYW52YXNQYXRoTWV0aG9kcy5oICovOyB9OwpAQCAtMTI1
NzAsNiArMTI1NzIsOCBAQAogCQlGQjMwNTZDMTE2OUU1REFDMDA5NkEyMzIgLyogQ1NTR3JvdXBp
bmdSdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0dyb3VwaW5nUnVs
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjQ5QzM5QzE2Nzg0OTQ3MDA3RkZC
NUQgLyogQ1NTSG9zdFJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NT
SG9zdFJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI0OUMzOUUxNjc4NDk1
NDAwN0ZGQjVEIC8qIENTU0hvc3RSdWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NI
b3N0UnVsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZCNkUwRjlCMTcxQTIw
QkIwMEE1QzVCRSAvKiBTdHlsZUJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3R5bGVCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkI2RTBGOUMxNzFBMjBCQjAwQTVDNUJFIC8qIFN0eWxlQnVpbGRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkI3OEFEMkMxNTFCRjVEMjAwRkU1NEQzIC8qIENTU1BhcnNlck1vZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUGFyc2VyTW9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGQjkxMzkxRTE2QUU0QjBCMDAxRkU2ODIgLyogQ2FudmFz
UGF0aE1ldGhvZHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ2Fu
dmFzUGF0aE1ldGhvZHMuY3BwOyBwYXRoID0gY2FudmFzL0NhbnZhc1BhdGhNZXRob2RzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI5MTM5MUYxNkFFNEIwQjAwMUZFNjgyIC8q
IENhbnZhc1BhdGhNZXRob2RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENh
bnZhc1BhdGhNZXRob2RzLmg7IHBhdGggPSBjYW52YXMvQ2FudmFzUGF0aE1ldGhvZHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5ODIzLDYgKzE5ODI3LDggQEAKIAkJCQlBNzlC
QUQ5RTE2MUU3RjNGMDBDMkU2NTIgLyogUnVsZUZlYXR1cmUuaCAqLywKIAkJCQlBNzlCQUQ5RjE2
MUU3RjNGMDBDMkU2NTIgLyogUnVsZVNldC5jcHAgKi8sCiAJCQkJQTc5QkFEQTAxNjFFN0YzRjAw
QzJFNjUyIC8qIFJ1bGVTZXQuaCAqLywKKwkJCQlGQjZFMEY5QjE3MUEyMEJCMDBBNUM1QkUgLyog
U3R5bGVCdWlsZGVyLmNwcCAqLywKKwkJCQlGQjZFMEY5QzE3MUEyMEJCMDBBNUM1QkUgLyogU3R5
bGVCdWlsZGVyLmggKi8sCiAJCQkJRTQ0QjRCQjExNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9y
Q2hlY2tlci5jcHAgKi8sCiAJCQkJRTQ0QjRCQjIxNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9y
Q2hlY2tlci5oICovLAogCQkJCTQxQjhDRDQzMTZEMDQ1OTEwMDBFOENDMCAvKiBTZWxlY3RvckNo
ZWNrZXJGYXN0UGF0aC5jcHAgKi8sCkBAIC0yNDAzOSw2ICsyNDA0NSw3IEBACiAJCQkJRTE1MjU1
MTUxNkZEMjM1MDAwM0Q3QURCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCNTMzNDkxNzE3REVFMzAwRjIwNUY5
IC8qIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTg4RTBD
MjE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RkI2RTBGOUUxNzFBMjBCQjAwQTVDNUJFIC8qIFN0eWxlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0yNjk4OCw2ICsyNjk5NSw3IEBACiAJCQkJRTE1MjU1MTYxNkZEMjM1MDAwM0Q3QURCIC8q
IFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxQjUzMzQ3MTcxN0QwQTEwMEYyMDVGOSAvKiBDYWNoZWRTVkdEb2N1bWVu
dFJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBDMTE3MTVDRTI2MDA2NThE
OTggLyogVHJhY2tMaXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQjZFMEY5RDE3MUEy
MEJCMDBBNUM1QkUgLyogU3R5bGVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NBbGxJbk9uZS5jcHAKaW5kZXggMDIyYTM0OS4uNjRhNjAwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQWxsSW5PbmUuY3BwCkBAIC03OSw2ICs3OSw3IEBACiAjaW5jbHVkZSAiUnVsZVNldC5jcHAi
CiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguY3BwIgogI2luY2x1ZGUgIlNlbGVj
dG9yRmlsdGVyLmNwcCIKKyNpbmNsdWRlICJTdHlsZUJ1aWxkZXIuY3BwIgogI2luY2x1ZGUgIlN0
eWxlUHJvcGVydHlTZXQuY3BwIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuY3Bw
IgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NT
U1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDcwZDFjYTQuLjE1MGI5YjcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0yNywxNSArMjcsMTMgQEAKICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVkZSAiU3R5
bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgIlN0eWxlQnVpbGRlci5oIgogCiAjaW5jbHVkZSAiQ1NT
UHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIK
ICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1
ZGUgIlNoYWRvd1ZhbHVlLmgiCiAjaW5jbHVkZSAiU1ZHQ29sb3IuaCIKICNpbmNsdWRlICJTVkdO
YW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhaW50LmgiCkBAIC00Myw2ICs0MSw4IEBACiAjaW5jbHVk
ZSAiU1ZHUmVuZGVyU3R5bGVEZWZzLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgog
I2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYWRvd1ZhbHVlLmgiCisj
aW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CiAKQEAgLTEwMiwxNCArMTAyLDE0IEBAIHN0YXRpYyBDb2xvciBj
b2xvckZyb21TVkdDb2xvckNTU1ZhbHVlKFNWR0NvbG9yKiBzdmdDb2xvciwgY29uc3QgQ29sb3Im
IGZnQ29sb3IpCiAgICAgcmV0dXJuIGNvbG9yOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmFw
cGx5U1ZHUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQordm9pZCBT
dHlsZUJ1aWxkZXI6OmFwcGx5VG9TVkdSZW5kZXJTdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJl
c29sdmVyLCBDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgQVNTRVJU
KHZhbHVlKTsKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSAwOwogICAg
IGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogCi0gICAgY29uc3QgU3Rh
dGUmIHN0YXRlID0gbV9zdGF0ZTsKKyAgICBjb25zdCBTdHlsZVJlc29sdmVyOjpTdGF0ZSYgc3Rh
dGUgPSBzdHlsZVJlc29sdmVyLT5tX3N0YXRlOwogICAgIFNWR1JlbmRlclN0eWxlKiBzdmdzdHls
ZSA9IHN0YXRlLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7CiAKICAgICBib29sIGlzSW5oZXJp
dCA9IHN0YXRlLnBhcmVudE5vZGUoKSAmJiB2YWx1ZS0+aXNJbmhlcml0ZWRWYWx1ZSgpOwpAQCAt
MjMxLDE2ICsyMzEsMTYgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVNWR1Byb3BlcnR5KENT
U1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKGlzSW5oZXJpdCkgewogICAgICAgICAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlKiBz
dmdQYXJlbnRTdHlsZSA9IHN0YXRlLnBhcmVudFN0eWxlKCktPnN2Z1N0eWxlKCk7Ci0gICAgICAg
ICAgICAgICAgc3Znc3R5bGUtPnNldEZpbGxQYWludChzdmdQYXJlbnRTdHlsZS0+ZmlsbFBhaW50
VHlwZSgpLCBzdmdQYXJlbnRTdHlsZS0+ZmlsbFBhaW50Q29sb3IoKSwgc3ZnUGFyZW50U3R5bGUt
PmZpbGxQYWludFVyaSgpLCBhcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgYXBwbHlQcm9w
ZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0
RmlsbFBhaW50KHN2Z1BhcmVudFN0eWxlLT5maWxsUGFpbnRUeXBlKCksIHN2Z1BhcmVudFN0eWxl
LT5maWxsUGFpbnRDb2xvcigpLCBzdmdQYXJlbnRTdHlsZS0+ZmlsbFBhaW50VXJpKCksIHN0YXRl
LmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBzdGF0ZS5hcHBseVByb3BlcnR5VG9WaXNp
dGVkTGlua1N0eWxlKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgICAgICBzdmdzdHlsZS0+
c2V0RmlsbFBhaW50KFNWR1JlbmRlclN0eWxlOjppbml0aWFsRmlsbFBhaW50VHlwZSgpLCBTVkdS
ZW5kZXJTdHlsZTo6aW5pdGlhbEZpbGxQYWludENvbG9yKCksIFNWR1JlbmRlclN0eWxlOjppbml0
aWFsRmlsbFBhaW50VXJpKCksIGFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBhcHBseVBy
b3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkpOworICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5z
ZXRGaWxsUGFpbnQoU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxGaWxsUGFpbnRUeXBlKCksIFNWR1Jl
bmRlclN0eWxlOjppbml0aWFsRmlsbFBhaW50Q29sb3IoKSwgU1ZHUmVuZGVyU3R5bGU6OmluaXRp
YWxGaWxsUGFpbnRVcmkoKSwgc3RhdGUuYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCksIHN0
YXRlLmFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZhbHVlLT5pc1NWR1BhaW50
KCkpIHsKICAgICAgICAgICAgICAgICBTVkdQYWludCogc3ZnUGFpbnQgPSBzdGF0aWNfY2FzdDxT
VkdQYWludCo+KHZhbHVlKTsKLSAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0RmlsbFBhaW50
KHN2Z1BhaW50LT5wYWludFR5cGUoKSwgY29sb3JGcm9tU1ZHQ29sb3JDU1NWYWx1ZShzdmdQYWlu
dCwgc3RhdGUuc3R5bGUoKS0+Y29sb3IoKSksIHN2Z1BhaW50LT51cmkoKSwgYXBwbHlQcm9wZXJ0
eVRvUmVndWxhclN0eWxlKCksIGFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7Cisg
ICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldEZpbGxQYWludChzdmdQYWludC0+cGFpbnRUeXBl
KCksIGNvbG9yRnJvbVNWR0NvbG9yQ1NTVmFsdWUoc3ZnUGFpbnQsIHN0YXRlLnN0eWxlKCktPmNv
bG9yKCkpLCBzdmdQYWludC0+dXJpKCksIHN0YXRlLmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHls
ZSgpLCBzdGF0ZS5hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI0OCwxNiArMjQ4LDE2IEBA
IHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBD
U1NWYWx1ZSogdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChpc0luaGVyaXQpIHsK
ICAgICAgICAgICAgICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnUGFyZW50U3R5bGUgPSBz
dGF0ZS5wYXJlbnRTdHlsZSgpLT5zdmdTdHlsZSgpOwotICAgICAgICAgICAgICAgIHN2Z3N0eWxl
LT5zZXRTdHJva2VQYWludChzdmdQYXJlbnRTdHlsZS0+c3Ryb2tlUGFpbnRUeXBlKCksIHN2Z1Bh
cmVudFN0eWxlLT5zdHJva2VQYWludENvbG9yKCksIHN2Z1BhcmVudFN0eWxlLT5zdHJva2VQYWlu
dFVyaSgpLCBhcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgYXBwbHlQcm9wZXJ0eVRvVmlz
aXRlZExpbmtTdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0U3Ryb2tlUGFp
bnQoc3ZnUGFyZW50U3R5bGUtPnN0cm9rZVBhaW50VHlwZSgpLCBzdmdQYXJlbnRTdHlsZS0+c3Ry
b2tlUGFpbnRDb2xvcigpLCBzdmdQYXJlbnRTdHlsZS0+c3Ryb2tlUGFpbnRVcmkoKSwgc3RhdGUu
YXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCksIHN0YXRlLmFwcGx5UHJvcGVydHlUb1Zpc2l0
ZWRMaW5rU3R5bGUoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5z
ZXRTdHJva2VQYWludChTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbFN0cm9rZVBhaW50VHlwZSgpLCBT
VkdSZW5kZXJTdHlsZTo6aW5pdGlhbFN0cm9rZVBhaW50Q29sb3IoKSwgU1ZHUmVuZGVyU3R5bGU6
OmluaXRpYWxTdHJva2VQYWludFVyaSgpLCBhcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwg
YXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBzdmdz
dHlsZS0+c2V0U3Ryb2tlUGFpbnQoU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxTdHJva2VQYWludFR5
cGUoKSwgU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxTdHJva2VQYWludENvbG9yKCksIFNWR1JlbmRl
clN0eWxlOjppbml0aWFsU3Ryb2tlUGFpbnRVcmkoKSwgc3RhdGUuYXBwbHlQcm9wZXJ0eVRvUmVn
dWxhclN0eWxlKCksIHN0YXRlLmFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZh
bHVlLT5pc1NWR1BhaW50KCkpIHsKICAgICAgICAgICAgICAgICBTVkdQYWludCogc3ZnUGFpbnQg
PSBzdGF0aWNfY2FzdDxTVkdQYWludCo+KHZhbHVlKTsKLSAgICAgICAgICAgICAgICBzdmdzdHls
ZS0+c2V0U3Ryb2tlUGFpbnQoc3ZnUGFpbnQtPnBhaW50VHlwZSgpLCBjb2xvckZyb21TVkdDb2xv
ckNTU1ZhbHVlKHN2Z1BhaW50LCBzdGF0ZS5zdHlsZSgpLT5jb2xvcigpKSwgc3ZnUGFpbnQtPnVy
aSgpLCBhcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgYXBwbHlQcm9wZXJ0eVRvVmlzaXRl
ZExpbmtTdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0U3Ryb2tlUGFpbnQo
c3ZnUGFpbnQtPnBhaW50VHlwZSgpLCBjb2xvckZyb21TVkdDb2xvckNTU1ZhbHVlKHN2Z1BhaW50
LCBzdGF0ZS5zdHlsZSgpLT5jb2xvcigpKSwgc3ZnUGFpbnQtPnVyaSgpLCBzdGF0ZS5hcHBseVBy
b3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgc3RhdGUuYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtT
dHlsZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC01NzAsNyArNTcwLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVNWR1Byb3BlcnR5KENT
U1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICAgICAgICAgIGludCBibHVyID0g
aXRlbS0+Ymx1ciA/IGl0ZW0tPmJsdXItPmNvbXB1dGVMZW5ndGg8aW50PihzdGF0ZS5zdHlsZSgp
LCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCkpIDogMDsKICAgICAgICAgICAgIENvbG9yIGNvbG9y
OwogICAgICAgICAgICAgaWYgKGl0ZW0tPmNvbG9yKQotICAgICAgICAgICAgICAgIGNvbG9yID0g
Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoaXRlbS0+Y29sb3IuZ2V0KCkpOworICAgICAgICAgICAg
ICAgIGNvbG9yID0gc3R5bGVSZXNvbHZlci0+Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoaXRlbS0+
Y29sb3IuZ2V0KCkpOwogCiAgICAgICAgICAgICAvLyAtd2Via2l0LXN2Zy1zaGFkb3cgZG9lcyBz
aG91bGQgbm90IGhhdmUgYSBzcHJlYWQgb3Igc3R5bGUKICAgICAgICAgICAgIEFTU0VSVCghaXRl
bS0+c3ByZWFkKTsKQEAgLTYwNiw3ICs2MDYsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5
U1ZHUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogICAgICAgICB9
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvLyBJZiB5b3UgY3Jhc2ggaGVyZSwgaXQn
cyBiZWNhdXNlIHlvdSBhZGRlZCBhIGNzcyBwcm9wZXJ0eSBhbmQgYXJlIG5vdCBoYW5kbGluZyBp
dAotICAgICAgICAgICAgLy8gaW4gZWl0aGVyIHRoaXMgc3dpdGNoIHN0YXRlbWVudCBvciB0aGUg
b25lIGluIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkKKyAgICAgICAgICAgIC8vIGluIGVp
dGhlciB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQgb3IgdGhlIG9uZSBpbiBTdHlsZUJ1aWxkZXI6OmFw
cGx5VG9TVkdSZW5kZXJTdHlsZQogICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgwLCAi
dW5pbXBsZW1lbnRlZCBwcm9wZXJ0eUlEOiAlZCIsIGlkKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjQyNjRjMWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVCdWlsZGVyLmNwcApAQCAtMCwwICsxLDEyMTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykg
MjAwNC0yMDA1IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkKKyAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwNyBOaWNob2xhcyBTaGFua3MgKHdlYmtpdEBuaWNrc2hhbmtz
LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4KKyAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTEsIENvZGUgQXVyb3JhIEZvcnVtLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KA
nSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisg
KiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTdHlsZUJ1aWxkZXIuaCIKKworI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUu
aCIKKyNpbmNsdWRlICJDU1NHcmFkaWVudFZhbHVlLmgiCisjaWYgRU5BQkxFKENTU19JTUFHRV9T
RVQpCisjaW5jbHVkZSAiQ1NTSW1hZ2VTZXRWYWx1ZS5oIgorI2VuZGlmCisjaW5jbHVkZSAiQ1NT
UGFyc2VyLmgiIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBpbmNsdWRlIHdoZW4gQ1NTX1ZBUklBQkxF
UyB3YXMgZml4ZWQuCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJD
U1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNp
bmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ1NTUmVmbGVjdFZhbHVlLmgi
CisjaW5jbHVkZSAiQ291bnRlci5oIgorI2luY2x1ZGUgIkNvdW50ZXJDb250ZW50LmgiCisjaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQorI2luY2x1ZGUgIkRhc2hib2FyZFJlZ2lvbi5oIgor
I2VuZGlmCisjaW5jbHVkZSAiRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5oIgorI2luY2x1ZGUgIkZv
bnRGZWF0dXJlVmFsdWUuaCIKKyNpbmNsdWRlICJGb250VmFsdWUuaCIKKyNpbmNsdWRlICJMb2Nh
bGVUb1NjcmlwdE1hcHBpbmcuaCIKKyNpbmNsdWRlICJQYWlyLmgiCisjaW5jbHVkZSAiUXVvdGVz
RGF0YS5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
KyNpbmNsdWRlICJTaGFkb3dEYXRhLmgiCisjaW5jbHVkZSAiU2hhZG93VmFsdWUuaCIKKyNpbmNs
dWRlICJTdHlsZUdlbmVyYXRlZEltYWdlLmgiCisjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5o
IgorI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuaCIKKyNpbmNsdWRlICJTdHlsZVJl
c29sdmVyLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKyNkZWZpbmUgSEFORExFX0lOSEVSSVQocHJvcCwgUHJvcCkgXAoraWYgKGlzSW5oZXJpdCkg
eyBcCisgICAgc3RhdGUuc3R5bGUoKS0+c2V0IyNQcm9wKHN0YXRlLnBhcmVudFN0eWxlKCktPnBy
b3AoKSk7IFwKKyAgICByZXR1cm47IFwKK30KKworI2RlZmluZSBIQU5ETEVfSU5IRVJJVF9BTkRf
SU5JVElBTChwcm9wLCBQcm9wKSBcCitIQU5ETEVfSU5IRVJJVChwcm9wLCBQcm9wKSBcCitpZiAo
aXNJbml0aWFsKSB7IFwKKyAgICBzdGF0ZS5zdHlsZSgpLT5zZXQjI1Byb3AoUmVuZGVyU3R5bGU6
OmluaXRpYWwjI1Byb3AoKSk7IFwKKyAgICByZXR1cm47IFwKK30KKworU3R5bGVCdWlsZGVyOjpT
dHlsZUJ1aWxkZXIoKSA6IG1fZGVwcmVjYXRlZFN0eWxlQnVpbGRlcihEZXByZWNhdGVkU3R5bGVC
dWlsZGVyOjpzaGFyZWRTdHlsZUJ1aWxkZXIoKSkKK3sKK30KKworc3RhdGljIGJvb2wgY3JlYXRl
R3JpZFRyYWNrQnJlYWR0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIGNvbnN0
IFN0eWxlUmVzb2x2ZXI6OlN0YXRlJiBzdGF0ZSwgTGVuZ3RoJiB3b3JraW5nTGVuZ3RoKQorewor
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVdlYmtpdE1pbkNv
bnRlbnQpIHsKKyAgICAgICAgd29ya2luZ0xlbmd0aCA9IExlbmd0aChNaW5Db250ZW50KTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlV2Via2l0TWF4Q29udGVudCkgeworICAgICAgICB3b3JraW5nTGVu
Z3RoID0gTGVuZ3RoKE1heENvbnRlbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICB3b3JraW5nTGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhl
ZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBWaWV3cG9ydFBlcmNlbnRh
Z2VDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RF
bGVtZW50U3R5bGUoKSwgc3RhdGUuc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKKyAgICBpZiAo
d29ya2luZ0xlbmd0aC5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTGVuZ3RoKCkpCisgICAgICAgIHdvcmtpbmdMZW5ndGgu
c2V0UXVpcmsocHJpbWl0aXZlVmFsdWUtPmlzUXVpcmtWYWx1ZSgpKTsKKworICAgIHJldHVybiB0
cnVlOworfQorCitzdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tTaXplKENTU1ZhbHVlKiB2YWx1
ZSwgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXplLCBjb25zdCBTdHlsZVJlc29sdmVyOjpTdGF0ZSYg
c3RhdGUpCit7CisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBQYWlyKiBtaW5NYXhU
cmFja0JyZWFkdGggPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCk7CisgICAgaWYgKCFt
aW5NYXhUcmFja0JyZWFkdGgpIHsKKyAgICAgICAgTGVuZ3RoIHdvcmtpbmdMZW5ndGg7CisgICAg
ICAgIGlmICghY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChwcmltaXRpdmVWYWx1ZSwgc3RhdGUsIHdv
cmtpbmdMZW5ndGgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHRyYWNr
U2l6ZS5zZXRMZW5ndGgod29ya2luZ0xlbmd0aCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIExlbmd0aCBtaW5UcmFja0JyZWFkdGg7CisgICAgTGVuZ3RoIG1heFRyYWNrQnJl
YWR0aDsKKyAgICBpZiAoIWNyZWF0ZUdyaWRUcmFja0JyZWFkdGgobWluTWF4VHJhY2tCcmVhZHRo
LT5maXJzdCgpLCBzdGF0ZSwgbWluVHJhY2tCcmVhZHRoKSB8fCAhY3JlYXRlR3JpZFRyYWNrQnJl
YWR0aChtaW5NYXhUcmFja0JyZWFkdGgtPnNlY29uZCgpLCBzdGF0ZSwgbWF4VHJhY2tCcmVhZHRo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdHJhY2tTaXplLnNldE1pbk1heChtaW5U
cmFja0JyZWFkdGgsIG1heFRyYWNrQnJlYWR0aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0
YXRpYyBib29sIGNyZWF0ZUdyaWRUcmFja0xpc3QoQ1NTVmFsdWUqIHZhbHVlLCBWZWN0b3I8R3Jp
ZFRyYWNrU2l6ZT4mIHRyYWNrU2l6ZXMsIGNvbnN0IFN0eWxlUmVzb2x2ZXI6OlN0YXRlJiBzdGF0
ZSkKK3sKKyAgICAvLyBIYW5kbGUgJ25vbmUnLgorICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICByZXR1cm4gcHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lOworICAgIH0KKworICAgIGlm
ICghdmFsdWUtPmlzVmFsdWVMaXN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZv
ciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaSA9IHZhbHVlOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNl
KCkpIHsKKyAgICAgICAgQ1NTVmFsdWUqIGN1cnJWYWx1ZSA9IGkudmFsdWUoKTsKKyAgICAgICAg
R3JpZFRyYWNrU2l6ZSB0cmFja1NpemU7CisgICAgICAgIGlmICghY3JlYXRlR3JpZFRyYWNrU2l6
ZShjdXJyVmFsdWUsIHRyYWNrU2l6ZSwgc3RhdGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIHRyYWNrU2l6ZXMuYXBwZW5kKHRyYWNrU2l6ZSk7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCisKK3N0YXRpYyBib29sIGNyZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1
ZSogdmFsdWUsIEdyaWRQb3NpdGlvbiYgcG9zaXRpb24pCit7CisgICAgLy8gRm9yIG5vdywgd2Ug
b25seSBhY2NlcHQ6IDxpbnRlZ2VyPiB8ICdhdXRvJworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7CisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihwcmltaXRpdmVWYWx1ZS0+aXNOdW1iZXIoKSk7CisgICAgcG9zaXRpb24uc2V0SW50ZWdl
clBvc2l0aW9uKHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorc3RhdGljIGJvb2wgaGFzVmFyaWFi
bGVSZWZlcmVuY2UoQ1NTVmFsdWUqIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICByZXR1cm4g
cHJpbWl0aXZlVmFsdWUtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCk7CisgICAgfQorCisgICAgaWYg
KHZhbHVlLT5pc0NhbGN1bGF0aW9uVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PENTU0NhbGNWYWx1ZSo+KHZhbHVlKS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKTsKKworICAgIGlm
ICh2YWx1ZS0+aXNSZWZsZWN0VmFsdWUoKSkgeworICAgICAgICBDU1NSZWZsZWN0VmFsdWUqIHJl
ZmxlY3RWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1JlZmxlY3RWYWx1ZSo+KHZhbHVlKTsKKyAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGRpcmVjdGlvbiA9IHJlZmxlY3RWYWx1ZS0+ZGlyZWN0aW9u
KCk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBvZmZzZXQgPSByZWZsZWN0VmFsdWUtPm9m
ZnNldCgpOworICAgICAgICBDU1NWYWx1ZSogbWFzayA9IHJlZmxlY3RWYWx1ZS0+bWFzaygpOwor
ICAgICAgICByZXR1cm4gKGRpcmVjdGlvbiAmJiBoYXNWYXJpYWJsZVJlZmVyZW5jZShkaXJlY3Rp
b24pKSB8fCAob2Zmc2V0ICYmIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKG9mZnNldCkpIHx8IChtYXNr
ICYmIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKG1hc2spKTsKKyAgICB9CisKKyAgICBmb3IgKENTU1Zh
bHVlTGlzdEl0ZXJhdG9yIGkgPSB2YWx1ZTsgaS5oYXNNb3JlKCk7IGkuYWR2YW5jZSgpKSB7Cisg
ICAgICAgIGlmIChoYXNWYXJpYWJsZVJlZmVyZW5jZShpLnZhbHVlKCkpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFN0eWxl
QnVpbGRlcjo6cmVzb2x2ZVZhcmlhYmxlcyhTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBD
U1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIFZlY3RvcjxzdGQ6OnBhaXI8Q1NTUHJv
cGVydHlJRCwgU3RyaW5nPiA+JiBrbm93bkV4cHJlc3Npb25zKQoreworICAgIHN0ZDo6cGFpcjxD
U1NQcm9wZXJ0eUlELCBTdHJpbmc+IGV4cHJlc3Npb24oaWQsIHZhbHVlLT5zZXJpYWxpemVSZXNv
bHZpbmdWYXJpYWJsZXMoKihzdHlsZVJlc29sdmVyLT5tX3N0YXRlLnN0eWxlKCktPnZhcmlhYmxl
cygpKSk7CisKKyAgICBpZiAoa25vd25FeHByZXNzaW9ucy5jb250YWlucyhleHByZXNzaW9uKSkK
KyAgICAgICAgcmV0dXJuOyAvLyBjeWNsZSBkZXRlY3RlZC4KKworICAgIGtub3duRXhwcmVzc2lv
bnMuYXBwZW5kKGV4cHJlc3Npb24pOworCisgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGZhc3Rl
ciBub3QgdG8gcmUtcGFyc2UgZnJvbSBzdHJpbmdzLCBidXQgZm9yIG5vdyBDU1MgcHJvcGVydHkg
dmFsaWRhdGlvbiBsaXZlcyBpbnNpZGUgdGhlIHBhcnNlciBzbyB3ZSBkbyBpdCB0aGVyZS4KKyAg
ICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ+IHJlc3VsdFNldCA9IE11dGFibGVTdHls
ZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKKyAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VWYWx1ZShy
ZXN1bHRTZXQuZ2V0KCksIGlkLCBleHByZXNzaW9uLnNlY29uZCwgZmFsc2UsIHN0eWxlUmVzb2x2
ZXItPmRvY3VtZW50KCkpKQorICAgICAgICByZXR1cm47IC8vIGV4cHJlc3Npb24gZmFpbGVkIHRv
IHBhcnNlLgorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdFNldC0+cHJvcGVy
dHlDb3VudCgpOyBpKyspIHsKKyAgICAgICAgU3R5bGVQcm9wZXJ0eVNldDo6UHJvcGVydHlSZWZl
cmVuY2UgcHJvcGVydHkgPSByZXN1bHRTZXQtPnByb3BlcnR5QXQoaSk7CisgICAgICAgIGlmIChw
cm9wZXJ0eS5pZCgpICE9IENTU1Byb3BlcnR5VmFyaWFibGUgJiYgaGFzVmFyaWFibGVSZWZlcmVu
Y2UocHJvcGVydHkudmFsdWUoKSkpCisgICAgICAgICAgICByZXNvbHZlVmFyaWFibGVzKHN0eWxl
UmVzb2x2ZXIsIHByb3BlcnR5LmlkKCksIHByb3BlcnR5LnZhbHVlKCksIGtub3duRXhwcmVzc2lv
bnMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcHBseVRvUmVuZGVyU3R5bGUoc3R5bGVS
ZXNvbHZlciwgcHJvcGVydHkuaWQoKSwgcHJvcGVydHkudmFsdWUoKSk7CisgICAgfQorfQorI2Vu
ZGlmCisKK2lubGluZSBib29sIGlzVmFsaWRWaXNpdGVkTGlua1Byb3BlcnR5KENTU1Byb3BlcnR5
SUQgaWQpCit7CisgICAgc3dpdGNoIChpZCkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
VG9wQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3I6CisjaWYgRU5BQkxFKENT
UzNfVEVYVCkKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25Db2xvcjoK
KyNlbmRpZiAvLyBDU1MzX1RFWFQKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhh
c2lzQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3I6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcjoKKyNpZiBFTkFCTEUoU1ZHKQor
ICAgIGNhc2UgQ1NTUHJvcGVydHlGaWxsOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2U6Cisj
ZW5kaWYKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFN0eWxlQnVpbGRlcjo6YXBw
bHlUb1JlbmRlclN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1Byb3BlcnR5
SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAg
ICBpZiAoaWQgIT0gQ1NTUHJvcGVydHlWYXJpYWJsZSAmJiBoYXNWYXJpYWJsZVJlZmVyZW5jZSh2
YWx1ZSkpIHsKKyAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDU1NQcm9wZXJ0eUlELCBTdHJpbmc+
ID4ga25vd25FeHByZXNzaW9uczsKKyAgICAgICAgcmVzb2x2ZVZhcmlhYmxlcyhzdHlsZVJlc29s
dmVyLCBpZCwgdmFsdWUsIGtub3duRXhwcmVzc2lvbnMpOworICAgICAgICByZXR1cm47CisgICAg
fQorI2VuZGlmCisKKyAgICAvLyBDU1MgdmFyaWFibGVzIGRvbid0IHJlc29sdmUgc2hvcnRoYW5k
cyBhdCBwYXJzaW5nIHRpbWUsIHNvIHRoaXMgc2hvdWxkIGJlICphZnRlciogaGFuZGxpbmcgdmFy
aWFibGVzLgorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWlzRXhwYW5kZWRTaG9ydGhhbmQoaWQp
LCAiU2hvcnRoYW5kIHByb3BlcnR5IGlkID0gJWQgd2Fzbid0IGV4cGFuZGVkIGF0IHBhcnNpbmcg
dGltZSIsIGlkKTsKKworICAgIFN0eWxlUmVzb2x2ZXI6OlN0YXRlJiBzdGF0ZSA9IHN0eWxlUmVz
b2x2ZXItPm1fc3RhdGU7CisgICAgYm9vbCBpc0luaGVyaXQgPSBzdGF0ZS5wYXJlbnROb2RlKCkg
JiYgdmFsdWUtPmlzSW5oZXJpdGVkVmFsdWUoKTsKKyAgICBib29sIGlzSW5pdGlhbCA9IHZhbHVl
LT5pc0luaXRpYWxWYWx1ZSgpIHx8ICghc3RhdGUucGFyZW50Tm9kZSgpICYmIHZhbHVlLT5pc0lu
aGVyaXRlZFZhbHVlKCkpOworCisgICAgQVNTRVJUKCFpc0luaGVyaXQgfHwgIWlzSW5pdGlhbCk7
IC8vIGlzSW5oZXJpdCAtPiAhaXNJbml0aWFsICYmIGlzSW5pdGlhbCAtPiAhaXNJbmhlcml0Cisg
ICAgQVNTRVJUKCFpc0luaGVyaXQgfHwgKHN0YXRlLnBhcmVudE5vZGUoKSAmJiBzdGF0ZS5wYXJl
bnRTdHlsZSgpKSk7IC8vIGlzSW5oZXJpdCAtPiAoc3RhdGUucGFyZW50Tm9kZSgpICYmIHN0YXRl
LnBhcmVudFN0eWxlKCkpCisKKyAgICBpZiAoIXN0YXRlLmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJT
dHlsZSgpICYmICghc3RhdGUuYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpIHx8ICFp
c1ZhbGlkVmlzaXRlZExpbmtQcm9wZXJ0eShpZCkpKSB7CisgICAgICAgIC8vIExpbWl0IHRoZSBw
cm9wZXJ0aWVzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gb25seSB0aGUgb25lcyBob25vcmVkIGJ5
IDp2aXNpdGVkLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGlzSW5oZXJpdCAm
JiAhc3RhdGUucGFyZW50U3R5bGUoKS0+aGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMo
KSAmJiAhQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHkoaWQpKQorICAgICAgICBzdGF0
ZS5wYXJlbnRTdHlsZSgpLT5zZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpOwor
CisgICAgLy8gQ2hlY2sgbG9va3VwIHRhYmxlIGZvciBpbXBsZW1lbnRhdGlvbnMgYW5kIHVzZSB3
aGVuIGF2YWlsYWJsZS4KKyAgICBjb25zdCBQcm9wZXJ0eUhhbmRsZXImIGhhbmRsZXIgPSBtX2Rl
cHJlY2F0ZWRTdHlsZUJ1aWxkZXIucHJvcGVydHlIYW5kbGVyKGlkKTsKKyAgICBpZiAoaGFuZGxl
ci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgaWYgKGlzSW5oZXJpdCkKKyAgICAgICAgICAgIGhhbmRs
ZXIuYXBwbHlJbmhlcml0VmFsdWUoaWQsIHN0eWxlUmVzb2x2ZXIpOworICAgICAgICBlbHNlIGlm
IChpc0luaXRpYWwpCisgICAgICAgICAgICBoYW5kbGVyLmFwcGx5SW5pdGlhbFZhbHVlKGlkLCBz
dHlsZVJlc29sdmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaGFuZGxlci5hcHBseVZh
bHVlKGlkLCBzdHlsZVJlc29sdmVyLCB2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpID8gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSkgOiAwOwor
CisgICAgZmxvYXQgem9vbUZhY3RvciA9IHN0YXRlLnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsK
KworICAgIC8vIFdoYXQgZm9sbG93cyBpcyBhIGxpc3QgdGhhdCBtYXBzIHRoZSBDU1MgcHJvcGVy
dGllcyBpbnRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgZnJvbnQtZW5kCisgICAgLy8gUmVuZGVyU3R5
bGUgdmFsdWVzLgorICAgIHN3aXRjaCAoaWQpIHsKKyAgICAvLyBsaXN0cworICAgIGNhc2UgQ1NT
UHJvcGVydHlDb250ZW50OgorICAgICAgICAvLyBMaXN0IG9mIHN0cmluZywgdXJpLCBjb3VudGVy
LCBhdHRyLCBpLgorICAgICAgICB7CisgICAgICAgICAgICAvLyBGSVhNRTogSW4gQ1NTMywgaXQg
d2lsbCBiZSBwb3NzaWJsZSB0byBpbmhlcml0IGNvbnRlbnQuIEluIENTUzIgaXQgaXMgbm90LiBU
aGlzCisgICAgICAgICAgICAvLyBub3RlIGlzIGEgcmVtaW5kZXIgdGhhdCBldmVudHVhbGx5ICJp
bmhlcml0IiBuZWVkcyB0byBiZSBzdXBwb3J0ZWQuCisKKyAgICAgICAgICAgIGlmIChpc0luaXRp
YWwpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5jbGVhckNvbnRlbnQoKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgh
dmFsdWUtPmlzVmFsdWVMaXN0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICBib29sIGRpZFNldCA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChDU1NWYWx1ZUxpc3RJ
dGVyYXRvciBpID0gdmFsdWU7IGkuaGFzTW9yZSgpOyBpLmFkdmFuY2UoKSkgeworICAgICAgICAg
ICAgICAgIENTU1ZhbHVlKiBpdGVtID0gaS52YWx1ZSgpOworICAgICAgICAgICAgICAgIGlmIChp
dGVtLT5pc0ltYWdlR2VuZXJhdG9yVmFsdWUoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
aXRlbS0+aXNHcmFkaWVudFZhbHVlKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5z
dHlsZSgpLT5zZXRDb250ZW50KFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxDU1NHcmFkaWVudFZhbHVlKj4oaXRlbSktPmdyYWRpZW50V2l0aFN0eWxlc1Jlc29sdmVkKHN0
eWxlUmVzb2x2ZXIpLmdldCgpKSwgZGlkU2V0KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudChTdHlsZUdl
bmVyYXRlZEltYWdlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSo+
KGl0ZW0pKSwgZGlkU2V0KTsKKyAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKKyNp
ZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0t
PmlzSW1hZ2VTZXRWYWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCkt
PnNldENvbnRlbnQoc3R5bGVSZXNvbHZlci0+c2V0T3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3Bl
cnR5Q29udGVudCwgc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VTZXRWYWx1ZSo+KGl0ZW0pKSwgZGlkU2V0
KTsKKyAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKKyNlbmRpZgorICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChpdGVtLT5pc0ltYWdlVmFsdWUoKSkgewor
ICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KHN0eWxlUmVzb2x2
ZXItPmNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUNvbnRlbnQsIHN0YXRpY19j
YXN0PENTU0ltYWdlVmFsdWUqPihpdGVtKSksIGRpZFNldCk7CisgICAgICAgICAgICAgICAgICAg
IGRpZFNldCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgp
KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBjb250ZW50VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KGl0ZW0pOworCisgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRWYWx1ZS0+aXNTdHJpbmco
KSkgeworICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KGNvbnRl
bnRWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKS5pbXBsKCksIGRpZFNldCk7CisgICAgICAgICAgICAg
ICAgICAgIGRpZFNldCA9IHRydWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb250ZW50
VmFsdWUtPmlzQXR0cigpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBDYW4gYSBu
YW1lc3BhY2UgYmUgc3BlY2lmaWVkIGZvciBhbiBhdHRyKGZvbyk/CisgICAgICAgICAgICAgICAg
ICAgIGlmIChzdGF0ZS5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBOT1BTRVVETykKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFVuaXF1ZSgpOworICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5wYXJlbnRTdHlsZSgp
LT5zZXRVbmlxdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBhdHRyKG51
bGxBdG9tLCBjb250ZW50VmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkuaW1wbCgpLCBudWxsQXRvbSk7
CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBzdGF0ZS5l
bGVtZW50KCktPmdldEF0dHJpYnV0ZShhdHRyKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUu
c3R5bGUoKS0+c2V0Q29udGVudCh2YWx1ZS5pc051bGwoKSA/IGVtcHR5QXRvbSA6IHZhbHVlLmlt
cGwoKSwgZGlkU2V0KTsKKyAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgdGhlIGZhY3QgdGhhdCB0aGUgYXR0cmlidXRlIHZh
bHVlIGFmZmVjdHMgdGhlIHN0eWxlCisgICAgICAgICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIt
PnJ1bGVTZXRzKCkuZmVhdHVyZXMoKS5hdHRyc0luUnVsZXMuYWRkKGF0dHIubG9jYWxOYW1lKCku
aW1wbCgpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRWYWx1ZS0+aXNDb3Vu
dGVyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgQ291bnRlciogY291bnRlclZhbHVlID0gY29u
dGVudFZhbHVlLT5nZXRDb3VudGVyVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgRUxpc3RT
dHlsZVR5cGUgbGlzdFN0eWxlVHlwZSA9IE5vbmVMaXN0U3R5bGU7CisgICAgICAgICAgICAgICAg
ICAgIGludCBsaXN0U3R5bGVJZGVudCA9IGNvdW50ZXJWYWx1ZS0+bGlzdFN0eWxlSWRlbnQoKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGxpc3RTdHlsZUlkZW50ICE9IENTU1ZhbHVlTm9uZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0aWNfY2FzdDxFTGlz
dFN0eWxlVHlwZT4obGlzdFN0eWxlSWRlbnQgLSBDU1NWYWx1ZURpc2MpOworICAgICAgICAgICAg
ICAgICAgICBPd25QdHI8Q291bnRlckNvbnRlbnQ+IGNvdW50ZXIgPSBhZG9wdFB0cihuZXcgQ291
bnRlckNvbnRlbnQoY291bnRlclZhbHVlLT5pZGVudGlmaWVyKCksIGxpc3RTdHlsZVR5cGUsIGNv
dW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5
bGUoKS0+c2V0Q29udGVudChjb3VudGVyLnJlbGVhc2UoKSwgZGlkU2V0KTsKKyAgICAgICAgICAg
ICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAg
ICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlT3BlblF1b3RlOgorICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudChPUEVOX1FVT1RFLCBkaWRTZXQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQ2xvc2VRdW90ZToK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldENvbnRlbnQoQ0xPU0Vf
UVVPVEUsIGRpZFNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVOb09wZW5RdW90ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxl
KCktPnNldENvbnRlbnQoTk9fT1BFTl9RVU9URSwgZGlkU2V0KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRpZFNldCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vQ2xvc2VRdW90ZToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldENvbnRlbnQoTk9fQ0xPU0VfUVVPVEUsIGRp
ZFNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBub3JtYWwgYW5kIG5vbmUgZG8gbm90IGhhdmUgYW55IGVm
ZmVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHsgfQorICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFkaWRT
ZXQpCisgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+Y2xlYXJDb250ZW50KCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5UXVvdGVzOgor
ICAgICAgICBpZiAoaXNJbmhlcml0KSB7CisgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRR
dW90ZXMoc3RhdGUucGFyZW50U3R5bGUoKS0+cXVvdGVzKCkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGlmIChpc0luaXRpYWwpIHsKKyAgICAgICAgICAgIHN0YXRl
LnN0eWxlKCktPnNldFF1b3RlcygwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKKyAgICAgICAgICAgIENTU1ZhbHVl
TGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKKyAgICAgICAg
ICAgIFJlZlB0cjxRdW90ZXNEYXRhPiBxdW90ZXMgPSBRdW90ZXNEYXRhOjpjcmVhdGUoKTsKKyAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC0+bGVuZ3RoKCk7IGkgKz0gMikg
eworICAgICAgICAgICAgICAgIENTU1ZhbHVlKiBmaXJzdCA9IGxpc3QtPml0ZW1XaXRob3V0Qm91
bmRzQ2hlY2soaSk7CisgICAgICAgICAgICAgICAgLy8gaXRlbSgpIHJldHVybnMgbnVsbCBpZiBv
dXQgb2YgYm91bmRzIHNvIHRoaXMgaXMgc2FmZS4KKyAgICAgICAgICAgICAgICBDU1NWYWx1ZSog
c2Vjb25kID0gbGlzdC0+aXRlbShpICsgMSk7CisgICAgICAgICAgICAgICAgaWYgKCFzZWNvbmQp
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGZpcnN0LT5pc1ByaW1pdGl2ZVZhbHVlKCkpOworICAg
ICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNlY29uZC0+aXNQ
cmltaXRpdmVWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc3RhcnRRdW90ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZmlyc3QpLT5nZXRTdHJpbmdWYWx1ZSgpOwor
ICAgICAgICAgICAgICAgIFN0cmluZyBlbmRRdW90ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4oc2Vjb25kKS0+Z2V0U3RyaW5nVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBxdW90
ZXMtPmFkZFBhaXIoc3RkOjptYWtlX3BhaXIoc3RhcnRRdW90ZSwgZW5kUXVvdGUpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFF1b3RlcyhxdW90ZXMpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZSkgeworICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1Zh
bHVlTm9uZSkKKyAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRRdW90ZXMoUXVvdGVz
RGF0YTo6Y3JlYXRlKCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICAvLyBTaG9y
dGhhbmQgcHJvcGVydGllcy4KKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udDoKKyAgICAgICAgaWYg
KGlzSW5oZXJpdCkgeworICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlv
biA9IHN0YXRlLnBhcmVudFN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICAgICAg
c3RhdGUuc3R5bGUoKS0+c2V0TGluZUhlaWdodChzdGF0ZS5wYXJlbnRTdHlsZSgpLT5zcGVjaWZp
ZWRMaW5lSGVpZ2h0KCkpOworICAgICAgICAgICAgc3RhdGUuc2V0TGluZUhlaWdodFZhbHVlKDAp
OworICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNj
cmlwdGlvbik7CisgICAgICAgIH0gZWxzZSBpZiAoaXNJbml0aWFsKSB7CisgICAgICAgICAgICBT
ZXR0aW5ncyogc2V0dGluZ3MgPSBzdHlsZVJlc29sdmVyLT5kb2N1bWVudFNldHRpbmdzKCk7Cisg
ICAgICAgICAgICBBU1NFUlQoc2V0dGluZ3MpOyAvLyBJZiB3ZSdyZSBkb2luZyBzdHlsZSByZXNv
bHV0aW9uLCB0aGlzIGRvY3VtZW50IHNob3VsZCBhbHdheXMgYmUgaW4gYSBmcmFtZSBhbmQgdGh1
cyBoYXZlIHNldHRpbmdzCisgICAgICAgICAgICBpZiAoIXNldHRpbmdzKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPmluaXRpYWxpemVGb250U3R5
bGUoc2V0dGluZ3MpOworICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlKSB7CisgICAg
ICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFs
TGluZUhlaWdodCgpKTsKKyAgICAgICAgICAgIHN0YXRlLnNldExpbmVIZWlnaHRWYWx1ZSgwKTsK
KworICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKKyAgICAgICAg
ICAgIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+c3lzdGVtRm9udChwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSwgZm9udERlc2NyaXB0aW9uKTsKKworICAgICAgICAgICAgLy8gRG91Ymxl
LWNoZWNrIGFuZCBzZWUgaWYgdGhlIHRoZW1lIGRpZCBhbnl0aGluZy4gSWYgbm90LCBkb24ndCBi
b3RoZXIgdXBkYXRpbmcgdGhlIGZvbnQuCisgICAgICAgICAgICBpZiAoZm9udERlc2NyaXB0aW9u
LmlzQWJzb2x1dGVTaXplKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHJl
bmRlcmluZyBtb2RlIGFuZCBwcmludGVyIGZvbnQgc2V0dGluZ3MgYXJlIHVwZGF0ZWQuCisgICAg
ICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnRT
ZXR0aW5ncygpOworICAgICAgICAgICAgICAgIEFTU0VSVChzZXR0aW5ncyk7IC8vIElmIHdlJ3Jl
IGRvaW5nIHN0eWxlIHJlc29sdXRpb24sIHRoaXMgZG9jdW1lbnQgc2hvdWxkIGFsd2F5cyBiZSBp
biBhIGZyYW1lIGFuZCB0aHVzIGhhdmUgc2V0dGluZ3MKKyAgICAgICAgICAgICAgICBpZiAoIXNl
dHRpbmdzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldFJlbmRlcmluZ01vZGUoc2V0dGluZ3MtPmZvbnRSZW5kZXJpbmdNb2Rl
KCkpOworICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRVc2VQcmludGVyRm9udChz
dHlsZVJlc29sdmVyLT5kb2N1bWVudCgpLT5wcmludGluZygpIHx8ICFzZXR0aW5ncy0+c2NyZWVu
Rm9udFN1YnN0aXR1dGlvbkVuYWJsZWQoKSk7CisKKyAgICAgICAgICAgICAgICAvLyBIYW5kbGUg
dGhlIHpvb20gZmFjdG9yLgorICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21w
dXRlZFNpemUoc3R5bGVSZXNvbHZlci0+Z2V0Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUo
c3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKSwgc3RhdGUuc3R5bGUoKSwgZm9udERlc2NyaXB0aW9u
LmlzQWJzb2x1dGVTaXplKCksIGZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCksIHN0eWxl
UmVzb2x2ZXItPnVzZVNWR1pvb21SdWxlcygpKSk7CisgICAgICAgICAgICAgICAgc3R5bGVSZXNv
bHZlci0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzRm9udFZhbHVlKCkpIHsKKyAgICAgICAgICAg
IEZvbnRWYWx1ZSogZm9udCA9IHN0YXRpY19jYXN0PEZvbnRWYWx1ZSo+KHZhbHVlKTsKKyAgICAg
ICAgICAgIGlmICghZm9udC0+c3R5bGUgfHwgIWZvbnQtPnZhcmlhbnQgfHwgIWZvbnQtPndlaWdo
dAorICAgICAgICAgICAgICAgIHx8ICFmb250LT5zaXplIHx8ICFmb250LT5saW5lSGVpZ2h0IHx8
ICFmb250LT5mYW1pbHkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYXBw
bHlUb1JlbmRlclN0eWxlKHN0eWxlUmVzb2x2ZXIsIENTU1Byb3BlcnR5Rm9udFN0eWxlLCBmb250
LT5zdHlsZS5nZXQoKSk7CisgICAgICAgICAgICBhcHBseVRvUmVuZGVyU3R5bGUoc3R5bGVSZXNv
bHZlciwgQ1NTUHJvcGVydHlGb250VmFyaWFudCwgZm9udC0+dmFyaWFudC5nZXQoKSk7CisgICAg
ICAgICAgICBhcHBseVRvUmVuZGVyU3R5bGUoc3R5bGVSZXNvbHZlciwgQ1NTUHJvcGVydHlGb250
V2VpZ2h0LCBmb250LT53ZWlnaHQuZ2V0KCkpOworICAgICAgICAgICAgLy8gVGhlIHByZXZpb3Vz
IHByb3BlcnRpZXMgY2FuIGRpcnR5IG91ciBmb250IGJ1dCB0aGV5IGRvbid0IHRyeSB0byByZWFk
IHRoZSBmb250J3MKKyAgICAgICAgICAgIC8vIHByb3BlcnRpZXMgYmFjaywgd2hpY2ggaXMgc2Fm
ZS4gSG93ZXZlciBpZiBmb250LXNpemUgaXMgdXNpbmcgdGhlICdleCcgdW5pdCwgaXQgd2lsbAor
ICAgICAgICAgICAgLy8gbmVlZCBxdWVyeSB0aGUgZGlydGllZCBmb250J3MgeC1oZWlnaHQgdG8g
Z2V0IHRoZSBjb21wdXRlZCBzaXplLiBUbyBiZSBzYWZlIGluIHRoaXMKKyAgICAgICAgICAgIC8v
IGNhc2UsIGxldCdzIGp1c3QgdXBkYXRlIHRoZSBmb250IG5vdy4KKyAgICAgICAgICAgIHN0eWxl
UmVzb2x2ZXItPnVwZGF0ZUZvbnQoKTsKKyAgICAgICAgICAgIGFwcGx5VG9SZW5kZXJTdHlsZShz
dHlsZVJlc29sdmVyLCBDU1NQcm9wZXJ0eUZvbnRTaXplLCBmb250LT5zaXplLmdldCgpKTsKKwor
ICAgICAgICAgICAgc3RhdGUuc2V0TGluZUhlaWdodFZhbHVlKGZvbnQtPmxpbmVIZWlnaHQuZ2V0
KCkpOworCisgICAgICAgICAgICBhcHBseVRvUmVuZGVyU3R5bGUoc3R5bGVSZXNvbHZlciwgQ1NT
UHJvcGVydHlGb250RmFtaWx5LCBmb250LT5mYW1pbHkuZ2V0KCkpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybjsKKworICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjoKKyAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xvcjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
ckxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1czoKKyAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyUmlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmc6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3A6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlMaXN0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbjoKKyAgICBjYXNlIENT
U1Byb3BlcnR5T3V0bGluZToKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3c6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVBhZGRpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb246Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9y
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJTdGFydDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
UmFkaXVzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5zOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5SdWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4RmxvdzoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0R3JpZENvbHVtbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZFJvdzoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcnF1ZWU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2s6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFza1JlcGVhdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhh
c2lzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1PcmlnaW46CisjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRXcmFwOgorI2VuZGlmCisgICAgICAgIEFTU0VSVChpc0V4cGFuZGVkU2hvcnRo
YW5kKGlkKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KworICAgIC8vIENTUzMgUHJvcGVydGllcworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0U2hhZG93
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3hTaGFkb3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJveFNoYWRvdzogeworICAgICAgICBpZiAoaXNJbmhlcml0KSB7CisgICAgICAgICAgICBp
ZiAoaWQgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93KQorICAgICAgICAgICAgICAgIHJldHVybiBz
dGF0ZS5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KHN0YXRlLnBhcmVudFN0eWxlKCktPnRleHRTaGFk
b3coKSA/IGFkb3B0UHRyKG5ldyBTaGFkb3dEYXRhKCpzdGF0ZS5wYXJlbnRTdHlsZSgpLT50ZXh0
U2hhZG93KCkpKSA6IG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRlLnN0eWxlKCkt
PnNldEJveFNoYWRvdyhzdGF0ZS5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSA/IGFkb3B0UHRy
KG5ldyBTaGFkb3dEYXRhKCpzdGF0ZS5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSkpIDogbnVs
bHB0cik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzSW5pdGlhbCB8fCBwcmltaXRpdmVWYWx1
ZSkgLy8gaW5pdGlhbCB8IG5vbmUKKyAgICAgICAgICAgIHJldHVybiBpZCA9PSBDU1NQcm9wZXJ0
eVRleHRTaGFkb3cgPyBzdGF0ZS5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KG51bGxwdHIpIDogc3Rh
dGUuc3R5bGUoKS0+c2V0Qm94U2hhZG93KG51bGxwdHIpOworCisgICAgICAgIGlmICghdmFsdWUt
PmlzVmFsdWVMaXN0KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChDU1NW
YWx1ZUxpc3RJdGVyYXRvciBpID0gdmFsdWU7IGkuaGFzTW9yZSgpOyBpLmFkdmFuY2UoKSkgewor
ICAgICAgICAgICAgQ1NTVmFsdWUqIGN1cnJWYWx1ZSA9IGkudmFsdWUoKTsKKyAgICAgICAgICAg
IGlmICghY3VyclZhbHVlLT5pc1NoYWRvd1ZhbHVlKCkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBTaGFkb3dWYWx1ZSogaXRlbSA9IHN0YXRpY19jYXN0PFNoYWRvd1Zh
bHVlKj4oY3VyclZhbHVlKTsKKyAgICAgICAgICAgIGludCB4ID0gaXRlbS0+eC0+Y29tcHV0ZUxl
bmd0aDxpbnQ+KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSwgem9vbUZh
Y3Rvcik7CisgICAgICAgICAgICBpbnQgeSA9IGl0ZW0tPnktPmNvbXB1dGVMZW5ndGg8aW50Pihz
dGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHpvb21GYWN0b3IpOworICAg
ICAgICAgICAgaW50IGJsdXIgPSBpdGVtLT5ibHVyID8gaXRlbS0+Ymx1ci0+Y29tcHV0ZUxlbmd0
aDxpbnQ+KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSwgem9vbUZhY3Rv
cikgOiAwOworICAgICAgICAgICAgaW50IHNwcmVhZCA9IGl0ZW0tPnNwcmVhZCA/IGl0ZW0tPnNw
cmVhZC0+Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50
U3R5bGUoKSwgem9vbUZhY3RvcikgOiAwOworICAgICAgICAgICAgU2hhZG93U3R5bGUgc2hhZG93
U3R5bGUgPSBpdGVtLT5zdHlsZSAmJiBpdGVtLT5zdHlsZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1
ZUluc2V0ID8gSW5zZXQgOiBOb3JtYWw7CisgICAgICAgICAgICBDb2xvciBjb2xvcjsKKyAgICAg
ICAgICAgIGlmIChpdGVtLT5jb2xvcikKKyAgICAgICAgICAgICAgICBjb2xvciA9IHN0eWxlUmVz
b2x2ZXItPmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKGl0ZW0tPmNvbG9yLmdldCgpKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKHN0YXRlLnN0eWxlKCkpCisgICAgICAgICAgICAgICAgY29sb3IgPSBz
dGF0ZS5zdHlsZSgpLT5jb2xvcigpOworCisgICAgICAgICAgICBPd25QdHI8U2hhZG93RGF0YT4g
c2hhZG93RGF0YSA9IGFkb3B0UHRyKG5ldyBTaGFkb3dEYXRhKEludFBvaW50KHgsIHkpLCBibHVy
LCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBpZCA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywg
Y29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpKTsKKyAgICAgICAg
ICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCisgICAgICAgICAgICAgICAgc3Rh
dGUuc3R5bGUoKS0+c2V0VGV4dFNoYWRvdyhzaGFkb3dEYXRhLnJlbGVhc2UoKSwgaS5pbmRleCgp
KTsgLy8gYWRkIHRvIHRoZSBsaXN0IGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBlbnRyeQorICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEJveFNoYWRv
dyhzaGFkb3dEYXRhLnJlbGVhc2UoKSwgaS5pbmRleCgpKTsgLy8gYWRkIHRvIHRoZSBsaXN0IGlm
IHRoaXMgaXMgbm90IHRoZSBmaXJzdCBlbnRyeQorICAgICAgICB9CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdDogeworICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChib3hSZWZsZWN0LCBCb3hSZWZsZWN0KQorICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUpIHsKKyAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNl
dEJveFJlZmxlY3QoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hSZWZsZWN0KCkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF2YWx1ZS0+aXNSZWZsZWN0VmFs
dWUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBDU1NSZWZsZWN0VmFsdWUqIHJl
ZmxlY3RWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1JlZmxlY3RWYWx1ZSo+KHZhbHVlKTsKKyAgICAg
ICAgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gcmVmbGVjdGlvbiA9IFN0eWxlUmVmbGVjdGlvbjo6
Y3JlYXRlKCk7CisgICAgICAgIHJlZmxlY3Rpb24tPnNldERpcmVjdGlvbigqcmVmbGVjdFZhbHVl
LT5kaXJlY3Rpb24oKSk7CisgICAgICAgIGlmIChyZWZsZWN0VmFsdWUtPm9mZnNldCgpKQorICAg
ICAgICAgICAgcmVmbGVjdGlvbi0+c2V0T2Zmc2V0KHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPmNv
bnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24g
fCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRT
dHlsZSgpLCB6b29tRmFjdG9yKSk7CisgICAgICAgIE5pbmVQaWVjZUltYWdlIG1hc2s7CisgICAg
ICAgIG1hc2suc2V0TWFza0RlZmF1bHRzKCk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxl
TWFwKCktPm1hcE5pbmVQaWVjZUltYWdlKGlkLCByZWZsZWN0VmFsdWUtPm1hc2soKSwgbWFzayk7
CisgICAgICAgIHJlZmxlY3Rpb24tPnNldE1hc2sobWFzayk7CisKKyAgICAgICAgc3RhdGUuc3R5
bGUoKS0+c2V0Qm94UmVmbGVjdChyZWZsZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNyYzogLy8gT25seSB1c2VkIGluIEBmb250
LWZhY2UgcnVsZXMuCisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENTU1Byb3BlcnR5VW5pY29k
ZVJhbmdlOiAvLyBPbmx5IHVzZWQgaW4gQGZvbnQtZmFjZSBydWxlcy4KKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2NhbGU6IHsKKyAgICAgICAgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUwobG9jYWxlLCBMb2NhbGUpOworICAgICAgICBpZiAoIXByaW1pdGl2
ZVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+
c2V0TG9jYWxlKG51bGxBdG9tKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3RhdGUuc3R5
bGUoKS0+c2V0TG9jYWxlKHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKKyAgICAg
ICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHN0YXRlLnN0eWxlKCktPmZvbnRE
ZXNjcmlwdGlvbigpOworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U2NyaXB0KGxvY2FsZVRv
U2NyaXB0Q29kZUZvckZvbnRTZWxlY3Rpb24oc3RhdGUuc3R5bGUoKS0+bG9jYWxlKCkpKTsKKyAg
ICAgICAgc3R5bGVSZXNvbHZlci0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXREYXNoYm9hcmRSZWdpb246CisgICAgeworICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChkYXNoYm9hcmRSZWdpb25zLCBEYXNoYm9hcmRS
ZWdpb25zKQorICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5v
bmUpIHsKKyAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldERhc2hib2FyZFJlZ2lvbnMoUmVu
ZGVyU3R5bGU6Om5vbmVEYXNoYm9hcmRSZWdpb25zKCkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgRGFzaGJvYXJkUmVnaW9uKiByZWdpb24gPSBwcmltaXRpdmVW
YWx1ZS0+Z2V0RGFzaGJvYXJkUmVnaW9uVmFsdWUoKTsKKyAgICAgICAgaWYgKCFyZWdpb24pCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgRGFzaGJvYXJkUmVnaW9uKiBmaXJzdCA9IHJl
Z2lvbjsKKyAgICAgICAgd2hpbGUgKHJlZ2lvbikgeworICAgICAgICAgICAgTGVuZ3RoIHRvcCA9
IHN0eWxlUmVzb2x2ZXItPmNvbnZlcnRUb0ludExlbmd0aChyZWdpb24tPnRvcCgpLCBzdGF0ZS5z
dHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCkpOworICAgICAgICAgICAgTGVuZ3RoIHJp
Z2h0ID0gc3R5bGVSZXNvbHZlci0+Y29udmVydFRvSW50TGVuZ3RoKHJlZ2lvbi0+cmlnaHQoKSwg
c3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpKTsKKyAgICAgICAgICAgIExl
bmd0aCBib3R0b20gPSBzdHlsZVJlc29sdmVyLT5jb252ZXJ0VG9JbnRMZW5ndGgocmVnaW9uLT5i
b3R0b20oKSwgc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpKTsKKyAgICAg
ICAgICAgIExlbmd0aCBsZWZ0ID0gc3R5bGVSZXNvbHZlci0+Y29udmVydFRvSW50TGVuZ3RoKHJl
Z2lvbi0+bGVmdCgpLCBzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCkpOwor
CisgICAgICAgICAgICBpZiAodG9wLmlzVW5kZWZpbmVkKCkpCisgICAgICAgICAgICAgICAgdG9w
ID0gTGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAocmlnaHQuaXNVbmRlZmluZWQoKSkKKyAgICAg
ICAgICAgICAgICByaWdodCA9IExlbmd0aCgpOworICAgICAgICAgICAgaWYgKGJvdHRvbS5pc1Vu
ZGVmaW5lZCgpKQorICAgICAgICAgICAgICAgIGJvdHRvbSA9IExlbmd0aCgpOworICAgICAgICAg
ICAgaWYgKGxlZnQuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgICAgICAgICBsZWZ0ID0gTGVuZ3Ro
KCk7CisKKyAgICAgICAgICAgIGlmIChyZWdpb24tPm1faXNDaXJjbGUpCisgICAgICAgICAgICAg
ICAgc3RhdGUuc3R5bGUoKS0+c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFzaGJvYXJkUmVnaW9u
OjpDaXJjbGUsIHJlZ2lvbi0+bV9sYWJlbCwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCByZWdp
b24gPT0gZmlyc3QgPyBmYWxzZSA6IHRydWUpOworICAgICAgICAgICAgZWxzZSBpZiAocmVnaW9u
LT5tX2lzUmVjdGFuZ2xlKQorICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldERhc2hi
b2FyZFJlZ2lvbihTdHlsZURhc2hib2FyZFJlZ2lvbjo6UmVjdGFuZ2xlLCByZWdpb24tPm1fbGFi
ZWwsIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgcmVnaW9uID09IGZpcnN0ID8gZmFsc2UgOiB0
cnVlKTsKKyAgICAgICAgICAgIHJlZ2lvbiA9IHJlZ2lvbi0+bV9uZXh0LmdldCgpOworICAgICAg
ICB9CisKKyAgICAgICAgc3RhdGUuZG9jdW1lbnQoKS0+c2V0SGFzQW5ub3RhdGVkUmVnaW9ucyh0
cnVlKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKERSQUdH
QUJMRV9SRUdJT04pCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcFJlZ2lvbjogeworICAg
ICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlIHx8ICFwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0RHJhZ2dhYmxl
UmVnaW9uTW9kZShwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZURyYWcgPyBE
cmFnZ2FibGVSZWdpb25EcmFnIDogRHJhZ2dhYmxlUmVnaW9uTm9EcmFnKTsKKyAgICAgICAgc3Rh
dGUuZG9jdW1lbnQoKS0+c2V0SGFzQW5ub3RhdGVkUmVnaW9ucyh0cnVlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyNlbmRpZgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tl
V2lkdGg6IHsKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGV4dFN0cm9rZVdp
ZHRoLCBUZXh0U3Ryb2tlV2lkdGgpCisgICAgICAgIGZsb2F0IHdpZHRoID0gMDsKKyAgICAgICAg
c3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICBjYXNlIENTU1Zh
bHVlVGhpbjoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU1lZGl1bToKKyAgICAgICAgY2FzZSBDU1NW
YWx1ZVRoaWNrOiB7CisgICAgICAgICAgICBkb3VibGUgcmVzdWx0ID0gMS4wIC8gNDg7CisgICAg
ICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVNZWRpdW0p
CisgICAgICAgICAgICAgICAgcmVzdWx0ICo9IDM7CisgICAgICAgICAgICBlbHNlIGlmIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVRoaWNrKQorICAgICAgICAgICAgICAg
IHJlc3VsdCAqPSA1OworICAgICAgICAgICAgd2lkdGggPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKHJlc3VsdCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpLT5jb21wdXRlTGVuZ3RoPGZs
b2F0PihzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHpvb21GYWN0b3Ip
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHdpZHRoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KHN0YXRl
LnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSwgem9vbUZhY3Rvcik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRUZXh0U3Ry
b2tlV2lkdGgod2lkdGgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2Zvcm06IHsKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJ
QUwodHJhbnNmb3JtLCBUcmFuc2Zvcm0pOworICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9w
ZXJhdGlvbnM7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPmNyZWF0ZVRyYW5zZm9ybU9wZXJhdGlv
bnModmFsdWUsIHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSwgb3BlcmF0
aW9ucyk7CisgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFRyYW5zZm9ybShvcGVyYXRpb25zKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3Bl
Y3RpdmU6IHsKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwocGVyc3BlY3RpdmUs
IFBlcnNwZWN0aXZlKQorCisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENT
U1ZhbHVlTm9uZSkgeworICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0UGVyc3BlY3RpdmUo
MCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmbG9hdCBwZXJz
cGVjdGl2ZVZhbHVlOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTGVuZ3RoKCkpCisg
ICAgICAgICAgICBwZXJzcGVjdGl2ZVZhbHVlID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5n
dGg8ZmxvYXQ+KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSwgem9vbUZh
Y3Rvcik7CisgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc051bWJlcigpKSB7Cisg
ICAgICAgICAgICAvLyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdHJlYXQgdmFsdWVsZXNz
IG51bWJlcnMgYXMgcHguCisgICAgICAgICAgICBwZXJzcGVjdGl2ZVZhbHVlID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QWCktPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KHN0YXRlLnN0eWxlKCks
IHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSwgem9vbUZhY3Rvcik7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChwZXJzcGVjdGl2ZVZhbHVlID49IDAu
MGYpCisgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRQZXJzcGVjdGl2ZShwZXJzcGVjdGl2
ZVZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUYXBIaWdobGlnaHRDb2xvcjogeworICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0YXBIaWdobGlnaHRDb2xvciwgVGFwSGlnaGxp
Z2h0Q29sb3IpOworICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgQ29sb3IgY29sID0gc3R5bGVSZXNvbHZlci0+Y29sb3JGcm9tUHJpbWl0
aXZlVmFsdWUocHJpbWl0aXZlVmFsdWUpOworICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRUYXBI
aWdobGlnaHRDb2xvcihjb2wpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisjaWYg
RU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6IHsKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5E
X0lOSVRJQUwodXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZywgVXNlVG91Y2hPdmVyZmxvd1Njcm9s
bGluZyk7CisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0VXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZyhwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVRvdWNoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyNlbmRpZgorICAgIGNhc2UgQ1NTUHJvcGVydHlJbnZhbGlkOgorICAgICAgICBy
ZXR1cm47CisgICAgLy8gRGlyZWN0aW9uYWwgcHJvcGVydGllcyBhcmUgcmVzb2x2ZWQgYnkgcmVz
b2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoKSBiZWZvcmUgdGhlIHN3aXRjaC4KKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckVuZFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRX
aWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvcjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyU3RhcnRXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyQmVmb3JlQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0
eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVXaWR0aDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyQWZ0ZXJXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFydDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luQmVmb3JlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRl
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2U6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXJnaW5Cb3R0b21Db2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGlu
Z0VuZDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQmVmb3JlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRQYWRkaW5nQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9naWNhbEhlaWdodDoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWluTG9naWNhbFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
aW5Mb2dpY2FsSGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsV2lk
dGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQ6CisgICAgewor
ICAgICAgICBDU1NQcm9wZXJ0eUlEIG5ld0lkID0gQ1NTUHJvcGVydHk6OnJlc29sdmVEaXJlY3Rp
b25Bd2FyZVByb3BlcnR5KGlkLCBzdGF0ZS5zdHlsZSgpLT5kaXJlY3Rpb24oKSwgc3RhdGUuc3R5
bGUoKS0+d3JpdGluZ01vZGUoKSk7CisgICAgICAgIEFTU0VSVChuZXdJZCAhPSBpZCk7CisgICAg
ICAgIHJldHVybiBhcHBseVRvUmVuZGVyU3R5bGUoc3R5bGVSZXNvbHZlciwgbmV3SWQsIHZhbHVl
KTsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHJldGNoOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlQYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2g6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0TGluZVRocm91Z2hNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91
Z2hTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoV2lkdGg6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92
ZXJsaW5lQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGU6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlU
ZXh0T3ZlcmxpbmVXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0VW5kZXJsaW5lTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVN0
eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGg6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGE6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHREZWNvcmF0aW9uc0luRWZmZWN0OgorICAgICAgICByZXR1cm47CisKKyAgICAvLyBDU1Mg
VGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZTogeworICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTCh3cml0aW5nTW9kZSwgV3JpdGluZ01vZGUpOworICAgICAgICAKKyAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+c2V0
V3JpdGluZ01vZGUoKnByaW1pdGl2ZVZhbHVlKTsKKworICAgICAgICAvLyBGSVhNRTogSXQgaXMg
bm90IG9rIHRvIG1vZGlmeSBkb2N1bWVudCBzdGF0ZSB3aGlsZSBhcHBseWluZyBzdHlsZS4KKyAg
ICAgICAgaWYgKHN0YXRlLmVsZW1lbnQoKSAmJiBzdGF0ZS5lbGVtZW50KCkgPT0gc3RhdGUuZG9j
dW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAgICAgICBzdGF0ZS5kb2N1bWVudCgp
LT5zZXRXcml0aW5nTW9kZVNldE9uRG9jdW1lbnRFbGVtZW50KHRydWUpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRPcmllbnRhdGlvbjog
eworICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0ZXh0T3JpZW50YXRpb24sIFRl
eHRPcmllbnRhdGlvbik7CisKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAgICAg
ICAgc3R5bGVSZXNvbHZlci0+c2V0VGV4dE9yaWVudGF0aW9uKCpwcmltaXRpdmVWYWx1ZSk7CisK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5l
Qm94Q29udGFpbjogeworICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChsaW5lQm94
Q29udGFpbiwgTGluZUJveENvbnRhaW4pCisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICAgICAgICAg
IHN0YXRlLnN0eWxlKCktPnNldExpbmVCb3hDb250YWluKExpbmVCb3hDb250YWluTm9uZSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXZhbHVlLT5pc0NT
U0xpbmVCb3hDb250YWluVmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBD
U1NMaW5lQm94Q29udGFpblZhbHVlKiBsaW5lQm94Q29udGFpblZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTTGluZUJveENvbnRhaW5WYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+
c2V0TGluZUJveENvbnRhaW4obGluZUJveENvbnRhaW5WYWx1ZS0+dmFsdWUoKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAvLyBDU1MgRm9udHMgTW9kdWxlIExldmVsIDMKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udEZlYXR1cmVTZXR0aW5nczogeworICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVO
b3JtYWwpIHsKKyAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldEZvbnREZXNjcmlwdGlvbihz
dGF0ZS5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKS5tYWtlTm9ybWFsRmVhdHVyZVNldHRpbmdz
KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF2YWx1
ZS0+aXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBGb250RGVz
Y3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc3RhdGUuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9u
KCk7CisgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlz
dCo+KHZhbHVlKTsKKyAgICAgICAgUmVmUHRyPEZvbnRGZWF0dXJlU2V0dGluZ3M+IHNldHRpbmdz
ID0gRm9udEZlYXR1cmVTZXR0aW5nczo6Y3JlYXRlKCk7CisgICAgICAgIGludCBsZW4gPSBsaXN0
LT5sZW5ndGgoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47ICsraSkgeworICAg
ICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkp
OworICAgICAgICAgICAgaWYgKCFpdGVtLT5pc0ZvbnRGZWF0dXJlVmFsdWUoKSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIEZvbnRGZWF0dXJlVmFsdWUqIGZlYXR1cmUg
PSBzdGF0aWNfY2FzdDxGb250RmVhdHVyZVZhbHVlKj4oaXRlbSk7CisgICAgICAgICAgICBzZXR0
aW5ncy0+YXBwZW5kKEZvbnRGZWF0dXJlKGZlYXR1cmUtPnRhZygpLCBmZWF0dXJlLT52YWx1ZSgp
KSk7CisgICAgICAgIH0KKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEZlYXR1cmVTZXR0aW5n
cyhzZXR0aW5ncy5yZWxlYXNlKCkpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRGb250RGVz
Y3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNpZiBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZpbHRlcjogewor
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChmaWx0ZXIsIEZpbHRlcik7CisgICAg
ICAgIEZpbHRlck9wZXJhdGlvbnMgb3BlcmF0aW9uczsKKyAgICAgICAgaWYgKHN0eWxlUmVzb2x2
ZXItPmNyZWF0ZUZpbHRlck9wZXJhdGlvbnModmFsdWUsIHN0YXRlLnN0eWxlKCksIHN0YXRlLnJv
b3RFbGVtZW50U3R5bGUoKSwgb3BlcmF0aW9ucykpCisgICAgICAgICAgICBzdGF0ZS5zdHlsZSgp
LT5zZXRGaWx0ZXIob3BlcmF0aW9ucyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZEF1dG9Db2x1bW5zOiB7CisgICAgICAgIEdy
aWRUcmFja1NpemUgdHJhY2tTaXplOworICAgICAgICBpZiAoIWNyZWF0ZUdyaWRUcmFja1NpemUo
dmFsdWUsIHRyYWNrU2l6ZSwgc3RhdGUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBz
dGF0ZS5zdHlsZSgpLT5zZXRHcmlkQXV0b0NvbHVtbnModHJhY2tTaXplKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZEF1dG9Sb3dzOiB7Cisg
ICAgICAgIEdyaWRUcmFja1NpemUgdHJhY2tTaXplOworICAgICAgICBpZiAoIWNyZWF0ZUdyaWRU
cmFja1NpemUodmFsdWUsIHRyYWNrU2l6ZSwgc3RhdGUpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRHcmlkQXV0b1Jvd3ModHJhY2tTaXplKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZENvbHVtbnM6
IHsKKyAgICAgICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IHRyYWNrU2l6ZXM7CisgICAgICAgIGlm
ICghY3JlYXRlR3JpZFRyYWNrTGlzdCh2YWx1ZSwgdHJhY2tTaXplcywgc3RhdGUpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRHcmlkQ29sdW1ucyh0cmFj
a1NpemVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0R3JpZFJvd3M6IHsKKyAgICAgICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IHRyYWNrU2l6ZXM7
CisgICAgICAgIGlmICghY3JlYXRlR3JpZFRyYWNrTGlzdCh2YWx1ZSwgdHJhY2tTaXplcywgc3Rh
dGUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRHcmlk
Um93cyh0cmFja1NpemVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRHcmlkU3RhcnQ6IHsKKyAgICAgICAgR3JpZFBvc2l0aW9uIHN0YXJ0UG9z
aXRpb247CisgICAgICAgIGlmICghY3JlYXRlR3JpZFBvc2l0aW9uKHZhbHVlLCBzdGFydFBvc2l0
aW9uKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0R3Jp
ZEl0ZW1TdGFydChzdGFydFBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZEVuZDogeworICAgICAgICBHcmlkUG9zaXRpb24gZW5k
UG9zaXRpb247CisgICAgICAgIGlmICghY3JlYXRlR3JpZFBvc2l0aW9uKHZhbHVlLCBlbmRQb3Np
dGlvbikpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEdy
aWRJdGVtRW5kKGVuZFBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQmVmb3JlOiB7CisgICAgICAgIEdyaWRQb3NpdGlvbiBi
ZWZvcmVQb3NpdGlvbjsKKyAgICAgICAgaWYgKCFjcmVhdGVHcmlkUG9zaXRpb24odmFsdWUsIGJl
Zm9yZVBvc2l0aW9uKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc3RhdGUuc3R5bGUo
KS0+c2V0R3JpZEl0ZW1CZWZvcmUoYmVmb3JlUG9zaXRpb24pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQWZ0ZXI6IHsKKyAgICAgICAgR3Jp
ZFBvc2l0aW9uIGFmdGVyUG9zaXRpb247CisgICAgICAgIGlmICghY3JlYXRlR3JpZFBvc2l0aW9u
KHZhbHVlLCBhZnRlclBvc2l0aW9uKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc3Rh
dGUuc3R5bGUoKS0+c2V0R3JpZEl0ZW1BZnRlcihhZnRlclBvc2l0aW9uKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgYXJlIGFsaWFzZWQgYW5kIERl
cHJlY2F0ZWRTdHlsZUJ1aWxkZXIgYWxyZWFkeSBhcHBsaWVkIHRoZSBwcm9wZXJ0eSBvbiB0aGUg
cHJlZml4ZWQgdmVyc2lvbi4KKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbkRlbGF5Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uRHVyYXRpb246CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRyYW5zaXRpb25Qcm9wZXJ0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvblRp
bWluZ0Z1bmN0aW9uOgorICAgICAgICByZXR1cm47CisgICAgLy8gVGhlc2UgcHJvcGVydGllcyBh
cmUgaW1wbGVtZW50ZWQgaW4gdGhlIERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIgbG9va3VwIHRhYmxl
LgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5QmFja2dyb3VuZENsaXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
UG9zaXRpb25YOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZFJlcGVhdFk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1czoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tUmlnaHRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlT3V0c2V0
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVJlcGVhdDoKKyAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVySW1hZ2VTbGljZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VT
b3VyY2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlV2lkdGg6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVm
dFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGg6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJp
Z2h0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGg6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJU
b3BMZWZ0UmFkaXVzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1czoK
KyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlclRvcFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3R0b206CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUJveFNpemluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2FwdGlvblNpZGU6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUNsZWFyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q291bnRlckluY3Jl
bWVudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q291bnRlclJlc2V0OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlDdXJzb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eURpcmVjdGlvbjoKKyAgICBjYXNlIENT
U1Byb3BlcnR5RGlzcGxheToKKyAgICBjYXNlIENTU1Byb3BlcnR5RW1wdHlDZWxsczoKKyAgICBj
YXNlIENTU1Byb3BlcnR5RmxvYXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTaXplOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRWYXJp
YW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250V2VpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlIZWlnaHQ6CisjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKKyAgICBjYXNlIENT
U1Byb3BlcnR5SW1hZ2VPcmllbnRhdGlvbjoKKyNlbmRpZgorICAgIGNhc2UgQ1NTUHJvcGVydHlJ
bWFnZVJlbmRlcmluZzoKKyNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUltYWdlUmVzb2x1dGlvbjoKKyNlbmRpZgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlMaW5lSGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUxpc3RTdHlsZVR5cGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luTGVmdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2lu
UmlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblRvcDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5TWF4SGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhXaWR0aDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5TWluSGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5XaWR0aDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5T3BhY2l0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5T3JwaGFuczoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRs
aW5lT2Zmc2V0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eU91dGxpbmVXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dXcmFw
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92
ZXJmbG93WToKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbToKKyAgICBjYXNlIENT
U1Byb3BlcnR5UGFkZGluZ0xlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1RvcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFn
ZUJyZWFrQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQb2lu
dGVyRXZlbnRzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjoKKyAgICBjYXNlIENTU1By
b3BlcnR5UmVzaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlSaWdodDoKKyAgICBjYXNlIENTU1By
b3BlcnR5U2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRhYlNpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0QWxpZ246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9u
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0SW5kZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlU
ZXh0T3ZlcmZsb3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmc6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm06CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRvcDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5VW5pY29kZUJpZGk6CisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMp
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZhcmlhYmxlOgorI2VuZGlmCisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVZlcnRpY2FsQWxpZ246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZpc2liaWxpdHk6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5OgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFu
aW1hdGlvbkR1cmF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25GaWxs
TW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFw
cGVhcmFuY2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFzcGVjdFJhdGlvOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHk6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNr
Z3JvdW5kQ29tcG9zaXRlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kT3Jp
Z2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZToKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJIb3Jpem9udGFsU3BhY2luZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
SW1hZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZzoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ246CisjaWYgRU5BQkxFKENTU19CT1hf
REVDT1JBVElPTl9CUkVBSykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGVjb3JhdGlv
bkJyZWFrOgorI2VuZGlmCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RmxleDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm94RmxleEdyb3VwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3hPcmllbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFBh
Y2s6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQXhpczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uQnJlYWtBZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtC
ZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5Db3VudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uR2FwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5Qcm9ncmVz
c2lvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtblJ1bGVXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
U3BhbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGg6CisjaWYgRU5BQkxF
KENVUlNPUl9WSVNJQklMSVRZKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDdXJzb3JWaXNp
YmlsaXR5OgorI2VuZGlmCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFsaWduQ29udGVudDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QWxpZ25JdGVtczoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0QWxpZ25TZWxmOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4QmFzaXM6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb246CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEZsZXhHcm93OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4U2hy
aW5rOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4V3JhcDoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0SnVzdGlmeUNvbnRlbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE9y
ZGVyOgorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Rmxvd0Zyb206CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsb3dJbnRvOgorI2VuZGlmCisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRLZXJuaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRGb250U21vb3RoaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250VmFy
aWFudExpZ2F0dXJlczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SGlnaGxpZ2h0OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXI6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxpbWl0QWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEh5cGhlbmF0ZUxpbWl0QmVmb3JlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBo
ZW5hdGVMaW1pdExpbmVzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQWxpZ246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdExpbmVCcmVhazoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1wOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lR3JpZDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TGluZVNuYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb246
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQ6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXJxdWVlU3BlZWQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHls
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VPdXRzZXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tCb3hJbWFnZVJlcGVhdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0Jv
eEltYWdlU2xpY2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNvdXJj
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlV2lkdGg6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXNrQ29tcG9zaXRlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2U6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tQb3NpdGlvblg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlv
blk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFz
a1NpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0UGVyc3BlY3RpdmVPcmlnaW5YOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVj
dGl2ZU9yaWdpblk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1c3Q6
CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSZWdp
b25CcmVha0FmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0JlZm9y
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGU6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbk92ZXJmbG93OgorI2VuZGlmCisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdWJ5
UG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lOgorI2lmIEVO
QUJMRShDU1MzX1RFWFQpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9u
TGluZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25TdHlsZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25Db2xvcjoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VGV4dEFsaWduTGFzdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VGV4dEp1c3RpZnk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRVbmRlcmxpbmVQb3Np
dGlvbjoKKyNlbmRpZiAvLyBDU1MzX1RFWFQKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4
dEVtcGhhc2lzQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bv
c2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dFNlY3VyaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ry
b2tlQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblg6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblk6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblo6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVs
YXk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFVzZXJEcmFnOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0OgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRDbGlwUGF0aDoKKyNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTaGFw
ZU1hcmdpbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0U2hhcGVQYWRkaW5nOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwVGhyb3VnaDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0U2hhcGVJbnNpZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNoYXBlT3V0c2lkZToK
KyNlbmRpZgorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICBjYXNlIENTU1Byb3BlcnR5TWl4
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYXJhbWV0ZXJzOgorI2VuZGlmCisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdoaXRlU3BhY2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdpZG93czoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V29yZFNwYWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRXcmFw
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlaSW5kZXg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVpvb206
CisjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikKKyAgICBjYXNlIENTU1Byb3BlcnR5
TWF4Wm9vbToKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluWm9vbToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5T3JpZW50YXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVVzZXJab29tOgorI2VuZGlmCisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgZGVmYXVs
dDoKKyNpZiBFTkFCTEUoU1ZHKQorICAgICAgICAvLyBUcnkgdGhlIFNWRyBwcm9wZXJ0aWVzCisg
ICAgICAgIGFwcGx5VG9TVkdSZW5kZXJTdHlsZShzdHlsZVJlc29sdmVyLCBpZCwgdmFsdWUpOwor
I2VuZGlmCisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5kZGJkOTAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlci5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAq
ICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgU3R5bGVCdWlsZGVyX2gKKyNkZWZpbmUgU3R5bGVCdWlsZGVyX2gKKwor
I2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1Byb3BlcnR5OworY2xhc3MgQ1NTVmFs
dWU7CitjbGFzcyBEZXByZWNhdGVkU3R5bGVCdWlsZGVyOworY2xhc3MgU3R5bGVSZXNvbHZlcjsK
KworY2xhc3MgU3R5bGVCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHlsZUJ1
aWxkZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTdHlsZUJ1aWxk
ZXIoKTsKKworICAgIHZvaWQgYXBwbHlUb1JlbmRlclN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBDU1NQ
cm9wZXJ0eUlELCBDU1NWYWx1ZSopOworCitwcml2YXRlOgorICAgIHZvaWQgYXBwbHlUb1NWR1Jl
bmRlclN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSopOworI2lm
IEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgIHZvaWQgcmVzb2x2ZVZhcmlhYmxlcyhTdHlsZVJl
c29sdmVyKiwgQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUqLCBWZWN0b3I8c3RkOjpwYWlyPENTU1By
b3BlcnR5SUQsIFN0cmluZz4gPiYga25vd25FeHByZXNzaW9ucyk7CisjZW5kaWYKKworICAgIGNv
bnN0IERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXImIG1fZGVwcmVjYXRlZFN0eWxlQnVpbGRlcjsKK307
CisKK30KKworI2VuZGlmIC8vIFN0eWxlQnVpbGRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKaW5kZXggMjc2MGE3My4uZjFkNjExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcApAQCAtNTUsMTAgKzU1LDcgQEAKICNpbmNsdWRlICJDYWxjdWxhdGlvblZhbHVl
LmgiCiAjaW5jbHVkZSAiQ29udGVudERhdGEuaCIKICNpbmNsdWRlICJDb250ZXh0RmVhdHVyZXMu
aCIKLSNpbmNsdWRlICJDb3VudGVyLmgiCi0jaW5jbHVkZSAiQ291bnRlckNvbnRlbnQuaCIKICNp
bmNsdWRlICJDdXJzb3JMaXN0LmgiCi0jaW5jbHVkZSAiRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5o
IgogI2luY2x1ZGUgIkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJF
bGVtZW50UnVsZUNvbGxlY3Rvci5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKQEAgLTg5
LDkgKzg2LDcgQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlUnVsZUNvbGxlY3Rvci5oIgotI2luY2x1ZGUgIlBhaXIu
aCIKICNpbmNsdWRlICJQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgotI2luY2x1ZGUg
IlF1b3Rlc0RhdGEuaCIKICNpbmNsdWRlICJSZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9u
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCkBAIC0yNTgsNyArMjUzLDYgQEAgU3R5
bGVSZXNvbHZlcjo6U3R5bGVSZXNvbHZlcihEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgbWF0Y2hB
dXRob3JBbmRVc2VyU3R5bGVzKQogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04pCiAg
ICAgLCBtX3ZpZXdwb3J0U3R5bGVSZXNvbHZlcihWaWV3cG9ydFN0eWxlUmVzb2x2ZXI6OmNyZWF0
ZShkb2N1bWVudCkpCiAjZW5kaWYKLSAgICAsIG1fZGVwcmVjYXRlZFN0eWxlQnVpbGRlcihEZXBy
ZWNhdGVkU3R5bGVCdWlsZGVyOjpzaGFyZWRTdHlsZUJ1aWxkZXIoKSkKICAgICAsIG1fc3R5bGVN
YXAodGhpcykKIHsKICAgICBFbGVtZW50KiByb290ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVu
dCgpOwpAQCAtMTk3MiwzNSArMTk2Niw2IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9w
ZXJ0eVRvQ3VycmVudFN0eWxlKENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1CiAgICAg
ICAgIGFwcGx5UHJvcGVydHkoaWQsIHZhbHVlKTsKIH0KIAotaW5saW5lIGJvb2wgaXNWYWxpZFZp
c2l0ZWRMaW5rUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCkKLXsKLSAgICBzd2l0Y2ggKGlkKSB7
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9y
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcjoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtblJ1bGVDb2xvcjoKLSNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yOgotI2VuZGlmIC8vIENTUzNfVEVYVAotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcjoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dEZpbGxDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZUNvbG9yOgotI2lmIEVOQUJMRShTVkcpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGw6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZToKLSNlbmRpZgotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KIC8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtcmVnaW9ucy8jdGhlLWF0LXJl
Z2lvbi1zdHlsZS1ydWxlCiAvLyBGSVhNRTogYWRkIGluY3JlbWVudGFsIHN1cHBvcnQgZm9yIG90
aGVyIHJlZ2lvbiBzdHlsaW5nIHByb3BlcnRpZXMuCiBpbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVy
Ojppc1ZhbGlkUmVnaW9uU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkKQpAQCAtMjA3Miwx
MTEwICsyMDM3LDYgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjp1c2VTVkdab29tUnVsZXMoKQogICAg
IHJldHVybiBtX3N0YXRlLmVsZW1lbnQoKSAmJiBtX3N0YXRlLmVsZW1lbnQoKS0+aXNTVkdFbGVt
ZW50KCk7CiB9CiAKLXN0YXRpYyBib29sIGNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBjb25zdCBTdHlsZVJlc29sdmVyOjpTdGF0ZSYgc3Rh
dGUsIExlbmd0aCYgd29ya2luZ0xlbmd0aCkKLXsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVXZWJraXRNaW5Db250ZW50KSB7Ci0gICAgICAgIHdvcmtpbmdM
ZW5ndGggPSBMZW5ndGgoTWluQ29udGVudCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVdlYmtpdE1h
eENvbnRlbnQpIHsKLSAgICAgICAgd29ya2luZ0xlbmd0aCA9IExlbmd0aChNYXhDb250ZW50KTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgd29ya2luZ0xlbmd0aCA9IHByaW1p
dGl2ZVZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNl
bnRDb252ZXJzaW9uIHwgVmlld3BvcnRQZXJjZW50YWdlQ29udmVyc2lvbiB8IEF1dG9Db252ZXJz
aW9uPihzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHN0YXRlLnN0eWxl
KCktPmVmZmVjdGl2ZVpvb20oKSk7Ci0gICAgaWYgKHdvcmtpbmdMZW5ndGguaXNVbmRlZmluZWQo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xl
bmd0aCgpKQotICAgICAgICB3b3JraW5nTGVuZ3RoLnNldFF1aXJrKHByaW1pdGl2ZVZhbHVlLT5p
c1F1aXJrVmFsdWUoKSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wgY3Jl
YXRlR3JpZFRyYWNrU2l6ZShDU1NWYWx1ZSogdmFsdWUsIEdyaWRUcmFja1NpemUmIHRyYWNrU2l6
ZSwgY29uc3QgU3R5bGVSZXNvbHZlcjo6U3RhdGUmIHN0YXRlKQotewotICAgIGlmICghdmFsdWUt
PmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7Ci0gICAgUGFpciogbWluTWF4VHJhY2tCcmVhZHRoID0gcHJpbWl0aXZlVmFs
dWUtPmdldFBhaXJWYWx1ZSgpOwotICAgIGlmICghbWluTWF4VHJhY2tCcmVhZHRoKSB7Ci0gICAg
ICAgIExlbmd0aCB3b3JraW5nTGVuZ3RoOwotICAgICAgICBpZiAoIWNyZWF0ZUdyaWRUcmFja0Jy
ZWFkdGgocHJpbWl0aXZlVmFsdWUsIHN0YXRlLCB3b3JraW5nTGVuZ3RoKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgICAgICB0cmFja1NpemUuc2V0TGVuZ3RoKHdvcmtpbmdMZW5n
dGgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBMZW5ndGggbWluVHJhY2tC
cmVhZHRoOwotICAgIExlbmd0aCBtYXhUcmFja0JyZWFkdGg7Ci0gICAgaWYgKCFjcmVhdGVHcmlk
VHJhY2tCcmVhZHRoKG1pbk1heFRyYWNrQnJlYWR0aC0+Zmlyc3QoKSwgc3RhdGUsIG1pblRyYWNr
QnJlYWR0aCkgfHwgIWNyZWF0ZUdyaWRUcmFja0JyZWFkdGgobWluTWF4VHJhY2tCcmVhZHRoLT5z
ZWNvbmQoKSwgc3RhdGUsIG1heFRyYWNrQnJlYWR0aCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHRyYWNrU2l6ZS5zZXRNaW5NYXgobWluVHJhY2tCcmVhZHRoLCBtYXhUcmFja0JyZWFk
dGgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tM
aXN0KENTU1ZhbHVlKiB2YWx1ZSwgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1NpemVzLCBj
b25zdCBTdHlsZVJlc29sdmVyOjpTdGF0ZSYgc3RhdGUpCi17Ci0gICAgLy8gSGFuZGxlICdub25l
Jy4KLSAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlTm9uZTsKLSAgICB9Ci0KLSAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmb3IgKENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGkg
PSB2YWx1ZTsgaS5oYXNNb3JlKCk7IGkuYWR2YW5jZSgpKSB7Ci0gICAgICAgIENTU1ZhbHVlKiBj
dXJyVmFsdWUgPSBpLnZhbHVlKCk7Ci0gICAgICAgIEdyaWRUcmFja1NpemUgdHJhY2tTaXplOwot
ICAgICAgICBpZiAoIWNyZWF0ZUdyaWRUcmFja1NpemUoY3VyclZhbHVlLCB0cmFja1NpemUsIHN0
YXRlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICB0cmFja1NpemVzLmFw
cGVuZCh0cmFja1NpemUpOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotCi1zdGF0aWMg
Ym9vbCBjcmVhdGVHcmlkUG9zaXRpb24oQ1NTVmFsdWUqIHZhbHVlLCBHcmlkUG9zaXRpb24mIHBv
c2l0aW9uKQotewotICAgIC8vIEZvciBub3csIHdlIG9ubHkgYWNjZXB0OiA8aW50ZWdlcj4gfCAn
YXV0bycKLSAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotICAgIGlmIChwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocHJpbWl0aXZlVmFsdWUtPmlzTnVt
YmVyKCkpOwotICAgIHBvc2l0aW9uLnNldEludGVnZXJQb3NpdGlvbihwcmltaXRpdmVWYWx1ZS0+
Z2V0SW50VmFsdWUoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLSNpZiBFTkFCTEUoQ1NTX1ZB
UklBQkxFUykKLXN0YXRpYyBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKENTU1ZhbHVlKiB2YWx1
ZSkKLXsKLSAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLT5oYXNWYXJpYWJs
ZVJlZmVyZW5jZSgpOwotICAgIH0KLQotICAgIGlmICh2YWx1ZS0+aXNDYWxjdWxhdGlvblZhbHVl
KCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NDYWxjVmFsdWUqPih2YWx1ZSktPmhh
c1ZhcmlhYmxlUmVmZXJlbmNlKCk7Ci0KLSAgICBpZiAodmFsdWUtPmlzUmVmbGVjdFZhbHVlKCkp
IHsKLSAgICAgICAgQ1NTUmVmbGVjdFZhbHVlKiByZWZsZWN0VmFsdWUgPSBzdGF0aWNfY2FzdDxD
U1NSZWZsZWN0VmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBkaXJl
Y3Rpb24gPSByZWZsZWN0VmFsdWUtPmRpcmVjdGlvbigpOwotICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogb2Zmc2V0ID0gcmVmbGVjdFZhbHVlLT5vZmZzZXQoKTsKLSAgICAgICAgQ1NTVmFsdWUq
IG1hc2sgPSByZWZsZWN0VmFsdWUtPm1hc2soKTsKLSAgICAgICAgcmV0dXJuIChkaXJlY3Rpb24g
JiYgaGFzVmFyaWFibGVSZWZlcmVuY2UoZGlyZWN0aW9uKSkgfHwgKG9mZnNldCAmJiBoYXNWYXJp
YWJsZVJlZmVyZW5jZShvZmZzZXQpKSB8fCAobWFzayAmJiBoYXNWYXJpYWJsZVJlZmVyZW5jZSht
YXNrKSk7Ci0gICAgfQotCi0gICAgZm9yIChDU1NWYWx1ZUxpc3RJdGVyYXRvciBpID0gdmFsdWU7
IGkuaGFzTW9yZSgpOyBpLmFkdmFuY2UoKSkgewotICAgICAgICBpZiAoaGFzVmFyaWFibGVSZWZl
cmVuY2UoaS52YWx1ZSgpKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBTdHlsZVJlc29sdmVyOjpyZXNvbHZlVmFyaWFibGVz
KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgVmVjdG9yPHN0ZDo6cGFpcjxDU1NQ
cm9wZXJ0eUlELCBTdHJpbmc+ID4mIGtub3duRXhwcmVzc2lvbnMpCi17Ci0gICAgc3RkOjpwYWly
PENTU1Byb3BlcnR5SUQsIFN0cmluZz4gZXhwcmVzc2lvbihpZCwgdmFsdWUtPnNlcmlhbGl6ZVJl
c29sdmluZ1ZhcmlhYmxlcygqbV9zdGF0ZS5zdHlsZSgpLT52YXJpYWJsZXMoKSkpOwotCi0gICAg
aWYgKGtub3duRXhwcmVzc2lvbnMuY29udGFpbnMoZXhwcmVzc2lvbikpCi0gICAgICAgIHJldHVy
bjsgLy8gY3ljbGUgZGV0ZWN0ZWQuCi0KLSAgICBrbm93bkV4cHJlc3Npb25zLmFwcGVuZChleHBy
ZXNzaW9uKTsKLQotICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBmYXN0ZXIgbm90IHRvIHJlLXBh
cnNlIGZyb20gc3RyaW5ncywgYnV0IGZvciBub3cgQ1NTIHByb3BlcnR5IHZhbGlkYXRpb24gbGl2
ZXMgaW5zaWRlIHRoZSBwYXJzZXIgc28gd2UgZG8gaXQgdGhlcmUuCi0gICAgUmVmUHRyPE11dGFi
bGVTdHlsZVByb3BlcnR5U2V0PiByZXN1bHRTZXQgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6
Y3JlYXRlKCk7Ci0gICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlVmFsdWUocmVzdWx0U2V0LmdldCgp
LCBpZCwgZXhwcmVzc2lvbi5zZWNvbmQsIGZhbHNlLCBkb2N1bWVudCgpKSkKLSAgICAgICAgcmV0
dXJuOyAvLyBleHByZXNzaW9uIGZhaWxlZCB0byBwYXJzZS4KLQotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCByZXN1bHRTZXQtPnByb3BlcnR5Q291bnQoKTsgaSsrKSB7Ci0gICAgICAgIFN0
eWxlUHJvcGVydHlTZXQ6OlByb3BlcnR5UmVmZXJlbmNlIHByb3BlcnR5ID0gcmVzdWx0U2V0LT5w
cm9wZXJ0eUF0KGkpOwotICAgICAgICBpZiAocHJvcGVydHkuaWQoKSAhPSBDU1NQcm9wZXJ0eVZh
cmlhYmxlICYmIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKHByb3BlcnR5LnZhbHVlKCkpKQotICAgICAg
ICAgICAgcmVzb2x2ZVZhcmlhYmxlcyhwcm9wZXJ0eS5pZCgpLCBwcm9wZXJ0eS52YWx1ZSgpLCBr
bm93bkV4cHJlc3Npb25zKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0
eShwcm9wZXJ0eS5pZCgpLCBwcm9wZXJ0eS52YWx1ZSgpKTsKLSAgICB9Ci19Ci0jZW5kaWYKLQot
dm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1Zh
bHVlKiB2YWx1ZSkKLXsKLSNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKLSAgICBpZiAoaWQgIT0g
Q1NTUHJvcGVydHlWYXJpYWJsZSAmJiBoYXNWYXJpYWJsZVJlZmVyZW5jZSh2YWx1ZSkpIHsKLSAg
ICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDU1NQcm9wZXJ0eUlELCBTdHJpbmc+ID4ga25vd25FeHBy
ZXNzaW9uczsKLSAgICAgICAgcmVzb2x2ZVZhcmlhYmxlcyhpZCwgdmFsdWUsIGtub3duRXhwcmVz
c2lvbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICAvLyBDU1MgdmFy
aWFibGVzIGRvbid0IHJlc29sdmUgc2hvcnRoYW5kcyBhdCBwYXJzaW5nIHRpbWUsIHNvIHRoaXMg
c2hvdWxkIGJlICphZnRlciogaGFuZGxpbmcgdmFyaWFibGVzLgotICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoIWlzRXhwYW5kZWRTaG9ydGhhbmQoaWQpLCAiU2hvcnRoYW5kIHByb3BlcnR5IGlkID0g
JWQgd2Fzbid0IGV4cGFuZGVkIGF0IHBhcnNpbmcgdGltZSIsIGlkKTsKLQotICAgIFN0YXRlJiBz
dGF0ZSA9IG1fc3RhdGU7Ci0gICAgYm9vbCBpc0luaGVyaXQgPSBzdGF0ZS5wYXJlbnROb2RlKCkg
JiYgdmFsdWUtPmlzSW5oZXJpdGVkVmFsdWUoKTsKLSAgICBib29sIGlzSW5pdGlhbCA9IHZhbHVl
LT5pc0luaXRpYWxWYWx1ZSgpIHx8ICghc3RhdGUucGFyZW50Tm9kZSgpICYmIHZhbHVlLT5pc0lu
aGVyaXRlZFZhbHVlKCkpOwotCi0gICAgQVNTRVJUKCFpc0luaGVyaXQgfHwgIWlzSW5pdGlhbCk7
IC8vIGlzSW5oZXJpdCAtPiAhaXNJbml0aWFsICYmIGlzSW5pdGlhbCAtPiAhaXNJbmhlcml0Ci0g
ICAgQVNTRVJUKCFpc0luaGVyaXQgfHwgKHN0YXRlLnBhcmVudE5vZGUoKSAmJiBzdGF0ZS5wYXJl
bnRTdHlsZSgpKSk7IC8vIGlzSW5oZXJpdCAtPiAoc3RhdGUucGFyZW50Tm9kZSgpICYmIHN0YXRl
LnBhcmVudFN0eWxlKCkpCi0KLSAgICBpZiAoIXN0YXRlLmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJT
dHlsZSgpICYmICghc3RhdGUuYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpIHx8ICFp
c1ZhbGlkVmlzaXRlZExpbmtQcm9wZXJ0eShpZCkpKSB7Ci0gICAgICAgIC8vIExpbWl0IHRoZSBw
cm9wZXJ0aWVzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gb25seSB0aGUgb25lcyBob25vcmVkIGJ5
IDp2aXNpdGVkLgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGlzSW5oZXJpdCAm
JiAhc3RhdGUucGFyZW50U3R5bGUoKS0+aGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMo
KSAmJiAhQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHkoaWQpKQotICAgICAgICBzdGF0
ZS5wYXJlbnRTdHlsZSgpLT5zZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpOwot
Ci0jaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCi0gICAgaWYgKGlkID09IENTU1Byb3BlcnR5VmFy
aWFibGUpIHsKLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04odmFsdWUt
PmlzVmFyaWFibGVWYWx1ZSgpKTsKLSAgICAgICAgQ1NTVmFyaWFibGVWYWx1ZSogdmFyaWFibGUg
PSBzdGF0aWNfY2FzdDxDU1NWYXJpYWJsZVZhbHVlKj4odmFsdWUpOwotICAgICAgICBBU1NFUlQo
IXZhcmlhYmxlLT5uYW1lKCkuaXNFbXB0eSgpKTsKLSAgICAgICAgQVNTRVJUKCF2YXJpYWJsZS0+
dmFsdWUoKS5pc0VtcHR5KCkpOwotICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRWYXJpYWJsZSh2
YXJpYWJsZS0+bmFtZSgpLCB2YXJpYWJsZS0+dmFsdWUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0jZW5kaWYKLQotICAgIC8vIENoZWNrIGxvb2t1cCB0YWJsZSBmb3IgaW1wbGVtZW50YXRp
b25zIGFuZCB1c2Ugd2hlbiBhdmFpbGFibGUuCi0gICAgY29uc3QgUHJvcGVydHlIYW5kbGVyJiBo
YW5kbGVyID0gbV9kZXByZWNhdGVkU3R5bGVCdWlsZGVyLnByb3BlcnR5SGFuZGxlcihpZCk7Ci0g
ICAgaWYgKGhhbmRsZXIuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpCi0gICAg
ICAgICAgICBoYW5kbGVyLmFwcGx5SW5oZXJpdFZhbHVlKGlkLCB0aGlzKTsKLSAgICAgICAgZWxz
ZSBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgaGFuZGxlci5hcHBseUluaXRpYWxWYWx1ZShp
ZCwgdGhpcyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGhhbmRsZXIuYXBwbHlWYWx1ZShp
ZCwgdGhpcywgdmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSA/IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpIDogMDsKLQotICAgIGZsb2F0IHpv
b21GYWN0b3IgPSBzdGF0ZS5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7Ci0KLSAgICAvLyBXaGF0
IGZvbGxvd3MgaXMgYSBsaXN0IHRoYXQgbWFwcyB0aGUgQ1NTIHByb3BlcnRpZXMgaW50byB0aGVp
ciBjb3JyZXNwb25kaW5nIGZyb250LWVuZAotICAgIC8vIFJlbmRlclN0eWxlIHZhbHVlcy4KLSAg
ICBzd2l0Y2ggKGlkKSB7Ci0gICAgLy8gbGlzdHMKLSAgICBjYXNlIENTU1Byb3BlcnR5Q29udGVu
dDoKLSAgICAgICAgLy8gbGlzdCBvZiBzdHJpbmcsIHVyaSwgY291bnRlciwgYXR0ciwgaQotICAg
ICAgICB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSW4gQ1NTMywgaXQgd2lsbCBiZSBwb3NzaWJs
ZSB0byBpbmhlcml0IGNvbnRlbnQuIEluIENTUzIgaXQgaXMgbm90LiBUaGlzCi0gICAgICAgICAg
ICAvLyBub3RlIGlzIGEgcmVtaW5kZXIgdGhhdCBldmVudHVhbGx5ICJpbmhlcml0IiBuZWVkcyB0
byBiZSBzdXBwb3J0ZWQuCi0KLSAgICAgICAgICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAg
ICAgICAgICBzdGF0ZS5zdHlsZSgpLT5jbGVhckNvbnRlbnQoKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghdmFsdWUtPmlzVmFsdWVM
aXN0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBib29sIGRpZFNl
dCA9IGZhbHNlOwotICAgICAgICAgICAgZm9yIChDU1NWYWx1ZUxpc3RJdGVyYXRvciBpID0gdmFs
dWU7IGkuaGFzTW9yZSgpOyBpLmFkdmFuY2UoKSkgewotICAgICAgICAgICAgICAgIENTU1ZhbHVl
KiBpdGVtID0gaS52YWx1ZSgpOwotICAgICAgICAgICAgICAgIGlmIChpdGVtLT5pc0ltYWdlR2Vu
ZXJhdG9yVmFsdWUoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS0+aXNHcmFkaWVu
dFZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250
ZW50KFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZShzdGF0aWNfY2FzdDxDU1NHcmFkaWVudFZh
bHVlKj4oaXRlbSktPmdyYWRpZW50V2l0aFN0eWxlc1Jlc29sdmVkKHRoaXMpLmdldCgpKSwgZGlk
U2V0KTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudChTdHlsZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSo+KGl0ZW0pKSwgZGlkU2V0KTsKLSAgICAg
ICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkK
LSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0tPmlzSW1hZ2VTZXRWYWx1ZSgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldENvbnRlbnQoc2V0T3JQZW5kaW5n
RnJvbVZhbHVlKENTU1Byb3BlcnR5Q29udGVudCwgc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VTZXRWYWx1
ZSo+KGl0ZW0pKSwgZGlkU2V0KTsKLSAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsK
LSNlbmRpZgotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChpdGVtLT5p
c0ltYWdlVmFsdWUoKSkgewotICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRD
b250ZW50KGNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUNvbnRlbnQsIHN0YXRp
Y19jYXN0PENTU0ltYWdlVmFsdWUqPihpdGVtKSksIGRpZFNldCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGRpZFNldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBjb250ZW50VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KGl0ZW0pOwotCi0gICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRWYWx1ZS0+aXNTdHJp
bmcoKSkgewotICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KGNv
bnRlbnRWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKS5pbXBsKCksIGRpZFNldCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGRpZFNldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb250
ZW50VmFsdWUtPmlzQXR0cigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBDYW4g
YSBuYW1lc3BhY2UgYmUgc3BlY2lmaWVkIGZvciBhbiBhdHRyKGZvbyk/Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChzdGF0ZS5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBOT1BTRVVETykKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFVuaXF1ZSgpOwotICAgICAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5wYXJlbnRTdHls
ZSgpLT5zZXRVbmlxdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBhdHRy
KG51bGxBdG9tLCBjb250ZW50VmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkuaW1wbCgpLCBudWxsQXRv
bSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBzdGF0
ZS5lbGVtZW50KCktPmdldEF0dHJpYnV0ZShhdHRyKTsKLSAgICAgICAgICAgICAgICAgICAgc3Rh
dGUuc3R5bGUoKS0+c2V0Q29udGVudCh2YWx1ZS5pc051bGwoKSA/IGVtcHR5QXRvbSA6IHZhbHVl
LmltcGwoKSwgZGlkU2V0KTsKLSAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgdGhlIGZhY3QgdGhhdCB0aGUgYXR0cmlidXRl
IHZhbHVlIGFmZmVjdHMgdGhlIHN0eWxlCi0gICAgICAgICAgICAgICAgICAgIG1fcnVsZVNldHMu
ZmVhdHVyZXMoKS5hdHRyc0luUnVsZXMuYWRkKGF0dHIubG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRWYWx1ZS0+aXNDb3VudGVyKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgQ291bnRlciogY291bnRlclZhbHVlID0gY29udGVudFZhbHVlLT5n
ZXRDb3VudGVyVmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgRUxpc3RTdHlsZVR5cGUgbGlz
dFN0eWxlVHlwZSA9IE5vbmVMaXN0U3R5bGU7Ci0gICAgICAgICAgICAgICAgICAgIGludCBsaXN0
U3R5bGVJZGVudCA9IGNvdW50ZXJWYWx1ZS0+bGlzdFN0eWxlSWRlbnQoKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGxpc3RTdHlsZUlkZW50ICE9IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0aWNfY2FzdDxFTGlzdFN0eWxlVHlwZT4o
bGlzdFN0eWxlSWRlbnQgLSBDU1NWYWx1ZURpc2MpOwotICAgICAgICAgICAgICAgICAgICBPd25Q
dHI8Q291bnRlckNvbnRlbnQ+IGNvdW50ZXIgPSBhZG9wdFB0cihuZXcgQ291bnRlckNvbnRlbnQo
Y291bnRlclZhbHVlLT5pZGVudGlmaWVyKCksIGxpc3RTdHlsZVR5cGUsIGNvdW50ZXJWYWx1ZS0+
c2VwYXJhdG9yKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29u
dGVudChjb3VudGVyLnJlbGVhc2UoKSwgZGlkU2V0KTsKLSAgICAgICAgICAgICAgICAgICAgZGlk
U2V0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKGNvbnRlbnRWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlT3BlblF1b3RlOgotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUu
c3R5bGUoKS0+c2V0Q29udGVudChPUEVOX1FVT1RFLCBkaWRTZXQpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQ2xvc2VRdW90ZToKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldENvbnRlbnQoQ0xPU0VfUVVPVEUsIGRpZFNl
dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb09w
ZW5RdW90ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldENvbnRl
bnQoTk9fT1BFTl9RVU9URSwgZGlkU2V0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpZFNl
dCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZU5vQ2xvc2VRdW90ZToKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRlLnN0eWxlKCktPnNldENvbnRlbnQoTk9fQ0xPU0VfUVVPVEUsIGRpZFNldCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBub3JtYWwgYW5kIG5vbmUgZG8gbm90IGhhdmUgYW55IGVmZmVjdC4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIHsgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFkaWRTZXQpCi0gICAgICAg
ICAgICAgICAgc3RhdGUuc3R5bGUoKS0+Y2xlYXJDb250ZW50KCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5UXVvdGVzOgotICAgICAgICBpZiAo
aXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRRdW90ZXMoc3RhdGUu
cGFyZW50U3R5bGUoKS0+cXVvdGVzKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNl
dFF1b3RlcygwKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAo
dmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKLSAgICAgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9
IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKLSAgICAgICAgICAgIFJlZlB0cjxR
dW90ZXNEYXRhPiBxdW90ZXMgPSBRdW90ZXNEYXRhOjpjcmVhdGUoKTsKLSAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC0+bGVuZ3RoKCk7IGkgKz0gMikgewotICAgICAgICAg
ICAgICAgIENTU1ZhbHVlKiBmaXJzdCA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7
Ci0gICAgICAgICAgICAgICAgLy8gaXRlbSgpIHJldHVybnMgbnVsbCBpZiBvdXQgb2YgYm91bmRz
IHNvIHRoaXMgaXMgc2FmZS4KLSAgICAgICAgICAgICAgICBDU1NWYWx1ZSogc2Vjb25kID0gbGlz
dC0+aXRlbShpICsgMSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFzZWNvbmQpCi0gICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKGZpcnN0LT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwotICAgICAgICAgICAgICAg
IEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNlY29uZC0+aXNQcmltaXRpdmVWYWx1
ZSgpKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgc3RhcnRRdW90ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4oZmlyc3QpLT5nZXRTdHJpbmdWYWx1ZSgpOwotICAgICAgICAgICAg
ICAgIFN0cmluZyBlbmRRdW90ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oc2Vj
b25kKS0+Z2V0U3RyaW5nVmFsdWUoKTsKLSAgICAgICAgICAgICAgICBxdW90ZXMtPmFkZFBhaXIo
c3RkOjptYWtlX3BhaXIoc3RhcnRRdW90ZSwgZW5kUXVvdGUpKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFF1b3RlcyhxdW90ZXMpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkgewotICAgICAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkKLSAg
ICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRRdW90ZXMoUXVvdGVzRGF0YTo6Y3JlYXRl
KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICAvLyBTaG9ydGhhbmQgcHJvcGVy
dGllcy4KLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udDoKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkg
ewotICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHN0YXRlLnBh
cmVudFN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICAgICAgc3RhdGUuc3R5bGUo
KS0+c2V0TGluZUhlaWdodChzdGF0ZS5wYXJlbnRTdHlsZSgpLT5zcGVjaWZpZWRMaW5lSGVpZ2h0
KCkpOwotICAgICAgICAgICAgc3RhdGUuc2V0TGluZUhlaWdodFZhbHVlKDApOwotICAgICAgICAg
ICAgc2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVu
dFNldHRpbmdzKCk7Ci0gICAgICAgICAgICBBU1NFUlQoc2V0dGluZ3MpOyAvLyBJZiB3ZSdyZSBk
b2luZyBzdHlsZSByZXNvbHV0aW9uLCB0aGlzIGRvY3VtZW50IHNob3VsZCBhbHdheXMgYmUgaW4g
YSBmcmFtZSBhbmQgdGh1cyBoYXZlIHNldHRpbmdzCi0gICAgICAgICAgICBpZiAoIXNldHRpbmdz
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGluaXRpYWxpemVGb250U3R5
bGUoc2V0dGluZ3MpOwotICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlKSB7Ci0gICAg
ICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFs
TGluZUhlaWdodCgpKTsKLSAgICAgICAgICAgIHN0YXRlLnNldExpbmVIZWlnaHRWYWx1ZSgwKTsK
LQotICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKLSAgICAgICAg
ICAgIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+c3lzdGVtRm9udChwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSwgZm9udERlc2NyaXB0aW9uKTsKLQotICAgICAgICAgICAgLy8gRG91Ymxl
LWNoZWNrIGFuZCBzZWUgaWYgdGhlIHRoZW1lIGRpZCBhbnl0aGluZy4gSWYgbm90LCBkb24ndCBi
b3RoZXIgdXBkYXRpbmcgdGhlIGZvbnQuCi0gICAgICAgICAgICBpZiAoZm9udERlc2NyaXB0aW9u
LmlzQWJzb2x1dGVTaXplKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHJl
bmRlcmluZyBtb2RlIGFuZCBwcmludGVyIGZvbnQgc2V0dGluZ3MgYXJlIHVwZGF0ZWQuCi0gICAg
ICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnRTZXR0aW5ncygpOwotICAg
ICAgICAgICAgICAgIEFTU0VSVChzZXR0aW5ncyk7IC8vIElmIHdlJ3JlIGRvaW5nIHN0eWxlIHJl
c29sdXRpb24sIHRoaXMgZG9jdW1lbnQgc2hvdWxkIGFsd2F5cyBiZSBpbiBhIGZyYW1lIGFuZCB0
aHVzIGhhdmUgc2V0dGluZ3MKLSAgICAgICAgICAgICAgICBpZiAoIXNldHRpbmdzKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNl
dFJlbmRlcmluZ01vZGUoc2V0dGluZ3MtPmZvbnRSZW5kZXJpbmdNb2RlKCkpOwotICAgICAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRVc2VQcmludGVyRm9udChkb2N1bWVudCgpLT5wcmlu
dGluZygpIHx8ICFzZXR0aW5ncy0+c2NyZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJsZWQoKSk7Ci0K
LSAgICAgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIHpvb20gZmFjdG9yLgotICAgICAgICAgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoZ2V0Q29tcHV0ZWRTaXplRnJvbVNw
ZWNpZmllZFNpemUoZG9jdW1lbnQoKSwgc3RhdGUuc3R5bGUoKSwgZm9udERlc2NyaXB0aW9uLmlz
QWJzb2x1dGVTaXplKCksIGZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCksIHVzZVNWR1pv
b21SdWxlcygpKSk7Ci0gICAgICAgICAgICAgICAgc2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNj
cmlwdGlvbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzRm9u
dFZhbHVlKCkpIHsKLSAgICAgICAgICAgIEZvbnRWYWx1ZSogZm9udCA9IHN0YXRpY19jYXN0PEZv
bnRWYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgICAgIGlmICghZm9udC0+c3R5bGUgfHwgIWZvbnQt
PnZhcmlhbnQgfHwgIWZvbnQtPndlaWdodAotICAgICAgICAgICAgICAgIHx8ICFmb250LT5zaXpl
IHx8ICFmb250LT5saW5lSGVpZ2h0IHx8ICFmb250LT5mYW1pbHkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwg
Zm9udC0+c3R5bGUuZ2V0KCkpOwotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0
eUZvbnRWYXJpYW50LCBmb250LT52YXJpYW50LmdldCgpKTsKLSAgICAgICAgICAgIGFwcGx5UHJv
cGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCBmb250LT53ZWlnaHQuZ2V0KCkpOwotICAgICAg
ICAgICAgLy8gVGhlIHByZXZpb3VzIHByb3BlcnRpZXMgY2FuIGRpcnR5IG91ciBmb250IGJ1dCB0
aGV5IGRvbid0IHRyeSB0byByZWFkIHRoZSBmb250J3MKLSAgICAgICAgICAgIC8vIHByb3BlcnRp
ZXMgYmFjaywgd2hpY2ggaXMgc2FmZS4gSG93ZXZlciBpZiBmb250LXNpemUgaXMgdXNpbmcgdGhl
ICdleCcgdW5pdCwgaXQgd2lsbAotICAgICAgICAgICAgLy8gbmVlZCBxdWVyeSB0aGUgZGlydGll
ZCBmb250J3MgeC1oZWlnaHQgdG8gZ2V0IHRoZSBjb21wdXRlZCBzaXplLiBUbyBiZSBzYWZlIGlu
IHRoaXMKLSAgICAgICAgICAgIC8vIGNhc2UsIGxldCdzIGp1c3QgdXBkYXRlIHRoZSBmb250IG5v
dy4KLSAgICAgICAgICAgIHVwZGF0ZUZvbnQoKTsKLSAgICAgICAgICAgIGFwcGx5UHJvcGVydHko
Q1NTUHJvcGVydHlGb250U2l6ZSwgZm9udC0+c2l6ZS5nZXQoKSk7Ci0KLSAgICAgICAgICAgIHN0
YXRlLnNldExpbmVIZWlnaHRWYWx1ZShmb250LT5saW5lSGVpZ2h0LmdldCgpKTsKLQotICAgICAg
ICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIGZvbnQtPmZhbWlseS5n
ZXQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eUJhY2tncm91bmQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbjoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdDoKLSAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b206Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlckNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZToKLSAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
UmFkaXVzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodDoKLSAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyU3BhY2luZzoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGU6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
V2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZToKLSAgICBjYXNlIENTU1Byb3Bl
cnR5TWFyZ2luOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlPdmVyZmxvdzoKLSAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZzoKLSAgICBjYXNlIENT
U1Byb3BlcnR5VHJhbnNpdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcjoKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJFbmQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0OgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJSYWRpdXM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbnM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGU6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhG
bG93OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQ29sdW1uOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRHcmlkUm93OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5D
b2xsYXBzZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZToKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFzazoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0
aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0OgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTdHJva2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbjoKLSNpZiBFTkFCTEUoQ1NTX0VYQ0xV
U0lPTlMpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXA6Ci0jZW5kaWYKLSAgICAgICAg
QVNTRVJUKGlzRXhwYW5kZWRTaG9ydGhhbmQoaWQpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgLy8gQ1NTMyBQcm9wZXJ0aWVzCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRleHRTaGFkb3c6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNoYWRvdzoK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93OiB7Ci0gICAgICAgIGlmIChpc0lu
aGVyaXQpIHsKLSAgICAgICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlLnN0eWxlKCktPnNldFRleHRTaGFkb3coc3RhdGUu
cGFyZW50U3R5bGUoKS0+dGV4dFNoYWRvdygpID8gYWRvcHRQdHIobmV3IFNoYWRvd0RhdGEoKnN0
YXRlLnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3coKSkpIDogbnVsbHB0cik7Ci0gICAgICAgICAg
ICByZXR1cm4gc3RhdGUuc3R5bGUoKS0+c2V0Qm94U2hhZG93KHN0YXRlLnBhcmVudFN0eWxlKCkt
PmJveFNoYWRvdygpID8gYWRvcHRQdHIobmV3IFNoYWRvd0RhdGEoKnN0YXRlLnBhcmVudFN0eWxl
KCktPmJveFNoYWRvdygpKSkgOiBudWxscHRyKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNJ
bml0aWFsIHx8IHByaW1pdGl2ZVZhbHVlKSAvLyBpbml0aWFsIHwgbm9uZQotICAgICAgICAgICAg
cmV0dXJuIGlkID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdyA/IHN0YXRlLnN0eWxlKCktPnNldFRl
eHRTaGFkb3cobnVsbHB0cikgOiBzdGF0ZS5zdHlsZSgpLT5zZXRCb3hTaGFkb3cobnVsbHB0cik7
Ci0KLSAgICAgICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBmb3IgKENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGkgPSB2YWx1ZTsgaS5oYXNN
b3JlKCk7IGkuYWR2YW5jZSgpKSB7Ci0gICAgICAgICAgICBDU1NWYWx1ZSogY3VyclZhbHVlID0g
aS52YWx1ZSgpOwotICAgICAgICAgICAgaWYgKCFjdXJyVmFsdWUtPmlzU2hhZG93VmFsdWUoKSkK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIFNoYWRvd1ZhbHVlKiBpdGVt
ID0gc3RhdGljX2Nhc3Q8U2hhZG93VmFsdWUqPihjdXJyVmFsdWUpOwotICAgICAgICAgICAgaW50
IHggPSBpdGVtLT54LT5jb21wdXRlTGVuZ3RoPGludD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9v
dEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGludCB5ID0gaXRlbS0+
eS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5
bGUoKSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICBpbnQgYmx1ciA9IGl0ZW0tPmJsdXIgPyBp
dGVtLT5ibHVyLT5jb21wdXRlTGVuZ3RoPGludD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVs
ZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKSA6IDA7Ci0gICAgICAgICAgICBpbnQgc3ByZWFkID0g
aXRlbS0+c3ByZWFkID8gaXRlbS0+c3ByZWFkLT5jb21wdXRlTGVuZ3RoPGludD4oc3RhdGUuc3R5
bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKSA6IDA7Ci0gICAgICAg
ICAgICBTaGFkb3dTdHlsZSBzaGFkb3dTdHlsZSA9IGl0ZW0tPnN0eWxlICYmIGl0ZW0tPnN0eWxl
LT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW5zZXQgPyBJbnNldCA6IE5vcm1hbDsKLSAgICAgICAg
ICAgIENvbG9yIGNvbG9yOwotICAgICAgICAgICAgaWYgKGl0ZW0tPmNvbG9yKQotICAgICAgICAg
ICAgICAgIGNvbG9yID0gY29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoaXRlbS0+Y29sb3IuZ2V0KCkp
OwotICAgICAgICAgICAgZWxzZSBpZiAoc3RhdGUuc3R5bGUoKSkKLSAgICAgICAgICAgICAgICBj
b2xvciA9IHN0YXRlLnN0eWxlKCktPmNvbG9yKCk7Ci0KLSAgICAgICAgICAgIE93blB0cjxTaGFk
b3dEYXRhPiBzaGFkb3dEYXRhID0gYWRvcHRQdHIobmV3IFNoYWRvd0RhdGEoSW50UG9pbnQoeCwg
eSksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIGlkID09IENTU1Byb3BlcnR5V2Via2l0Qm94
U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFuc3BhcmVudCkpOwot
ICAgICAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdykKLSAgICAgICAgICAg
ICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KHNoYWRvd0RhdGEucmVsZWFzZSgpLCBp
LmluZGV4KCkpOyAvLyBhZGQgdG8gdGhlIGxpc3QgaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGVu
dHJ5Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0
Qm94U2hhZG93KHNoYWRvd0RhdGEucmVsZWFzZSgpLCBpLmluZGV4KCkpOyAvLyBhZGQgdG8gdGhl
IGxpc3QgaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGVudHJ5Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdDogewot
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChib3hSZWZsZWN0LCBCb3hSZWZsZWN0
KQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpIHsKLSAgICAgICAgICAgIHN0YXRlLnN0eWxl
KCktPnNldEJveFJlZmxlY3QoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hSZWZsZWN0KCkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF2YWx1ZS0+aXNSZWZs
ZWN0VmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBDU1NSZWZsZWN0VmFs
dWUqIHJlZmxlY3RWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1JlZmxlY3RWYWx1ZSo+KHZhbHVlKTsK
LSAgICAgICAgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gcmVmbGVjdGlvbiA9IFN0eWxlUmVmbGVj
dGlvbjo6Y3JlYXRlKCk7Ci0gICAgICAgIHJlZmxlY3Rpb24tPnNldERpcmVjdGlvbigqcmVmbGVj
dFZhbHVlLT5kaXJlY3Rpb24oKSk7Ci0gICAgICAgIGlmIChyZWZsZWN0VmFsdWUtPm9mZnNldCgp
KQotICAgICAgICAgICAgcmVmbGVjdGlvbi0+c2V0T2Zmc2V0KHJlZmxlY3RWYWx1ZS0+b2Zmc2V0
KCktPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZl
cnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVs
ZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKSk7Ci0gICAgICAgIE5pbmVQaWVjZUltYWdlIG1hc2s7
Ci0gICAgICAgIG1hc2suc2V0TWFza0RlZmF1bHRzKCk7Ci0gICAgICAgIG1fc3R5bGVNYXAubWFw
TmluZVBpZWNlSW1hZ2UoaWQsIHJlZmxlY3RWYWx1ZS0+bWFzaygpLCBtYXNrKTsKLSAgICAgICAg
cmVmbGVjdGlvbi0+c2V0TWFzayhtYXNrKTsKLQotICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRC
b3hSZWZsZWN0KHJlZmxlY3Rpb24ucmVsZWFzZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBjYXNlIENTU1Byb3BlcnR5U3JjOiAvLyBPbmx5IHVzZWQgaW4gQGZvbnQtZmFjZSBydWxl
cy4KLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2U6IC8v
IE9ubHkgdXNlZCBpbiBAZm9udC1mYWNlIHJ1bGVzLgotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZTogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRf
SU5JVElBTChsb2NhbGUsIExvY2FsZSk7Ci0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRMb2NhbGUo
bnVsbEF0b20pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRM
b2NhbGUocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkpOwotICAgICAgICBGb250RGVz
Y3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc3RhdGUuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9u
KCk7Ci0gICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTY3JpcHQobG9jYWxlVG9TY3JpcHRDb2Rl
Rm9yRm9udFNlbGVjdGlvbihzdGF0ZS5zdHlsZSgpLT5sb2NhbGUoKSkpOwotICAgICAgICBzZXRG
b250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dERhc2hib2FyZFJlZ2lvbjoKLSAgICB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklU
SUFMKGRhc2hib2FyZFJlZ2lvbnMsIERhc2hib2FyZFJlZ2lvbnMpCi0gICAgICAgIGlmICghcHJp
bWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkgewotICAgICAgICAgICAgc3RhdGUu
c3R5bGUoKS0+c2V0RGFzaGJvYXJkUmVnaW9ucyhSZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJl
Z2lvbnMoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBEYXNo
Ym9hcmRSZWdpb24qIHJlZ2lvbiA9IHByaW1pdGl2ZVZhbHVlLT5nZXREYXNoYm9hcmRSZWdpb25W
YWx1ZSgpOwotICAgICAgICBpZiAoIXJlZ2lvbikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBEYXNoYm9hcmRSZWdpb24qIGZpcnN0ID0gcmVnaW9uOwotICAgICAgICB3aGlsZSAocmVn
aW9uKSB7Ci0gICAgICAgICAgICBMZW5ndGggdG9wID0gY29udmVydFRvSW50TGVuZ3RoKHJlZ2lv
bi0+dG9wKCksIHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSk7Ci0gICAg
ICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVnaW9uLT5yaWdodCgp
LCBzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCkpOwotICAgICAgICAgICAg
TGVuZ3RoIGJvdHRvbSA9IGNvbnZlcnRUb0ludExlbmd0aChyZWdpb24tPmJvdHRvbSgpLCBzdGF0
ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCkpOwotICAgICAgICAgICAgTGVuZ3Ro
IGxlZnQgPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVnaW9uLT5sZWZ0KCksIHN0YXRlLnN0eWxlKCks
IHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSk7Ci0KLSAgICAgICAgICAgIGlmICh0b3AuaXNVbmRl
ZmluZWQoKSkKLSAgICAgICAgICAgICAgICB0b3AgPSBMZW5ndGgoKTsKLSAgICAgICAgICAgIGlm
IChyaWdodC5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgICAgIHJpZ2h0ID0gTGVuZ3RoKCk7
Ci0gICAgICAgICAgICBpZiAoYm90dG9tLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICAgICAg
Ym90dG9tID0gTGVuZ3RoKCk7Ci0gICAgICAgICAgICBpZiAobGVmdC5pc1VuZGVmaW5lZCgpKQot
ICAgICAgICAgICAgICAgIGxlZnQgPSBMZW5ndGgoKTsKLQotICAgICAgICAgICAgaWYgKHJlZ2lv
bi0+bV9pc0NpcmNsZSkKLSAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXREYXNoYm9h
cmRSZWdpb24oU3R5bGVEYXNoYm9hcmRSZWdpb246OkNpcmNsZSwgcmVnaW9uLT5tX2xhYmVsLCB0
b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIHJlZ2lvbiA9PSBmaXJzdCA/IGZhbHNlIDogdHJ1ZSk7
Ci0gICAgICAgICAgICBlbHNlIGlmIChyZWdpb24tPm1faXNSZWN0YW5nbGUpCi0gICAgICAgICAg
ICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFzaGJvYXJkUmVn
aW9uOjpSZWN0YW5nbGUsIHJlZ2lvbi0+bV9sYWJlbCwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0
LCByZWdpb24gPT0gZmlyc3QgPyBmYWxzZSA6IHRydWUpOwotICAgICAgICAgICAgcmVnaW9uID0g
cmVnaW9uLT5tX25leHQuZ2V0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0ZS5kb2N1bWVu
dCgpLT5zZXRIYXNBbm5vdGF0ZWRSZWdpb25zKHRydWUpOwotCi0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRFJBR0dBQkxFX1JFR0lPTikKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0QXBwUmVnaW9uOiB7Ci0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwg
IXByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBzdGF0ZS5zdHlsZSgpLT5zZXREcmFnZ2FibGVSZWdpb25Nb2RlKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlRHJhZyA/IERyYWdnYWJsZVJlZ2lvbkRyYWcgOiBEcmFnZ2Fi
bGVSZWdpb25Ob0RyYWcpOwotICAgICAgICBzdGF0ZS5kb2N1bWVudCgpLT5zZXRIYXNBbm5vdGF0
ZWRSZWdpb25zKHRydWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aDogewotICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTCh0ZXh0U3Ryb2tlV2lkdGgsIFRleHRTdHJva2VXaWR0aCkKLSAgICAg
ICAgZmxvYXQgd2lkdGggPSAwOwotICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpKSB7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVUaGluOgotICAgICAgICBjYXNlIENTU1Zh
bHVlTWVkaXVtOgotICAgICAgICBjYXNlIENTU1ZhbHVlVGhpY2s6IHsKLSAgICAgICAgICAgIGRv
dWJsZSByZXN1bHQgPSAxLjAgLyA0ODsKLSAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU1lZGl1bSkKLSAgICAgICAgICAgICAgICByZXN1bHQgKj0g
MzsKLSAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENT
U1ZhbHVlVGhpY2spCi0gICAgICAgICAgICAgICAgcmVzdWx0ICo9IDU7Ci0gICAgICAgICAgICB3
aWR0aCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmVzdWx0LCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0VNUyktPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJv
b3RFbGVtZW50U3R5bGUoKSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgd2lkdGggPSBwcmltaXRpdmVWYWx1
ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRT
dHlsZSgpLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIHN0YXRlLnN0eWxlKCktPnNldFRleHRTdHJva2VXaWR0aCh3aWR0aCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybTogewotICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0cmFuc2Zvcm0sIFRyYW5zZm9ybSk7Ci0g
ICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKLSAgICAgICAgY3JlYXRlVHJh
bnNmb3JtT3BlcmF0aW9ucyh2YWx1ZSwgc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRT
dHlsZSgpLCBvcGVyYXRpb25zKTsKLSAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0VHJhbnNmb3Jt
KG9wZXJhdGlvbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRQZXJzcGVjdGl2ZTogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElB
TChwZXJzcGVjdGl2ZSwgUGVyc3BlY3RpdmUpCi0KLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1
ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKSB7Ci0gICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5z
ZXRQZXJzcGVjdGl2ZSgwKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGZsb2F0IHBlcnNwZWN0aXZlVmFsdWU7Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
aXNMZW5ndGgoKSkKLSAgICAgICAgICAgIHBlcnNwZWN0aXZlVmFsdWUgPSBwcmltaXRpdmVWYWx1
ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRT
dHlsZSgpLCB6b29tRmFjdG9yKTsKLSAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlz
TnVtYmVyKCkpIHsKLSAgICAgICAgICAgIC8vIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0
cmVhdCB2YWx1ZWxlc3MgbnVtYmVycyBhcyBweC4KLSAgICAgICAgICAgIHBlcnNwZWN0aXZlVmFs
dWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVW
YWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4o
c3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKTsKLSAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHBlcnNwZWN0
aXZlVmFsdWUgPj0gMC4wZikKLSAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFBlcnNwZWN0
aXZlKHBlcnNwZWN0aXZlVmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRhcEhpZ2hsaWdodENv
bG9yOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRhcEhpZ2hsaWdodENv
bG9yLCBUYXBIaWdobGlnaHRDb2xvcik7Ci0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0g
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICBDb2xvciBjb2wgPSBjb2xvckZyb21QcmltaXRp
dmVWYWx1ZShwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFRhcEhp
Z2hsaWdodENvbG9yKGNvbCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBF
TkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRPdmVyZmxvd1Njcm9sbGluZzogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRf
SU5JVElBTCh1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nLCBVc2VUb3VjaE92ZXJmbG93U2Nyb2xs
aW5nKTsKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRVc2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlVG91Y2gpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotI2VuZGlmCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUludmFsaWQ6Ci0gICAgICAgIHJl
dHVybjsKLSAgICAvLyBEaXJlY3Rpb25hbCBwcm9wZXJ0aWVzIGFyZSByZXNvbHZlZCBieSByZXNv
bHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eSgpIGJlZm9yZSB0aGUgc3dpdGNoLgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyRW5kU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFdp
ZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJTdGFydFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJCZWZvcmVDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5
bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJBZnRlclN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJBZnRlcldpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5FbmQ6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5CZWZvcmU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVy
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZToKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2U6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpbkJvdHRvbUNvbGxhcHNlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5n
RW5kOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQ6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFBhZGRpbmdBZnRlcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9naWNhbFdpZHRoOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsSGVpZ2h0OgotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNaW5Mb2dpY2FsV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1p
bkxvZ2ljYWxIZWlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxXaWR0
aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbEhlaWdodDoKLSAgICB7Ci0g
ICAgICAgIENTU1Byb3BlcnR5SUQgbmV3SWQgPSBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlv
bkF3YXJlUHJvcGVydHkoaWQsIHN0YXRlLnN0eWxlKCktPmRpcmVjdGlvbigpLCBzdGF0ZS5zdHls
ZSgpLT53cml0aW5nTW9kZSgpKTsKLSAgICAgICAgQVNTRVJUKG5ld0lkICE9IGlkKTsKLSAgICAg
ICAgcmV0dXJuIGFwcGx5UHJvcGVydHkobmV3SWQsIHZhbHVlKTsKLSAgICB9Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eUZvbnRTdHJldGNoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2g6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRM
aW5lVGhyb3VnaENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2Rl
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHlsZToKLSAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRP
dmVybGluZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lQ29sb3I6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRP
dmVybGluZVN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVXaWR0aDoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dFVuZGVybGluZUNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lTW9kZToK
LSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVN0eWxlOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0VW5kZXJsaW5lV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRT
aXplRGVsdGE6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZm
ZWN0OgotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBDU1MgVGV4dCBMYXlvdXQgTW9kdWxlIExl
dmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRXcml0aW5nTW9kZTogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh3cml0
aW5nTW9kZSwgV3JpdGluZ01vZGUpOwotICAgICAgICAKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlKQotICAgICAgICAgICAgc2V0V3JpdGluZ01vZGUoKnByaW1pdGl2ZVZhbHVlKTsKLQotICAg
ICAgICAvLyBGSVhNRTogSXQgaXMgbm90IG9rIHRvIG1vZGlmeSBkb2N1bWVudCBzdGF0ZSB3aGls
ZSBhcHBseWluZyBzdHlsZS4KLSAgICAgICAgaWYgKHN0YXRlLmVsZW1lbnQoKSAmJiBzdGF0ZS5l
bGVtZW50KCkgPT0gc3RhdGUuZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCi0gICAgICAg
ICAgICBzdGF0ZS5kb2N1bWVudCgpLT5zZXRXcml0aW5nTW9kZVNldE9uRG9jdW1lbnRFbGVtZW50
KHRydWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRPcmllbnRhdGlvbjogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElB
TCh0ZXh0T3JpZW50YXRpb24sIFRleHRPcmllbnRhdGlvbik7Ci0KLSAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlKQotICAgICAgICAgICAgc2V0VGV4dE9yaWVudGF0aW9uKCpwcmltaXRpdmVWYWx1
ZSk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRMaW5lQm94Q29udGFpbjogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChs
aW5lQm94Q29udGFpbiwgTGluZUJveENvbnRhaW4pCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsKLSAgICAg
ICAgICAgIHN0YXRlLnN0eWxlKCktPnNldExpbmVCb3hDb250YWluKExpbmVCb3hDb250YWluTm9u
ZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXZhbHVl
LT5pc0NTU0xpbmVCb3hDb250YWluVmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBDU1NMaW5lQm94Q29udGFpblZhbHVlKiBsaW5lQm94Q29udGFpblZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTTGluZUJveENvbnRhaW5WYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgc3RhdGUuc3R5
bGUoKS0+c2V0TGluZUJveENvbnRhaW4obGluZUJveENvbnRhaW5WYWx1ZS0+dmFsdWUoKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBDU1MgRm9udHMgTW9kdWxlIExldmVsIDMK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udEZlYXR1cmVTZXR0aW5nczogewotICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NT
VmFsdWVOb3JtYWwpIHsKLSAgICAgICAgICAgIHNldEZvbnREZXNjcmlwdGlvbihzdGF0ZS5zdHls
ZSgpLT5mb250RGVzY3JpcHRpb24oKS5tYWtlTm9ybWFsRmVhdHVyZVNldHRpbmdzKCkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF2YWx1ZS0+aXNWYWx1
ZUxpc3QoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBGb250RGVzY3JpcHRpb24g
Zm9udERlc2NyaXB0aW9uID0gc3RhdGUuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAg
ICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVl
KTsKLSAgICAgICAgUmVmUHRyPEZvbnRGZWF0dXJlU2V0dGluZ3M+IHNldHRpbmdzID0gRm9udEZl
YXR1cmVTZXR0aW5nczo6Y3JlYXRlKCk7Ci0gICAgICAgIGludCBsZW4gPSBsaXN0LT5sZW5ndGgo
KTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47ICsraSkgewotICAgICAgICAgICAg
Q1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOwotICAgICAg
ICAgICAgaWYgKCFpdGVtLT5pc0ZvbnRGZWF0dXJlVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIEZvbnRGZWF0dXJlVmFsdWUqIGZlYXR1cmUgPSBzdGF0aWNf
Y2FzdDxGb250RmVhdHVyZVZhbHVlKj4oaXRlbSk7Ci0gICAgICAgICAgICBzZXR0aW5ncy0+YXBw
ZW5kKEZvbnRGZWF0dXJlKGZlYXR1cmUtPnRhZygpLCBmZWF0dXJlLT52YWx1ZSgpKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEZlYXR1cmVTZXR0aW5ncyhzZXR0aW5n
cy5yZWxlYXNlKCkpOwotICAgICAgICBzZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9u
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmlsdGVyOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMKGZpbHRlciwgRmlsdGVyKTsKLSAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBv
cGVyYXRpb25zOwotICAgICAgICBpZiAoY3JlYXRlRmlsdGVyT3BlcmF0aW9ucyh2YWx1ZSwgc3Rh
dGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCBvcGVyYXRpb25zKSkKLSAgICAg
ICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEZpbHRlcihvcGVyYXRpb25zKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSNlbmRpZgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQXV0b0Nv
bHVtbnM6IHsKLSAgICAgICAgR3JpZFRyYWNrU2l6ZSB0cmFja1NpemU7Ci0gICAgICAgIGlmICgh
Y3JlYXRlR3JpZFRyYWNrU2l6ZSh2YWx1ZSwgdHJhY2tTaXplLCBzdGF0ZSkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEdyaWRBdXRvQ29sdW1ucyh0cmFj
a1NpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRHcmlkQXV0b1Jvd3M6IHsKLSAgICAgICAgR3JpZFRyYWNrU2l6ZSB0cmFja1NpemU7Ci0gICAg
ICAgIGlmICghY3JlYXRlR3JpZFRyYWNrU2l6ZSh2YWx1ZSwgdHJhY2tTaXplLCBzdGF0ZSkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEdyaWRBdXRvUm93
cyh0cmFja1NpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRHcmlkQ29sdW1uczogewotICAgICAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gdHJh
Y2tTaXplczsKLSAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tMaXN0KHZhbHVlLCB0cmFja1Np
emVzLCBzdGF0ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHN0YXRlLnN0eWxlKCkt
PnNldEdyaWRDb2x1bW5zKHRyYWNrU2l6ZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkUm93czogewotICAgICAgICBWZWN0b3I8R3JpZFRy
YWNrU2l6ZT4gdHJhY2tTaXplczsKLSAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tMaXN0KHZh
bHVlLCB0cmFja1NpemVzLCBzdGF0ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHN0
YXRlLnN0eWxlKCktPnNldEdyaWRSb3dzKHRyYWNrU2l6ZXMpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRTdGFydDogewotICAgICAgICBH
cmlkUG9zaXRpb24gc3RhcnRQb3NpdGlvbjsKLSAgICAgICAgaWYgKCFjcmVhdGVHcmlkUG9zaXRp
b24odmFsdWUsIHN0YXJ0UG9zaXRpb24pKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBz
dGF0ZS5zdHlsZSgpLT5zZXRHcmlkSXRlbVN0YXJ0KHN0YXJ0UG9zaXRpb24pOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkRW5kOiB7Ci0gICAg
ICAgIEdyaWRQb3NpdGlvbiBlbmRQb3NpdGlvbjsKLSAgICAgICAgaWYgKCFjcmVhdGVHcmlkUG9z
aXRpb24odmFsdWUsIGVuZFBvc2l0aW9uKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
c3RhdGUuc3R5bGUoKS0+c2V0R3JpZEl0ZW1FbmQoZW5kUG9zaXRpb24pOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRCZWZvcmU6IHsKLSAg
ICAgICAgR3JpZFBvc2l0aW9uIGJlZm9yZVBvc2l0aW9uOwotICAgICAgICBpZiAoIWNyZWF0ZUdy
aWRQb3NpdGlvbih2YWx1ZSwgYmVmb3JlUG9zaXRpb24pKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRHcmlkSXRlbUJlZm9yZShiZWZvcmVQb3NpdGlvbik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRB
ZnRlcjogewotICAgICAgICBHcmlkUG9zaXRpb24gYWZ0ZXJQb3NpdGlvbjsKLSAgICAgICAgaWYg
KCFjcmVhdGVHcmlkUG9zaXRpb24odmFsdWUsIGFmdGVyUG9zaXRpb24pKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRHcmlkSXRlbUFmdGVyKGFmdGVyUG9z
aXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gVGhlc2UgcHJvcGVydGll
cyBhcmUgYWxpYXNlZCBhbmQgRGVwcmVjYXRlZFN0eWxlQnVpbGRlciBhbHJlYWR5IGFwcGxpZWQg
dGhlIHByb3BlcnR5IG9uIHRoZSBwcmVmaXhlZCB2ZXJzaW9uLgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlUcmFuc2l0aW9uRGVsYXk6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25EdXJhdGlv
bjoKLSAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvblByb3BlcnR5OgotICAgIGNhc2UgQ1NT
UHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246Ci0gICAgICAgIHJldHVybjsKLSAgICAv
LyBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBpbXBsZW1lbnRlZCBpbiB0aGUgRGVwcmVjYXRlZFN0eWxl
QnVpbGRlciBsb29rdXAgdGFibGUuCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRh
Y2htZW50OgotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcDoKLSAgICBjYXNlIENT
U1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
SW1hZ2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW46Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRQb3NpdGlvblk6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WToKLSAgICBjYXNlIENTU1Byb3Bl
cnR5QmFja2dyb3VuZFNpemU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9y
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1czoKLSAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRo
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZToKLSAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVySW1hZ2VPdXRzZXQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlUmVw
ZWF0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNsaWNlOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZToKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1h
Z2VXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcjoKLSAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHRXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3I6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlclRvcFJpZ2h0UmFkaXVzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZToK
LSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eUJvdHRvbToKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2l6aW5nOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlDYXB0aW9uU2lkZToKLSAgICBjYXNlIENTU1Byb3BlcnR5Q2xlYXI6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eUNsaXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlDb3VudGVySW5jcmVtZW50OgotICAgIGNhc2UgQ1NTUHJvcGVydHlDb3VudGVyUmVz
ZXQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5RGly
ZWN0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlEaXNwbGF5OgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlFbXB0eUNlbGxzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDoKLSAgICBjYXNlIENTU1By
b3BlcnR5Rm9udFNpemU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZToKLSAgICBjYXNl
IENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQ6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUhlaWdodDoKLSNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVO
VEFUSU9OKQotICAgIGNhc2UgQ1NTUHJvcGVydHlJbWFnZU9yaWVudGF0aW9uOgotI2VuZGlmCi0g
ICAgY2FzZSBDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nOgotI2lmIEVOQUJMRShDU1NfSU1BR0Vf
UkVTT0xVVElPTikKLSAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZXNvbHV0aW9uOgotI2VuZGlm
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxlZnQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxldHRlclNw
YWNpbmc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUxpc3RTdHlsZUltYWdlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlv
bjoKLSAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKLSAgICBjYXNlIENTU1Byb3Bl
cnR5TWFyZ2luQm90dG9tOgotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0OgotICAgIGNh
c2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDoKLSAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luVG9w
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhIZWlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1h
eFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5IZWlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eU1pbldpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPcGFjaXR5OgotICAgIGNhc2UgQ1NT
UHJvcGVydHlPcnBoYW5zOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3I6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxp
bmVTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlPdmVyZmxvd1dyYXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WDoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dZOgotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5n
Qm90dG9tOgotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdDoKLSAgICBjYXNlIENTU1By
b3BlcnR5UGFkZGluZ1JpZ2h0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nVG9wOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5UGFn
ZUJyZWFrQmVmb3JlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGU6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBvc2l0
aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlSZXNpemU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVJp
Z2h0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlTaXplOgotICAgIGNhc2UgQ1NTUHJvcGVydHlTcGVh
azoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGFiU2l6ZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGFi
bGVMYXlvdXQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbGlnbjoKLSAgICBjYXNlIENTU1By
b3BlcnR5VGV4dERlY29yYXRpb246Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRJbmRlbnQ6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdzoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dFJlbmRlcmluZzoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybToKLSAgICBjYXNl
IENTU1Byb3BlcnR5VG9wOgotICAgIGNhc2UgQ1NTUHJvcGVydHlVbmljb2RlQmlkaToKLSNpZiBF
TkFCTEUoQ1NTX1ZBUklBQkxFUykKLSAgICBjYXNlIENTU1Byb3BlcnR5VmFyaWFibGU6Ci0jZW5k
aWYKLSAgICBjYXNlIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbjoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5VmlzaWJpbGl0eToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXk6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbjoKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRHVyYXRpb246Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmlt
YXRpb25JdGVyYXRpb25Db3VudDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
TmFtZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbjoKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
QXNwZWN0UmF0aW86Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0
eToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXA6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJhY2tncm91bmRPcmlnaW46Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tn
cm91bmRTaXplOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQ6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyVmVydGljYWxTcGFjaW5nOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbjoK
LSNpZiBFTkFCTEUoQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3hEZWNvcmF0aW9uQnJlYWs6Ci0jZW5kaWYKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm94RGlyZWN0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4Ogot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4R3JvdXA6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJveExpbmVzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFs
R3JvdXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yaWVudDoKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Qm94UGFjazoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sb3JD
b3JyZWN0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5BeGlzOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uQnJlYWtJbnNpZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50Ogot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5HYXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtblByb2dyZXNzaW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5SdWxlQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZToK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5TcGFuOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5XaWR0aDoKLSNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCi0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEN1cnNvclZpc2liaWxpdHk6Ci0jZW5kaWYKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QWxpZ25Db250ZW50OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbGlnbkl0ZW1z
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbGlnblNlbGY6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEZsZXhCYXNpczoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVj
dGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEdyb3c6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEZsZXhTaHJpbms6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhX
cmFwOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRKdXN0aWZ5Q29udGVudDoKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0T3JkZXI6Ci0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRGbG93RnJvbToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Rmxvd0ludG86Ci0jZW5kaWYKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udEtlcm5pbmc6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmc6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEZvbnRWYXJpYW50TGlnYXR1cmVzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRIaWdobGlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJh
Y3RlcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRBZnRlcjoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmU6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEh5cGhlbnM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVBbGlnbjoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrOgotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRMaW5lQ2xhbXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVHcmlkOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lU25hcDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZURpcmVjdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUlu
Y3JlbWVudDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb246Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZDoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFycXVlZVN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94
SW1hZ2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZU91dHNldDoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlUmVwZWF0OgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTbGljZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza0JveEltYWdlU291cmNlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94
SW1hZ2VXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXA6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tJbWFnZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbjoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWDoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFza1Bvc2l0aW9uWToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Jl
cGVhdFg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TmJz
cE1vZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblg6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0UHJpbnRDb2xvckFkanVzdDoKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQWZ0ZXI6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFJlZ2lvbkJyZWFrQmVmb3JlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSZWdpb25C
cmVha0luc2lkZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uT3ZlcmZsb3c6Ci0j
ZW5kaWYKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmc6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VGV4dENvbWJpbmU6Ci0jaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VGV4dERlY29yYXRpb25MaW5lOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0
RGVjb3JhdGlvblN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlv
bkNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0QWxpZ25MYXN0OgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0SnVzdGlmeToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dFVuZGVybGluZVBvc2l0aW9uOgotI2VuZGlmIC8vIENTUzNfVEVYVAotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRFbXBoYXNpc1N0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9y
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHk6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VHJhbnNmb3JtT3JpZ2luWDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3Jp
Z2luWToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWjoKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zaXRpb25EZWxheToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNp
dGlvbkR1cmF0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVy
dHk6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbjoK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFVzZXJNb2RpZnk6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENsaXBQYXRoOgotI2lmIEVOQUJMRShDU1NfRVhD
TFVTSU9OUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3c6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFNoYXBlTWFyZ2luOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRT
aGFwZVBhZGRpbmc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBUaHJvdWdoOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTaGFwZUluc2lkZToKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0U2hhcGVPdXRzaWRlOgotI2VuZGlmCi0jaWYgRU5BQkxFKENTU19TSEFERVJTKQotICAg
IGNhc2UgQ1NTUHJvcGVydHlNaXg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhcmFtZXRlcnM6Ci0j
ZW5kaWYKLSAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZToKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2lkb3dzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXaWR0aDoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V29yZEJyZWFrOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkU3BhY2luZzoKLSAgICBjYXNl
IENTU1Byb3BlcnR5V29yZFdyYXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVpJbmRleDoKLSAgICBj
YXNlIENTU1Byb3BlcnR5Wm9vbToKLSNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQot
ICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhab29tOgotICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5ab29t
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlPcmllbnRhdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5
VXNlclpvb206Ci0jZW5kaWYKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICBkZWZhdWx0OgotI2lmIEVOQUJMRShTVkcpCi0gICAgICAgIC8vIFRyeSB0
aGUgU1ZHIHByb3BlcnRpZXMKLSAgICAgICAgYXBwbHlTVkdQcm9wZXJ0eShpZCwgdmFsdWUpOwot
I2VuZGlmCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KIFBhc3NSZWZQdHI8U3R5bGVJbWFn
ZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVJbWFnZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NW
YWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5pc0ltYWdlVmFsdWUoKSkKQEAgLTQ1MjMs
NyArMzM4NCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIAogICAgIGluZm8uYWRkTWVtYmVy
KG1fZm9udFNlbGVjdG9yLCAiZm9udFNlbGVjdG9yIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV92
aWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRzLCAidmlld3BvcnREZXBlbmRlbnRNZWRp
YVF1ZXJ5UmVzdWx0cyIpOwotICAgIGluZm8uaWdub3JlTWVtYmVyKG1fZGVwcmVjYXRlZFN0eWxl
QnVpbGRlcik7CisgICAgaW5mby5pZ25vcmVNZW1iZXIobV9zdHlsZUJ1aWxkZXIpOwogICAgIGlu
Zm8uYWRkTWVtYmVyKG1faW5zcGVjdG9yQ1NTT01XcmFwcGVycyk7CiAgICAgaW5mby5hZGRNZW1i
ZXIobV9zY29wZVJlc29sdmVyLCAic2NvcGVSZXNvbHZlciIpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuaAppbmRleCAyMGEzY2YwLi4zMjhmMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIK
ICNpbmNsdWRlICJTZWxlY3RvckZpbHRlci5oIgogI2luY2x1ZGUgIlNpYmxpbmdUcmF2ZXJzYWxT
dHJhdGVnaWVzLmgiCisjaW5jbHVkZSAiU3R5bGVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVJ
bmhlcml0ZWREYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVTY29wZVJlc29sdmVyLmgiCiAjaW5jbHVk
ZSAiVmlld3BvcnRTdHlsZVJlc29sdmVyLmgiCkBAIC03OCw3ICs3OSw2IEBAIGNsYXNzIEN1c3Rv
bUZpbHRlclBhcmFtZXRlckxpc3Q7CiBjbGFzcyBDdXN0b21GaWx0ZXJQcm9ncmFtOwogc3RydWN0
IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5nczsKIGNsYXNzIERvY3VtZW50OwotY2xhc3Mg
RGVwcmVjYXRlZFN0eWxlQnVpbGRlcjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNs
YXNzIEZyYW1lVmlldzsKQEAgLTQwMCw5ICs0MDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBw
bHlNYXRjaGVkUHJvcGVydGllcyhjb25zdCBNYXRjaFJlc3VsdCYsIGJvb2wgaW1wb3J0YW50LCBp
bnQgc3RhcnRJbmRleCwgaW50IGVuZEluZGV4LCBib29sIGluaGVyaXRlZE9ubHkpOwogICAgIHRl
bXBsYXRlIDxTdHlsZUFwcGxpY2F0aW9uUGFzcyBwYXNzPgogICAgIHZvaWQgYXBwbHlQcm9wZXJ0
aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMsIFN0eWxlUnVsZSosIGJvb2wg
aXNJbXBvcnRhbnQsIGJvb2wgaW5oZXJpdGVkT25seSwgUHJvcGVydHlXaGl0ZWxpc3RUeXBlID0g
UHJvcGVydHlXaGl0ZWxpc3ROb25lKTsKLSNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKLSAgICB2
b2lkIHJlc29sdmVWYXJpYWJsZXMoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUqLCBWZWN0b3I8c3Rk
OjpwYWlyPENTU1Byb3BlcnR5SUQsIFN0cmluZz4gPiYga25vd25FeHByZXNzaW9ucyk7Ci0jZW5k
aWYKKwogICAgIHN0YXRpYyBib29sIGlzVmFsaWRSZWdpb25TdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5SUQpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlk
Q3VlU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKTsKQEAgLTU4MiwxMSArNTgwLDcgQEAgcHJp
dmF0ZToKIHByaXZhdGU6CiAgICAgYm9vbCBjYW5TaGFyZVN0eWxlV2l0aENvbnRyb2woU3R5bGVk
RWxlbWVudCopIGNvbnN0OwogCi0gICAgdm9pZCBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQs
IENTU1ZhbHVlKik7Ci0KLSNpZiBFTkFCTEUoU1ZHKQotICAgIHZvaWQgYXBwbHlTVkdQcm9wZXJ0
eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSopOwotI2VuZGlmCisgICAgdm9pZCBhcHBseVByb3Bl
cnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkgeyBtX3N0eWxlQnVpbGRlci5h
cHBseVRvUmVuZGVyU3R5bGUodGhpcywgaWQsIHZhbHVlKTsgfQogCiAgICAgUGFzc1JlZlB0cjxT
dHlsZUltYWdlPiBsb2FkUGVuZGluZ0ltYWdlKFN0eWxlUGVuZGluZ0ltYWdlKik7CiAgICAgdm9p
ZCBsb2FkUGVuZGluZ0ltYWdlcygpOwpAQCAtNjMxLDcgKzYyNSw3IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPFZpZXdwb3J0U3R5bGVSZXNvbHZlcj4gbV92aWV3cG9ydFN0eWxlUmVzb2x2ZXI7CiAj
ZW5kaWYKIAotICAgIGNvbnN0IERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXImIG1fZGVwcmVjYXRlZFN0
eWxlQnVpbGRlcjsKKyAgICBTdHlsZUJ1aWxkZXIgbV9zdHlsZUJ1aWxkZXI7CiAKICAgICBPd25Q
dHI8U3R5bGVTY29wZVJlc29sdmVyPiBtX3Njb3BlUmVzb2x2ZXI7CiAgICAgQ1NTVG9TdHlsZU1h
cCBtX3N0eWxlTWFwOwpAQCAtNjQ0LDYgKzYzOCw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAg
IGZyaWVuZCBjbGFzcyBEZXByZWNhdGVkU3R5bGVCdWlsZGVyOworICAgIC8vIEZJWE1FOiBSZW1v
dmUgZnJpZW5kc2hpcCBhdCB0aGUgZW5kIG9mIHJlZmFjdG9yaW5nLgorICAgIGZyaWVuZCBjbGFz
cyBTdHlsZUJ1aWxkZXI7CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXRjaGVk
UHJvcGVydGllcyYsIGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJik7CiAgICAgZnJpZW5kIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBNYXRjaGVkUHJvcGVydGllcyYsIGNvbnN0IE1hdGNoZWRQcm9wZXJ0
aWVzJik7CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXRjaFJhbmdlcyYsIGNv
bnN0IE1hdGNoUmFuZ2VzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oCmluZGV4IDRkYWZlMTIuLjA1OTI2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0xMzEsNiArMTMxLDcgQEAgY2xhc3MgUmVu
ZGVyU3R5bGU6IHB1YmxpYyBSZWZDb3VudGVkPFJlbmRlclN0eWxlPiB7CiAgICAgZnJpZW5kIGNs
YXNzIFJlbmRlclNWR1Jlc291cmNlOyAvLyBGSVhNRTogTmVlZHMgdG8gYWx0ZXIgdGhlIHZpc2l0
ZWQgc3RhdGUgYnkgaGFuZC4gU2hvdWxkIGNsZWFuIHRoZSBTVkcgY29kZSB1cCBhbmQgbW92ZSBp
dCBpbnRvIFJlbmRlclN0eWxlIHBlcmhhcHMuCiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlclRyZWVB
c1RleHQ7IC8vIEZJWE1FOiBPbmx5IG5lZWRlZCBzbyB0aGUgcmVuZGVyIHRyZWUgY2FuIGtlZXAg
bHlpbmcgYW5kIGR1bXAgdGhlIHdyb25nIGNvbG9ycy4gIFJlYmFzZWxpbmluZyB3b3VsZCBhbGxv
dyB0aGlzIHRvIGJlIHlhbmtlZC4KICAgICBmcmllbmQgY2xhc3MgU3R5bGVSZXNvbHZlcjsgLy8g
U2V0cyBtZW1iZXJzIGRpcmVjdGx5LgorICAgIGZyaWVuZCBjbGFzcyBTdHlsZUJ1aWxkZXI7IC8v
IFNldHMgbWVtYmVycyBkaXJlY3RseS4KIHByb3RlY3RlZDoKIAogICAgIC8vIG5vbi1pbmhlcml0
ZWQgYXR0cmlidXRlcwo=
</data>
<flag name="commit-queue"
          id="220176"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198466</attachid>
            <date>2013-04-16 21:57:28 -0700</date>
            <delta_ts>2013-04-17 06:53:36 -0700</delta_ts>
            <desc>Patch - with CSS Variables fix</desc>
            <filename>deprecateStyleBuilder2.patch</filename>
            <type>text/plain</type>
            <size>121790</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZGU1NzZmMy4uZDk3OGJmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEwODUsNiArMTA4NSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3Mv
U2VsZWN0b3JDaGVja2VyRmFzdFBhdGguY3BwCiAgICAgY3NzL1NlbGVjdG9yRmlsdGVyLmNwcAog
ICAgIGNzcy9TaGFkb3dWYWx1ZS5jcHAKKyAgICBjc3MvU3R5bGVCdWlsZGVyLmNwcAogICAgIGNz
cy9TdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmNwcAogICAgIGNzcy9TdHlsZU1lZGlhLmNwcAog
ICAgIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEyZGE2ODAuLjIwM2Iw
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMy0wNC0xNiAgRGlyayBTY2h1bHpl
ICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgYXBwbHlQcm9wZXJ0eSBmcm9tIFN0
eWxlUmVzb2x2ZXIgdG8gU3R5bGVCdWlsZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0NzE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlZCBhIG5ldyBjbGFzcyBTdHlsZUJ1aWxkZXIgdG8g
YXBwbHkgcHJvcGVydHkgc3R5bGVzIHRvIFJlbmRlclN0eWxlLgorICAgICAgICBNb3ZlZCBhcHBs
eVByb3BlcnR5IG1ldGhvZCBmcm9tIFN0eWxlUmVzb2x2ZXIgdG8gU3R5bGVCdWlsZGVyIGFuZCBy
ZW5hbWVkIGl0CisgICAgICAgIHRvIGFwcGx5VG9SZW5kZXJTdHlsZS4gU3R5bGVCdWlsZGVyIGlz
IGEgbWVtYmVyIG9mIFN0eWxlUmVzb2x2ZXIgbm93LgorICAgICAgICBJbiB0aGlzIGZpcnN0IHN0
ZXAsIGp1c3QgbmVjZXNzYXJ5IHN0YXRpYyBmdW5jdGlvbnMgd2VyZSBtb3ZlZCB0byBTdHlsZUJ1
aWxkZXIuCisgICAgICAgIEZ1dHVyZSBwYXRjaGVzIHdpbGwgY2xlYW51cCBTdHlsZVJlc29sdmVy
IG1vcmUgYW5kIG1vdmUgbW9yZSBmdW5jdGlvbmFsaXR5IHRvCisgICAgICAgIFN0eWxlQnVpbGRl
ci4KKworICAgICAgICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eSwgbm8gbmV3IHRlc3RzLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIFN0eWxlQnVpbGRlciB0byBidWlsZCBz
eXN0ZW1zLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0
LnByaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NBbGxJbk9u
ZS5jcHA6CisgICAgICAgICogY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwOiBJbmhlcml0IGZy
b20gU3R5bGVCdWlsZGVyIGluc3RlYWQgb2YgU3R5bGVSZXNvbHZlci4KKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlcjo6YXBwbHlUb1NWR1JlbmRlclN0eWxlKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVCdWlsZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdyaWRUcmFja0JyZWFkdGgpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
R3JpZFRyYWNrU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHcmlkVHJhY2tMaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdyaWRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZUJ1aWxkZXI6OlN0eWxlQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlk
VmlzaXRlZExpbmtQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXI6OmFw
cGx5VG9SZW5kZXJTdHlsZSk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU3R5bGVCdWlsZGVyKToKKyAgICAgICAgKiBj
c3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpT
dHlsZVJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KToK
KyAgICAgICAgKFN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oOgorCiAyMDEzLTA0LTE2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4OyBhZGQgbmV3IEpTQXVkaW9CdWZmZXIu
Y3BwIGZpbGUgdG8gbW9yZSBidWlsZCBzeXN0ZW1zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggZTc2ZTFkMC4uODM5ZWQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC0yNzMxLDYgKzI3MzEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL2Nzcy9TaGFkb3dWYWx1ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU2libGluZ1RyYXZlcnNhbFN0cmF0ZWdpZXMuaCBc
CisJU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZUJ1aWxkZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlSW52YWxpZGF0
aW9uQW5hbHlzaXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVJbnZhbGlkYXRpb25B
bmFseXNpcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVNZWRpYS5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKaW5kZXggMTNhMGZjMS4uZjM3ZDg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0zMzIsNiArMzMyLDcg
QEAgU09VUkNFUyArPSBcCiAgICAgY3NzL1NlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmNwcCBcCiAg
ICAgY3NzL1NlbGVjdG9yRmlsdGVyLmNwcCBcCiAgICAgY3NzL1NoYWRvd1ZhbHVlLmNwcCBcCisg
ICAgY3NzL1N0eWxlQnVpbGRlci5jcHAgXAogICAgIGNzcy9TdHlsZUludmFsaWRhdGlvbkFuYWx5
c2lzLmNwcCBcCiAgICAgY3NzL1N0eWxlTWVkaWEuY3BwIFwKICAgICBjc3MvU3R5bGVQcm9wZXJ0
eVNldC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCAwZjNmYjFmLi5kODAyYTdjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzg3MDcsNiArMzg3MDcsNjIgQEAKIAkJCQk+CiAJCQk8
L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXFN0eWxlQnVpbGRlci5j
cHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4z
MiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIK
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRl
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0Nh
aXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0i
RGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgor
CQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQ
cm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgor
CQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGNzc1xTdHlsZUJ1aWxkZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQog
CQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXFN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMuY3BwIgog
CQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCAzM2YzMjZjLi5iYTcyZjNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzCkBAIC0zNzQ0LDYgKzM3NDQsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cY3NzXFNoYWRvd1ZhbHVlLmNwcCI+CiAgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cY3NzXFN0eWxlQnVpbGRl
ci5jcHAiPgorICAgICAgPEZpbHRlcj5jc3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNzc1xTdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmNw
cCI+CiAgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMw
MDM3ZGMuLjg2ZmI1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTU3MjksNiArNTcyOSw4IEBACiAJCUZCMkMxNUMzMTY1RDY0
OUQwMDM5QzlGOCAvKiBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkIyQzE1QzIxNjVENjQ5MDAwMzlDOUY4
IC8qIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkIzMDU2QzIxNjlFNURBQzAwOTZBMjMyIC8qIENT
U0dyb3VwaW5nUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkIzMDU2QzExNjlFNURBQzAwOTZBMjMyIC8qIENTU0dyb3VwaW5nUnVsZS5oICovOyB9
OwogCQlGQjQ5QzM5RDE2Nzg0OTQ3MDA3RkZCNUQgLyogQ1NTSG9zdFJ1bGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCNDlDMzlDMTY3ODQ5NDcwMDdG
RkI1RCAvKiBDU1NIb3N0UnVsZS5oICovOyB9OworCQlGQjZFMEY5RDE3MUEyMEJCMDBBNUM1QkUg
LyogU3R5bGVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZCNkUwRjlCMTcxQTIwQkIwMEE1QzVCRSAvKiBTdHlsZUJ1aWxkZXIuY3BwICov
OyB9OworCQlGQjZFMEY5RTE3MUEyMEJCMDBBNUM1QkUgLyogU3R5bGVCdWlsZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjZFMEY5QzE3MUEyMEJC
MDBBNUM1QkUgLyogU3R5bGVCdWlsZGVyLmggKi87IH07CiAJCUZCNzhBRDJFMTUxQkY1RTYwMEZF
NTREMyAvKiBDU1NQYXJzZXJNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGQjc4QUQyQzE1MUJGNUQyMDBGRTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZCOTEz
OTI0MTZBRTRDMTcwMDFGRTY4MiAvKiBET01QYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjkxMzkyMDE2QUU0QjBCMDAxRkU2ODIgLyogRE9NUGF0
aC5oICovOyB9OwogCQlGQjkxMzkyNjE2QUU0QzJGMDAxRkU2ODIgLyogQ2FudmFzUGF0aE1ldGhv
ZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCOTEz
OTFGMTZBRTRCMEIwMDFGRTY4MiAvKiBDYW52YXNQYXRoTWV0aG9kcy5oICovOyB9OwpAQCAtMTI1
NzAsNiArMTI1NzIsOCBAQAogCQlGQjMwNTZDMTE2OUU1REFDMDA5NkEyMzIgLyogQ1NTR3JvdXBp
bmdSdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0dyb3VwaW5nUnVs
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjQ5QzM5QzE2Nzg0OTQ3MDA3RkZC
NUQgLyogQ1NTSG9zdFJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NT
SG9zdFJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI0OUMzOUUxNjc4NDk1
NDAwN0ZGQjVEIC8qIENTU0hvc3RSdWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NI
b3N0UnVsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZCNkUwRjlCMTcxQTIw
QkIwMEE1QzVCRSAvKiBTdHlsZUJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3R5bGVCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkI2RTBGOUMxNzFBMjBCQjAwQTVDNUJFIC8qIFN0eWxlQnVpbGRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkI3OEFEMkMxNTFCRjVEMjAwRkU1NEQzIC8qIENTU1BhcnNlck1vZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUGFyc2VyTW9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGQjkxMzkxRTE2QUU0QjBCMDAxRkU2ODIgLyogQ2FudmFz
UGF0aE1ldGhvZHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ2Fu
dmFzUGF0aE1ldGhvZHMuY3BwOyBwYXRoID0gY2FudmFzL0NhbnZhc1BhdGhNZXRob2RzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI5MTM5MUYxNkFFNEIwQjAwMUZFNjgyIC8q
IENhbnZhc1BhdGhNZXRob2RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENh
bnZhc1BhdGhNZXRob2RzLmg7IHBhdGggPSBjYW52YXMvQ2FudmFzUGF0aE1ldGhvZHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5ODIzLDYgKzE5ODI3LDggQEAKIAkJCQlBNzlC
QUQ5RTE2MUU3RjNGMDBDMkU2NTIgLyogUnVsZUZlYXR1cmUuaCAqLywKIAkJCQlBNzlCQUQ5RjE2
MUU3RjNGMDBDMkU2NTIgLyogUnVsZVNldC5jcHAgKi8sCiAJCQkJQTc5QkFEQTAxNjFFN0YzRjAw
QzJFNjUyIC8qIFJ1bGVTZXQuaCAqLywKKwkJCQlGQjZFMEY5QjE3MUEyMEJCMDBBNUM1QkUgLyog
U3R5bGVCdWlsZGVyLmNwcCAqLywKKwkJCQlGQjZFMEY5QzE3MUEyMEJCMDBBNUM1QkUgLyogU3R5
bGVCdWlsZGVyLmggKi8sCiAJCQkJRTQ0QjRCQjExNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9y
Q2hlY2tlci5jcHAgKi8sCiAJCQkJRTQ0QjRCQjIxNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9y
Q2hlY2tlci5oICovLAogCQkJCTQxQjhDRDQzMTZEMDQ1OTEwMDBFOENDMCAvKiBTZWxlY3RvckNo
ZWNrZXJGYXN0UGF0aC5jcHAgKi8sCkBAIC0yNDAzOSw2ICsyNDA0NSw3IEBACiAJCQkJRTE1MjU1
MTUxNkZEMjM1MDAwM0Q3QURCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCNTMzNDkxNzE3REVFMzAwRjIwNUY5
IC8qIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTg4RTBD
MjE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RkI2RTBGOUUxNzFBMjBCQjAwQTVDNUJFIC8qIFN0eWxlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0yNjk4OCw2ICsyNjk5NSw3IEBACiAJCQkJRTE1MjU1MTYxNkZEMjM1MDAwM0Q3QURCIC8q
IFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxQjUzMzQ3MTcxN0QwQTEwMEYyMDVGOSAvKiBDYWNoZWRTVkdEb2N1bWVu
dFJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBDMTE3MTVDRTI2MDA2NThE
OTggLyogVHJhY2tMaXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQjZFMEY5RDE3MUEy
MEJCMDBBNUM1QkUgLyogU3R5bGVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NBbGxJbk9uZS5jcHAKaW5kZXggMDIyYTM0OS4uNjRhNjAwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQWxsSW5PbmUuY3BwCkBAIC03OSw2ICs3OSw3IEBACiAjaW5jbHVkZSAiUnVsZVNldC5jcHAi
CiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguY3BwIgogI2luY2x1ZGUgIlNlbGVj
dG9yRmlsdGVyLmNwcCIKKyNpbmNsdWRlICJTdHlsZUJ1aWxkZXIuY3BwIgogI2luY2x1ZGUgIlN0
eWxlUHJvcGVydHlTZXQuY3BwIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuY3Bw
IgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NT
U1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDcwZDFjYTQuLjE1MGI5YjcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0yNywxNSArMjcsMTMgQEAKICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVkZSAiU3R5
bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgIlN0eWxlQnVpbGRlci5oIgogCiAjaW5jbHVkZSAiQ1NT
UHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIK
ICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1
ZGUgIlNoYWRvd1ZhbHVlLmgiCiAjaW5jbHVkZSAiU1ZHQ29sb3IuaCIKICNpbmNsdWRlICJTVkdO
YW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhaW50LmgiCkBAIC00Myw2ICs0MSw4IEBACiAjaW5jbHVk
ZSAiU1ZHUmVuZGVyU3R5bGVEZWZzLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgog
I2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYWRvd1ZhbHVlLmgiCisj
aW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CiAKQEAgLTEwMiwxNCArMTAyLDE0IEBAIHN0YXRpYyBDb2xvciBj
b2xvckZyb21TVkdDb2xvckNTU1ZhbHVlKFNWR0NvbG9yKiBzdmdDb2xvciwgY29uc3QgQ29sb3Im
IGZnQ29sb3IpCiAgICAgcmV0dXJuIGNvbG9yOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmFw
cGx5U1ZHUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQordm9pZCBT
dHlsZUJ1aWxkZXI6OmFwcGx5VG9TVkdSZW5kZXJTdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJl
c29sdmVyLCBDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgQVNTRVJU
KHZhbHVlKTsKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSAwOwogICAg
IGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogCi0gICAgY29uc3QgU3Rh
dGUmIHN0YXRlID0gbV9zdGF0ZTsKKyAgICBjb25zdCBTdHlsZVJlc29sdmVyOjpTdGF0ZSYgc3Rh
dGUgPSBzdHlsZVJlc29sdmVyLT5tX3N0YXRlOwogICAgIFNWR1JlbmRlclN0eWxlKiBzdmdzdHls
ZSA9IHN0YXRlLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7CiAKICAgICBib29sIGlzSW5oZXJp
dCA9IHN0YXRlLnBhcmVudE5vZGUoKSAmJiB2YWx1ZS0+aXNJbmhlcml0ZWRWYWx1ZSgpOwpAQCAt
MjMxLDE2ICsyMzEsMTYgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVNWR1Byb3BlcnR5KENT
U1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKGlzSW5oZXJpdCkgewogICAgICAgICAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlKiBz
dmdQYXJlbnRTdHlsZSA9IHN0YXRlLnBhcmVudFN0eWxlKCktPnN2Z1N0eWxlKCk7Ci0gICAgICAg
ICAgICAgICAgc3Znc3R5bGUtPnNldEZpbGxQYWludChzdmdQYXJlbnRTdHlsZS0+ZmlsbFBhaW50
VHlwZSgpLCBzdmdQYXJlbnRTdHlsZS0+ZmlsbFBhaW50Q29sb3IoKSwgc3ZnUGFyZW50U3R5bGUt
PmZpbGxQYWludFVyaSgpLCBhcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgYXBwbHlQcm9w
ZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0
RmlsbFBhaW50KHN2Z1BhcmVudFN0eWxlLT5maWxsUGFpbnRUeXBlKCksIHN2Z1BhcmVudFN0eWxl
LT5maWxsUGFpbnRDb2xvcigpLCBzdmdQYXJlbnRTdHlsZS0+ZmlsbFBhaW50VXJpKCksIHN0YXRl
LmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBzdGF0ZS5hcHBseVByb3BlcnR5VG9WaXNp
dGVkTGlua1N0eWxlKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgICAgICBzdmdzdHlsZS0+
c2V0RmlsbFBhaW50KFNWR1JlbmRlclN0eWxlOjppbml0aWFsRmlsbFBhaW50VHlwZSgpLCBTVkdS
ZW5kZXJTdHlsZTo6aW5pdGlhbEZpbGxQYWludENvbG9yKCksIFNWR1JlbmRlclN0eWxlOjppbml0
aWFsRmlsbFBhaW50VXJpKCksIGFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBhcHBseVBy
b3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkpOworICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5z
ZXRGaWxsUGFpbnQoU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxGaWxsUGFpbnRUeXBlKCksIFNWR1Jl
bmRlclN0eWxlOjppbml0aWFsRmlsbFBhaW50Q29sb3IoKSwgU1ZHUmVuZGVyU3R5bGU6OmluaXRp
YWxGaWxsUGFpbnRVcmkoKSwgc3RhdGUuYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCksIHN0
YXRlLmFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZhbHVlLT5pc1NWR1BhaW50
KCkpIHsKICAgICAgICAgICAgICAgICBTVkdQYWludCogc3ZnUGFpbnQgPSBzdGF0aWNfY2FzdDxT
VkdQYWludCo+KHZhbHVlKTsKLSAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0RmlsbFBhaW50
KHN2Z1BhaW50LT5wYWludFR5cGUoKSwgY29sb3JGcm9tU1ZHQ29sb3JDU1NWYWx1ZShzdmdQYWlu
dCwgc3RhdGUuc3R5bGUoKS0+Y29sb3IoKSksIHN2Z1BhaW50LT51cmkoKSwgYXBwbHlQcm9wZXJ0
eVRvUmVndWxhclN0eWxlKCksIGFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7Cisg
ICAgICAgICAgICAgICAgc3Znc3R5bGUtPnNldEZpbGxQYWludChzdmdQYWludC0+cGFpbnRUeXBl
KCksIGNvbG9yRnJvbVNWR0NvbG9yQ1NTVmFsdWUoc3ZnUGFpbnQsIHN0YXRlLnN0eWxlKCktPmNv
bG9yKCkpLCBzdmdQYWludC0+dXJpKCksIHN0YXRlLmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHls
ZSgpLCBzdGF0ZS5hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI0OCwxNiArMjQ4LDE2IEBA
IHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBD
U1NWYWx1ZSogdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChpc0luaGVyaXQpIHsK
ICAgICAgICAgICAgICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnUGFyZW50U3R5bGUgPSBz
dGF0ZS5wYXJlbnRTdHlsZSgpLT5zdmdTdHlsZSgpOwotICAgICAgICAgICAgICAgIHN2Z3N0eWxl
LT5zZXRTdHJva2VQYWludChzdmdQYXJlbnRTdHlsZS0+c3Ryb2tlUGFpbnRUeXBlKCksIHN2Z1Bh
cmVudFN0eWxlLT5zdHJva2VQYWludENvbG9yKCksIHN2Z1BhcmVudFN0eWxlLT5zdHJva2VQYWlu
dFVyaSgpLCBhcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgYXBwbHlQcm9wZXJ0eVRvVmlz
aXRlZExpbmtTdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0U3Ryb2tlUGFp
bnQoc3ZnUGFyZW50U3R5bGUtPnN0cm9rZVBhaW50VHlwZSgpLCBzdmdQYXJlbnRTdHlsZS0+c3Ry
b2tlUGFpbnRDb2xvcigpLCBzdmdQYXJlbnRTdHlsZS0+c3Ryb2tlUGFpbnRVcmkoKSwgc3RhdGUu
YXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCksIHN0YXRlLmFwcGx5UHJvcGVydHlUb1Zpc2l0
ZWRMaW5rU3R5bGUoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgICAgIHN2Z3N0eWxlLT5z
ZXRTdHJva2VQYWludChTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbFN0cm9rZVBhaW50VHlwZSgpLCBT
VkdSZW5kZXJTdHlsZTo6aW5pdGlhbFN0cm9rZVBhaW50Q29sb3IoKSwgU1ZHUmVuZGVyU3R5bGU6
OmluaXRpYWxTdHJva2VQYWludFVyaSgpLCBhcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwg
YXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBzdmdz
dHlsZS0+c2V0U3Ryb2tlUGFpbnQoU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxTdHJva2VQYWludFR5
cGUoKSwgU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxTdHJva2VQYWludENvbG9yKCksIFNWR1JlbmRl
clN0eWxlOjppbml0aWFsU3Ryb2tlUGFpbnRVcmkoKSwgc3RhdGUuYXBwbHlQcm9wZXJ0eVRvUmVn
dWxhclN0eWxlKCksIHN0YXRlLmFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZh
bHVlLT5pc1NWR1BhaW50KCkpIHsKICAgICAgICAgICAgICAgICBTVkdQYWludCogc3ZnUGFpbnQg
PSBzdGF0aWNfY2FzdDxTVkdQYWludCo+KHZhbHVlKTsKLSAgICAgICAgICAgICAgICBzdmdzdHls
ZS0+c2V0U3Ryb2tlUGFpbnQoc3ZnUGFpbnQtPnBhaW50VHlwZSgpLCBjb2xvckZyb21TVkdDb2xv
ckNTU1ZhbHVlKHN2Z1BhaW50LCBzdGF0ZS5zdHlsZSgpLT5jb2xvcigpKSwgc3ZnUGFpbnQtPnVy
aSgpLCBhcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgYXBwbHlQcm9wZXJ0eVRvVmlzaXRl
ZExpbmtTdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBzdmdzdHlsZS0+c2V0U3Ryb2tlUGFpbnQo
c3ZnUGFpbnQtPnBhaW50VHlwZSgpLCBjb2xvckZyb21TVkdDb2xvckNTU1ZhbHVlKHN2Z1BhaW50
LCBzdGF0ZS5zdHlsZSgpLT5jb2xvcigpKSwgc3ZnUGFpbnQtPnVyaSgpLCBzdGF0ZS5hcHBseVBy
b3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgc3RhdGUuYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtT
dHlsZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC01NzAsNyArNTcwLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVNWR1Byb3BlcnR5KENT
U1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICAgICAgICAgIGludCBibHVyID0g
aXRlbS0+Ymx1ciA/IGl0ZW0tPmJsdXItPmNvbXB1dGVMZW5ndGg8aW50PihzdGF0ZS5zdHlsZSgp
LCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCkpIDogMDsKICAgICAgICAgICAgIENvbG9yIGNvbG9y
OwogICAgICAgICAgICAgaWYgKGl0ZW0tPmNvbG9yKQotICAgICAgICAgICAgICAgIGNvbG9yID0g
Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoaXRlbS0+Y29sb3IuZ2V0KCkpOworICAgICAgICAgICAg
ICAgIGNvbG9yID0gc3R5bGVSZXNvbHZlci0+Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoaXRlbS0+
Y29sb3IuZ2V0KCkpOwogCiAgICAgICAgICAgICAvLyAtd2Via2l0LXN2Zy1zaGFkb3cgZG9lcyBz
aG91bGQgbm90IGhhdmUgYSBzcHJlYWQgb3Igc3R5bGUKICAgICAgICAgICAgIEFTU0VSVCghaXRl
bS0+c3ByZWFkKTsKQEAgLTYwNiw3ICs2MDYsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5
U1ZHUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogICAgICAgICB9
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvLyBJZiB5b3UgY3Jhc2ggaGVyZSwgaXQn
cyBiZWNhdXNlIHlvdSBhZGRlZCBhIGNzcyBwcm9wZXJ0eSBhbmQgYXJlIG5vdCBoYW5kbGluZyBp
dAotICAgICAgICAgICAgLy8gaW4gZWl0aGVyIHRoaXMgc3dpdGNoIHN0YXRlbWVudCBvciB0aGUg
b25lIGluIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkKKyAgICAgICAgICAgIC8vIGluIGVp
dGhlciB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQgb3IgdGhlIG9uZSBpbiBTdHlsZUJ1aWxkZXI6OmFw
cGx5VG9TVkdSZW5kZXJTdHlsZQogICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgwLCAi
dW5pbXBsZW1lbnRlZCBwcm9wZXJ0eUlEOiAlZCIsIGlkKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjIwMWE0ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVCdWlsZGVyLmNwcApAQCAtMCwwICsxLDEyMTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykg
MjAwNC0yMDA1IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkKKyAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwNyBOaWNob2xhcyBTaGFua3MgKHdlYmtpdEBuaWNrc2hhbmtz
LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4KKyAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTEsIENvZGUgQXVyb3JhIEZvcnVtLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KA
nSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisg
KiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTdHlsZUJ1aWxkZXIuaCIKKworI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUu
aCIKKyNpbmNsdWRlICJDU1NHcmFkaWVudFZhbHVlLmgiCisjaWYgRU5BQkxFKENTU19JTUFHRV9T
RVQpCisjaW5jbHVkZSAiQ1NTSW1hZ2VTZXRWYWx1ZS5oIgorI2VuZGlmCisjaW5jbHVkZSAiQ1NT
UGFyc2VyLmgiIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBpbmNsdWRlIHdoZW4gQ1NTX1ZBUklBQkxF
UyB3YXMgZml4ZWQuCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJD
U1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNp
bmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ1NTUmVmbGVjdFZhbHVlLmgi
CisjaW5jbHVkZSAiQ291bnRlci5oIgorI2luY2x1ZGUgIkNvdW50ZXJDb250ZW50LmgiCisjaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQorI2luY2x1ZGUgIkRhc2hib2FyZFJlZ2lvbi5oIgor
I2VuZGlmCisjaW5jbHVkZSAiRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5oIgorI2luY2x1ZGUgIkZv
bnRGZWF0dXJlVmFsdWUuaCIKKyNpbmNsdWRlICJGb250VmFsdWUuaCIKKyNpbmNsdWRlICJMb2Nh
bGVUb1NjcmlwdE1hcHBpbmcuaCIKKyNpbmNsdWRlICJQYWlyLmgiCisjaW5jbHVkZSAiUXVvdGVz
RGF0YS5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
KyNpbmNsdWRlICJTaGFkb3dEYXRhLmgiCisjaW5jbHVkZSAiU2hhZG93VmFsdWUuaCIKKyNpbmNs
dWRlICJTdHlsZUdlbmVyYXRlZEltYWdlLmgiCisjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5o
IgorI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuaCIKKyNpbmNsdWRlICJTdHlsZVJl
c29sdmVyLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKyNkZWZpbmUgSEFORExFX0lOSEVSSVQocHJvcCwgUHJvcCkgXAoraWYgKGlzSW5oZXJpdCkg
eyBcCisgICAgc3RhdGUuc3R5bGUoKS0+c2V0IyNQcm9wKHN0YXRlLnBhcmVudFN0eWxlKCktPnBy
b3AoKSk7IFwKKyAgICByZXR1cm47IFwKK30KKworI2RlZmluZSBIQU5ETEVfSU5IRVJJVF9BTkRf
SU5JVElBTChwcm9wLCBQcm9wKSBcCitIQU5ETEVfSU5IRVJJVChwcm9wLCBQcm9wKSBcCitpZiAo
aXNJbml0aWFsKSB7IFwKKyAgICBzdGF0ZS5zdHlsZSgpLT5zZXQjI1Byb3AoUmVuZGVyU3R5bGU6
OmluaXRpYWwjI1Byb3AoKSk7IFwKKyAgICByZXR1cm47IFwKK30KKworU3R5bGVCdWlsZGVyOjpT
dHlsZUJ1aWxkZXIoKSA6IG1fZGVwcmVjYXRlZFN0eWxlQnVpbGRlcihEZXByZWNhdGVkU3R5bGVC
dWlsZGVyOjpzaGFyZWRTdHlsZUJ1aWxkZXIoKSkKK3sKK30KKworc3RhdGljIGJvb2wgY3JlYXRl
R3JpZFRyYWNrQnJlYWR0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIGNvbnN0
IFN0eWxlUmVzb2x2ZXI6OlN0YXRlJiBzdGF0ZSwgTGVuZ3RoJiB3b3JraW5nTGVuZ3RoKQorewor
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVdlYmtpdE1pbkNv
bnRlbnQpIHsKKyAgICAgICAgd29ya2luZ0xlbmd0aCA9IExlbmd0aChNaW5Db250ZW50KTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlV2Via2l0TWF4Q29udGVudCkgeworICAgICAgICB3b3JraW5nTGVu
Z3RoID0gTGVuZ3RoKE1heENvbnRlbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICB3b3JraW5nTGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhl
ZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBWaWV3cG9ydFBlcmNlbnRh
Z2VDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RF
bGVtZW50U3R5bGUoKSwgc3RhdGUuc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKKyAgICBpZiAo
d29ya2luZ0xlbmd0aC5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTGVuZ3RoKCkpCisgICAgICAgIHdvcmtpbmdMZW5ndGgu
c2V0UXVpcmsocHJpbWl0aXZlVmFsdWUtPmlzUXVpcmtWYWx1ZSgpKTsKKworICAgIHJldHVybiB0
cnVlOworfQorCitzdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tTaXplKENTU1ZhbHVlKiB2YWx1
ZSwgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXplLCBjb25zdCBTdHlsZVJlc29sdmVyOjpTdGF0ZSYg
c3RhdGUpCit7CisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBQYWlyKiBtaW5NYXhU
cmFja0JyZWFkdGggPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCk7CisgICAgaWYgKCFt
aW5NYXhUcmFja0JyZWFkdGgpIHsKKyAgICAgICAgTGVuZ3RoIHdvcmtpbmdMZW5ndGg7CisgICAg
ICAgIGlmICghY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChwcmltaXRpdmVWYWx1ZSwgc3RhdGUsIHdv
cmtpbmdMZW5ndGgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHRyYWNr
U2l6ZS5zZXRMZW5ndGgod29ya2luZ0xlbmd0aCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIExlbmd0aCBtaW5UcmFja0JyZWFkdGg7CisgICAgTGVuZ3RoIG1heFRyYWNrQnJl
YWR0aDsKKyAgICBpZiAoIWNyZWF0ZUdyaWRUcmFja0JyZWFkdGgobWluTWF4VHJhY2tCcmVhZHRo
LT5maXJzdCgpLCBzdGF0ZSwgbWluVHJhY2tCcmVhZHRoKSB8fCAhY3JlYXRlR3JpZFRyYWNrQnJl
YWR0aChtaW5NYXhUcmFja0JyZWFkdGgtPnNlY29uZCgpLCBzdGF0ZSwgbWF4VHJhY2tCcmVhZHRo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdHJhY2tTaXplLnNldE1pbk1heChtaW5U
cmFja0JyZWFkdGgsIG1heFRyYWNrQnJlYWR0aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0
YXRpYyBib29sIGNyZWF0ZUdyaWRUcmFja0xpc3QoQ1NTVmFsdWUqIHZhbHVlLCBWZWN0b3I8R3Jp
ZFRyYWNrU2l6ZT4mIHRyYWNrU2l6ZXMsIGNvbnN0IFN0eWxlUmVzb2x2ZXI6OlN0YXRlJiBzdGF0
ZSkKK3sKKyAgICAvLyBIYW5kbGUgJ25vbmUnLgorICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICByZXR1cm4gcHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lOworICAgIH0KKworICAgIGlm
ICghdmFsdWUtPmlzVmFsdWVMaXN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZv
ciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaSA9IHZhbHVlOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNl
KCkpIHsKKyAgICAgICAgQ1NTVmFsdWUqIGN1cnJWYWx1ZSA9IGkudmFsdWUoKTsKKyAgICAgICAg
R3JpZFRyYWNrU2l6ZSB0cmFja1NpemU7CisgICAgICAgIGlmICghY3JlYXRlR3JpZFRyYWNrU2l6
ZShjdXJyVmFsdWUsIHRyYWNrU2l6ZSwgc3RhdGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIHRyYWNrU2l6ZXMuYXBwZW5kKHRyYWNrU2l6ZSk7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCisKK3N0YXRpYyBib29sIGNyZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1
ZSogdmFsdWUsIEdyaWRQb3NpdGlvbiYgcG9zaXRpb24pCit7CisgICAgLy8gRm9yIG5vdywgd2Ug
b25seSBhY2NlcHQ6IDxpbnRlZ2VyPiB8ICdhdXRvJworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7CisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihwcmltaXRpdmVWYWx1ZS0+aXNOdW1iZXIoKSk7CisgICAgcG9zaXRpb24uc2V0SW50ZWdl
clBvc2l0aW9uKHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorc3RhdGljIGJvb2wgaGFzVmFyaWFi
bGVSZWZlcmVuY2UoQ1NTVmFsdWUqIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICByZXR1cm4g
cHJpbWl0aXZlVmFsdWUtPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCk7CisgICAgfQorCisgICAgaWYg
KHZhbHVlLT5pc0NhbGN1bGF0aW9uVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PENTU0NhbGNWYWx1ZSo+KHZhbHVlKS0+aGFzVmFyaWFibGVSZWZlcmVuY2UoKTsKKworICAgIGlm
ICh2YWx1ZS0+aXNSZWZsZWN0VmFsdWUoKSkgeworICAgICAgICBDU1NSZWZsZWN0VmFsdWUqIHJl
ZmxlY3RWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1JlZmxlY3RWYWx1ZSo+KHZhbHVlKTsKKyAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGRpcmVjdGlvbiA9IHJlZmxlY3RWYWx1ZS0+ZGlyZWN0aW9u
KCk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBvZmZzZXQgPSByZWZsZWN0VmFsdWUtPm9m
ZnNldCgpOworICAgICAgICBDU1NWYWx1ZSogbWFzayA9IHJlZmxlY3RWYWx1ZS0+bWFzaygpOwor
ICAgICAgICByZXR1cm4gKGRpcmVjdGlvbiAmJiBoYXNWYXJpYWJsZVJlZmVyZW5jZShkaXJlY3Rp
b24pKSB8fCAob2Zmc2V0ICYmIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKG9mZnNldCkpIHx8IChtYXNr
ICYmIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKG1hc2spKTsKKyAgICB9CisKKyAgICBmb3IgKENTU1Zh
bHVlTGlzdEl0ZXJhdG9yIGkgPSB2YWx1ZTsgaS5oYXNNb3JlKCk7IGkuYWR2YW5jZSgpKSB7Cisg
ICAgICAgIGlmIChoYXNWYXJpYWJsZVJlZmVyZW5jZShpLnZhbHVlKCkpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFN0eWxl
QnVpbGRlcjo6cmVzb2x2ZVZhcmlhYmxlcyhTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBD
U1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIFZlY3RvcjxzdGQ6OnBhaXI8Q1NTUHJv
cGVydHlJRCwgU3RyaW5nPiA+JiBrbm93bkV4cHJlc3Npb25zKQoreworICAgIHN0ZDo6cGFpcjxD
U1NQcm9wZXJ0eUlELCBTdHJpbmc+IGV4cHJlc3Npb24oaWQsIHZhbHVlLT5zZXJpYWxpemVSZXNv
bHZpbmdWYXJpYWJsZXMoKihzdHlsZVJlc29sdmVyLT5tX3N0YXRlLnN0eWxlKCktPnZhcmlhYmxl
cygpKSkpOworCisgICAgaWYgKGtub3duRXhwcmVzc2lvbnMuY29udGFpbnMoZXhwcmVzc2lvbikp
CisgICAgICAgIHJldHVybjsgLy8gY3ljbGUgZGV0ZWN0ZWQuCisKKyAgICBrbm93bkV4cHJlc3Np
b25zLmFwcGVuZChleHByZXNzaW9uKTsKKworICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBmYXN0
ZXIgbm90IHRvIHJlLXBhcnNlIGZyb20gc3RyaW5ncywgYnV0IGZvciBub3cgQ1NTIHByb3BlcnR5
IHZhbGlkYXRpb24gbGl2ZXMgaW5zaWRlIHRoZSBwYXJzZXIgc28gd2UgZG8gaXQgdGhlcmUuCisg
ICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiByZXN1bHRTZXQgPSBNdXRhYmxlU3R5
bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7CisgICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
cmVzdWx0U2V0LmdldCgpLCBpZCwgZXhwcmVzc2lvbi5zZWNvbmQsIGZhbHNlLCBzdHlsZVJlc29s
dmVyLT5kb2N1bWVudCgpKSkKKyAgICAgICAgcmV0dXJuOyAvLyBleHByZXNzaW9uIGZhaWxlZCB0
byBwYXJzZS4KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHRTZXQtPnByb3Bl
cnR5Q291bnQoKTsgaSsrKSB7CisgICAgICAgIFN0eWxlUHJvcGVydHlTZXQ6OlByb3BlcnR5UmVm
ZXJlbmNlIHByb3BlcnR5ID0gcmVzdWx0U2V0LT5wcm9wZXJ0eUF0KGkpOworICAgICAgICBpZiAo
cHJvcGVydHkuaWQoKSAhPSBDU1NQcm9wZXJ0eVZhcmlhYmxlICYmIGhhc1ZhcmlhYmxlUmVmZXJl
bmNlKHByb3BlcnR5LnZhbHVlKCkpKQorICAgICAgICAgICAgcmVzb2x2ZVZhcmlhYmxlcyhzdHls
ZVJlc29sdmVyLCBwcm9wZXJ0eS5pZCgpLCBwcm9wZXJ0eS52YWx1ZSgpLCBrbm93bkV4cHJlc3Np
b25zKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXBwbHlUb1JlbmRlclN0eWxlKHN0eWxl
UmVzb2x2ZXIsIHByb3BlcnR5LmlkKCksIHByb3BlcnR5LnZhbHVlKCkpOworICAgIH0KK30KKyNl
bmRpZgorCitpbmxpbmUgYm9vbCBpc1ZhbGlkVmlzaXRlZExpbmtQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEIGlkKQoreworICAgIHN3aXRjaCAoaWQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3I6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
clRvcENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yOgorI2lmIEVOQUJMRShD
U1MzX1RFWFQpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uQ29sb3I6
CisjZW5kaWYgLy8gQ1NTM19URVhUCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBo
YXNpc0NvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3I6CisjaWYgRU5BQkxFKFNWRykK
KyAgICBjYXNlIENTU1Byb3BlcnR5RmlsbDoKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlOgor
I2VuZGlmCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBTdHlsZUJ1aWxkZXI6OmFw
cGx5VG9SZW5kZXJTdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NQcm9wZXJ0
eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCit7CisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisg
ICAgaWYgKGlkICE9IENTU1Byb3BlcnR5VmFyaWFibGUgJiYgaGFzVmFyaWFibGVSZWZlcmVuY2Uo
dmFsdWUpKSB7CisgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q1NTUHJvcGVydHlJRCwgU3RyaW5n
PiA+IGtub3duRXhwcmVzc2lvbnM7CisgICAgICAgIHJlc29sdmVWYXJpYWJsZXMoc3R5bGVSZXNv
bHZlciwgaWQsIHZhbHVlLCBrbm93bkV4cHJlc3Npb25zKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZgorCisgICAgLy8gQ1NTIHZhcmlhYmxlcyBkb24ndCByZXNvbHZlIHNob3J0aGFu
ZHMgYXQgcGFyc2luZyB0aW1lLCBzbyB0aGlzIHNob3VsZCBiZSAqYWZ0ZXIqIGhhbmRsaW5nIHZh
cmlhYmxlcy4KKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFpc0V4cGFuZGVkU2hvcnRoYW5kKGlk
KSwgIlNob3J0aGFuZCBwcm9wZXJ0eSBpZCA9ICVkIHdhc24ndCBleHBhbmRlZCBhdCBwYXJzaW5n
IHRpbWUiLCBpZCk7CisKKyAgICBTdHlsZVJlc29sdmVyOjpTdGF0ZSYgc3RhdGUgPSBzdHlsZVJl
c29sdmVyLT5tX3N0YXRlOworICAgIGJvb2wgaXNJbmhlcml0ID0gc3RhdGUucGFyZW50Tm9kZSgp
ICYmIHZhbHVlLT5pc0luaGVyaXRlZFZhbHVlKCk7CisgICAgYm9vbCBpc0luaXRpYWwgPSB2YWx1
ZS0+aXNJbml0aWFsVmFsdWUoKSB8fCAoIXN0YXRlLnBhcmVudE5vZGUoKSAmJiB2YWx1ZS0+aXNJ
bmhlcml0ZWRWYWx1ZSgpKTsKKworICAgIEFTU0VSVCghaXNJbmhlcml0IHx8ICFpc0luaXRpYWwp
OyAvLyBpc0luaGVyaXQgLT4gIWlzSW5pdGlhbCAmJiBpc0luaXRpYWwgLT4gIWlzSW5oZXJpdAor
ICAgIEFTU0VSVCghaXNJbmhlcml0IHx8IChzdGF0ZS5wYXJlbnROb2RlKCkgJiYgc3RhdGUucGFy
ZW50U3R5bGUoKSkpOyAvLyBpc0luaGVyaXQgLT4gKHN0YXRlLnBhcmVudE5vZGUoKSAmJiBzdGF0
ZS5wYXJlbnRTdHlsZSgpKQorCisgICAgaWYgKCFzdGF0ZS5hcHBseVByb3BlcnR5VG9SZWd1bGFy
U3R5bGUoKSAmJiAoIXN0YXRlLmFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSB8fCAh
aXNWYWxpZFZpc2l0ZWRMaW5rUHJvcGVydHkoaWQpKSkgeworICAgICAgICAvLyBMaW1pdCB0aGUg
cHJvcGVydGllcyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIG9ubHkgdGhlIG9uZXMgaG9ub3JlZCBi
eSA6dmlzaXRlZC4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChpc0luaGVyaXQg
JiYgIXN0YXRlLnBhcmVudFN0eWxlKCktPmhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVz
KCkgJiYgIUNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KGlkKSkKKyAgICAgICAgc3Rh
dGUucGFyZW50U3R5bGUoKS0+c2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKTsK
KworICAgIC8vIENoZWNrIGxvb2t1cCB0YWJsZSBmb3IgaW1wbGVtZW50YXRpb25zIGFuZCB1c2Ug
d2hlbiBhdmFpbGFibGUuCisgICAgY29uc3QgUHJvcGVydHlIYW5kbGVyJiBoYW5kbGVyID0gbV9k
ZXByZWNhdGVkU3R5bGVCdWlsZGVyLnByb3BlcnR5SGFuZGxlcihpZCk7CisgICAgaWYgKGhhbmRs
ZXIuaXNWYWxpZCgpKSB7CisgICAgICAgIGlmIChpc0luaGVyaXQpCisgICAgICAgICAgICBoYW5k
bGVyLmFwcGx5SW5oZXJpdFZhbHVlKGlkLCBzdHlsZVJlc29sdmVyKTsKKyAgICAgICAgZWxzZSBp
ZiAoaXNJbml0aWFsKQorICAgICAgICAgICAgaGFuZGxlci5hcHBseUluaXRpYWxWYWx1ZShpZCwg
c3R5bGVSZXNvbHZlcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGhhbmRsZXIuYXBwbHlW
YWx1ZShpZCwgc3R5bGVSZXNvbHZlciwgdmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSA/IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpIDogMDsK
KworICAgIGZsb2F0IHpvb21GYWN0b3IgPSBzdGF0ZS5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7
CisKKyAgICAvLyBXaGF0IGZvbGxvd3MgaXMgYSBsaXN0IHRoYXQgbWFwcyB0aGUgQ1NTIHByb3Bl
cnRpZXMgaW50byB0aGVpciBjb3JyZXNwb25kaW5nIGZyb250LWVuZAorICAgIC8vIFJlbmRlclN0
eWxlIHZhbHVlcy4KKyAgICBzd2l0Y2ggKGlkKSB7CisgICAgLy8gbGlzdHMKKyAgICBjYXNlIENT
U1Byb3BlcnR5Q29udGVudDoKKyAgICAgICAgLy8gTGlzdCBvZiBzdHJpbmcsIHVyaSwgY291bnRl
ciwgYXR0ciwgaS4KKyAgICAgICAgeworICAgICAgICAgICAgLy8gRklYTUU6IEluIENTUzMsIGl0
IHdpbGwgYmUgcG9zc2libGUgdG8gaW5oZXJpdCBjb250ZW50LiBJbiBDU1MyIGl0IGlzIG5vdC4g
VGhpcworICAgICAgICAgICAgLy8gbm90ZSBpcyBhIHJlbWluZGVyIHRoYXQgZXZlbnR1YWxseSAi
aW5oZXJpdCIgbmVlZHMgdG8gYmUgc3VwcG9ydGVkLgorCisgICAgICAgICAgICBpZiAoaXNJbml0
aWFsKSB7CisgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+Y2xlYXJDb250ZW50KCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
IXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgYm9vbCBkaWRTZXQgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoQ1NTVmFsdWVMaXN0
SXRlcmF0b3IgaSA9IHZhbHVlOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNlKCkpIHsKKyAgICAgICAg
ICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGkudmFsdWUoKTsKKyAgICAgICAgICAgICAgICBpZiAo
aXRlbS0+aXNJbWFnZUdlbmVyYXRvclZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGl0ZW0tPmlzR3JhZGllbnRWYWx1ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUu
c3R5bGUoKS0+c2V0Q29udGVudChTdHlsZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8Q1NTR3JhZGllbnRWYWx1ZSo+KGl0ZW0pLT5ncmFkaWVudFdpdGhTdHlsZXNSZXNvbHZlZChz
dHlsZVJlc29sdmVyKS5nZXQoKSksIGRpZFNldCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldENvbnRlbnQoU3R5bGVH
ZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKHN0YXRpY19jYXN0PENTU0ltYWdlR2VuZXJhdG9yVmFsdWUq
PihpdGVtKSksIGRpZFNldCk7CisgICAgICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7Cisj
aWYgRU5BQkxFKENTU19JTUFHRV9TRVQpCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVt
LT5pc0ltYWdlU2V0VmFsdWUoKSkgeworICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgp
LT5zZXRDb250ZW50KHN0eWxlUmVzb2x2ZXItPnNldE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9w
ZXJ0eUNvbnRlbnQsIHN0YXRpY19jYXN0PENTU0ltYWdlU2V0VmFsdWUqPihpdGVtKSksIGRpZFNl
dCk7CisgICAgICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CisjZW5kaWYKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoaXRlbS0+aXNJbWFnZVZhbHVlKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudChzdHlsZVJlc29s
dmVyLT5jYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlDb250ZW50LCBzdGF0aWNf
Y2FzdDxDU1NJbWFnZVZhbHVlKj4oaXRlbSkpLCBkaWRTZXQpOworICAgICAgICAgICAgICAgICAg
ICBkaWRTZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUo
KSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogY29udGVudFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPihpdGVtKTsKKworICAgICAgICAgICAgICAgIGlmIChjb250ZW50VmFsdWUtPmlzU3RyaW5n
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudChjb250
ZW50VmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkuaW1wbCgpLCBkaWRTZXQpOworICAgICAgICAgICAg
ICAgICAgICBkaWRTZXQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGVu
dFZhbHVlLT5pc0F0dHIoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ2FuIGEg
bmFtZXNwYWNlIGJlIHNwZWNpZmllZCBmb3IgYW4gYXR0cihmb28pPworICAgICAgICAgICAgICAg
ICAgICBpZiAoc3RhdGUuc3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8pCisgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRVbmlxdWUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUucGFyZW50U3R5bGUo
KS0+c2V0VW5pcXVlKCk7CisgICAgICAgICAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgYXR0cihu
dWxsQXRvbSwgY29udGVudFZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpLmltcGwoKSwgbnVsbEF0b20p
OworICAgICAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gc3RhdGUu
ZWxlbWVudCgpLT5nZXRBdHRyaWJ1dGUoYXR0cik7CisgICAgICAgICAgICAgICAgICAgIHN0YXRl
LnN0eWxlKCktPnNldENvbnRlbnQodmFsdWUuaXNOdWxsKCkgPyBlbXB0eUF0b20gOiB2YWx1ZS5p
bXBsKCksIGRpZFNldCk7CisgICAgICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CisgICAg
ICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIHRoZSBmYWN0IHRoYXQgdGhlIGF0dHJpYnV0ZSB2
YWx1ZSBhZmZlY3RzIHRoZSBzdHlsZQorICAgICAgICAgICAgICAgICAgICBzdHlsZVJlc29sdmVy
LT5ydWxlU2V0cygpLmZlYXR1cmVzKCkuYXR0cnNJblJ1bGVzLmFkZChhdHRyLmxvY2FsTmFtZSgp
LmltcGwoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb250ZW50VmFsdWUtPmlzQ291
bnRlcigpKSB7CisgICAgICAgICAgICAgICAgICAgIENvdW50ZXIqIGNvdW50ZXJWYWx1ZSA9IGNv
bnRlbnRWYWx1ZS0+Z2V0Q291bnRlclZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIEVMaXN0
U3R5bGVUeXBlIGxpc3RTdHlsZVR5cGUgPSBOb25lTGlzdFN0eWxlOworICAgICAgICAgICAgICAg
ICAgICBpbnQgbGlzdFN0eWxlSWRlbnQgPSBjb3VudGVyVmFsdWUtPmxpc3RTdHlsZUlkZW50KCk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChsaXN0U3R5bGVJZGVudCAhPSBDU1NWYWx1ZU5vbmUp
CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0U3R5bGVUeXBlID0gc3RhdGljX2Nhc3Q8RUxp
c3RTdHlsZVR5cGU+KGxpc3RTdHlsZUlkZW50IC0gQ1NTVmFsdWVEaXNjKTsKKyAgICAgICAgICAg
ICAgICAgICAgT3duUHRyPENvdW50ZXJDb250ZW50PiBjb3VudGVyID0gYWRvcHRQdHIobmV3IENv
dW50ZXJDb250ZW50KGNvdW50ZXJWYWx1ZS0+aWRlbnRpZmllcigpLCBsaXN0U3R5bGVUeXBlLCBj
b3VudGVyVmFsdWUtPnNlcGFyYXRvcigpKSk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0
eWxlKCktPnNldENvbnRlbnQoY291bnRlci5yZWxlYXNlKCksIGRpZFNldCk7CisgICAgICAgICAg
ICAgICAgICAgIGRpZFNldCA9IHRydWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChjb250ZW50VmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU9wZW5RdW90ZToKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRlLnN0eWxlKCktPnNldENvbnRlbnQoT1BFTl9RVU9URSwgZGlkU2V0KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUNsb3NlUXVvdGU6
CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KENMT1NF
X1FVT1RFLCBkaWRTZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlTm9PcGVuUXVvdGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdHls
ZSgpLT5zZXRDb250ZW50KE5PX09QRU5fUVVPVEUsIGRpZFNldCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBkaWRTZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb0Nsb3NlUXVvdGU6CisgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KE5PX0NMT1NFX1FVT1RFLCBk
aWRTZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gbm9ybWFsIGFuZCBub25lIGRvIG5vdCBoYXZlIGFueSBl
ZmZlY3QuCisgICAgICAgICAgICAgICAgICAgICAgICB7IH0KKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghZGlk
U2V0KQorICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPmNsZWFyQ29udGVudCgpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVF1b3RlczoK
KyAgICAgICAgaWYgKGlzSW5oZXJpdCkgeworICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0
UXVvdGVzKHN0YXRlLnBhcmVudFN0eWxlKCktPnF1b3RlcygpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNJbml0aWFsKSB7CisgICAgICAgICAgICBzdGF0
ZS5zdHlsZSgpLT5zZXRRdW90ZXMoMCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CisgICAgICAgICAgICBDU1NWYWx1
ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisgICAgICAg
ICAgICBSZWZQdHI8UXVvdGVzRGF0YT4gcXVvdGVzID0gUXVvdGVzRGF0YTo6Y3JlYXRlKCk7Cisg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3QtPmxlbmd0aCgpOyBpICs9IDIp
IHsKKyAgICAgICAgICAgICAgICBDU1NWYWx1ZSogZmlyc3QgPSBsaXN0LT5pdGVtV2l0aG91dEJv
dW5kc0NoZWNrKGkpOworICAgICAgICAgICAgICAgIC8vIGl0ZW0oKSByZXR1cm5zIG51bGwgaWYg
b3V0IG9mIGJvdW5kcyBzbyB0aGlzIGlzIHNhZmUuCisgICAgICAgICAgICAgICAgQ1NTVmFsdWUq
IHNlY29uZCA9IGxpc3QtPml0ZW0oaSArIDEpOworICAgICAgICAgICAgICAgIGlmICghc2Vjb25k
KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihmaXJzdC0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihzZWNvbmQtPmlz
UHJpbWl0aXZlVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIHN0YXJ0UXVvdGUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGZpcnN0KS0+Z2V0U3RyaW5nVmFsdWUoKTsK
KyAgICAgICAgICAgICAgICBTdHJpbmcgZW5kUXVvdGUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KHNlY29uZCktPmdldFN0cmluZ1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgcXVv
dGVzLT5hZGRQYWlyKHN0ZDo6bWFrZV9wYWlyKHN0YXJ0UXVvdGUsIGVuZFF1b3RlKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRRdW90ZXMocXVvdGVzKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUpIHsKKyAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NW
YWx1ZU5vbmUpCisgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0UXVvdGVzKFF1b3Rl
c0RhdGE6OmNyZWF0ZSgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgLy8gU2hv
cnRoYW5kIHByb3BlcnRpZXMuCisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnQ6CisgICAgICAgIGlm
IChpc0luaGVyaXQpIHsKKyAgICAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRp
b24gPSBzdGF0ZS5wYXJlbnRTdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICAgICAgICAg
IHN0YXRlLnN0eWxlKCktPnNldExpbmVIZWlnaHQoc3RhdGUucGFyZW50U3R5bGUoKS0+c3BlY2lm
aWVkTGluZUhlaWdodCgpKTsKKyAgICAgICAgICAgIHN0YXRlLnNldExpbmVIZWlnaHRWYWx1ZSgw
KTsKKyAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVz
Y3JpcHRpb24pOworICAgICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCkgeworICAgICAgICAgICAg
U2V0dGluZ3MqIHNldHRpbmdzID0gc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnRTZXR0aW5ncygpOwor
ICAgICAgICAgICAgQVNTRVJUKHNldHRpbmdzKTsgLy8gSWYgd2UncmUgZG9pbmcgc3R5bGUgcmVz
b2x1dGlvbiwgdGhpcyBkb2N1bWVudCBzaG91bGQgYWx3YXlzIGJlIGluIGEgZnJhbWUgYW5kIHRo
dXMgaGF2ZSBzZXR0aW5ncworICAgICAgICAgICAgaWYgKCFzZXR0aW5ncykKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5pbml0aWFsaXplRm9udFN0
eWxlKHNldHRpbmdzKTsKKyAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZSkgeworICAg
ICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlh
bExpbmVIZWlnaHQoKSk7CisgICAgICAgICAgICBzdGF0ZS5zZXRMaW5lSGVpZ2h0VmFsdWUoMCk7
CisKKyAgICAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247CisgICAgICAg
ICAgICBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPnN5c3RlbUZvbnQocHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCksIGZvbnREZXNjcmlwdGlvbik7CisKKyAgICAgICAgICAgIC8vIERvdWJs
ZS1jaGVjayBhbmQgc2VlIGlmIHRoZSB0aGVtZSBkaWQgYW55dGhpbmcuIElmIG5vdCwgZG9uJ3Qg
Ym90aGVyIHVwZGF0aW5nIHRoZSBmb250LgorICAgICAgICAgICAgaWYgKGZvbnREZXNjcmlwdGlv
bi5pc0Fic29sdXRlU2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBy
ZW5kZXJpbmcgbW9kZSBhbmQgcHJpbnRlciBmb250IHNldHRpbmdzIGFyZSB1cGRhdGVkLgorICAg
ICAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IHN0eWxlUmVzb2x2ZXItPmRvY3VtZW50
U2V0dGluZ3MoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc2V0dGluZ3MpOyAvLyBJZiB3ZSdy
ZSBkb2luZyBzdHlsZSByZXNvbHV0aW9uLCB0aGlzIGRvY3VtZW50IHNob3VsZCBhbHdheXMgYmUg
aW4gYSBmcmFtZSBhbmQgdGh1cyBoYXZlIHNldHRpbmdzCisgICAgICAgICAgICAgICAgaWYgKCFz
ZXR0aW5ncykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRSZW5kZXJpbmdNb2RlKHNldHRpbmdzLT5mb250UmVuZGVyaW5nTW9k
ZSgpKTsKKyAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0VXNlUHJpbnRlckZvbnQo
c3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS0+cHJpbnRpbmcoKSB8fCAhc2V0dGluZ3MtPnNjcmVl
bkZvbnRTdWJzdGl0dXRpb25FbmFibGVkKCkpOworCisgICAgICAgICAgICAgICAgLy8gSGFuZGxl
IHRoZSB6b29tIGZhY3Rvci4KKyAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29t
cHV0ZWRTaXplKHN0eWxlUmVzb2x2ZXItPmdldENvbXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRTaXpl
KHN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCksIHN0YXRlLnN0eWxlKCksIGZvbnREZXNjcmlwdGlv
bi5pc0Fic29sdXRlU2l6ZSgpLCBmb250RGVzY3JpcHRpb24uc3BlY2lmaWVkU2l6ZSgpLCBzdHls
ZVJlc29sdmVyLT51c2VTVkdab29tUnVsZXMoKSkpOworICAgICAgICAgICAgICAgIHN0eWxlUmVz
b2x2ZXItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOworICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc0ZvbnRWYWx1ZSgpKSB7CisgICAgICAgICAg
ICBGb250VmFsdWUqIGZvbnQgPSBzdGF0aWNfY2FzdDxGb250VmFsdWUqPih2YWx1ZSk7CisgICAg
ICAgICAgICBpZiAoIWZvbnQtPnN0eWxlIHx8ICFmb250LT52YXJpYW50IHx8ICFmb250LT53ZWln
aHQKKyAgICAgICAgICAgICAgICB8fCAhZm9udC0+c2l6ZSB8fCAhZm9udC0+bGluZUhlaWdodCB8
fCAhZm9udC0+ZmFtaWx5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGFw
cGx5VG9SZW5kZXJTdHlsZShzdHlsZVJlc29sdmVyLCBDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgZm9u
dC0+c3R5bGUuZ2V0KCkpOworICAgICAgICAgICAgYXBwbHlUb1JlbmRlclN0eWxlKHN0eWxlUmVz
b2x2ZXIsIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsIGZvbnQtPnZhcmlhbnQuZ2V0KCkpOworICAg
ICAgICAgICAgYXBwbHlUb1JlbmRlclN0eWxlKHN0eWxlUmVzb2x2ZXIsIENTU1Byb3BlcnR5Rm9u
dFdlaWdodCwgZm9udC0+d2VpZ2h0LmdldCgpKTsKKyAgICAgICAgICAgIC8vIFRoZSBwcmV2aW91
cyBwcm9wZXJ0aWVzIGNhbiBkaXJ0eSBvdXIgZm9udCBidXQgdGhleSBkb24ndCB0cnkgdG8gcmVh
ZCB0aGUgZm9udCdzCisgICAgICAgICAgICAvLyBwcm9wZXJ0aWVzIGJhY2ssIHdoaWNoIGlzIHNh
ZmUuIEhvd2V2ZXIgaWYgZm9udC1zaXplIGlzIHVzaW5nIHRoZSAnZXgnIHVuaXQsIGl0IHdpbGwK
KyAgICAgICAgICAgIC8vIG5lZWQgcXVlcnkgdGhlIGRpcnRpZWQgZm9udCdzIHgtaGVpZ2h0IHRv
IGdldCB0aGUgY29tcHV0ZWQgc2l6ZS4gVG8gYmUgc2FmZSBpbiB0aGlzCisgICAgICAgICAgICAv
LyBjYXNlLCBsZXQncyBqdXN0IHVwZGF0ZSB0aGUgZm9udCBub3cuCisgICAgICAgICAgICBzdHls
ZVJlc29sdmVyLT51cGRhdGVGb250KCk7CisgICAgICAgICAgICBhcHBseVRvUmVuZGVyU3R5bGUo
c3R5bGVSZXNvbHZlciwgQ1NTUHJvcGVydHlGb250U2l6ZSwgZm9udC0+c2l6ZS5nZXQoKSk7CisK
KyAgICAgICAgICAgIHN0YXRlLnNldExpbmVIZWlnaHRWYWx1ZShmb250LT5saW5lSGVpZ2h0Lmdl
dCgpKTsKKworICAgICAgICAgICAgYXBwbHlUb1JlbmRlclN0eWxlKHN0eWxlUmVzb2x2ZXIsIENT
U1Byb3BlcnR5Rm9udEZhbWlseSwgZm9udC0+ZmFtaWx5LmdldCgpKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm47CisKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUmVwZWF0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXM6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyVG9wOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKKyAgICBjYXNlIENTU1By
b3BlcnR5TGlzdFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW46CisgICAgY2FzZSBD
U1NQcm9wZXJ0eU91dGxpbmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93OgorICAgIGNh
c2UgQ1NTUHJvcGVydHlQYWRkaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckFmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZv
cmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZDoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyU3RhcnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
clJhZGl1czoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uczoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rmxl
eDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEZsb3c6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEdyaWRDb2x1bW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRSb3c6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXJxdWVlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tSZXBlYXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBo
YXNpczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJh
bnNmb3JtT3JpZ2luOgorI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0V3JhcDoKKyNlbmRpZgorICAgICAgICBBU1NFUlQoaXNFeHBhbmRlZFNob3J0
aGFuZChpZCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7
CisKKyAgICAvLyBDU1MzIFByb3BlcnRpZXMKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFNoYWRv
dzoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2hhZG93OgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3hTaGFkb3c6IHsKKyAgICAgICAgaWYgKGlzSW5oZXJpdCkgeworICAgICAgICAgICAg
aWYgKGlkID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdykKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RhdGUuc3R5bGUoKS0+c2V0VGV4dFNoYWRvdyhzdGF0ZS5wYXJlbnRTdHlsZSgpLT50ZXh0U2hh
ZG93KCkgPyBhZG9wdFB0cihuZXcgU2hhZG93RGF0YSgqc3RhdGUucGFyZW50U3R5bGUoKS0+dGV4
dFNoYWRvdygpKSkgOiBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0ZS5zdHlsZSgp
LT5zZXRCb3hTaGFkb3coc3RhdGUucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkgPyBhZG9wdFB0
cihuZXcgU2hhZG93RGF0YSgqc3RhdGUucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkpKSA6IG51
bGxwdHIpOworICAgICAgICB9CisgICAgICAgIGlmIChpc0luaXRpYWwgfHwgcHJpbWl0aXZlVmFs
dWUpIC8vIGluaXRpYWwgfCBub25lCisgICAgICAgICAgICByZXR1cm4gaWQgPT0gQ1NTUHJvcGVy
dHlUZXh0U2hhZG93ID8gc3RhdGUuc3R5bGUoKS0+c2V0VGV4dFNoYWRvdyhudWxscHRyKSA6IHN0
YXRlLnN0eWxlKCktPnNldEJveFNoYWRvdyhudWxscHRyKTsKKworICAgICAgICBpZiAoIXZhbHVl
LT5pc1ZhbHVlTGlzdCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAoQ1NT
VmFsdWVMaXN0SXRlcmF0b3IgaSA9IHZhbHVlOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNlKCkpIHsK
KyAgICAgICAgICAgIENTU1ZhbHVlKiBjdXJyVmFsdWUgPSBpLnZhbHVlKCk7CisgICAgICAgICAg
ICBpZiAoIWN1cnJWYWx1ZS0+aXNTaGFkb3dWYWx1ZSgpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgU2hhZG93VmFsdWUqIGl0ZW0gPSBzdGF0aWNfY2FzdDxTaGFkb3dW
YWx1ZSo+KGN1cnJWYWx1ZSk7CisgICAgICAgICAgICBpbnQgeCA9IGl0ZW0tPngtPmNvbXB1dGVM
ZW5ndGg8aW50PihzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHpvb21G
YWN0b3IpOworICAgICAgICAgICAgaW50IHkgPSBpdGVtLT55LT5jb21wdXRlTGVuZ3RoPGludD4o
c3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKTsKKyAg
ICAgICAgICAgIGludCBibHVyID0gaXRlbS0+Ymx1ciA/IGl0ZW0tPmJsdXItPmNvbXB1dGVMZW5n
dGg8aW50PihzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHpvb21GYWN0
b3IpIDogMDsKKyAgICAgICAgICAgIGludCBzcHJlYWQgPSBpdGVtLT5zcHJlYWQgPyBpdGVtLT5z
cHJlYWQtPmNvbXB1dGVMZW5ndGg8aW50PihzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVu
dFN0eWxlKCksIHpvb21GYWN0b3IpIDogMDsKKyAgICAgICAgICAgIFNoYWRvd1N0eWxlIHNoYWRv
d1N0eWxlID0gaXRlbS0+c3R5bGUgJiYgaXRlbS0+c3R5bGUtPmdldElkZW50KCkgPT0gQ1NTVmFs
dWVJbnNldCA/IEluc2V0IDogTm9ybWFsOworICAgICAgICAgICAgQ29sb3IgY29sb3I7CisgICAg
ICAgICAgICBpZiAoaXRlbS0+Y29sb3IpCisgICAgICAgICAgICAgICAgY29sb3IgPSBzdHlsZVJl
c29sdmVyLT5jb2xvckZyb21QcmltaXRpdmVWYWx1ZShpdGVtLT5jb2xvci5nZXQoKSk7CisgICAg
ICAgICAgICBlbHNlIGlmIChzdGF0ZS5zdHlsZSgpKQorICAgICAgICAgICAgICAgIGNvbG9yID0g
c3RhdGUuc3R5bGUoKS0+Y29sb3IoKTsKKworICAgICAgICAgICAgT3duUHRyPFNoYWRvd0RhdGE+
IHNoYWRvd0RhdGEgPSBhZG9wdFB0cihuZXcgU2hhZG93RGF0YShJbnRQb2ludCh4LCB5KSwgYmx1
ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgaWQgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3cs
IGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29sb3I6OnRyYW5zcGFyZW50KSk7CisgICAgICAg
ICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93KQorICAgICAgICAgICAgICAgIHN0
YXRlLnN0eWxlKCktPnNldFRleHRTaGFkb3coc2hhZG93RGF0YS5yZWxlYXNlKCksIGkuaW5kZXgo
KSk7IC8vIGFkZCB0byB0aGUgbGlzdCBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgZW50cnkKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRCb3hTaGFk
b3coc2hhZG93RGF0YS5yZWxlYXNlKCksIGkuaW5kZXgoKSk7IC8vIGFkZCB0byB0aGUgbGlzdCBp
ZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgZW50cnkKKyAgICAgICAgfQorICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3Q6IHsKKyAgICAg
ICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYm94UmVmbGVjdCwgQm94UmVmbGVjdCkKKyAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKSB7CisgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5z
ZXRCb3hSZWZsZWN0KFJlbmRlclN0eWxlOjppbml0aWFsQm94UmVmbGVjdCgpKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdmFsdWUtPmlzUmVmbGVjdFZh
bHVlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgQ1NTUmVmbGVjdFZhbHVlKiBy
ZWZsZWN0VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NSZWZsZWN0VmFsdWUqPih2YWx1ZSk7CisgICAg
ICAgIFJlZlB0cjxTdHlsZVJlZmxlY3Rpb24+IHJlZmxlY3Rpb24gPSBTdHlsZVJlZmxlY3Rpb246
OmNyZWF0ZSgpOworICAgICAgICByZWZsZWN0aW9uLT5zZXREaXJlY3Rpb24oKnJlZmxlY3RWYWx1
ZS0+ZGlyZWN0aW9uKCkpOworICAgICAgICBpZiAocmVmbGVjdFZhbHVlLT5vZmZzZXQoKSkKKyAg
ICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE9mZnNldChyZWZsZWN0VmFsdWUtPm9mZnNldCgpLT5j
b252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9u
IHwgQ2FsY3VsYXRlZENvbnZlcnNpb24+KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50
U3R5bGUoKSwgem9vbUZhY3RvcikpOworICAgICAgICBOaW5lUGllY2VJbWFnZSBtYXNrOworICAg
ICAgICBtYXNrLnNldE1hc2tEZWZhdWx0cygpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHls
ZU1hcCgpLT5tYXBOaW5lUGllY2VJbWFnZShpZCwgcmVmbGVjdFZhbHVlLT5tYXNrKCksIG1hc2sp
OworICAgICAgICByZWZsZWN0aW9uLT5zZXRNYXNrKG1hc2spOworCisgICAgICAgIHN0YXRlLnN0
eWxlKCktPnNldEJveFJlZmxlY3QocmVmbGVjdGlvbi5yZWxlYXNlKCkpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlTcmM6IC8vIE9ubHkgdXNlZCBpbiBAZm9u
dC1mYWNlIHJ1bGVzLgorICAgICAgICByZXR1cm47CisgICAgY2FzZSBDU1NQcm9wZXJ0eVVuaWNv
ZGVSYW5nZTogLy8gT25seSB1c2VkIGluIEBmb250LWZhY2UgcnVsZXMuCisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9jYWxlOiB7CisgICAgICAgIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMKGxvY2FsZSwgTG9jYWxlKTsKKyAgICAgICAgaWYgKCFwcmltaXRp
dmVWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgICAgIHN0YXRlLnN0eWxlKCkt
PnNldExvY2FsZShudWxsQXRvbSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN0YXRlLnN0
eWxlKCktPnNldExvY2FsZShwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKSk7CisgICAg
ICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzdGF0ZS5zdHlsZSgpLT5mb250
RGVzY3JpcHRpb24oKTsKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFNjcmlwdChsb2NhbGVU
b1NjcmlwdENvZGVGb3JGb250U2VsZWN0aW9uKHN0YXRlLnN0eWxlKCktPmxvY2FsZSgpKSk7Cisg
ICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24p
OworICAgICAgICByZXR1cm47CisgICAgfQorI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uOgorICAgIHsKKyAgICAg
ICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoZGFzaGJvYXJkUmVnaW9ucywgRGFzaGJvYXJk
UmVnaW9ucykKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVO
b25lKSB7CisgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXREYXNoYm9hcmRSZWdpb25zKFJl
bmRlclN0eWxlOjpub25lRGFzaGJvYXJkUmVnaW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIERhc2hib2FyZFJlZ2lvbiogcmVnaW9uID0gcHJpbWl0aXZl
VmFsdWUtPmdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7CisgICAgICAgIGlmICghcmVnaW9uKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIERhc2hib2FyZFJlZ2lvbiogZmlyc3QgPSBy
ZWdpb247CisgICAgICAgIHdoaWxlIChyZWdpb24pIHsKKyAgICAgICAgICAgIExlbmd0aCB0b3Ag
PSBzdHlsZVJlc29sdmVyLT5jb252ZXJ0VG9JbnRMZW5ndGgocmVnaW9uLT50b3AoKSwgc3RhdGUu
c3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpKTsKKyAgICAgICAgICAgIExlbmd0aCBy
aWdodCA9IHN0eWxlUmVzb2x2ZXItPmNvbnZlcnRUb0ludExlbmd0aChyZWdpb24tPnJpZ2h0KCks
IHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSk7CisgICAgICAgICAgICBM
ZW5ndGggYm90dG9tID0gc3R5bGVSZXNvbHZlci0+Y29udmVydFRvSW50TGVuZ3RoKHJlZ2lvbi0+
Ym90dG9tKCksIHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSk7CisgICAg
ICAgICAgICBMZW5ndGggbGVmdCA9IHN0eWxlUmVzb2x2ZXItPmNvbnZlcnRUb0ludExlbmd0aChy
ZWdpb24tPmxlZnQoKSwgc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpKTsK
KworICAgICAgICAgICAgaWYgKHRvcC5pc1VuZGVmaW5lZCgpKQorICAgICAgICAgICAgICAgIHRv
cCA9IExlbmd0aCgpOworICAgICAgICAgICAgaWYgKHJpZ2h0LmlzVW5kZWZpbmVkKCkpCisgICAg
ICAgICAgICAgICAgcmlnaHQgPSBMZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChib3R0b20uaXNV
bmRlZmluZWQoKSkKKyAgICAgICAgICAgICAgICBib3R0b20gPSBMZW5ndGgoKTsKKyAgICAgICAg
ICAgIGlmIChsZWZ0LmlzVW5kZWZpbmVkKCkpCisgICAgICAgICAgICAgICAgbGVmdCA9IExlbmd0
aCgpOworCisgICAgICAgICAgICBpZiAocmVnaW9uLT5tX2lzQ2lyY2xlKQorICAgICAgICAgICAg
ICAgIHN0YXRlLnN0eWxlKCktPnNldERhc2hib2FyZFJlZ2lvbihTdHlsZURhc2hib2FyZFJlZ2lv
bjo6Q2lyY2xlLCByZWdpb24tPm1fbGFiZWwsIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgcmVn
aW9uID09IGZpcnN0ID8gZmFsc2UgOiB0cnVlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlZ2lv
bi0+bV9pc1JlY3RhbmdsZSkKKyAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXREYXNo
Ym9hcmRSZWdpb24oU3R5bGVEYXNoYm9hcmRSZWdpb246OlJlY3RhbmdsZSwgcmVnaW9uLT5tX2xh
YmVsLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIHJlZ2lvbiA9PSBmaXJzdCA/IGZhbHNlIDog
dHJ1ZSk7CisgICAgICAgICAgICByZWdpb24gPSByZWdpb24tPm1fbmV4dC5nZXQoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHN0YXRlLmRvY3VtZW50KCktPnNldEhhc0Fubm90YXRlZFJlZ2lvbnMo
dHJ1ZSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShEUkFH
R0FCTEVfUkVHSU9OKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBSZWdpb246IHsKKyAg
ICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSB8fCAhcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldERyYWdnYWJs
ZVJlZ2lvbk1vZGUocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVEcmFnID8g
RHJhZ2dhYmxlUmVnaW9uRHJhZyA6IERyYWdnYWJsZVJlZ2lvbk5vRHJhZyk7CisgICAgICAgIHN0
YXRlLmRvY3VtZW50KCktPnNldEhhc0Fubm90YXRlZFJlZ2lvbnModHJ1ZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9r
ZVdpZHRoOiB7CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRleHRTdHJva2VX
aWR0aCwgVGV4dFN0cm9rZVdpZHRoKQorICAgICAgICBmbG9hdCB3aWR0aCA9IDA7CisgICAgICAg
IHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAgICAgY2FzZSBDU1NW
YWx1ZVRoaW46CisgICAgICAgIGNhc2UgQ1NTVmFsdWVNZWRpdW06CisgICAgICAgIGNhc2UgQ1NT
VmFsdWVUaGljazogeworICAgICAgICAgICAgZG91YmxlIHJlc3VsdCA9IDEuMCAvIDQ4OworICAg
ICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTWVkaXVt
KQorICAgICAgICAgICAgICAgIHJlc3VsdCAqPSAzOworICAgICAgICAgICAgZWxzZSBpZiAocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVUaGljaykKKyAgICAgICAgICAgICAg
ICByZXN1bHQgKj0gNTsKKyAgICAgICAgICAgIHdpZHRoID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShyZXN1bHQsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TKS0+Y29tcHV0ZUxlbmd0aDxm
bG9hdD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9y
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICB3aWR0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdGF0
ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHpvb21GYWN0b3IpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0VGV4dFN0
cm9rZVdpZHRoKHdpZHRoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VHJhbnNmb3JtOiB7CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklU
SUFMKHRyYW5zZm9ybSwgVHJhbnNmb3JtKTsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBv
cGVyYXRpb25zOworICAgICAgICBzdHlsZVJlc29sdmVyLT5jcmVhdGVUcmFuc2Zvcm1PcGVyYXRp
b25zKHZhbHVlLCBzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIG9wZXJh
dGlvbnMpOworICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRUcmFuc2Zvcm0ob3BlcmF0aW9ucyk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNw
ZWN0aXZlOiB7CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHBlcnNwZWN0aXZl
LCBQZXJzcGVjdGl2ZSkKKworICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBD
U1NWYWx1ZU5vbmUpIHsKKyAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFBlcnNwZWN0aXZl
KDApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZmxvYXQgcGVy
c3BlY3RpdmVWYWx1ZTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKQor
ICAgICAgICAgICAgcGVyc3BlY3RpdmVWYWx1ZSA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVu
Z3RoPGZsb2F0PihzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHpvb21G
YWN0b3IpOworICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNOdW1iZXIoKSkgewor
ICAgICAgICAgICAgLy8gRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHRyZWF0IHZhbHVlbGVz
cyBudW1iZXJzIGFzIHB4LgorICAgICAgICAgICAgcGVyc3BlY3RpdmVWYWx1ZSA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUFgpLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdGF0ZS5zdHlsZSgp
LCBzdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHpvb21GYWN0b3IpOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAocGVyc3BlY3RpdmVWYWx1ZSA+PSAw
LjBmKQorICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0UGVyc3BlY3RpdmUocGVyc3BlY3Rp
dmVWYWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6IHsKKyAgICAg
ICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGFwSGlnaGxpZ2h0Q29sb3IsIFRhcEhpZ2hs
aWdodENvbG9yKTsKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIENvbG9yIGNvbCA9IHN0eWxlUmVzb2x2ZXItPmNvbG9yRnJvbVByaW1p
dGl2ZVZhbHVlKHByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0VGFw
SGlnaGxpZ2h0Q29sb3IoY29sKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2lm
IEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nOiB7CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMKHVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcsIFVzZVRvdWNoT3ZlcmZsb3dTY3Jv
bGxpbmcpOworICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVUb3VjaCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5SW52YWxpZDoKKyAgICAgICAg
cmV0dXJuOworICAgIC8vIERpcmVjdGlvbmFsIHByb3BlcnRpZXMgYXJlIHJlc29sdmVkIGJ5IHJl
c29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KCkgYmVmb3JlIHRoZSBzd2l0Y2guCisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJFbmRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5k
V2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3I6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckJlZm9yZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVT
dHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlV2lkdGg6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3I6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckFmdGVyV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luU3RhcnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpbkJlZm9yZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0
ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRp
bmdFbmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFydDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0JlZm9yZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0UGFkZGluZ0FmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsV2lkdGg6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQ6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWluTG9naWNhbEhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbFdp
ZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0OgorICAgIHsK
KyAgICAgICAgQ1NTUHJvcGVydHlJRCBuZXdJZCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0
aW9uQXdhcmVQcm9wZXJ0eShpZCwgc3RhdGUuc3R5bGUoKS0+ZGlyZWN0aW9uKCksIHN0YXRlLnN0
eWxlKCktPndyaXRpbmdNb2RlKCkpOworICAgICAgICBBU1NFUlQobmV3SWQgIT0gaWQpOworICAg
ICAgICByZXR1cm4gYXBwbHlUb1JlbmRlclN0eWxlKHN0eWxlUmVzb2x2ZXIsIG5ld0lkLCB2YWx1
ZSk7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3RyZXRjaDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5UGFnZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hDb2xvcjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dExpbmVUaHJvdWdoTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJv
dWdoU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFdpZHRoOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRP
dmVybGluZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dE92ZXJsaW5lV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmU6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVDb2xvcjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dFVuZGVybGluZU1vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVT
dHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVdpZHRoOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRGb250U2l6ZURlbHRhOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdDoKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQ1NT
IFRleHQgTGF5b3V0IE1vZHVsZSBMZXZlbCAzOiBWZXJ0aWNhbCB3cml0aW5nIHN1cHBvcnQKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JpdGluZ01vZGU6IHsKKyAgICAgICAgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUwod3JpdGluZ01vZGUsIFdyaXRpbmdNb2RlKTsKKyAgICAgICAgCisg
ICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnNl
dFdyaXRpbmdNb2RlKCpwcmltaXRpdmVWYWx1ZSk7CisKKyAgICAgICAgLy8gRklYTUU6IEl0IGlz
IG5vdCBvayB0byBtb2RpZnkgZG9jdW1lbnQgc3RhdGUgd2hpbGUgYXBwbHlpbmcgc3R5bGUuCisg
ICAgICAgIGlmIChzdGF0ZS5lbGVtZW50KCkgJiYgc3RhdGUuZWxlbWVudCgpID09IHN0YXRlLmRv
Y3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKQorICAgICAgICAgICAgc3RhdGUuZG9jdW1lbnQo
KS0+c2V0V3JpdGluZ01vZGVTZXRPbkRvY3VtZW50RWxlbWVudCh0cnVlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0T3JpZW50YXRpb246
IHsKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGV4dE9yaWVudGF0aW9uLCBU
ZXh0T3JpZW50YXRpb24pOworCisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAg
ICAgIHN0eWxlUmVzb2x2ZXItPnNldFRleHRPcmllbnRhdGlvbigqcHJpbWl0aXZlVmFsdWUpOwor
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGlu
ZUJveENvbnRhaW46IHsKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobGluZUJv
eENvbnRhaW4sIExpbmVCb3hDb250YWluKQorICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYg
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKSB7CisgICAgICAgICAg
ICBzdGF0ZS5zdHlsZSgpLT5zZXRMaW5lQm94Q29udGFpbihMaW5lQm94Q29udGFpbk5vbmUpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF2YWx1ZS0+aXND
U1NMaW5lQm94Q29udGFpblZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
Q1NTTGluZUJveENvbnRhaW5WYWx1ZSogbGluZUJveENvbnRhaW5WYWx1ZSA9IHN0YXRpY19jYXN0
PENTU0xpbmVCb3hDb250YWluVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIHN0YXRlLnN0eWxlKCkt
PnNldExpbmVCb3hDb250YWluKGxpbmVCb3hDb250YWluVmFsdWUtPnZhbHVlKCkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gQ1NTIEZvbnRzIE1vZHVsZSBMZXZlbCAzCisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRGZWF0dXJlU2V0dGluZ3M6IHsKKyAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVl
Tm9ybWFsKSB7CisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRGb250RGVzY3JpcHRpb24o
c3RhdGUuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkubWFrZU5vcm1hbEZlYXR1cmVTZXR0aW5n
cygpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdmFs
dWUtPmlzVmFsdWVMaXN0KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgRm9udERl
c2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHN0YXRlLnN0eWxlKCktPmZvbnREZXNjcmlwdGlv
bigpOworICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxp
c3QqPih2YWx1ZSk7CisgICAgICAgIFJlZlB0cjxGb250RmVhdHVyZVNldHRpbmdzPiBzZXR0aW5n
cyA9IEZvbnRGZWF0dXJlU2V0dGluZ3M6OmNyZWF0ZSgpOworICAgICAgICBpbnQgbGVuID0gbGlz
dC0+bGVuZ3RoKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKKyAg
ICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gbGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhp
KTsKKyAgICAgICAgICAgIGlmICghaXRlbS0+aXNGb250RmVhdHVyZVZhbHVlKCkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBGb250RmVhdHVyZVZhbHVlKiBmZWF0dXJl
ID0gc3RhdGljX2Nhc3Q8Rm9udEZlYXR1cmVWYWx1ZSo+KGl0ZW0pOworICAgICAgICAgICAgc2V0
dGluZ3MtPmFwcGVuZChGb250RmVhdHVyZShmZWF0dXJlLT50YWcoKSwgZmVhdHVyZS0+dmFsdWUo
KSkpOworICAgICAgICB9CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGZWF0dXJlU2V0dGlu
Z3Moc2V0dGluZ3MucmVsZWFzZSgpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+c2V0Rm9udERl
c2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjaWYg
RU5BQkxFKENTU19GSUxURVJTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGaWx0ZXI6IHsK
KyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoZmlsdGVyLCBGaWx0ZXIpOworICAg
ICAgICBGaWx0ZXJPcGVyYXRpb25zIG9wZXJhdGlvbnM7CisgICAgICAgIGlmIChzdHlsZVJlc29s
dmVyLT5jcmVhdGVGaWx0ZXJPcGVyYXRpb25zKHZhbHVlLCBzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5y
b290RWxlbWVudFN0eWxlKCksIG9wZXJhdGlvbnMpKQorICAgICAgICAgICAgc3RhdGUuc3R5bGUo
KS0+c2V0RmlsdGVyKG9wZXJhdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlm
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRBdXRvQ29sdW1uczogeworICAgICAgICBH
cmlkVHJhY2tTaXplIHRyYWNrU2l6ZTsKKyAgICAgICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tTaXpl
KHZhbHVlLCB0cmFja1NpemUsIHN0YXRlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
c3RhdGUuc3R5bGUoKS0+c2V0R3JpZEF1dG9Db2x1bW5zKHRyYWNrU2l6ZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRBdXRvUm93czogewor
ICAgICAgICBHcmlkVHJhY2tTaXplIHRyYWNrU2l6ZTsKKyAgICAgICAgaWYgKCFjcmVhdGVHcmlk
VHJhY2tTaXplKHZhbHVlLCB0cmFja1NpemUsIHN0YXRlKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0R3JpZEF1dG9Sb3dzKHRyYWNrU2l6ZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRDb2x1bW5z
OiB7CisgICAgICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiB0cmFja1NpemVzOworICAgICAgICBp
ZiAoIWNyZWF0ZUdyaWRUcmFja0xpc3QodmFsdWUsIHRyYWNrU2l6ZXMsIHN0YXRlKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0R3JpZENvbHVtbnModHJh
Y2tTaXplcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEdyaWRSb3dzOiB7CisgICAgICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiB0cmFja1NpemVz
OworICAgICAgICBpZiAoIWNyZWF0ZUdyaWRUcmFja0xpc3QodmFsdWUsIHRyYWNrU2l6ZXMsIHN0
YXRlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0R3Jp
ZFJvd3ModHJhY2tTaXplcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0R3JpZFN0YXJ0OiB7CisgICAgICAgIEdyaWRQb3NpdGlvbiBzdGFydFBv
c2l0aW9uOworICAgICAgICBpZiAoIWNyZWF0ZUdyaWRQb3NpdGlvbih2YWx1ZSwgc3RhcnRQb3Np
dGlvbikpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEdy
aWRJdGVtU3RhcnQoc3RhcnRQb3NpdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRFbmQ6IHsKKyAgICAgICAgR3JpZFBvc2l0aW9uIGVu
ZFBvc2l0aW9uOworICAgICAgICBpZiAoIWNyZWF0ZUdyaWRQb3NpdGlvbih2YWx1ZSwgZW5kUG9z
aXRpb24pKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRH
cmlkSXRlbUVuZChlbmRQb3NpdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZEJlZm9yZTogeworICAgICAgICBHcmlkUG9zaXRpb24g
YmVmb3JlUG9zaXRpb247CisgICAgICAgIGlmICghY3JlYXRlR3JpZFBvc2l0aW9uKHZhbHVlLCBi
ZWZvcmVQb3NpdGlvbikpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0YXRlLnN0eWxl
KCktPnNldEdyaWRJdGVtQmVmb3JlKGJlZm9yZVBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZEFmdGVyOiB7CisgICAgICAgIEdy
aWRQb3NpdGlvbiBhZnRlclBvc2l0aW9uOworICAgICAgICBpZiAoIWNyZWF0ZUdyaWRQb3NpdGlv
bih2YWx1ZSwgYWZ0ZXJQb3NpdGlvbikpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0
YXRlLnN0eWxlKCktPnNldEdyaWRJdGVtQWZ0ZXIoYWZ0ZXJQb3NpdGlvbik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBhbGlhc2VkIGFuZCBE
ZXByZWNhdGVkU3R5bGVCdWlsZGVyIGFscmVhZHkgYXBwbGllZCB0aGUgcHJvcGVydHkgb24gdGhl
IHByZWZpeGVkIHZlcnNpb24uCisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25EZWxheToK
KyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbkR1cmF0aW9uOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlUcmFuc2l0aW9uUHJvcGVydHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25U
aW1pbmdGdW5jdGlvbjoKKyAgICAgICAgcmV0dXJuOworICAgIC8vIFRoZXNlIHByb3BlcnRpZXMg
YXJlIGltcGxlbWVudGVkIGluIHRoZSBEZXByZWNhdGVkU3R5bGVCdWlsZGVyIGxvb2t1cCB0YWJs
ZS4KKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQ6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uWDoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFg6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRSZXBlYXRZOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3I6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVJpZ2h0UmFkaXVzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGg6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNl
dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VSZXBlYXQ6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlckltYWdlU2xpY2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdl
U291cmNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVdpZHRoOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJS
aWdodFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
VG9wTGVmdFJhZGl1czoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXM6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJUb3BXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm90dG9tOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3hTaXppbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNhcHRpb25TaWRlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlDbGVhcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2xpcDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvdW50ZXJJbmNy
ZW1lbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvdW50ZXJSZXNldDoKKyAgICBjYXNlIENTU1By
b3BlcnR5Q3Vyc29yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlEaXJlY3Rpb246CisgICAgY2FzZSBD
U1NQcm9wZXJ0eURpc3BsYXk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHM6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUZsb2F0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U2l6ZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFy
aWFudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFdlaWdodDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5SGVpZ2h0OgorI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCisgICAgY2FzZSBD
U1NQcm9wZXJ0eUltYWdlT3JpZW50YXRpb246CisjZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5
SW1hZ2VSZW5kZXJpbmc6CisjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQorICAgIGNh
c2UgQ1NTUHJvcGVydHlJbWFnZVJlc29sdXRpb246CisjZW5kaWYKKyAgICBjYXNlIENTU1Byb3Bl
cnR5TGVmdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZzoKKyAgICBjYXNlIENT
U1Byb3BlcnR5TGluZUhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2U6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlMaXN0U3R5bGVUeXBlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b206Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdp
blJpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5Ub3A6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eU1heEhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWF4V2lkdGg6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eU1pbkhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluV2lkdGg6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eU9wYWNpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9ycGhhbnM6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0
bGluZU9mZnNldDoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlPdXRsaW5lV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93V3Jh
cDoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dYOgorICAgIGNhc2UgQ1NTUHJvcGVydHlP
dmVyZmxvd1k6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b206CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVBhZGRpbmdMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQ6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdUb3A6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBh
Z2VCcmVha0FmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmU6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0luc2lkZToKKyAgICBjYXNlIENTU1Byb3BlcnR5UG9p
bnRlckV2ZW50czoKKyAgICBjYXNlIENTU1Byb3BlcnR5UG9zaXRpb246CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVJlc2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5UmlnaHQ6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVNpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNwZWFrOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlUYWJTaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUYWJsZUxheW91dDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5VGV4dEFsaWduOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlv
bjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEluZGVudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dE92ZXJmbG93OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUb3A6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpOgorI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVT
KQorICAgIGNhc2UgQ1NTUHJvcGVydHlWYXJpYWJsZToKKyNlbmRpZgorICAgIGNhc2UgQ1NTUHJv
cGVydHlWZXJ0aWNhbEFsaWduOgorICAgIGNhc2UgQ1NTUHJvcGVydHlWaXNpYmlsaXR5OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25EdXJhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmls
bE1vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb25QbGF5U3RhdGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRB
cHBlYXJhbmNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBc3BlY3RSYXRpbzoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFj
a2dyb3VuZENvbXBvc2l0ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9y
aWdpbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemU6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmc6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduOgorI2lmIEVOQUJMRShDU1NfQk9Y
X0RFQ09SQVRJT05fQlJFQUspCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERlY29yYXRp
b25CcmVhazoKKyNlbmRpZgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXg6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJveEZsZXhHcm91cDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXM6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yZGluYWxHcm91cDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Qm94T3JpZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQ
YWNrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb246CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkF4aXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbkJyZWFrQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFr
QmVmb3JlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtbkdhcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUHJvZ3Jl
c3Npb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvcjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5SdWxlV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
blNwYW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoOgorI2lmIEVOQUJM
RShDVVJTT1JfVklTSUJJTElUWSkKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q3Vyc29yVmlz
aWJpbGl0eToKKyNlbmRpZgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbGlnbkNvbnRlbnQ6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFsaWduSXRlbXM6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEFsaWduU2VsZjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEJhc2lz
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRGbGV4R3JvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleFNo
cmluazoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleFdyYXA6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEp1c3RpZnlDb250ZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRP
cmRlcjoKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEZsb3dGcm9tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbG93SW50bzoKKyNlbmRpZgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250S2VybmluZzoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Rm9udFNtb290aGluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFZh
cmlhbnRMaWdhdHVyZXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdodDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1pdEFmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRIeXBoZW5hdGVMaW1pdEJlZm9yZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlw
aGVuYXRlTGltaXRMaW5lczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuczoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUFsaWduOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRMaW5lQnJlYWs6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVDbGFtcDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUdyaWQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdExpbmVTbmFwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9u
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZVNwZWVkOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5
bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlT3V0c2V0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrQm94SW1hZ2VSZXBlYXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tC
b3hJbWFnZVNsaWNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTb3Vy
Y2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVdpZHRoOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFza0NvbXBvc2l0ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUG9zaXRpb25YOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRp
b25ZOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tTaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFBlcnNwZWN0aXZlT3JpZ2luWDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3Bl
Y3RpdmVPcmlnaW5ZOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmludENvbG9yQWRqdXN0
OgorI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVn
aW9uQnJlYWtBZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtCZWZv
cmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrSW5zaWRlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRSZWdpb25PdmVyZmxvdzoKKyNlbmRpZgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRSdGxPcmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnVi
eVBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZToKKyNpZiBF
TkFCTEUoQ1NTM19URVhUKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlv
bkxpbmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uU3R5bGU6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uQ29sb3I6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRleHRBbGlnbkxhc3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRKdXN0aWZ5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0VW5kZXJsaW5lUG9z
aXRpb246CisjZW5kaWYgLy8gQ1NTM19URVhUCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRFbXBoYXNpc0NvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQ
b3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGU6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3I6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRTZWN1cml0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2Zvcm1TdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRl
bGF5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb246CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRVc2VyRHJhZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeToK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Q2xpcFBhdGg6CisjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0U2hh
cGVNYXJnaW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNoYXBlUGFkZGluZzoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcFRocm91Z2g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFNoYXBlSW5zaWRlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTaGFwZU91dHNpZGU6
CisjZW5kaWYKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eU1p
eDoKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFyYW1ldGVyczoKKyNlbmRpZgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXaGl0ZVNwYWNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXaWRvd3M6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3Jh
cDoKKyAgICBjYXNlIENTU1Byb3BlcnR5WkluZGV4OgorICAgIGNhc2UgQ1NTUHJvcGVydHlab29t
OgorI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04pCisgICAgY2FzZSBDU1NQcm9wZXJ0
eU1heFpvb206CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pblpvb206CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eU9yaWVudGF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlVc2VyWm9vbToKKyNlbmRpZgor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1
bHQ6CisjaWYgRU5BQkxFKFNWRykKKyAgICAgICAgLy8gVHJ5IHRoZSBTVkcgcHJvcGVydGllcwor
ICAgICAgICBhcHBseVRvU1ZHUmVuZGVyU3R5bGUoc3R5bGVSZXNvbHZlciwgaWQsIHZhbHVlKTsK
KyNlbmRpZgorICAgICAgICByZXR1cm47CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNTIwNmM0ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZUJ1aWxkZXIuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFN0eWxlQnVpbGRlcl9oCisjZGVmaW5lIFN0eWxlQnVpbGRlcl9oCisK
KyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1Byb3Bl
cnR5OworY2xhc3MgQ1NTVmFsdWU7CitjbGFzcyBEZXByZWNhdGVkU3R5bGVCdWlsZGVyOworY2xh
c3MgU3R5bGVSZXNvbHZlcjsKKworY2xhc3MgU3R5bGVCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShTdHlsZUJ1aWxkZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBTdHlsZUJ1aWxkZXIoKTsKKworICAgIHZvaWQgYXBwbHlUb1JlbmRlclN0eWxlKFN0
eWxlUmVzb2x2ZXIqLCBDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSopOworCitwcml2YXRlOgorICAg
IHZvaWQgYXBwbHlUb1NWR1JlbmRlclN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBDU1NQcm9wZXJ0eUlE
LCBDU1NWYWx1ZSopOworI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgIHZvaWQgcmVzb2x2
ZVZhcmlhYmxlcyhTdHlsZVJlc29sdmVyKiwgQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUqLCBWZWN0
b3I8c3RkOjpwYWlyPENTU1Byb3BlcnR5SUQsIFN0cmluZz4gPiYga25vd25FeHByZXNzaW9ucyk7
CisjZW5kaWYKKworICAgIGNvbnN0IERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXImIG1fZGVwcmVjYXRl
ZFN0eWxlQnVpbGRlcjsKK307CisKK30KKworI2VuZGlmIC8vIFN0eWxlQnVpbGRlcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMjc2MGE3My4uZGQ1ZjBjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNTUsMTAgKzU1LDcgQEAKICNpbmNsdWRl
ICJDYWxjdWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ29udGVudERhdGEuaCIKICNpbmNsdWRl
ICJDb250ZXh0RmVhdHVyZXMuaCIKLSNpbmNsdWRlICJDb3VudGVyLmgiCi0jaW5jbHVkZSAiQ291
bnRlckNvbnRlbnQuaCIKICNpbmNsdWRlICJDdXJzb3JMaXN0LmgiCi0jaW5jbHVkZSAiRGVwcmVj
YXRlZFN0eWxlQnVpbGRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b24uaCIKICNpbmNsdWRlICJFbGVtZW50UnVsZUNvbGxlY3Rvci5oIgogI2luY2x1ZGUgIkVsZW1l
bnRTaGFkb3cuaCIKQEAgLTg5LDkgKzg2LDcgQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlUnVsZUNvbGxlY3Rvci5o
IgotI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJh
dGlvbi5oIgotI2luY2x1ZGUgIlF1b3Rlc0RhdGEuaCIKICNpbmNsdWRlICJSZWN0LmgiCiAjaW5j
bHVkZSAiUmVuZGVyUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCkBAIC0x
OTgsMTkgKzE5Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIAotI2RlZmluZSBIQU5ETEVfSU5IRVJJVChwcm9wLCBQcm9wKSBcCi1pZiAoaXNJ
bmhlcml0KSB7IFwKLSAgICBtX3N0YXRlLnN0eWxlKCktPnNldCMjUHJvcChtX3N0YXRlLnBhcmVu
dFN0eWxlKCktPnByb3AoKSk7IFwKLSAgICByZXR1cm47IFwKLX0KLQotI2RlZmluZSBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTChwcm9wLCBQcm9wKSBcCi1IQU5ETEVfSU5IRVJJVChwcm9wLCBQ
cm9wKSBcCi1pZiAoaXNJbml0aWFsKSB7IFwKLSAgICBtX3N0YXRlLnN0eWxlKCktPnNldCMjUHJv
cChSZW5kZXJTdHlsZTo6aW5pdGlhbCMjUHJvcCgpKTsgXAotICAgIHJldHVybjsgXAotfQotCiBS
ZW5kZXJTdHlsZSogU3R5bGVSZXNvbHZlcjo6c19zdHlsZU5vdFlldEF2YWlsYWJsZTsKIAogaW5s
aW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OmNhY2hlQm9yZGVyQW5kQmFja2dyb3VuZCgp
CkBAIC0yNTgsNyArMjQwLDYgQEAgU3R5bGVSZXNvbHZlcjo6U3R5bGVSZXNvbHZlcihEb2N1bWVu
dCogZG9jdW1lbnQsIGJvb2wgbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzKQogI2lmIEVOQUJMRShD
U1NfREVWSUNFX0FEQVBUQVRJT04pCiAgICAgLCBtX3ZpZXdwb3J0U3R5bGVSZXNvbHZlcihWaWV3
cG9ydFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZShkb2N1bWVudCkpCiAjZW5kaWYKLSAgICAsIG1fZGVw
cmVjYXRlZFN0eWxlQnVpbGRlcihEZXByZWNhdGVkU3R5bGVCdWlsZGVyOjpzaGFyZWRTdHlsZUJ1
aWxkZXIoKSkKICAgICAsIG1fc3R5bGVNYXAodGhpcykKIHsKICAgICBFbGVtZW50KiByb290ID0g
ZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwpAQCAtMTk3MiwzNSArMTk1Myw2IEBAIHZvaWQg
U3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKENTU1Byb3BlcnR5SUQg
aWQsIENTU1ZhbHVlKiB2YWx1CiAgICAgICAgIGFwcGx5UHJvcGVydHkoaWQsIHZhbHVlKTsKIH0K
IAotaW5saW5lIGJvb2wgaXNWYWxpZFZpc2l0ZWRMaW5rUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBp
ZCkKLXsKLSAgICBzd2l0Y2ggKGlkKSB7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJSaWdodENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BD
b2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3I6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eUNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3I6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvcjoKLSNpZiBFTkFCTEUoQ1NTM19U
RVhUKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yOgotI2Vu
ZGlmIC8vIENTUzNfVEVYVAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXND
b2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjoKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yOgotI2lmIEVOQUJMRShTVkcpCi0gICAg
Y2FzZSBDU1NQcm9wZXJ0eUZpbGw6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZToKLSNlbmRp
ZgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIC8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dn
L2NzczMtcmVnaW9ucy8jdGhlLWF0LXJlZ2lvbi1zdHlsZS1ydWxlCiAvLyBGSVhNRTogYWRkIGlu
Y3JlbWVudGFsIHN1cHBvcnQgZm9yIG90aGVyIHJlZ2lvbiBzdHlsaW5nIHByb3BlcnRpZXMuCiBp
bmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjppc1ZhbGlkUmVnaW9uU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUlEIGlkKQpAQCAtMjA3MiwxMTEwICsyMDI0LDYgQEAgYm9vbCBTdHlsZVJlc29sdmVy
Ojp1c2VTVkdab29tUnVsZXMoKQogICAgIHJldHVybiBtX3N0YXRlLmVsZW1lbnQoKSAmJiBtX3N0
YXRlLmVsZW1lbnQoKS0+aXNTVkdFbGVtZW50KCk7CiB9CiAKLXN0YXRpYyBib29sIGNyZWF0ZUdy
aWRUcmFja0JyZWFkdGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBjb25zdCBT
dHlsZVJlc29sdmVyOjpTdGF0ZSYgc3RhdGUsIExlbmd0aCYgd29ya2luZ0xlbmd0aCkKLXsKLSAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVXZWJraXRNaW5Db250
ZW50KSB7Ci0gICAgICAgIHdvcmtpbmdMZW5ndGggPSBMZW5ndGgoTWluQ29udGVudCk7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRl
bnQoKSA9PSBDU1NWYWx1ZVdlYmtpdE1heENvbnRlbnQpIHsKLSAgICAgICAgd29ya2luZ0xlbmd0
aCA9IExlbmd0aChNYXhDb250ZW50KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0g
ICAgd29ya2luZ0xlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJ
bnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgVmlld3BvcnRQZXJjZW50YWdl
Q29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxl
bWVudFN0eWxlKCksIHN0YXRlLnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7Ci0gICAgaWYgKHdv
cmtpbmdMZW5ndGguaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKQotICAgICAgICB3b3JraW5nTGVuZ3RoLnNl
dFF1aXJrKHByaW1pdGl2ZVZhbHVlLT5pc1F1aXJrVmFsdWUoKSk7Ci0KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotc3RhdGljIGJvb2wgY3JlYXRlR3JpZFRyYWNrU2l6ZShDU1NWYWx1ZSogdmFsdWUs
IEdyaWRUcmFja1NpemUmIHRyYWNrU2l6ZSwgY29uc3QgU3R5bGVSZXNvbHZlcjo6U3RhdGUmIHN0
YXRlKQotewotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgUGFpciogbWluTWF4VHJh
Y2tCcmVhZHRoID0gcHJpbWl0aXZlVmFsdWUtPmdldFBhaXJWYWx1ZSgpOwotICAgIGlmICghbWlu
TWF4VHJhY2tCcmVhZHRoKSB7Ci0gICAgICAgIExlbmd0aCB3b3JraW5nTGVuZ3RoOwotICAgICAg
ICBpZiAoIWNyZWF0ZUdyaWRUcmFja0JyZWFkdGgocHJpbWl0aXZlVmFsdWUsIHN0YXRlLCB3b3Jr
aW5nTGVuZ3RoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICB0cmFja1Np
emUuc2V0TGVuZ3RoKHdvcmtpbmdMZW5ndGgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0KLSAgICBMZW5ndGggbWluVHJhY2tCcmVhZHRoOwotICAgIExlbmd0aCBtYXhUcmFja0JyZWFk
dGg7Ci0gICAgaWYgKCFjcmVhdGVHcmlkVHJhY2tCcmVhZHRoKG1pbk1heFRyYWNrQnJlYWR0aC0+
Zmlyc3QoKSwgc3RhdGUsIG1pblRyYWNrQnJlYWR0aCkgfHwgIWNyZWF0ZUdyaWRUcmFja0JyZWFk
dGgobWluTWF4VHJhY2tCcmVhZHRoLT5zZWNvbmQoKSwgc3RhdGUsIG1heFRyYWNrQnJlYWR0aCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHRyYWNrU2l6ZS5zZXRNaW5NYXgobWluVHJh
Y2tCcmVhZHRoLCBtYXhUcmFja0JyZWFkdGgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0
aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tMaXN0KENTU1ZhbHVlKiB2YWx1ZSwgVmVjdG9yPEdyaWRU
cmFja1NpemU+JiB0cmFja1NpemVzLCBjb25zdCBTdHlsZVJlc29sdmVyOjpTdGF0ZSYgc3RhdGUp
Ci17Ci0gICAgLy8gSGFuZGxlICdub25lJy4KLSAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkgewotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZTsKLSAgICB9Ci0KLSAgICBpZiAo
IXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmb3Ig
KENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGkgPSB2YWx1ZTsgaS5oYXNNb3JlKCk7IGkuYWR2YW5jZSgp
KSB7Ci0gICAgICAgIENTU1ZhbHVlKiBjdXJyVmFsdWUgPSBpLnZhbHVlKCk7Ci0gICAgICAgIEdy
aWRUcmFja1NpemUgdHJhY2tTaXplOwotICAgICAgICBpZiAoIWNyZWF0ZUdyaWRUcmFja1NpemUo
Y3VyclZhbHVlLCB0cmFja1NpemUsIHN0YXRlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgICAgICB0cmFja1NpemVzLmFwcGVuZCh0cmFja1NpemUpOwotICAgIH0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotCi1zdGF0aWMgYm9vbCBjcmVhdGVHcmlkUG9zaXRpb24oQ1NTVmFsdWUq
IHZhbHVlLCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uKQotewotICAgIC8vIEZvciBub3csIHdlIG9u
bHkgYWNjZXB0OiA8aW50ZWdlcj4gfCAnYXV0bycKLSAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
OwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04ocHJpbWl0aXZlVmFsdWUtPmlzTnVtYmVyKCkpOwotICAgIHBvc2l0aW9uLnNldEludGVnZXJQ
b3NpdGlvbihwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSk7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLSNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKLXN0YXRpYyBib29sIGhhc1ZhcmlhYmxl
UmVmZXJlbmNlKENTU1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZl
VmFsdWUoKSkgewotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHBy
aW1pdGl2ZVZhbHVlLT5oYXNWYXJpYWJsZVJlZmVyZW5jZSgpOwotICAgIH0KLQotICAgIGlmICh2
YWx1ZS0+aXNDYWxjdWxhdGlvblZhbHVlKCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxD
U1NDYWxjVmFsdWUqPih2YWx1ZSktPmhhc1ZhcmlhYmxlUmVmZXJlbmNlKCk7Ci0KLSAgICBpZiAo
dmFsdWUtPmlzUmVmbGVjdFZhbHVlKCkpIHsKLSAgICAgICAgQ1NTUmVmbGVjdFZhbHVlKiByZWZs
ZWN0VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NSZWZsZWN0VmFsdWUqPih2YWx1ZSk7Ci0gICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBkaXJlY3Rpb24gPSByZWZsZWN0VmFsdWUtPmRpcmVjdGlvbigp
OwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogb2Zmc2V0ID0gcmVmbGVjdFZhbHVlLT5vZmZz
ZXQoKTsKLSAgICAgICAgQ1NTVmFsdWUqIG1hc2sgPSByZWZsZWN0VmFsdWUtPm1hc2soKTsKLSAg
ICAgICAgcmV0dXJuIChkaXJlY3Rpb24gJiYgaGFzVmFyaWFibGVSZWZlcmVuY2UoZGlyZWN0aW9u
KSkgfHwgKG9mZnNldCAmJiBoYXNWYXJpYWJsZVJlZmVyZW5jZShvZmZzZXQpKSB8fCAobWFzayAm
JiBoYXNWYXJpYWJsZVJlZmVyZW5jZShtYXNrKSk7Ci0gICAgfQotCi0gICAgZm9yIChDU1NWYWx1
ZUxpc3RJdGVyYXRvciBpID0gdmFsdWU7IGkuaGFzTW9yZSgpOyBpLmFkdmFuY2UoKSkgewotICAg
ICAgICBpZiAoaGFzVmFyaWFibGVSZWZlcmVuY2UoaS52YWx1ZSgpKSkKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBTdHlsZVJl
c29sdmVyOjpyZXNvbHZlVmFyaWFibGVzKENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1
ZSwgVmVjdG9yPHN0ZDo6cGFpcjxDU1NQcm9wZXJ0eUlELCBTdHJpbmc+ID4mIGtub3duRXhwcmVz
c2lvbnMpCi17Ci0gICAgc3RkOjpwYWlyPENTU1Byb3BlcnR5SUQsIFN0cmluZz4gZXhwcmVzc2lv
bihpZCwgdmFsdWUtPnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcygqbV9zdGF0ZS5zdHlsZSgp
LT52YXJpYWJsZXMoKSkpOwotCi0gICAgaWYgKGtub3duRXhwcmVzc2lvbnMuY29udGFpbnMoZXhw
cmVzc2lvbikpCi0gICAgICAgIHJldHVybjsgLy8gY3ljbGUgZGV0ZWN0ZWQuCi0KLSAgICBrbm93
bkV4cHJlc3Npb25zLmFwcGVuZChleHByZXNzaW9uKTsKLQotICAgIC8vIEZJWE1FOiBJdCB3b3Vs
ZCBiZSBmYXN0ZXIgbm90IHRvIHJlLXBhcnNlIGZyb20gc3RyaW5ncywgYnV0IGZvciBub3cgQ1NT
IHByb3BlcnR5IHZhbGlkYXRpb24gbGl2ZXMgaW5zaWRlIHRoZSBwYXJzZXIgc28gd2UgZG8gaXQg
dGhlcmUuCi0gICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiByZXN1bHRTZXQgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7Ci0gICAgaWYgKCFDU1NQYXJzZXI6OnBh
cnNlVmFsdWUocmVzdWx0U2V0LmdldCgpLCBpZCwgZXhwcmVzc2lvbi5zZWNvbmQsIGZhbHNlLCBk
b2N1bWVudCgpKSkKLSAgICAgICAgcmV0dXJuOyAvLyBleHByZXNzaW9uIGZhaWxlZCB0byBwYXJz
ZS4KLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHRTZXQtPnByb3BlcnR5Q291
bnQoKTsgaSsrKSB7Ci0gICAgICAgIFN0eWxlUHJvcGVydHlTZXQ6OlByb3BlcnR5UmVmZXJlbmNl
IHByb3BlcnR5ID0gcmVzdWx0U2V0LT5wcm9wZXJ0eUF0KGkpOwotICAgICAgICBpZiAocHJvcGVy
dHkuaWQoKSAhPSBDU1NQcm9wZXJ0eVZhcmlhYmxlICYmIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKHBy
b3BlcnR5LnZhbHVlKCkpKQotICAgICAgICAgICAgcmVzb2x2ZVZhcmlhYmxlcyhwcm9wZXJ0eS5p
ZCgpLCBwcm9wZXJ0eS52YWx1ZSgpLCBrbm93bkV4cHJlc3Npb25zKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShwcm9wZXJ0eS5pZCgpLCBwcm9wZXJ0eS52YWx1ZSgp
KTsKLSAgICB9Ci19Ci0jZW5kaWYKLQotdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5
KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKLXsKLSNpZiBFTkFCTEUoQ1NTX1ZB
UklBQkxFUykKLSAgICBpZiAoaWQgIT0gQ1NTUHJvcGVydHlWYXJpYWJsZSAmJiBoYXNWYXJpYWJs
ZVJlZmVyZW5jZSh2YWx1ZSkpIHsKLSAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDU1NQcm9wZXJ0
eUlELCBTdHJpbmc+ID4ga25vd25FeHByZXNzaW9uczsKLSAgICAgICAgcmVzb2x2ZVZhcmlhYmxl
cyhpZCwgdmFsdWUsIGtub3duRXhwcmVzc2lvbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
I2VuZGlmCi0KLSAgICAvLyBDU1MgdmFyaWFibGVzIGRvbid0IHJlc29sdmUgc2hvcnRoYW5kcyBh
dCBwYXJzaW5nIHRpbWUsIHNvIHRoaXMgc2hvdWxkIGJlICphZnRlciogaGFuZGxpbmcgdmFyaWFi
bGVzLgotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWlzRXhwYW5kZWRTaG9ydGhhbmQoaWQpLCAi
U2hvcnRoYW5kIHByb3BlcnR5IGlkID0gJWQgd2Fzbid0IGV4cGFuZGVkIGF0IHBhcnNpbmcgdGlt
ZSIsIGlkKTsKLQotICAgIFN0YXRlJiBzdGF0ZSA9IG1fc3RhdGU7Ci0gICAgYm9vbCBpc0luaGVy
aXQgPSBzdGF0ZS5wYXJlbnROb2RlKCkgJiYgdmFsdWUtPmlzSW5oZXJpdGVkVmFsdWUoKTsKLSAg
ICBib29sIGlzSW5pdGlhbCA9IHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpIHx8ICghc3RhdGUucGFy
ZW50Tm9kZSgpICYmIHZhbHVlLT5pc0luaGVyaXRlZFZhbHVlKCkpOwotCi0gICAgQVNTRVJUKCFp
c0luaGVyaXQgfHwgIWlzSW5pdGlhbCk7IC8vIGlzSW5oZXJpdCAtPiAhaXNJbml0aWFsICYmIGlz
SW5pdGlhbCAtPiAhaXNJbmhlcml0Ci0gICAgQVNTRVJUKCFpc0luaGVyaXQgfHwgKHN0YXRlLnBh
cmVudE5vZGUoKSAmJiBzdGF0ZS5wYXJlbnRTdHlsZSgpKSk7IC8vIGlzSW5oZXJpdCAtPiAoc3Rh
dGUucGFyZW50Tm9kZSgpICYmIHN0YXRlLnBhcmVudFN0eWxlKCkpCi0KLSAgICBpZiAoIXN0YXRl
LmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpICYmICghc3RhdGUuYXBwbHlQcm9wZXJ0eVRv
VmlzaXRlZExpbmtTdHlsZSgpIHx8ICFpc1ZhbGlkVmlzaXRlZExpbmtQcm9wZXJ0eShpZCkpKSB7
Ci0gICAgICAgIC8vIExpbWl0IHRoZSBwcm9wZXJ0aWVzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8g
b25seSB0aGUgb25lcyBob25vcmVkIGJ5IDp2aXNpdGVkLgotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGlzSW5oZXJpdCAmJiAhc3RhdGUucGFyZW50U3R5bGUoKS0+aGFzRXhwbGlj
aXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSAmJiAhQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJv
cGVydHkoaWQpKQotICAgICAgICBzdGF0ZS5wYXJlbnRTdHlsZSgpLT5zZXRIYXNFeHBsaWNpdGx5
SW5oZXJpdGVkUHJvcGVydGllcygpOwotCi0jaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCi0gICAg
aWYgKGlkID09IENTU1Byb3BlcnR5VmFyaWFibGUpIHsKLSAgICAgICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04odmFsdWUtPmlzVmFyaWFibGVWYWx1ZSgpKTsKLSAgICAgICAgQ1NT
VmFyaWFibGVWYWx1ZSogdmFyaWFibGUgPSBzdGF0aWNfY2FzdDxDU1NWYXJpYWJsZVZhbHVlKj4o
dmFsdWUpOwotICAgICAgICBBU1NFUlQoIXZhcmlhYmxlLT5uYW1lKCkuaXNFbXB0eSgpKTsKLSAg
ICAgICAgQVNTRVJUKCF2YXJpYWJsZS0+dmFsdWUoKS5pc0VtcHR5KCkpOwotICAgICAgICBzdGF0
ZS5zdHlsZSgpLT5zZXRWYXJpYWJsZSh2YXJpYWJsZS0+bmFtZSgpLCB2YXJpYWJsZS0+dmFsdWUo
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIC8vIENoZWNrIGxvb2t1
cCB0YWJsZSBmb3IgaW1wbGVtZW50YXRpb25zIGFuZCB1c2Ugd2hlbiBhdmFpbGFibGUuCi0gICAg
Y29uc3QgUHJvcGVydHlIYW5kbGVyJiBoYW5kbGVyID0gbV9kZXByZWNhdGVkU3R5bGVCdWlsZGVy
LnByb3BlcnR5SGFuZGxlcihpZCk7Ci0gICAgaWYgKGhhbmRsZXIuaXNWYWxpZCgpKSB7Ci0gICAg
ICAgIGlmIChpc0luaGVyaXQpCi0gICAgICAgICAgICBoYW5kbGVyLmFwcGx5SW5oZXJpdFZhbHVl
KGlkLCB0aGlzKTsKLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgaGFu
ZGxlci5hcHBseUluaXRpYWxWYWx1ZShpZCwgdGhpcyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGhhbmRsZXIuYXBwbHlWYWx1ZShpZCwgdGhpcywgdmFsdWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdmFsdWUt
PmlzUHJpbWl0aXZlVmFsdWUoKSA/IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpIDogMDsKLQotICAgIGZsb2F0IHpvb21GYWN0b3IgPSBzdGF0ZS5zdHlsZSgpLT5lZmZlY3Rp
dmVab29tKCk7Ci0KLSAgICAvLyBXaGF0IGZvbGxvd3MgaXMgYSBsaXN0IHRoYXQgbWFwcyB0aGUg
Q1NTIHByb3BlcnRpZXMgaW50byB0aGVpciBjb3JyZXNwb25kaW5nIGZyb250LWVuZAotICAgIC8v
IFJlbmRlclN0eWxlIHZhbHVlcy4KLSAgICBzd2l0Y2ggKGlkKSB7Ci0gICAgLy8gbGlzdHMKLSAg
ICBjYXNlIENTU1Byb3BlcnR5Q29udGVudDoKLSAgICAgICAgLy8gbGlzdCBvZiBzdHJpbmcsIHVy
aSwgY291bnRlciwgYXR0ciwgaQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSW4g
Q1NTMywgaXQgd2lsbCBiZSBwb3NzaWJsZSB0byBpbmhlcml0IGNvbnRlbnQuIEluIENTUzIgaXQg
aXMgbm90LiBUaGlzCi0gICAgICAgICAgICAvLyBub3RlIGlzIGEgcmVtaW5kZXIgdGhhdCBldmVu
dHVhbGx5ICJpbmhlcml0IiBuZWVkcyB0byBiZSBzdXBwb3J0ZWQuCi0KLSAgICAgICAgICAgIGlm
IChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5jbGVhckNvbnRl
bnQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGlmICghdmFsdWUtPmlzVmFsdWVMaXN0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgICAgICBib29sIGRpZFNldCA9IGZhbHNlOwotICAgICAgICAgICAgZm9yIChDU1NW
YWx1ZUxpc3RJdGVyYXRvciBpID0gdmFsdWU7IGkuaGFzTW9yZSgpOyBpLmFkdmFuY2UoKSkgewot
ICAgICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gaS52YWx1ZSgpOwotICAgICAgICAgICAg
ICAgIGlmIChpdGVtLT5pc0ltYWdlR2VuZXJhdG9yVmFsdWUoKSkgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoaXRlbS0+aXNHcmFkaWVudFZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZShz
dGF0aWNfY2FzdDxDU1NHcmFkaWVudFZhbHVlKj4oaXRlbSktPmdyYWRpZW50V2l0aFN0eWxlc1Jl
c29sdmVkKHRoaXMpLmdldCgpKSwgZGlkU2V0KTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudChTdHlsZUdl
bmVyYXRlZEltYWdlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSo+
KGl0ZW0pKSwgZGlkU2V0KTsKLSAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSNp
ZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0t
PmlzSW1hZ2VTZXRWYWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCkt
PnNldENvbnRlbnQoc2V0T3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5Q29udGVudCwgc3Rh
dGljX2Nhc3Q8Q1NTSW1hZ2VTZXRWYWx1ZSo+KGl0ZW0pKSwgZGlkU2V0KTsKLSAgICAgICAgICAg
ICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIGlmIChpdGVtLT5pc0ltYWdlVmFsdWUoKSkgewotICAgICAgICAgICAgICAg
ICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KGNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShD
U1NQcm9wZXJ0eUNvbnRlbnQsIHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUqPihpdGVtKSksIGRp
ZFNldCk7Ci0gICAgICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlm
ICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb250ZW50VmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOwotCi0gICAgICAgICAgICAgICAg
aWYgKGNvbnRlbnRWYWx1ZS0+aXNTdHJpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBzdGF0
ZS5zdHlsZSgpLT5zZXRDb250ZW50KGNvbnRlbnRWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKS5pbXBs
KCksIGRpZFNldCk7Ci0gICAgICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChjb250ZW50VmFsdWUtPmlzQXR0cigpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBDYW4gYSBuYW1lc3BhY2UgYmUgc3BlY2lmaWVkIGZvciBhbiBh
dHRyKGZvbyk/Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zdHlsZSgpLT5zdHlsZVR5
cGUoKSA9PSBOT1BTRVVETykKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCkt
PnNldFVuaXF1ZSgpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0ZS5wYXJlbnRTdHlsZSgpLT5zZXRVbmlxdWUoKTsKLSAgICAgICAgICAgICAg
ICAgICAgUXVhbGlmaWVkTmFtZSBhdHRyKG51bGxBdG9tLCBjb250ZW50VmFsdWUtPmdldFN0cmlu
Z1ZhbHVlKCkuaW1wbCgpLCBudWxsQXRvbSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUgPSBzdGF0ZS5lbGVtZW50KCktPmdldEF0dHJpYnV0ZShhdHRyKTsK
LSAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudCh2YWx1ZS5pc051
bGwoKSA/IGVtcHR5QXRvbSA6IHZhbHVlLmltcGwoKSwgZGlkU2V0KTsKLSAgICAgICAgICAgICAg
ICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgdGhl
IGZhY3QgdGhhdCB0aGUgYXR0cmlidXRlIHZhbHVlIGFmZmVjdHMgdGhlIHN0eWxlCi0gICAgICAg
ICAgICAgICAgICAgIG1fcnVsZVNldHMuZmVhdHVyZXMoKS5hdHRyc0luUnVsZXMuYWRkKGF0dHIu
bG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRW
YWx1ZS0+aXNDb3VudGVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgQ291bnRlciogY291bnRl
clZhbHVlID0gY29udGVudFZhbHVlLT5nZXRDb3VudGVyVmFsdWUoKTsKLSAgICAgICAgICAgICAg
ICAgICAgRUxpc3RTdHlsZVR5cGUgbGlzdFN0eWxlVHlwZSA9IE5vbmVMaXN0U3R5bGU7Ci0gICAg
ICAgICAgICAgICAgICAgIGludCBsaXN0U3R5bGVJZGVudCA9IGNvdW50ZXJWYWx1ZS0+bGlzdFN0
eWxlSWRlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGxpc3RTdHlsZUlkZW50ICE9IENT
U1ZhbHVlTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0
aWNfY2FzdDxFTGlzdFN0eWxlVHlwZT4obGlzdFN0eWxlSWRlbnQgLSBDU1NWYWx1ZURpc2MpOwot
ICAgICAgICAgICAgICAgICAgICBPd25QdHI8Q291bnRlckNvbnRlbnQ+IGNvdW50ZXIgPSBhZG9w
dFB0cihuZXcgQ291bnRlckNvbnRlbnQoY291bnRlclZhbHVlLT5pZGVudGlmaWVyKCksIGxpc3RT
dHlsZVR5cGUsIGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpKTsKLSAgICAgICAgICAgICAgICAg
ICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudChjb3VudGVyLnJlbGVhc2UoKSwgZGlkU2V0KTsK
LSAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRWYWx1ZS0+Z2V0SWRlbnQo
KSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlT3BlblF1b3RlOgotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVudChPUEVOX1FVT1RFLCBk
aWRTZXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
Q2xvc2VRdW90ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldENv
bnRlbnQoQ0xPU0VfUVVPVEUsIGRpZFNldCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaWRT
ZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVOb09wZW5RdW90ZToKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRlLnN0eWxlKCktPnNldENvbnRlbnQoTk9fT1BFTl9RVU9URSwgZGlkU2V0KTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vQ2xvc2VRdW90ZToK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldENvbnRlbnQoTk9fQ0xP
U0VfUVVPVEUsIGRpZFNldCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVl
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBub3JtYWwgYW5kIG5vbmUgZG8gbm90
IGhhdmUgYW55IGVmZmVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIHsgfQotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKCFkaWRTZXQpCi0gICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+Y2xlYXJDb250
ZW50KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICBjYXNlIENTU1Byb3Bl
cnR5UXVvdGVzOgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBzdGF0ZS5z
dHlsZSgpLT5zZXRRdW90ZXMoc3RhdGUucGFyZW50U3R5bGUoKS0+cXVvdGVzKCkpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAg
ICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFF1b3RlcygwKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKLSAgICAgICAg
ICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVl
KTsKLSAgICAgICAgICAgIFJlZlB0cjxRdW90ZXNEYXRhPiBxdW90ZXMgPSBRdW90ZXNEYXRhOjpj
cmVhdGUoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC0+bGVuZ3Ro
KCk7IGkgKz0gMikgewotICAgICAgICAgICAgICAgIENTU1ZhbHVlKiBmaXJzdCA9IGxpc3QtPml0
ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7Ci0gICAgICAgICAgICAgICAgLy8gaXRlbSgpIHJldHVy
bnMgbnVsbCBpZiBvdXQgb2YgYm91bmRzIHNvIHRoaXMgaXMgc2FmZS4KLSAgICAgICAgICAgICAg
ICBDU1NWYWx1ZSogc2Vjb25kID0gbGlzdC0+aXRlbShpICsgMSk7Ci0gICAgICAgICAgICAgICAg
aWYgKCFzZWNvbmQpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGZpcnN0LT5pc1ByaW1pdGl2ZVZh
bHVlKCkpOwotICAgICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KHNlY29uZC0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgc3Rh
cnRRdW90ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZmlyc3QpLT5nZXRTdHJp
bmdWYWx1ZSgpOwotICAgICAgICAgICAgICAgIFN0cmluZyBlbmRRdW90ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4oc2Vjb25kKS0+Z2V0U3RyaW5nVmFsdWUoKTsKLSAgICAgICAg
ICAgICAgICBxdW90ZXMtPmFkZFBhaXIoc3RkOjptYWtlX3BhaXIoc3RhcnRRdW90ZSwgZW5kUXVv
dGUpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFF1b3Rl
cyhxdW90ZXMpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZSkgewotICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRR
dW90ZXMoUXVvdGVzRGF0YTo6Y3JlYXRlKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsK
LSAgICAvLyBTaG9ydGhhbmQgcHJvcGVydGllcy4KLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udDoK
LSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uIGZv
bnREZXNjcmlwdGlvbiA9IHN0YXRlLnBhcmVudFN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpOwot
ICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TGluZUhlaWdodChzdGF0ZS5wYXJlbnRTdHls
ZSgpLT5zcGVjaWZpZWRMaW5lSGVpZ2h0KCkpOwotICAgICAgICAgICAgc3RhdGUuc2V0TGluZUhl
aWdodFZhbHVlKDApOwotICAgICAgICAgICAgc2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlw
dGlvbik7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBTZXR0
aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudFNldHRpbmdzKCk7Ci0gICAgICAgICAgICBBU1NFUlQo
c2V0dGluZ3MpOyAvLyBJZiB3ZSdyZSBkb2luZyBzdHlsZSByZXNvbHV0aW9uLCB0aGlzIGRvY3Vt
ZW50IHNob3VsZCBhbHdheXMgYmUgaW4gYSBmcmFtZSBhbmQgdGh1cyBoYXZlIHNldHRpbmdzCi0g
ICAgICAgICAgICBpZiAoIXNldHRpbmdzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIGluaXRpYWxpemVGb250U3R5bGUoc2V0dGluZ3MpOwotICAgICAgICB9IGVsc2UgaWYg
KHByaW1pdGl2ZVZhbHVlKSB7Ci0gICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRMaW5lSGVp
Z2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKLSAgICAgICAgICAgIHN0YXRl
LnNldExpbmVIZWlnaHRWYWx1ZSgwKTsKLQotICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uIGZv
bnREZXNjcmlwdGlvbjsKLSAgICAgICAgICAgIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+
c3lzdGVtRm9udChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSwgZm9udERlc2NyaXB0aW9uKTsK
LQotICAgICAgICAgICAgLy8gRG91YmxlLWNoZWNrIGFuZCBzZWUgaWYgdGhlIHRoZW1lIGRpZCBh
bnl0aGluZy4gSWYgbm90LCBkb24ndCBib3RoZXIgdXBkYXRpbmcgdGhlIGZvbnQuCi0gICAgICAg
ICAgICBpZiAoZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCkpIHsKLSAgICAgICAgICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhlIHJlbmRlcmluZyBtb2RlIGFuZCBwcmludGVyIGZvbnQgc2V0
dGluZ3MgYXJlIHVwZGF0ZWQuCi0gICAgICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0g
ZG9jdW1lbnRTZXR0aW5ncygpOwotICAgICAgICAgICAgICAgIEFTU0VSVChzZXR0aW5ncyk7IC8v
IElmIHdlJ3JlIGRvaW5nIHN0eWxlIHJlc29sdXRpb24sIHRoaXMgZG9jdW1lbnQgc2hvdWxkIGFs
d2F5cyBiZSBpbiBhIGZyYW1lIGFuZCB0aHVzIGhhdmUgc2V0dGluZ3MKLSAgICAgICAgICAgICAg
ICBpZiAoIXNldHRpbmdzKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICAgICAgZm9udERlc2NyaXB0aW9uLnNldFJlbmRlcmluZ01vZGUoc2V0dGluZ3MtPmZvbnRSZW5k
ZXJpbmdNb2RlKCkpOwotICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRVc2VQcmlu
dGVyRm9udChkb2N1bWVudCgpLT5wcmludGluZygpIHx8ICFzZXR0aW5ncy0+c2NyZWVuRm9udFN1
YnN0aXR1dGlvbkVuYWJsZWQoKSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIHpv
b20gZmFjdG9yLgotICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNp
emUoZ2V0Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUoZG9jdW1lbnQoKSwgc3RhdGUuc3R5
bGUoKSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIGZvbnREZXNjcmlwdGlvbi5z
cGVjaWZpZWRTaXplKCksIHVzZVNWR1pvb21SdWxlcygpKSk7Ci0gICAgICAgICAgICAgICAgc2V0
Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0gZWxzZSBpZiAodmFsdWUtPmlzRm9udFZhbHVlKCkpIHsKLSAgICAgICAgICAgIEZvbnRWYWx1
ZSogZm9udCA9IHN0YXRpY19jYXN0PEZvbnRWYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgICAgIGlm
ICghZm9udC0+c3R5bGUgfHwgIWZvbnQtPnZhcmlhbnQgfHwgIWZvbnQtPndlaWdodAotICAgICAg
ICAgICAgICAgIHx8ICFmb250LT5zaXplIHx8ICFmb250LT5saW5lSGVpZ2h0IHx8ICFmb250LT5m
YW1pbHkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0
eShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgZm9udC0+c3R5bGUuZ2V0KCkpOwotICAgICAgICAgICAg
YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCBmb250LT52YXJpYW50LmdldCgp
KTsKLSAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCBmb250
LT53ZWlnaHQuZ2V0KCkpOwotICAgICAgICAgICAgLy8gVGhlIHByZXZpb3VzIHByb3BlcnRpZXMg
Y2FuIGRpcnR5IG91ciBmb250IGJ1dCB0aGV5IGRvbid0IHRyeSB0byByZWFkIHRoZSBmb250J3MK
LSAgICAgICAgICAgIC8vIHByb3BlcnRpZXMgYmFjaywgd2hpY2ggaXMgc2FmZS4gSG93ZXZlciBp
ZiBmb250LXNpemUgaXMgdXNpbmcgdGhlICdleCcgdW5pdCwgaXQgd2lsbAotICAgICAgICAgICAg
Ly8gbmVlZCBxdWVyeSB0aGUgZGlydGllZCBmb250J3MgeC1oZWlnaHQgdG8gZ2V0IHRoZSBjb21w
dXRlZCBzaXplLiBUbyBiZSBzYWZlIGluIHRoaXMKLSAgICAgICAgICAgIC8vIGNhc2UsIGxldCdz
IGp1c3QgdXBkYXRlIHRoZSBmb250IG5vdy4KLSAgICAgICAgICAgIHVwZGF0ZUZvbnQoKTsKLSAg
ICAgICAgICAgIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgZm9udC0+c2l6ZS5n
ZXQoKSk7Ci0KLSAgICAgICAgICAgIHN0YXRlLnNldExpbmVIZWlnaHRWYWx1ZShmb250LT5saW5l
SGVpZ2h0LmdldCgpKTsKLQotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUZv
bnRGYW1pbHksIGZvbnQtPmZhbWlseS5nZXQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
OwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVh
dDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b206Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJJbWFnZToKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdDoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJSaWdodDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZzoKLSAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcDoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RT
dHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luOgotICAgIGNhc2UgQ1NTUHJvcGVydHlP
dXRsaW5lOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvdzoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5UGFkZGluZzoKLSAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbjoKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJBZnRlcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlclN0YXJ0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJSYWRpdXM6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtblJ1bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXg6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhGbG93OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRH
cmlkQ29sdW1uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkUm93OgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFzazoKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXNrUmVwZWF0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zaXRpb246Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdp
bjoKLSNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFdyYXA6Ci0jZW5kaWYKLSAgICAgICAgQVNTRVJUKGlzRXhwYW5kZWRTaG9ydGhhbmQoaWQpKTsK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgLy8g
Q1NTMyBQcm9wZXJ0aWVzCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRTaGFkb3c6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJveFNoYWRvdzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94U2hh
ZG93OiB7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIGlmIChpZCA9PSBD
U1NQcm9wZXJ0eVRleHRTaGFkb3cpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlLnN0eWxl
KCktPnNldFRleHRTaGFkb3coc3RhdGUucGFyZW50U3R5bGUoKS0+dGV4dFNoYWRvdygpID8gYWRv
cHRQdHIobmV3IFNoYWRvd0RhdGEoKnN0YXRlLnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3coKSkp
IDogbnVsbHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGUuc3R5bGUoKS0+c2V0Qm94U2hh
ZG93KHN0YXRlLnBhcmVudFN0eWxlKCktPmJveFNoYWRvdygpID8gYWRvcHRQdHIobmV3IFNoYWRv
d0RhdGEoKnN0YXRlLnBhcmVudFN0eWxlKCktPmJveFNoYWRvdygpKSkgOiBudWxscHRyKTsKLSAg
ICAgICAgfQotICAgICAgICBpZiAoaXNJbml0aWFsIHx8IHByaW1pdGl2ZVZhbHVlKSAvLyBpbml0
aWFsIHwgbm9uZQotICAgICAgICAgICAgcmV0dXJuIGlkID09IENTU1Byb3BlcnR5VGV4dFNoYWRv
dyA/IHN0YXRlLnN0eWxlKCktPnNldFRleHRTaGFkb3cobnVsbHB0cikgOiBzdGF0ZS5zdHlsZSgp
LT5zZXRCb3hTaGFkb3cobnVsbHB0cik7Ci0KLSAgICAgICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxp
c3QoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3IgKENTU1ZhbHVlTGlzdEl0
ZXJhdG9yIGkgPSB2YWx1ZTsgaS5oYXNNb3JlKCk7IGkuYWR2YW5jZSgpKSB7Ci0gICAgICAgICAg
ICBDU1NWYWx1ZSogY3VyclZhbHVlID0gaS52YWx1ZSgpOwotICAgICAgICAgICAgaWYgKCFjdXJy
VmFsdWUtPmlzU2hhZG93VmFsdWUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIFNoYWRvd1ZhbHVlKiBpdGVtID0gc3RhdGljX2Nhc3Q8U2hhZG93VmFsdWUqPihjdXJy
VmFsdWUpOwotICAgICAgICAgICAgaW50IHggPSBpdGVtLT54LT5jb21wdXRlTGVuZ3RoPGludD4o
c3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKTsKLSAg
ICAgICAgICAgIGludCB5ID0gaXRlbS0+eS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0YXRlLnN0eWxl
KCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICBp
bnQgYmx1ciA9IGl0ZW0tPmJsdXIgPyBpdGVtLT5ibHVyLT5jb21wdXRlTGVuZ3RoPGludD4oc3Rh
dGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKSA6IDA7Ci0g
ICAgICAgICAgICBpbnQgc3ByZWFkID0gaXRlbS0+c3ByZWFkID8gaXRlbS0+c3ByZWFkLT5jb21w
dXRlTGVuZ3RoPGludD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6
b29tRmFjdG9yKSA6IDA7Ci0gICAgICAgICAgICBTaGFkb3dTdHlsZSBzaGFkb3dTdHlsZSA9IGl0
ZW0tPnN0eWxlICYmIGl0ZW0tPnN0eWxlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW5zZXQgPyBJ
bnNldCA6IE5vcm1hbDsKLSAgICAgICAgICAgIENvbG9yIGNvbG9yOwotICAgICAgICAgICAgaWYg
KGl0ZW0tPmNvbG9yKQotICAgICAgICAgICAgICAgIGNvbG9yID0gY29sb3JGcm9tUHJpbWl0aXZl
VmFsdWUoaXRlbS0+Y29sb3IuZ2V0KCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoc3RhdGUuc3R5
bGUoKSkKLSAgICAgICAgICAgICAgICBjb2xvciA9IHN0YXRlLnN0eWxlKCktPmNvbG9yKCk7Ci0K
LSAgICAgICAgICAgIE93blB0cjxTaGFkb3dEYXRhPiBzaGFkb3dEYXRhID0gYWRvcHRQdHIobmV3
IFNoYWRvd0RhdGEoSW50UG9pbnQoeCwgeSksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIGlk
ID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6
IENvbG9yOjp0cmFuc3BhcmVudCkpOwotICAgICAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5
VGV4dFNoYWRvdykKLSAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRUZXh0U2hhZG93
KHNoYWRvd0RhdGEucmVsZWFzZSgpLCBpLmluZGV4KCkpOyAvLyBhZGQgdG8gdGhlIGxpc3QgaWYg
dGhpcyBpcyBub3QgdGhlIGZpcnN0IGVudHJ5Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Qm94U2hhZG93KHNoYWRvd0RhdGEucmVsZWFzZSgpLCBp
LmluZGV4KCkpOyAvLyBhZGQgdG8gdGhlIGxpc3QgaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGVu
dHJ5Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm94UmVmbGVjdDogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElB
TChib3hSZWZsZWN0LCBCb3hSZWZsZWN0KQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpIHsK
LSAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEJveFJlZmxlY3QoUmVuZGVyU3R5bGU6Omlu
aXRpYWxCb3hSZWZsZWN0KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKCF2YWx1ZS0+aXNSZWZsZWN0VmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBDU1NSZWZsZWN0VmFsdWUqIHJlZmxlY3RWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1JlZmxlY3RWYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4g
cmVmbGVjdGlvbiA9IFN0eWxlUmVmbGVjdGlvbjo6Y3JlYXRlKCk7Ci0gICAgICAgIHJlZmxlY3Rp
b24tPnNldERpcmVjdGlvbigqcmVmbGVjdFZhbHVlLT5kaXJlY3Rpb24oKSk7Ci0gICAgICAgIGlm
IChyZWZsZWN0VmFsdWUtPm9mZnNldCgpKQotICAgICAgICAgICAgcmVmbGVjdGlvbi0+c2V0T2Zm
c2V0KHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJD
b252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oc3Rh
dGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKSk7Ci0gICAg
ICAgIE5pbmVQaWVjZUltYWdlIG1hc2s7Ci0gICAgICAgIG1hc2suc2V0TWFza0RlZmF1bHRzKCk7
Ci0gICAgICAgIG1fc3R5bGVNYXAubWFwTmluZVBpZWNlSW1hZ2UoaWQsIHJlZmxlY3RWYWx1ZS0+
bWFzaygpLCBtYXNrKTsKLSAgICAgICAgcmVmbGVjdGlvbi0+c2V0TWFzayhtYXNrKTsKLQotICAg
ICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRCb3hSZWZsZWN0KHJlZmxlY3Rpb24ucmVsZWFzZSgpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5U3JjOiAvLyBPbmx5
IHVzZWQgaW4gQGZvbnQtZmFjZSBydWxlcy4KLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlVbmljb2RlUmFuZ2U6IC8vIE9ubHkgdXNlZCBpbiBAZm9udC1mYWNlIHJ1bGVzLgot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZTogewotICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChsb2NhbGUsIExvY2FsZSk7Ci0gICAgICAg
IGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAgICBz
dGF0ZS5zdHlsZSgpLT5zZXRMb2NhbGUobnVsbEF0b20pOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRMb2NhbGUocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1Zh
bHVlKCkpOwotICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc3RhdGUu
c3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRT
Y3JpcHQobG9jYWxlVG9TY3JpcHRDb2RlRm9yRm9udFNlbGVjdGlvbihzdGF0ZS5zdHlsZSgpLT5s
b2NhbGUoKSkpOwotICAgICAgICBzZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdERhc2hib2FyZFJlZ2lvbjoKLSAgICB7Ci0gICAgICAg
IEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGRhc2hib2FyZFJlZ2lvbnMsIERhc2hib2FyZFJl
Z2lvbnMpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9u
ZSkgewotICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0RGFzaGJvYXJkUmVnaW9ucyhSZW5k
ZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IHByaW1pdGl2ZVZh
bHVlLT5nZXREYXNoYm9hcmRSZWdpb25WYWx1ZSgpOwotICAgICAgICBpZiAoIXJlZ2lvbikKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBEYXNoYm9hcmRSZWdpb24qIGZpcnN0ID0gcmVn
aW9uOwotICAgICAgICB3aGlsZSAocmVnaW9uKSB7Ci0gICAgICAgICAgICBMZW5ndGggdG9wID0g
Y29udmVydFRvSW50TGVuZ3RoKHJlZ2lvbi0+dG9wKCksIHN0YXRlLnN0eWxlKCksIHN0YXRlLnJv
b3RFbGVtZW50U3R5bGUoKSk7Ci0gICAgICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252ZXJ0VG9J
bnRMZW5ndGgocmVnaW9uLT5yaWdodCgpLCBzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVu
dFN0eWxlKCkpOwotICAgICAgICAgICAgTGVuZ3RoIGJvdHRvbSA9IGNvbnZlcnRUb0ludExlbmd0
aChyZWdpb24tPmJvdHRvbSgpLCBzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290RWxlbWVudFN0eWxl
KCkpOwotICAgICAgICAgICAgTGVuZ3RoIGxlZnQgPSBjb252ZXJ0VG9JbnRMZW5ndGgocmVnaW9u
LT5sZWZ0KCksIHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSk7Ci0KLSAg
ICAgICAgICAgIGlmICh0b3AuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgICAgICB0b3AgPSBM
ZW5ndGgoKTsKLSAgICAgICAgICAgIGlmIChyaWdodC5pc1VuZGVmaW5lZCgpKQotICAgICAgICAg
ICAgICAgIHJpZ2h0ID0gTGVuZ3RoKCk7Ci0gICAgICAgICAgICBpZiAoYm90dG9tLmlzVW5kZWZp
bmVkKCkpCi0gICAgICAgICAgICAgICAgYm90dG9tID0gTGVuZ3RoKCk7Ci0gICAgICAgICAgICBp
ZiAobGVmdC5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgICAgIGxlZnQgPSBMZW5ndGgoKTsK
LQotICAgICAgICAgICAgaWYgKHJlZ2lvbi0+bV9pc0NpcmNsZSkKLSAgICAgICAgICAgICAgICBz
dGF0ZS5zdHlsZSgpLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5bGVEYXNoYm9hcmRSZWdpb246OkNp
cmNsZSwgcmVnaW9uLT5tX2xhYmVsLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIHJlZ2lvbiA9
PSBmaXJzdCA/IGZhbHNlIDogdHJ1ZSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChyZWdpb24tPm1f
aXNSZWN0YW5nbGUpCi0gICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0RGFzaGJvYXJk
UmVnaW9uKFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpSZWN0YW5nbGUsIHJlZ2lvbi0+bV9sYWJlbCwg
dG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCByZWdpb24gPT0gZmlyc3QgPyBmYWxzZSA6IHRydWUp
OwotICAgICAgICAgICAgcmVnaW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCk7Ci0gICAgICAgIH0K
LQotICAgICAgICBzdGF0ZS5kb2N1bWVudCgpLT5zZXRIYXNBbm5vdGF0ZWRSZWdpb25zKHRydWUp
OwotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRFJBR0dBQkxF
X1JFR0lPTikKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwUmVnaW9uOiB7Ci0gICAgICAg
IGlmICghcHJpbWl0aXZlVmFsdWUgfHwgIXByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXREcmFnZ2FibGVSZWdp
b25Nb2RlKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlRHJhZyA/IERyYWdn
YWJsZVJlZ2lvbkRyYWcgOiBEcmFnZ2FibGVSZWdpb25Ob0RyYWcpOwotICAgICAgICBzdGF0ZS5k
b2N1bWVudCgpLT5zZXRIYXNBbm5vdGF0ZWRSZWdpb25zKHRydWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotI2VuZGlmCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0
aDogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0ZXh0U3Ryb2tlV2lkdGgs
IFRleHRTdHJva2VXaWR0aCkKLSAgICAgICAgZmxvYXQgd2lkdGggPSAwOwotICAgICAgICBzd2l0
Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVU
aGluOgotICAgICAgICBjYXNlIENTU1ZhbHVlTWVkaXVtOgotICAgICAgICBjYXNlIENTU1ZhbHVl
VGhpY2s6IHsKLSAgICAgICAgICAgIGRvdWJsZSByZXN1bHQgPSAxLjAgLyA0ODsKLSAgICAgICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU1lZGl1bSkKLSAg
ICAgICAgICAgICAgICByZXN1bHQgKj0gMzsKLSAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlVGhpY2spCi0gICAgICAgICAgICAgICAgcmVz
dWx0ICo9IDU7Ci0gICAgICAgICAgICB3aWR0aCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
cmVzdWx0LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyktPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+
KHN0YXRlLnN0eWxlKCksIHN0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSwgem9vbUZhY3Rvcik7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgd2lkdGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3RhdGUuc3R5
bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFRleHRTdHJva2VX
aWR0aCh3aWR0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zZm9ybTogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0
cmFuc2Zvcm0sIFRyYW5zZm9ybSk7Ci0gICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0
aW9uczsKLSAgICAgICAgY3JlYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyh2YWx1ZSwgc3RhdGUuc3R5
bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCBvcGVyYXRpb25zKTsKLSAgICAgICAgc3Rh
dGUuc3R5bGUoKS0+c2V0VHJhbnNmb3JtKG9wZXJhdGlvbnMpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZTogewotICAgICAgICBI
QU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChwZXJzcGVjdGl2ZSwgUGVyc3BlY3RpdmUpCi0KLSAg
ICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKSB7Ci0gICAg
ICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRQZXJzcGVjdGl2ZSgwKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGZsb2F0IHBlcnNwZWN0aXZlVmFsdWU7Ci0gICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNMZW5ndGgoKSkKLSAgICAgICAgICAgIHBlcnNwZWN0
aXZlVmFsdWUgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3RhdGUuc3R5
bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKTsKLSAgICAgICAgZWxz
ZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgIC8vIEZvciBi
YWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0cmVhdCB2YWx1ZWxlc3MgbnVtYmVycyBhcyBweC4KLSAg
ICAgICAgICAgIHBlcnNwZWN0aXZlVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHBy
aW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BY
KS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRT
dHlsZSgpLCB6b29tRmFjdG9yKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgaWYgKHBlcnNwZWN0aXZlVmFsdWUgPj0gMC4wZikKLSAgICAgICAgICAgIHN0
YXRlLnN0eWxlKCktPnNldFBlcnNwZWN0aXZlKHBlcnNwZWN0aXZlVmFsdWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMKHRhcEhpZ2hsaWdodENvbG9yLCBUYXBIaWdobGlnaHRDb2xvcik7Ci0gICAgICAg
IGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBDb2xv
ciBjb2wgPSBjb2xvckZyb21QcmltaXRpdmVWYWx1ZShwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAg
IHN0YXRlLnN0eWxlKCktPnNldFRhcEhpZ2hsaWdodENvbG9yKGNvbCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xM
SU5HKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRPdmVyZmxvd1Njcm9sbGluZzogewotICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5n
LCBVc2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKTsKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1
ZSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRVc2VUb3Vj
aE92ZXJmbG93U2Nyb2xsaW5nKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVl
VG91Y2gpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUludmFsaWQ6Ci0gICAgICAgIHJldHVybjsKLSAgICAvLyBEaXJlY3Rpb25hbCBwcm9wZXJ0
aWVzIGFyZSByZXNvbHZlZCBieSByZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eSgpIGJlZm9y
ZSB0aGUgc3dpdGNoLgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcjoK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGU6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckVuZFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJTdGFydENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0
eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRoOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvcjoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckJlZm9yZVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNv
bG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXJnaW5FbmQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmU6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5CZWZvcmVDb2xsYXBzZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29s
bGFwc2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2U6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRQYWRkaW5nRW5kOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQ
YWRkaW5nU3RhcnQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmU6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcjoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TG9naWNhbFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2dpY2Fs
SGVpZ2h0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsV2lkdGg6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxIZWlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1heExvZ2ljYWxXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF4
TG9naWNhbEhlaWdodDoKLSAgICB7Ci0gICAgICAgIENTU1Byb3BlcnR5SUQgbmV3SWQgPSBDU1NQ
cm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoaWQsIHN0YXRlLnN0eWxlKCkt
PmRpcmVjdGlvbigpLCBzdGF0ZS5zdHlsZSgpLT53cml0aW5nTW9kZSgpKTsKLSAgICAgICAgQVNT
RVJUKG5ld0lkICE9IGlkKTsKLSAgICAgICAgcmV0dXJuIGFwcGx5UHJvcGVydHkobmV3SWQsIHZh
bHVlKTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHJldGNoOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlQYWdlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2g6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaENvbG9yOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0TGluZVRocm91Z2hNb2RlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRo
cm91Z2hTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoV2lkdGg6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dE92ZXJsaW5lQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGU6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0T3ZlcmxpbmVXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZToK
LSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZUNvbG9yOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0VW5kZXJsaW5lTW9kZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGlu
ZVN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGg6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGE6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0OgotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBD
U1MgVGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZTogewotICAgICAgICBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTCh3cml0aW5nTW9kZSwgV3JpdGluZ01vZGUpOwotICAgICAgICAK
LSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgc2V0V3JpdGluZ01vZGUo
KnByaW1pdGl2ZVZhbHVlKTsKLQotICAgICAgICAvLyBGSVhNRTogSXQgaXMgbm90IG9rIHRvIG1v
ZGlmeSBkb2N1bWVudCBzdGF0ZSB3aGlsZSBhcHBseWluZyBzdHlsZS4KLSAgICAgICAgaWYgKHN0
YXRlLmVsZW1lbnQoKSAmJiBzdGF0ZS5lbGVtZW50KCkgPT0gc3RhdGUuZG9jdW1lbnQoKS0+ZG9j
dW1lbnRFbGVtZW50KCkpCi0gICAgICAgICAgICBzdGF0ZS5kb2N1bWVudCgpLT5zZXRXcml0aW5n
TW9kZVNldE9uRG9jdW1lbnRFbGVtZW50KHRydWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRPcmllbnRhdGlvbjogewotICAgICAgICBI
QU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0ZXh0T3JpZW50YXRpb24sIFRleHRPcmllbnRhdGlv
bik7Ci0KLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgc2V0VGV4dE9y
aWVudGF0aW9uKCpwcmltaXRpdmVWYWx1ZSk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQm94Q29udGFpbjogewotICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTChsaW5lQm94Q29udGFpbiwgTGluZUJveENvbnRhaW4pCi0g
ICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NWYWx1ZU5vbmUpIHsKLSAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldExpbmVCb3hD
b250YWluKExpbmVCb3hDb250YWluTm9uZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoIXZhbHVlLT5pc0NTU0xpbmVCb3hDb250YWluVmFsdWUoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBDU1NMaW5lQm94Q29udGFpblZhbHVlKiBsaW5l
Qm94Q29udGFpblZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTTGluZUJveENvbnRhaW5WYWx1ZSo+KHZh
bHVlKTsKLSAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0TGluZUJveENvbnRhaW4obGluZUJveENv
bnRhaW5WYWx1ZS0+dmFsdWUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBD
U1MgRm9udHMgTW9kdWxlIExldmVsIDMKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udEZl
YXR1cmVTZXR0aW5nczogewotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpIHsKLSAgICAgICAgICAgIHNldEZv
bnREZXNjcmlwdGlvbihzdGF0ZS5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKS5tYWtlTm9ybWFs
RmVhdHVyZVNldHRpbmdzKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc3RhdGUuc3R5bGUoKS0+
Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19j
YXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKLSAgICAgICAgUmVmUHRyPEZvbnRGZWF0dXJlU2V0
dGluZ3M+IHNldHRpbmdzID0gRm9udEZlYXR1cmVTZXR0aW5nczo6Y3JlYXRlKCk7Ci0gICAgICAg
IGludCBsZW4gPSBsaXN0LT5sZW5ndGgoKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBs
ZW47ICsraSkgewotICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKGkpOwotICAgICAgICAgICAgaWYgKCFpdGVtLT5pc0ZvbnRGZWF0dXJlVmFs
dWUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIEZvbnRGZWF0dXJl
VmFsdWUqIGZlYXR1cmUgPSBzdGF0aWNfY2FzdDxGb250RmVhdHVyZVZhbHVlKj4oaXRlbSk7Ci0g
ICAgICAgICAgICBzZXR0aW5ncy0+YXBwZW5kKEZvbnRGZWF0dXJlKGZlYXR1cmUtPnRhZygpLCBm
ZWF0dXJlLT52YWx1ZSgpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9udERlc2NyaXB0aW9uLnNl
dEZlYXR1cmVTZXR0aW5ncyhzZXR0aW5ncy5yZWxlYXNlKCkpOwotICAgICAgICBzZXRGb250RGVz
Y3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotI2lm
IEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmlsdGVyOiB7
Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGZpbHRlciwgRmlsdGVyKTsKLSAg
ICAgICAgRmlsdGVyT3BlcmF0aW9ucyBvcGVyYXRpb25zOwotICAgICAgICBpZiAoY3JlYXRlRmls
dGVyT3BlcmF0aW9ucyh2YWx1ZSwgc3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHls
ZSgpLCBvcGVyYXRpb25zKSkKLSAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEZpbHRlcihv
cGVyYXRpb25zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRHcmlkQXV0b0NvbHVtbnM6IHsKLSAgICAgICAgR3JpZFRyYWNrU2l6ZSB0
cmFja1NpemU7Ci0gICAgICAgIGlmICghY3JlYXRlR3JpZFRyYWNrU2l6ZSh2YWx1ZSwgdHJhY2tT
aXplLCBzdGF0ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHN0YXRlLnN0eWxlKCkt
PnNldEdyaWRBdXRvQ29sdW1ucyh0cmFja1NpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQXV0b1Jvd3M6IHsKLSAgICAgICAgR3JpZFRy
YWNrU2l6ZSB0cmFja1NpemU7Ci0gICAgICAgIGlmICghY3JlYXRlR3JpZFRyYWNrU2l6ZSh2YWx1
ZSwgdHJhY2tTaXplLCBzdGF0ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHN0YXRl
LnN0eWxlKCktPnNldEdyaWRBdXRvUm93cyh0cmFja1NpemUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQ29sdW1uczogewotICAgICAgICBW
ZWN0b3I8R3JpZFRyYWNrU2l6ZT4gdHJhY2tTaXplczsKLSAgICAgICAgaWYgKCFjcmVhdGVHcmlk
VHJhY2tMaXN0KHZhbHVlLCB0cmFja1NpemVzLCBzdGF0ZSkpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEdyaWRDb2x1bW5zKHRyYWNrU2l6ZXMpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkUm93czog
ewotICAgICAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gdHJhY2tTaXplczsKLSAgICAgICAgaWYg
KCFjcmVhdGVHcmlkVHJhY2tMaXN0KHZhbHVlLCB0cmFja1NpemVzLCBzdGF0ZSkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEdyaWRSb3dzKHRyYWNrU2l6
ZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEdyaWRTdGFydDogewotICAgICAgICBHcmlkUG9zaXRpb24gc3RhcnRQb3NpdGlvbjsKLSAgICAg
ICAgaWYgKCFjcmVhdGVHcmlkUG9zaXRpb24odmFsdWUsIHN0YXJ0UG9zaXRpb24pKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRHcmlkSXRlbVN0YXJ0KHN0
YXJ0UG9zaXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRHcmlkRW5kOiB7Ci0gICAgICAgIEdyaWRQb3NpdGlvbiBlbmRQb3NpdGlvbjsKLSAg
ICAgICAgaWYgKCFjcmVhdGVHcmlkUG9zaXRpb24odmFsdWUsIGVuZFBvc2l0aW9uKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0R3JpZEl0ZW1FbmQoZW5k
UG9zaXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEdyaWRCZWZvcmU6IHsKLSAgICAgICAgR3JpZFBvc2l0aW9uIGJlZm9yZVBvc2l0aW9u
OwotICAgICAgICBpZiAoIWNyZWF0ZUdyaWRQb3NpdGlvbih2YWx1ZSwgYmVmb3JlUG9zaXRpb24p
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRHcmlkSXRl
bUJlZm9yZShiZWZvcmVQb3NpdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRBZnRlcjogewotICAgICAgICBHcmlkUG9zaXRpb24gYWZ0
ZXJQb3NpdGlvbjsKLSAgICAgICAgaWYgKCFjcmVhdGVHcmlkUG9zaXRpb24odmFsdWUsIGFmdGVy
UG9zaXRpb24pKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzdGF0ZS5zdHlsZSgpLT5z
ZXRHcmlkSXRlbUFmdGVyKGFmdGVyUG9zaXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgLy8gVGhlc2UgcHJvcGVydGllcyBhcmUgYWxpYXNlZCBhbmQgRGVwcmVjYXRlZFN0eWxl
QnVpbGRlciBhbHJlYWR5IGFwcGxpZWQgdGhlIHByb3BlcnR5IG9uIHRoZSBwcmVmaXhlZCB2ZXJz
aW9uLgotICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uRGVsYXk6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVRyYW5zaXRpb25EdXJhdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlv
blByb3BlcnR5OgotICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246
Ci0gICAgICAgIHJldHVybjsKLSAgICAvLyBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBpbXBsZW1lbnRl
ZCBpbiB0aGUgRGVwcmVjYXRlZFN0eWxlQnVpbGRlciBsb29rdXAgdGFibGUuCi0gICAgY2FzZSBD
U1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50OgotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ2xpcDoKLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRPcmlnaW46Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblg6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblk6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRSZXBlYXRYOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVw
ZWF0WToKLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemU6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21MZWZ0UmFkaXVzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1
czoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGU6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xs
YXBzZToKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VPdXRzZXQ6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlckltYWdlUmVwZWF0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJ
bWFnZVNsaWNlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZToKLSAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHRDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZToKLSAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyVG9wQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXM6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJUb3BTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lk
dGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvdHRvbToKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm94
U2l6aW5nOgotICAgIGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZToKLSAgICBjYXNlIENTU1By
b3BlcnR5Q2xlYXI6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXA6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50OgotICAgIGNh
c2UgQ1NTUHJvcGVydHlDb3VudGVyUmVzZXQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjoK
LSAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlEaXNw
bGF5OgotICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxzOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlGbG9hdDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUZvbnRTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUhlaWdodDoKLSNp
ZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgIGNhc2UgQ1NTUHJvcGVydHlJbWFn
ZU9yaWVudGF0aW9uOgotI2VuZGlmCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5n
OgotI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKLSAgICBjYXNlIENTU1Byb3BlcnR5
SW1hZ2VSZXNvbHV0aW9uOgotI2VuZGlmCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUxlZnQ6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpbmVI
ZWlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxl
VHlwZToKLSAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlNYXJnaW5MZWZ0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDoKLSAgICBj
YXNlIENTU1Byb3BlcnR5TWFyZ2luVG9wOgotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhIZWlnaHQ6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1heFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5I
ZWlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlPcGFjaXR5OgotICAgIGNhc2UgQ1NTUHJvcGVydHlPcnBoYW5zOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlPdXRsaW5lQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQ6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5T3V0
bGluZVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1dyYXA6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eU92ZXJmbG93WDoKLSAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dZOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tOgotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRk
aW5nTGVmdDoKLSAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0OgotICAgIGNhc2UgQ1NT
UHJvcGVydHlQYWRkaW5nVG9wOgotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlcjoK
LSAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlQYWdlQnJlYWtJbnNpZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHM6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVBvc2l0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlSZXNpemU6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlTaXplOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlTcGVhazoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGFiU2l6ZToK
LSAgICBjYXNlIENTU1Byb3BlcnR5VGFibGVMYXlvdXQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRl
eHRBbGlnbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb246Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVRleHRJbmRlbnQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdzoK
LSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZzoKLSAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dFRyYW5zZm9ybToKLSAgICBjYXNlIENTU1Byb3BlcnR5VG9wOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlVbmljb2RlQmlkaToKLSNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKLSAgICBjYXNlIENT
U1Byb3BlcnR5VmFyaWFibGU6Ci0jZW5kaWYKLSAgICBjYXNlIENTU1Byb3BlcnR5VmVydGljYWxB
bGlnbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5VmlzaWJpbGl0eToKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uRGVsYXk6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1h
dGlvbkRpcmVjdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRHVyYXRp
b246Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudDoKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
QW5pbWF0aW9uUGxheVN0YXRlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25U
aW1pbmdGdW5jdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXNwZWN0UmF0aW86Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFj
a2dyb3VuZENsaXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3Np
dGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRPcmlnaW46Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplOgotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJGaXQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250
YWxTcGFjaW5nOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZToKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3hBbGlnbjoKLSNpZiBFTkFCTEUoQ1NTX0JPWF9ERUNPUkFUSU9OX0JS
RUFLKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEZWNvcmF0aW9uQnJlYWs6Ci0jZW5k
aWYKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3hGbGV4OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4
R3JvdXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJveE9yaWVudDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFjazoKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5BeGlzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0Fm
dGVyOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZToKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGU6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtbkNvdW50OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5H
YXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblByb2dyZXNzaW9uOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtblJ1bGVTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
UnVsZVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5TcGFuOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aDoKLSNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lC
SUxJVFkpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEN1cnNvclZpc2liaWxpdHk6Ci0jZW5k
aWYKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QWxpZ25Db250ZW50OgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRBbGlnbkl0ZW1zOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbGln
blNlbGY6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhCYXNpczoKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
RmxleEdyb3c6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhTaHJpbms6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRK
dXN0aWZ5Q29udGVudDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0T3JkZXI6Ci0jaWYgRU5B
QkxFKENTU19SRUdJT05TKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbG93RnJvbToKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rmxvd0ludG86Ci0jZW5kaWYKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Rm9udEtlcm5pbmc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRT
bW9vdGhpbmc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRWYXJpYW50TGlnYXR1cmVz
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIaWdobGlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
SHlwaGVuYXRlTGltaXRBZnRlcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRl
TGltaXRCZWZvcmU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxpbWl0TGlu
ZXM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnM6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdExpbmVBbGlnbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFr
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQ2xhbXA6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdExpbmVHcmlkOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lU25hcDoK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbjoKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZVJlcGV0aXRpb246Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVT
cGVlZDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tCb3hJbWFnZU91dHNldDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveElt
YWdlUmVwZWF0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTbGljZToK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNlOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFza0NsaXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGU6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZToKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFza09yaWdpbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0
aW9uWDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWToKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tSZXBlYXRZOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZToKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFBlcnNwZWN0aXZlT3JpZ2luOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2
ZU9yaWdpblg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWToK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UHJpbnRDb2xvckFkanVzdDoKLSNpZiBFTkFCTEUo
Q1NTX1JFR0lPTlMpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQWZ0ZXI6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0luc2lkZToKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0UmVnaW9uT3ZlcmZsb3c6Ci0jZW5kaWYKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
UnRsT3JkZXJpbmc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbjoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmU6Ci0jaWYgRU5BQkxFKENTUzNfVEVY
VCkKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25MaW5lOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvblN0eWxlOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0QWxpZ25MYXN0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0SnVzdGlmeToK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uOgotI2VuZGlm
IC8vIENTUzNfVEVYVAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xv
cjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0RmlsbENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0
U2VjdXJpdHk6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcjoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWDoKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VHJhbnNmb3JtT3JpZ2luWjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5
bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheToKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHk6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zaXRpb25UaW1pbmdGdW5jdGlvbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlckRy
YWc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnk6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENsaXBQ
YXRoOgotI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0V3JhcEZsb3c6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNoYXBlTWFyZ2luOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTaGFwZVBhZGRpbmc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFdyYXBUaHJvdWdoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTaGFwZUluc2lk
ZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0U2hhcGVPdXRzaWRlOgotI2VuZGlmCi0jaWYg
RU5BQkxFKENTU19TSEFERVJTKQotICAgIGNhc2UgQ1NTUHJvcGVydHlNaXg6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVBhcmFtZXRlcnM6Ci0jZW5kaWYKLSAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVT
cGFjZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2lkb3dzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlX
aWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXb3JkU3BhY2luZzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V29yZFdyYXA6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVpJbmRleDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Wm9vbToKLSNpZiBFTkFCTEUo
Q1NTX0RFVklDRV9BREFQVEFUSU9OKQotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhab29tOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlNaW5ab29tOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPcmllbnRhdGlv
bjoKLSAgICBjYXNlIENTU1Byb3BlcnR5VXNlclpvb206Ci0jZW5kaWYKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBkZWZhdWx0OgotI2lmIEVOQUJM
RShTVkcpCi0gICAgICAgIC8vIFRyeSB0aGUgU1ZHIHByb3BlcnRpZXMKLSAgICAgICAgYXBwbHlT
VkdQcm9wZXJ0eShpZCwgdmFsdWUpOwotI2VuZGlmCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci19
Ci0KIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVJbWFnZShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5p
c0ltYWdlVmFsdWUoKSkKQEAgLTQ1MjMsNyArMzM3MSw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
c3QKIAogICAgIGluZm8uYWRkTWVtYmVyKG1fZm9udFNlbGVjdG9yLCAiZm9udFNlbGVjdG9yIik7
CiAgICAgaW5mby5hZGRNZW1iZXIobV92aWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRz
LCAidmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0cyIpOwotICAgIGluZm8uaWdub3Jl
TWVtYmVyKG1fZGVwcmVjYXRlZFN0eWxlQnVpbGRlcik7CisgICAgaW5mby5pZ25vcmVNZW1iZXIo
bV9zdHlsZUJ1aWxkZXIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1faW5zcGVjdG9yQ1NTT01XcmFw
cGVycyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9zY29wZVJlc29sdmVyLCAic2NvcGVSZXNvbHZl
ciIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCAyMGEzY2YwLi4zMjhmMjYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNs
dWRlICJTZWxlY3RvckNoZWNrZXIuaCIKICNpbmNsdWRlICJTZWxlY3RvckZpbHRlci5oIgogI2lu
Y2x1ZGUgIlNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVnaWVzLmgiCisjaW5jbHVkZSAiU3R5bGVCdWls
ZGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVJbmhlcml0ZWREYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVT
Y29wZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRTdHlsZVJlc29sdmVyLmgiCkBAIC03
OCw3ICs3OSw2IEBAIGNsYXNzIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3Q7CiBjbGFzcyBDdXN0
b21GaWx0ZXJQcm9ncmFtOwogc3RydWN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5nczsK
IGNsYXNzIERvY3VtZW50OwotY2xhc3MgRGVwcmVjYXRlZFN0eWxlQnVpbGRlcjsKIGNsYXNzIEVs
ZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lVmlldzsKQEAgLTQwMCw5ICs0MDAsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgYXBwbHlNYXRjaGVkUHJvcGVydGllcyhjb25zdCBNYXRjaFJl
c3VsdCYsIGJvb2wgaW1wb3J0YW50LCBpbnQgc3RhcnRJbmRleCwgaW50IGVuZEluZGV4LCBib29s
IGluaGVyaXRlZE9ubHkpOwogICAgIHRlbXBsYXRlIDxTdHlsZUFwcGxpY2F0aW9uUGFzcyBwYXNz
PgogICAgIHZvaWQgYXBwbHlQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3Bl
cnRpZXMsIFN0eWxlUnVsZSosIGJvb2wgaXNJbXBvcnRhbnQsIGJvb2wgaW5oZXJpdGVkT25seSwg
UHJvcGVydHlXaGl0ZWxpc3RUeXBlID0gUHJvcGVydHlXaGl0ZWxpc3ROb25lKTsKLSNpZiBFTkFC
TEUoQ1NTX1ZBUklBQkxFUykKLSAgICB2b2lkIHJlc29sdmVWYXJpYWJsZXMoQ1NTUHJvcGVydHlJ
RCwgQ1NTVmFsdWUqLCBWZWN0b3I8c3RkOjpwYWlyPENTU1Byb3BlcnR5SUQsIFN0cmluZz4gPiYg
a25vd25FeHByZXNzaW9ucyk7Ci0jZW5kaWYKKwogICAgIHN0YXRpYyBib29sIGlzVmFsaWRSZWdp
b25TdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
ICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkQ3VlU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKTsK
QEAgLTU4MiwxMSArNTgwLDcgQEAgcHJpdmF0ZToKIHByaXZhdGU6CiAgICAgYm9vbCBjYW5TaGFy
ZVN0eWxlV2l0aENvbnRyb2woU3R5bGVkRWxlbWVudCopIGNvbnN0OwogCi0gICAgdm9pZCBhcHBs
eVByb3BlcnR5KENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKik7Ci0KLSNpZiBFTkFCTEUoU1ZHKQot
ICAgIHZvaWQgYXBwbHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSopOwotI2Vu
ZGlmCisgICAgdm9pZCBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2
YWx1ZSkgeyBtX3N0eWxlQnVpbGRlci5hcHBseVRvUmVuZGVyU3R5bGUodGhpcywgaWQsIHZhbHVl
KTsgfQogCiAgICAgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBsb2FkUGVuZGluZ0ltYWdlKFN0eWxl
UGVuZGluZ0ltYWdlKik7CiAgICAgdm9pZCBsb2FkUGVuZGluZ0ltYWdlcygpOwpAQCAtNjMxLDcg
KzYyNSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFZpZXdwb3J0U3R5bGVSZXNvbHZlcj4gbV92
aWV3cG9ydFN0eWxlUmVzb2x2ZXI7CiAjZW5kaWYKIAotICAgIGNvbnN0IERlcHJlY2F0ZWRTdHls
ZUJ1aWxkZXImIG1fZGVwcmVjYXRlZFN0eWxlQnVpbGRlcjsKKyAgICBTdHlsZUJ1aWxkZXIgbV9z
dHlsZUJ1aWxkZXI7CiAKICAgICBPd25QdHI8U3R5bGVTY29wZVJlc29sdmVyPiBtX3Njb3BlUmVz
b2x2ZXI7CiAgICAgQ1NTVG9TdHlsZU1hcCBtX3N0eWxlTWFwOwpAQCAtNjQ0LDYgKzYzOCw4IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGZyaWVuZCBjbGFzcyBEZXByZWNhdGVkU3R5bGVCdWls
ZGVyOworICAgIC8vIEZJWE1FOiBSZW1vdmUgZnJpZW5kc2hpcCBhdCB0aGUgZW5kIG9mIHJlZmFj
dG9yaW5nLgorICAgIGZyaWVuZCBjbGFzcyBTdHlsZUJ1aWxkZXI7CiAgICAgZnJpZW5kIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBNYXRjaGVkUHJvcGVydGllcyYsIGNvbnN0IE1hdGNoZWRQcm9wZXJ0
aWVzJik7CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBNYXRjaGVkUHJvcGVydGll
cyYsIGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJik7CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBNYXRjaFJhbmdlcyYsIGNvbnN0IE1hdGNoUmFuZ2VzJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDRkYWZlMTIuLjA1OTI2OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0x
MzEsNiArMTMxLDcgQEAgY2xhc3MgUmVuZGVyU3R5bGU6IHB1YmxpYyBSZWZDb3VudGVkPFJlbmRl
clN0eWxlPiB7CiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlOyAvLyBGSVhNRTog
TmVlZHMgdG8gYWx0ZXIgdGhlIHZpc2l0ZWQgc3RhdGUgYnkgaGFuZC4gU2hvdWxkIGNsZWFuIHRo
ZSBTVkcgY29kZSB1cCBhbmQgbW92ZSBpdCBpbnRvIFJlbmRlclN0eWxlIHBlcmhhcHMuCiAgICAg
ZnJpZW5kIGNsYXNzIFJlbmRlclRyZWVBc1RleHQ7IC8vIEZJWE1FOiBPbmx5IG5lZWRlZCBzbyB0
aGUgcmVuZGVyIHRyZWUgY2FuIGtlZXAgbHlpbmcgYW5kIGR1bXAgdGhlIHdyb25nIGNvbG9ycy4g
IFJlYmFzZWxpbmluZyB3b3VsZCBhbGxvdyB0aGlzIHRvIGJlIHlhbmtlZC4KICAgICBmcmllbmQg
Y2xhc3MgU3R5bGVSZXNvbHZlcjsgLy8gU2V0cyBtZW1iZXJzIGRpcmVjdGx5LgorICAgIGZyaWVu
ZCBjbGFzcyBTdHlsZUJ1aWxkZXI7IC8vIFNldHMgbWVtYmVycyBkaXJlY3RseS4KIHByb3RlY3Rl
ZDoKIAogICAgIC8vIG5vbi1pbmhlcml0ZWQgYXR0cmlidXRlcwo=
</data>
<flag name="review"
          id="220183"
          type_id="1"
          status="-"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>