<?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>126820</bug_id>
          
          <creation_ts>2014-01-11 11:43:38 -0800</creation_ts>
          <short_desc>Extract the FormatConverter class out of GraphicsContext3D.cpp and into its own file</short_desc>
          <delta_ts>2014-01-11 14:52:38 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rakuco</cc>
    
    <cc>roger_fong</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>966819</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-11 11:43:38 -0800</bug_when>
    <thetext>Extract the FormatConverter class out of GraphicsContext3D.cpp and into its own file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966821</commentid>
    <comment_count>1</comment_count>
      <attachid>220942</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-11 11:45:16 -0800</bug_when>
    <thetext>Created attachment 220942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966822</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-11 11:46:04 -0800</bug_when>
    <thetext>Attachment 220942 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/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/platform/graphics/FormatConverter.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FormatConverter.h&apos;, u&apos;Source/WebCore/platform/graphics/GraphicsContext3D.cpp&apos;, u&apos;Source/WebCore/platform/graphics/GraphicsContext3D.h&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:32:  You should not add a blank line before implementation file&apos;s own header.  [build/include_order] [4]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:187:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:199:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:211:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:223:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:237:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:256:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:275:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:295:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:311:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:323:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:335:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:347:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:360:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:373:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:437:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:449:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:461:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:473:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:495:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:504:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:513:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:525:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:536:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:546:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:559:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:571:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:582:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:598:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:619:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:636:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:655:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:657:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:667:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:673:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:684:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:690:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:703:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:705:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:715:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:721:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:732:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:738:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:751:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:753:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:762:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:768:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:778:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:784:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:793:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:804:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:816:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:834:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:847:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:860:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:869:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:878:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:888:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:898:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:908:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:919:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/FormatConverter.cpp:1248:  Declaration has space between type name and * in const SrcType *srcRowStart  [whitespace/declaration] [3]
ERROR: Source/WebCore/platform/graphics/FormatConverter.h:28:  Header file should not contain WebCore config.h. Should be: alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsContext3D.cpp:149:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/GraphicsContext3D.cpp:200:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/GraphicsContext3D.cpp:244:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/GraphicsContext3D.cpp:281:  Omit int when using unsigned  [runtime/unsigned] [1]
Total errors found: 67 in 10 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>966845</commentid>
    <comment_count>3</comment_count>
      <attachid>220942</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-11 14:52:36 -0800</bug_when>
    <thetext>Comment on attachment 220942
Patch

Clearing flags on attachment: 220942

Committed r161783: &lt;http://trac.webkit.org/changeset/161783&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966846</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-11 14:52:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220942</attachid>
            <date>2014-01-11 11:45:16 -0800</date>
            <delta_ts>2014-01-11 14:52:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126820-20140111114515.patch</filename>
            <type>text/plain</type>
            <size>352280</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTc3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE0LTAxLTExICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXh0cmFjdCB0aGUgRm9ybWF0Q29udmVy
dGVyIGNsYXNzIG91dCBvZiBHcmFwaGljc0NvbnRleHQzRC5jcHAgYW5kIGludG8gaXRzIG93biBm
aWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY4
MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICog
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZl
cnRlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRGbG9hdFRvSGFs
ZkZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1hdENvbnZlcnRlcjo6Y29udmVydCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcC4K
KyAgICAgICAgKFdlYkNvcmU6OkZvcm1hdENvbnZlcnRlcjo6Rm9ybWF0Q29udmVydGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1hdENvbnZlcnRlcjo6c3VjY2Vzcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhY2tJbWFnZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmV4dHJhY3RJbWFnZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmV4dHJhY3RUZXh0dXJlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFja1BpeGVscyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6aGFzQ29sb3IpOgorCiAyMDE0LTAxLTExICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgU2NyaXB0RGVidWdTZXJ2ZXIgc2hv
dWxkIHVzZSBhIHNlcGFyYXRlIG1lbWJlciBmdW5jdGlvbiBmb3IgaXRzIHRpbWVyIGhhbmRsZXIK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNjE3NjkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjk3OSw2ICsyOTc5LDcgQEAg
aWYgKFdURl9VU0VfM0RfR1JBUEhJQ1MpCiAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKKyAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmNwcAogCiAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAogICAgICkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkocmV2aXNpb24gMTYxNzY5KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTM2Niw2ICs1MzY2LDggQEAgd2ViY29yZV9w
bGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNjE3NjkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC03Mjk1LDYgKzcyOTUsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcZ3B1XFNoYXJlZEdyYXBoaWNzQ29udGV4dDNELmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGdwdVxUZXh0dXJlLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGdwdVxUaWxpbmdEYXRh
LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEZv
cm1hdENvbnZlcnRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xHcmFwaGljc0NvbnRleHQzRC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xHcmFwaGljc0xheWVyQW5pbWF0aW9uLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEdyYXBoaWNzTGF5
ZXJUcmFuc2Zvcm0uY3BwIiAvPgpAQCAtMTkwNzMsNiArMTkwNzQsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3B1XFNoYXJlZEdyYXBoaWNzQ29udGV4
dDNELmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xn
cHVcVGV4dHVyZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcZ3B1XFRpbGluZ0RhdGEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXEZvcm1hdENvbnZlcnRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcR3JhcGhpY3NDb250ZXh0M0QuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEdyYXBoaWNzTGF5ZXJBbmlt
YXRpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAx
NjE3NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTY3MzksNiArNjczOSw5IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xBTkdMRVdlYktpdEJyaWRnZS5jcHAi
PgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljczwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcRm9ybWF0
Q29udmVydGVyLmNwcCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzPC9GaWx0ZXI+
CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xHcmFwaGljc0NvbnRleHQzRC5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxn
cmFwaGljczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTQ2MDIsNiArMTQ2MDUsOSBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcQU5HTEVXZWJL
aXRCcmlkZ2UuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xGb3JtYXRDb252ZXJ0ZXIuaCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNz
PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xHcmFwaGljc0NvbnRleHQzRC5oIj4KICAgICAgIDxGaWx0ZXI+cGxh
dGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDE2MTc2OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjI5MCw2ICsyMjkwLDggQEAKIAkJN0M1MzQzRkMxN0I3
NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUzNDNGQTE3Qjc0QjYzMDA0MjMy
RjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCAqLzsgfTsKIAkJN0M1MzQzRkQxN0I3
NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M1MzQzRkIxN0I3NEI2MzAwNDIzMkYw
IC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oICovOyB9OwogCQk3Q0M3RTNENzE3MjA4QzBG
MDAzQzUyNzcgLyogSUROU2NyaXB0V2hpdGVMaXN0LnR4dCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NDN0UzRDYxNzIwOEMwRjAwM0M1Mjc3IC8qIElE
TlNjcmlwdFdoaXRlTGlzdC50eHQgKi87IH07CisJCTdDRTZDQkZCMTg3RjM3MDcwMEQ0NkJGNSAv
KiBGb3JtYXRDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDRTZDQkZBMTg3RjM3MDcwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuaCAq
LzsgfTsKKwkJN0NFNkNCRkQxODdGMzk0OTAwRDQ2QkY1IC8qIEZvcm1hdENvbnZlcnRlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U2Q0JGQzE4
N0YzOTQ5MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmNwcCAqLzsgfTsKIAkJN0Q3NDFCREEx
NzcyMjZBQTAwODU5MTcwIC8qIENTU1ZhbHVlS2V5d29yZHMuaCBpbiBDb3B5IEdlbmVyYXRlZCBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MTQ4MDlEMTMw
NDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi87IH07CiAJCTdFMTJFOTBGMTVGQTVE
M0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTEyRTkwRDE1RkE1RDNBMDA1RTQxMjYg
LyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oICovOyB9OwogCQk3RTEyRTkxMDE1RkE1RDNB
MDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYg
LyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHAgKi87IH07CkBAIC05MjYwLDYgKzkyNjIs
OCBAQAogCQk3QzYxMzZGODE3MTBDMzUyMDBGRjRBNTcgLyogSW5GaWxlc1BhcnNlci5wbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0
LnBlcmw7IG5hbWUgPSBJbkZpbGVzUGFyc2VyLnBtOyBwYXRoID0gc2NyaXB0cy9JbkZpbGVzUGFy
c2VyLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzYxMzZGOTE3MTBDMzUyMDBG
RjRBNTcgLyogU3RhdGljU3RyaW5nLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IFN0YXRpY1N0cmluZy5w
bTsgcGF0aCA9IHNjcmlwdHMvU3RhdGljU3RyaW5nLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3Q0M3RTNENjE3MjA4QzBGMDAzQzUyNzcgLyogSUROU2NyaXB0V2hpdGVMaXN0LnR4
dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0OyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3Q0U2Q0JGQTE4N0YzNzA3MDBENDZCRjUgLyogRm9ybWF0
Q29udmVydGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1hdENvbnZl
cnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0U2Q0JGQzE4N0YzOTQ5MDBE
NDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEZvcm1hdENvbnZlcnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdFMTJFOTBEMTVGQTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3IuaDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3Vz
dG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcDsgcGF0aCA9IGZpbHRlcnMvQ3Vz
dG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdFMzNDRDAwMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1cmdlUHJpb3JpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE5ODI2LDEwICsxOTgzMCw2IEBACiAJCUIyQTAxNTkxMEFGNkNENTMwMDZC
Q0UwRSAvKiBncmFwaGljcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCi0JCQkJNkUwRTU2OTkxODNCRkZFNjAwRTBFOEQ1IC8qIEZsb2F0Um91bmRlZFJlY3QuY3Bw
ICovLAotCQkJCTZFMEU1NjlBMTgzQkZGRTYwMEUwRThENSAvKiBGbG9hdFJvdW5kZWRSZWN0Lmgg
Ki8sCi0JCQkJQ0Q2NDFFQjExODE4RjVFRDAwRUU0QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0ZS5o
ICovLAotCQkJCUNENjQxRUIyMTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRl
LmggKi8sCiAJCQkJMDc2RjBEMDgxMkI4MTkyNzAwQzI2QUE0IC8qIGF2Zm91bmRhdGlvbiAqLywK
IAkJCQk0OTlCM0VDMDEyOENDQzE4MDBFNzI2QzIgLyogY2EgKi8sCiAJCQkJQjI3NTM1MjkwQjA1
MzgxNDAwMkNFNjRGIC8qIGNnICovLApAQCAtMTk4NjYsNiArMTk4NjYsOCBAQAogCQkJCTBGRDcy
MzgwMEVDOEJEOTMwMENBNURENyAvKiBGbG9hdFF1YWQuaCAqLywKIAkJCQlCMjc1MzUzQzBCMDUz
ODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0LmNwcCAqLywKIAkJCQlCMjc1MzUzRDBCMDUzODE0MDAy
Q0U2NEYgLyogRmxvYXRSZWN0LmggKi8sCisJCQkJNkUwRTU2OTkxODNCRkZFNjAwRTBFOEQ1IC8q
IEZsb2F0Um91bmRlZFJlY3QuY3BwICovLAorCQkJCTZFMEU1NjlBMTgzQkZGRTYwMEUwRThENSAv
KiBGbG9hdFJvdW5kZWRSZWN0LmggKi8sCiAJCQkJQjI3NTM1M0UwQjA1MzgxNDAwMkNFNjRGIC8q
IEZsb2F0U2l6ZS5jcHAgKi8sCiAJCQkJQjI3NTM1M0YwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0
U2l6ZS5oICovLAogCQkJCUIyQzNEQTRGMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250LmNwcCAqLywK
QEAgLTE5ODkzLDEwICsxOTg5NSwxMCBAQAogCQkJCTM3MjAyMTk4MTA2MjEzQzYwMEYyNUM0QiAv
KiBGb250U21vb3RoaW5nTW9kZS5oICovLAogCQkJCTM3ODRDMzRBMEUxMUFBMzQwMDdEOEQ0OCAv
KiBGb250VHJhaXRzTWFzay5oICovLAogCQkJCUJDRTQ0MTM1MTJGNzQ5MEIwMDlCODRCOCAvKiBG
b250V2lkdGhWYXJpYW50LmggKi8sCisJCQkJN0NFNkNCRkMxODdGMzk0OTAwRDQ2QkY1IC8qIEZv
cm1hdENvbnZlcnRlci5jcHAgKi8sCisJCQkJN0NFNkNCRkExODdGMzcwNzAwRDQ2QkY1IC8qIEZv
cm1hdENvbnZlcnRlci5oICovLAogCQkJCTRGQjM5MEFDMTVFRjYxRjMwMDdBRDUxRiAvKiBHZW5l
cmF0ZWRJbWFnZS5jcHAgKi8sCiAJCQkJQkMyM0YwREEwREFGRjRBNDAwOUZEQzkxIC8qIEdlbmVy
YXRlZEltYWdlLmggKi8sCi0JCQkJMkQyRkMwNTYxNDYwQ0Q2RjAwMjYzNjMzIC8qIEdyYWRpZW50
SW1hZ2UuY3BwICovLAotCQkJCTJEMkZDMDU3MTQ2MENENkYwMDI2MzYzMyAvKiBHcmFkaWVudElt
YWdlLmggKi8sCiAJCQkJMDg2QkJEMEUxMzYwMzlDMjAwOEIxNUQ4IC8qIEdseXBoLmggKi8sCiAJ
CQkJQjJDM0RBNUIwRDAwNkNENjAwRUY2RjI2IC8qIEdseXBoQnVmZmVyLmggKi8sCiAJCQkJQzVE
NEFBNzgxMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oICovLApAQCAtMTk5MDUs
NiArMTk5MDcsOCBAQAogCQkJCUIyQzNEQTVEMEQwMDZDRDYwMEVGNkYyNiAvKiBHbHlwaFBhZ2VU
cmVlTm9kZS5oICovLAogCQkJCUJDNTNDNjA3MERBNTZDNTcwMDIxRUI1RCAvKiBHcmFkaWVudC5j
cHAgKi8sCiAJCQkJQkM1M0M1RjQwREE1NkI5MjAwMjFFQjVEIC8qIEdyYWRpZW50LmggKi8sCisJ
CQkJMkQyRkMwNTYxNDYwQ0Q2RjAwMjYzNjMzIC8qIEdyYWRpZW50SW1hZ2UuY3BwICovLAorCQkJ
CTJEMkZDMDU3MTQ2MENENkYwMDI2MzYzMyAvKiBHcmFkaWVudEltYWdlLmggKi8sCiAJCQkJQjJB
MDE1OTIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzQ29udGV4dC5jcHAgKi8sCiAJCQkJQjJB
MDE1OTMwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzQ29udGV4dC5oICovLAogCQkJCTZFMjFD
NkJGMTEyNjMzODUwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRC5jcHAgKi8sCkBAIC0xOTk1
MSw2ICsxOTk1NSw3IEBACiAJCQkJRTRCNDFFMEMwQ0JGOTBCRDAwQUYyRUNFIC8qIE1lZGlhUGxh
eWVyLmNwcCAqLywKIAkJCQlFNEI0MUUwRDBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIu
aCAqLywKIAkJCQkwNzlGNUU0QjBGM0JFQkVBMDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRl
LmggKi8sCisJCQkJQ0Q2NDFFQjExODE4RjVFRDAwRUU0QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0
ZS5oICovLAogCQkJCTZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZVB0ci5o
ICovLAogCQkJCUIyNzUzNTUyMEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoLmNwcCAqLywKIAkJCQlC
Mjc1MzU1MzBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5oICovLApAQCAtMTk5NzEsOCArMTk5NzYs
NyBAQAogCQkJCTBGM0RENDRFMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVyLmggKi8sCiAJ
CQkJQjJDM0RBNTMwRDAwNkNENjAwRUY2RjI2IC8qIFNpbXBsZUZvbnREYXRhLmNwcCAqLywKIAkJ
CQlCMkMzREE1NDBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEuaCAqLywKLQkJCQlD
REM2MURBMDE4MDg2N0Q4MDA0QjkxM0YgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5oICovLAotCQkJ
CUNENTRBNzVFMTgwRjUzNTAwMEIwNzZDOSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCAqLywKKwkJ
CQlDRDY0MUVCMjE4MThGNUVEMDBFRTRDNDEgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5oICovLAog
CQkJCUNEQzhCNUFDMTgwNEFFNUQwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
LmggKi8sCiAJCQkJQjIzNTQwRjAwRDAwNzgyRTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5j
cHAgKi8sCiAJCQkJQjIzNTQwRjEwRDAwNzgyRTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5o
ICovLApAQCAtMTk5OTYsNiArMjAwMDAsOCBAQAogCQkJCTUwMUJBQUE4MTM5NTBFMkMwMEY3QUNF
QiAvKiBXaW5kUnVsZS5oICovLAogCQkJCTM3OTkxOTk0MTIwMERERjQwMEVBMDQxQyAvKiBXT0ZG
RmlsZUZvcm1hdC5jcHAgKi8sCiAJCQkJMzc5OTE5OTUxMjAwRERGNDAwRUEwNDFDIC8qIFdPRkZG
aWxlRm9ybWF0LmggKi8sCisJCQkJQ0RDNjFEQTAxODA4NjdEODAwNEI5MTNGIC8qIFNvdXJjZUJ1
ZmZlclByaXZhdGUuaCAqLywKKwkJCQlDRDU0QTc1RTE4MEY1MzUwMDBCMDc2QzkgLyogTWVkaWFT
b3VyY2VQcml2YXRlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBoaWNzOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI0OTM0LDYgKzI0OTQwLDcgQEAKIAkJCQlCQzVDNzYyQjE0
OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZvcm1FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNB
QTQ4NzAxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1FeHBvcnRN
YWNyb3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDRTZDQkZCMTg3RjM3MDcwMEQ0NkJGNSAvKiBG
b3JtYXRDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRENDMwMEE2
QUFCNCAvKiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1NjJG
OTYxMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBBRjMzQTggLyogUGxhdGZvcm1Mb2NhbGUuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjcwOTgsNiArMjcxMDUsNyBAQAogCQkJCTUxMUVGMkM4MTdGMEZEMzUwMEU0RkEx
NiAvKiBKU0lEQk9wZW5EQlJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEzMTNGNjUx
NDQzQjM1RjAwNkUyQTkwIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQ5RUNFQjZEMTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJN0NFNkNCRkQxODdGMzk0OTAwRDQ2QkY1IC8qIEZvcm1hdENvbnZl
cnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVDRUI2RjE0OTk3OTBEMDBDREQzQTQgLyog
RmlsdGVyT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENGRjA0RDBBMTU0RjA5
MDAwQTQyMzQgLyogRml4ZWRUYWJsZUxheW91dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUQ3
MTlCNjE4MTEwNkUwMDAxNkRDNTEgLyogRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0
Q29udmVydGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb3JtYXRDb252ZXJ0ZXIuY3BwCShyZXZpc2lvbiAxNjE3NjkpCShmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcDoxNjE3NjkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTgwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBN
b3ppbGxhIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoM0RfR1JBUEhJQ1MpCisKKyNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQzRC5oIgorCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCisjaW5jbHVkZSAiSW1h
Z2UuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgi
CisKKyNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCisjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0RORU9OLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3
Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisvLyBWaXN1YWwgU3R1ZGlvIGNy
YXNoZXMgd2l0aCBhIEMxMDYzIEZhdGFsIEVycm9yIGlmIGV2ZXJ5dGhpbmcgaXMgaW5saW5lZC4K
KyNpZiBDT01QSUxFUihNU1ZDKQorI2RlZmluZSBBTFdBWVNfSU5MSU5FX0VYQ0VQVF9NU1ZDCisj
ZWxzZQorI2RlZmluZSBBTFdBWVNfSU5MSU5FX0VYQ0VQVF9NU1ZDIEFMV0FZU19JTkxJTkUKKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSB7CisKK0dyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0IGdldERhdGFGb3JtYXQoR0MzRGVudW0gZGVzdGluYXRpb25Gb3Jt
YXQsIEdDM0RlbnVtIGRlc3RpbmF0aW9uVHlwZSkKK3sKKyAgICBHcmFwaGljc0NvbnRleHQzRDo6
RGF0YUZvcm1hdCBkc3RGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE4
OworICAgIHN3aXRjaCAoZGVzdGluYXRpb25UeXBlKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfQllURToKKyAgICAgICAgc3dpdGNoIChkZXN0aW5hdGlvbkZvcm1hdCkg
eworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I6CisgICAgICAgICAgICBkc3RG
b3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjg7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQToKKyAgICAgICAgICAg
IGRzdEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTg7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QUxQSEE6CisgICAg
ICAgICAgICBkc3RGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEE4OworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkxVTUlOQU5D
RToKKyAgICAgICAgICAgIGRzdEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0
Ujg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
TFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAgICAgZHN0Rm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0
M0Q6OkRhdGFGb3JtYXRSQTg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JUXzRfNF80XzQ6
CisgICAgICAgIGRzdEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTQ0
NDQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X1NIT1JUXzVfNV81XzE6CisgICAgICAgIGRzdEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UkdCQTU1NTE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX1NIT1JUXzVfNl81OgorICAgICAgICBkc3RGb3JtYXQgPSBHcmFwaGlj
c0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjU2NTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6SEFMRl9GTE9BVF9PRVM6IC8vIE9FU190ZXh0dXJlX2hhbGZfZmxv
YXQKKyAgICAgICAgc3dpdGNoIChkZXN0aW5hdGlvbkZvcm1hdCkgeworICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0I6CisgICAgICAgICAgICBkc3RGb3JtYXQgPSBHcmFwaGljc0Nv
bnRleHQzRDo6RGF0YUZvcm1hdFJHQjE2RjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOgorICAgICAgICAgICAgZHN0Rm9ybWF0ID0gR3Jh
cGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMTZGOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBOgorICAgICAgICAgICAgZHN0Rm9y
bWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBMTZGOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkxVTUlOQU5DRToKKyAgICAgICAg
ICAgIGRzdEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjE2RjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpMVU1JTkFOQ0Vf
QUxQSEE6CisgICAgICAgICAgICBkc3RGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdFJBMTZGOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVDogLy8gT0VTX3RleHR1cmVfZmxvYXQKKyAg
ICAgICAgc3dpdGNoIChkZXN0aW5hdGlvbkZvcm1hdCkgeworICAgICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpSR0I6CisgICAgICAgICAgICBkc3RGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdFJHQjMyRjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBOgorICAgICAgICAgICAgZHN0Rm9ybWF0ID0gR3JhcGhpY3ND
b250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMzJGOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBOgorICAgICAgICAgICAgZHN0Rm9ybWF0ID0g
R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBMzJGOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkxVTUlOQU5DRToKKyAgICAgICAgICAgIGRz
dEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjMyRjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpMVU1JTkFOQ0VfQUxQSEE6
CisgICAgICAgICAgICBkc3RGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJB
MzJGOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIGRz
dEZvcm1hdDsKK30KKworfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK2Jvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OnRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBl
LCBHQzNEaW50IHVucGFja0FsaWdubWVudCkKK3sKKyAgICBBU1NFUlQodW5wYWNrQWxpZ25tZW50
ID09IDEgfHwgdW5wYWNrQWxpZ25tZW50ID09IDIgfHwgdW5wYWNrQWxpZ25tZW50ID09IDQgfHwg
dW5wYWNrQWxpZ25tZW50ID09IDgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBjaGFy
W10+IHplcm87CisgICAgaWYgKCFpc1Jlc291cmNlU2FmZSgpICYmIHdpZHRoID4gMCAmJiBoZWln
aHQgPiAwKSB7CisgICAgICAgIHVuc2lnbmVkIGludCBzaXplOworICAgICAgICBHQzNEZW51bSBl
cnJvciA9IGNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKGZvcm1hdCwgdHlwZSwgd2lkdGgsIGhlaWdo
dCwgdW5wYWNrQWxpZ25tZW50LCAmc2l6ZSwgMCk7CisgICAgICAgIGlmIChlcnJvciAhPSBHcmFw
aGljc0NvbnRleHQzRDo6Tk9fRVJST1IpIHsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICB6
ZXJvID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZCBjaGFyW10+KHNpemUpOworICAgICAgICBp
ZiAoIXplcm8pIHsKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dDNEOjpJTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgICAgICBtZW1zZXQoemVyby5nZXQoKSwgMCwgc2l6ZSk7CisgICAgfQorICAgIHJldHVy
biB0ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgemVyby5nZXQoKSk7Cit9CisKK2Jvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OmNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyhHQzNEZW51bSBmb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0MzRGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIGNvbXBvbmVudHNQZXJQaXhlbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQqIGJ5dGVzUGVyQ29tcG9uZW50KQoreworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6QUxQSEE6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
TFVNSU5BTkNFOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMOgorICAgICAgICAqY29t
cG9uZW50c1BlclBpeGVsID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6TFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAqY29tcG9uZW50c1BlclBpeGVsID0g
MjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCOgorICAg
ICAgICAqY29tcG9uZW50c1BlclBpeGVsID0gMzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6UkdCQToKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6QkdSQV9FWFQ6
IC8vIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAorICAgICAgICAqY29tcG9uZW50c1Bl
clBpeGVsID0gNDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpVTlNJR05FRF9CWVRFOgorICAgICAgICAqYnl0ZXNQZXJDb21wb25lbnQgPSBzaXpl
b2YoR0MzRHVieXRlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6VU5TSUdORURfU0hPUlQ6CisgICAgICAgICpieXRlc1BlckNvbXBvbmVudCA9IHNpemVvZihH
QzNEdXNob3J0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfU0hPUlRfNV82XzU6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdO
RURfU0hPUlRfNF80XzRfNDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9T
SE9SVF81XzVfNV8xOgorICAgICAgICAqY29tcG9uZW50c1BlclBpeGVsID0gMTsKKyAgICAgICAg
KmJ5dGVzUGVyQ29tcG9uZW50ID0gc2l6ZW9mKEdDM0R1c2hvcnQpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9JTlRfMjRfODoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9JTlQ6CisgICAgICAgICpieXRlc1BlckNvbXBv
bmVudCA9IHNpemVvZihHQzNEdWludCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkZMT0FUOiAvLyBPRVNfdGV4dHVyZV9mbG9hdAorICAgICAgICAqYnl0ZXNQ
ZXJDb21wb25lbnQgPSBzaXplb2YoR0MzRGZsb2F0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6SEFMRl9GTE9BVF9PRVM6IC8vIE9FU190ZXh0dXJlX2hhbGZf
ZmxvYXQKKyAgICAgICAgKmJ5dGVzUGVyQ29tcG9uZW50ID0gc2l6ZW9mKEdDM0RoYWxmZmxvYXQp
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitHQzNEZW51bSBHcmFwaGljc0NvbnRleHQzRDo6
Y29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBH
QzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYWxpZ25tZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCogaW1hZ2VTaXplSW5CeXRlcywgdW5zaWduZWQgaW50KiBwYWRkaW5nSW5CeXRlcykKK3sK
KyAgICBBU1NFUlQoaW1hZ2VTaXplSW5CeXRlcyk7CisgICAgQVNTRVJUKGFsaWdubWVudCA9PSAx
IHx8IGFsaWdubWVudCA9PSAyIHx8IGFsaWdubWVudCA9PSA0IHx8IGFsaWdubWVudCA9PSA4KTsK
KyAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDApCisgICAgICAgIHJldHVybiBHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRTsKKyAgICB1bnNpZ25lZCBpbnQgYnl0ZXNQZXJDb21w
b25lbnQsIGNvbXBvbmVudHNQZXJQaXhlbDsKKyAgICBpZiAoIWNvbXB1dGVGb3JtYXRBbmRUeXBl
UGFyYW1ldGVycyhmb3JtYXQsIHR5cGUsICZieXRlc1BlckNvbXBvbmVudCwgJmNvbXBvbmVudHNQ
ZXJQaXhlbCkpCisgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVN
OworICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkgeworICAgICAgICAqaW1hZ2VTaXplSW5CeXRl
cyA9IDA7CisgICAgICAgIGlmIChwYWRkaW5nSW5CeXRlcykKKyAgICAgICAgICAgICpwYWRkaW5n
SW5CeXRlcyA9IDA7CisgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1I7
CisgICAgfQorICAgIENoZWNrZWQ8dWludDMyX3QsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkVmFs
dWUgPSBieXRlc1BlckNvbXBvbmVudCAqIGNvbXBvbmVudHNQZXJQaXhlbDsKKyAgICBjaGVja2Vk
VmFsdWUgKj0gIHdpZHRoOworICAgIGlmIChjaGVja2VkVmFsdWUuaGFzT3ZlcmZsb3dlZCgpKQor
ICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUU7CisgICAgdW5z
aWduZWQgaW50IHZhbGlkUm93U2l6ZSA9IGNoZWNrZWRWYWx1ZS51bnNhZmVHZXQoKTsKKyAgICB1
bnNpZ25lZCBpbnQgcGFkZGluZyA9IDA7CisgICAgdW5zaWduZWQgaW50IHJlc2lkdWFsID0gdmFs
aWRSb3dTaXplICUgYWxpZ25tZW50OworICAgIGlmIChyZXNpZHVhbCkgeworICAgICAgICBwYWRk
aW5nID0gYWxpZ25tZW50IC0gcmVzaWR1YWw7CisgICAgICAgIGNoZWNrZWRWYWx1ZSArPSBwYWRk
aW5nOworICAgIH0KKyAgICAvLyBMYXN0IHJvdyBuZWVkcyBubyBwYWRkaW5nLgorICAgIGNoZWNr
ZWRWYWx1ZSAqPSAoaGVpZ2h0IC0gMSk7CisgICAgY2hlY2tlZFZhbHVlICs9IHZhbGlkUm93U2l6
ZTsKKyAgICBpZiAoY2hlY2tlZFZhbHVlLmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgcmV0dXJu
IEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFOworICAgICppbWFnZVNpemVJbkJ5dGVz
ID0gY2hlY2tlZFZhbHVlLnVuc2FmZUdldCgpOworICAgIGlmIChwYWRkaW5nSW5CeXRlcykKKyAg
ICAgICAgKnBhZGRpbmdJbkJ5dGVzID0gcGFkZGluZzsKKyAgICByZXR1cm4gR3JhcGhpY3NDb250
ZXh0M0Q6Ok5PX0VSUk9SOworfQorCitHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6
OkltYWdlRXh0cmFjdG9yKEltYWdlKiBpbWFnZSwgSW1hZ2VIdG1sRG9tU291cmNlIGltYWdlSHRt
bERvbVNvdXJjZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGlnbm9yZUdhbW1hQW5kQ29s
b3JQcm9maWxlKQoreworICAgIG1faW1hZ2UgPSBpbWFnZTsKKyAgICBtX2ltYWdlSHRtbERvbVNv
dXJjZSA9IGltYWdlSHRtbERvbVNvdXJjZTsKKyAgICBtX2V4dHJhY3RTdWNjZWVkZWQgPSBleHRy
YWN0SW1hZ2UocHJlbXVsdGlwbHlBbHBoYSwgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpOwor
fQorCitib29sIEdyYXBoaWNzQ29udGV4dDNEOjpwYWNrSW1hZ2VEYXRhKAorICAgIEltYWdlKiBp
bWFnZSwKKyAgICBjb25zdCB2b2lkKiBwaXhlbHMsCisgICAgR0MzRGVudW0gZm9ybWF0LAorICAg
IEdDM0RlbnVtIHR5cGUsCisgICAgYm9vbCBmbGlwWSwKKyAgICBBbHBoYU9wIGFscGhhT3AsCisg
ICAgRGF0YUZvcm1hdCBzb3VyY2VGb3JtYXQsCisgICAgdW5zaWduZWQgd2lkdGgsCisgICAgdW5z
aWduZWQgaGVpZ2h0LAorICAgIHVuc2lnbmVkIHNvdXJjZVVucGFja0FsaWdubWVudCwKKyAgICBW
ZWN0b3I8dWludDhfdD4mIGRhdGEpCit7CisgICAgaWYgKCFwaXhlbHMpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHVuc2lnbmVkIHBhY2tlZFNpemU7CisgICAgLy8gT3V0cHV0IGRhdGEg
aXMgdGlnaHRseSBwYWNrZWQgKGFsaWdubWVudCA9PSAxKS4KKyAgICBpZiAoY29tcHV0ZUltYWdl
U2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCAxLCAmcGFja2VkU2l6ZSwg
MCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgZGF0YS5yZXNpemUocGFja2VkU2l6ZSk7CisKKyAgICBpZiAoIXBhY2tQaXhlbHMocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzKSwgc291cmNlRm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGZvcm1hdCwgdHlwZSwgYWxwaGFPcCwg
ZGF0YS5kYXRhKCksIGZsaXBZKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChJbWFn
ZU9ic2VydmVyICpvYnNlcnZlciA9IGltYWdlLT5pbWFnZU9ic2VydmVyKCkpCisgICAgICAgIG9i
c2VydmVyLT5kaWREcmF3KGltYWdlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6ZXh0cmFjdEltYWdlRGF0YShJbWFnZURhdGEqIGltYWdlRGF0YSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZsaXBZLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByZW11bHRpcGx5QWxw
aGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50
OF90PiYgZGF0YSkKK3sKKyAgICBpZiAoIWltYWdlRGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGludCB3aWR0aCA9IGltYWdlRGF0YS0+d2lkdGgoKTsKKyAgICBpbnQgaGVpZ2h0ID0g
aW1hZ2VEYXRhLT5oZWlnaHQoKTsKKworICAgIHVuc2lnbmVkIGludCBwYWNrZWRTaXplOworICAg
IC8vIE91dHB1dCBkYXRhIGlzIHRpZ2h0bHkgcGFja2VkIChhbGlnbm1lbnQgPT0gMSkuCisgICAg
aWYgKGNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKGZvcm1hdCwgdHlwZSwgd2lkdGgsIGhlaWdodCwg
MSwgJnBhY2tlZFNpemUsIDApICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGRhdGEucmVzaXplKHBhY2tlZFNpemUpOworCisgICAgaWYg
KCFwYWNrUGl4ZWxzKGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCksIERhdGFGb3JtYXRSR0JBOCwg
d2lkdGgsIGhlaWdodCwgMCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhID8gQWxwaGFE
b1ByZW11bHRpcGx5IDogQWxwaGFEb05vdGhpbmcsIGRhdGEuZGF0YSgpLCBmbGlwWSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEdyYXBoaWNz
Q29udGV4dDNEOjpleHRyYWN0VGV4dHVyZURhdGEodW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25l
ZCBpbnQgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdW5wYWNrQWxpZ25tZW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmxpcFksIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkKiBwaXhlbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQoreworICAgIC8vIEFzc3VtZXMgZm9ybWF0
LCB0eXBlLCBldGMuIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZC4KKyAgICBEYXRhRm9ybWF0
IHNvdXJjZURhdGFGb3JtYXQgPSBnZXREYXRhRm9ybWF0KGZvcm1hdCwgdHlwZSk7CisKKyAgICAv
LyBSZXNpemUgdGhlIG91dHB1dCBidWZmZXIuCisgICAgdW5zaWduZWQgaW50IGNvbXBvbmVudHNQ
ZXJQaXhlbCwgYnl0ZXNQZXJDb21wb25lbnQ7CisgICAgaWYgKCFjb21wdXRlRm9ybWF0QW5kVHlw
ZVBhcmFtZXRlcnMoZm9ybWF0LCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZjb21wb25lbnRzUGVyUGl4ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmJ5dGVzUGVyQ29tcG9uZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHVuc2lnbmVkIGludCBieXRlc1BlclBpeGVsID0gY29tcG9uZW50c1BlclBpeGVsICog
Ynl0ZXNQZXJDb21wb25lbnQ7CisgICAgZGF0YS5yZXNpemUod2lkdGggKiBoZWlnaHQgKiBieXRl
c1BlclBpeGVsKTsKKworICAgIGlmICghcGFja1BpeGVscyhzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4ocGl4ZWxzKSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgdW5wYWNrQWxp
Z25tZW50LCBmb3JtYXQsIHR5cGUsIChwcmVtdWx0aXBseUFscGhhID8gQWxwaGFEb1ByZW11bHRp
cGx5IDogQWxwaGFEb05vdGhpbmcpLCBkYXRhLmRhdGEoKSwgZmxpcFkpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworbmFtZXNwYWNlIHsKKworLy8gRm9s
bG93aW5nIEZsb2F0IHRvIEhhbGYtRmxvYXQgY29udmVyaW9uIGNvZGUgaXMgZnJvbSB0aGUgaW1w
bGVtZW50YXRpb24gb2YgZnRwOi8vd3d3LmZveC10b29sa2l0Lm9yZy9wdWIvZmFzdGhhbGZmbG9h
dGNvbnZlcnNpb24ucGRmLAorLy8gIkZhc3QgSGFsZiBGbG9hdCBDb252ZXJzaW9ucyIgYnkgSmVy
b2VuIHZhbiBkZXIgWmlqcCwgTm92ZW1iZXIgMjAwOCAoUmV2aXNlZCBTZXB0ZW1iZXIgMjAxMCku
CisvLyBTcGVjaWFsbHksIHRoZSBiYXNldGFibGVbNTEyXSBhbmQgc2hpZnR0YWJsZVs1MTJdIGFy
ZSBnZW5lcmF0ZWQgYXMgZm9sbG93czoKKy8qCit1bnNpZ25lZCBzaG9ydCBiYXNldGFibGVbNTEy
XTsKK3Vuc2lnbmVkIGNoYXIgc2hpZnR0YWJsZVs1MTJdOworCit2b2lkIGdlbmVyYXRldGFibGVz
KCl7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgaW50IGU7CisgICAgZm9yIChpID0gMDsgaSA8
IDI1NjsgKytpKXsKKyAgICAgICAgZSA9IGkgLSAxMjc7CisgICAgICAgIGlmIChlIDwgLTI0KXsg
Ly8gVmVyeSBzbWFsbCBudW1iZXJzIG1hcCB0byB6ZXJvCisgICAgICAgICAgICBiYXNldGFibGVb
aSB8IDB4MDAwXSA9IDB4MDAwMDsKKyAgICAgICAgICAgIGJhc2V0YWJsZVtpIHwgMHgxMDBdID0g
MHg4MDAwOworICAgICAgICAgICAgc2hpZnR0YWJsZVtpIHwgMHgwMDBdID0gMjQ7CisgICAgICAg
ICAgICBzaGlmdHRhYmxlW2kgfCAweDEwMF0gPSAyNDsKKyAgICAgICAgfQorICAgICAgICBlbHNl
IGlmIChlIDwgLTE0KSB7IC8vIFNtYWxsIG51bWJlcnMgbWFwIHRvIGRlbm9ybXMKKyAgICAgICAg
ICAgIGJhc2V0YWJsZVtpIHwgMHgwMDBdID0gKDB4MDQwMD4+KC1lLTE0KSk7CisgICAgICAgICAg
ICBiYXNldGFibGVbaSB8IDB4MTAwXSA9ICgweDA0MDA+PigtZS0xNCkpIHwgMHg4MDAwOworICAg
ICAgICAgICAgc2hpZnR0YWJsZVtpIHwgMHgwMDBdID0gLWUtMTsKKyAgICAgICAgICAgIHNoaWZ0
dGFibGVbaSB8IDB4MTAwXSA9IC1lLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZSA8
PSAxNSl7IC8vIE5vcm1hbCBudW1iZXJzIGp1c3QgbG9zZSBwcmVjaXNpb24KKyAgICAgICAgICAg
IGJhc2V0YWJsZVtpIHwgMHgwMDBdID0gKChlKzE1KTw8MTApOworICAgICAgICAgICAgYmFzZXRh
YmxlW2l8IDB4MTAwXSA9ICgoZSsxNSk8PDEwKSB8IDB4ODAwMDsKKyAgICAgICAgICAgIHNoaWZ0
dGFibGVbaXwweDAwMF0gPSAxMzsKKyAgICAgICAgICAgIHNoaWZ0dGFibGVbaXwweDEwMF0gPSAx
MzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlPDEyOCl7IC8vIExhcmdlIG51bWJlcnMg
bWFwIHRvIEluZmluaXR5CisgICAgICAgICAgICBiYXNldGFibGVbaXwweDAwMF0gPSAweDdDMDA7
CisgICAgICAgICAgICBiYXNldGFibGVbaXwweDEwMF0gPSAweEZDMDA7CisgICAgICAgICAgICBz
aGlmdHRhYmxlW2l8MHgwMDBdID0gMjQ7CisgICAgICAgICAgICBzaGlmdHRhYmxlW2l8MHgxMDBd
ID0gMjQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7IC8vIEluZmluaXR5IGFuZCBOYU4ncyBz
dGF5IEluZmluaXR5IGFuZCBOYU4ncworICAgICAgICAgICAgYmFzZXRhYmxlW2l8MHgwMDBdID0g
MHg3QzAwOworICAgICAgICAgICAgYmFzZXRhYmxlW2l8MHgxMDBdID0gMHhGQzAwOworICAgICAg
ICAgICAgc2hpZnR0YWJsZVtpfDB4MDAwXSA9IDEzOworICAgICAgICAgICAgc2hpZnR0YWJsZVtp
fDB4MTAwXSA9IDEzOworICAgICAgIH0KKyAgICB9Cit9CisqLworCit1bnNpZ25lZCBzaG9ydCBi
YXNlVGFibGVbNTEyXSA9IHsKKzAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAg
ICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAg
IDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsCiswLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAg
ICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAg
ICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLAorMCwgICAgICAwLCAgICAgIDAs
ICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwg
ICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwKKzAsICAgICAg
MCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAw
LCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAs
CiswLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAg
IDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAg
MCwgICAgICAwLAorMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAg
ICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAg
ICAwLCAgICAgIDAsICAgICAgMCwKKzAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwg
ICAgICAwLCAgICAgIDAsICAgICAgMSwgICAgICAyLCAgICAgIDQsICAgICAgOCwgICAgICAxNiwg
ICAgIDMyLCAgICAgNjQsICAgICAxMjgsICAgIDI1NiwKKzUxMiwgICAgMTAyNCwgICAyMDQ4LCAg
IDMwNzIsICAgNDA5NiwgICA1MTIwLCAgIDYxNDQsICAgNzE2OCwgICA4MTkyLCAgIDkyMTYsICAg
MTAyNDAsICAxMTI2NCwgIDEyMjg4LCAgMTMzMTIsICAxNDMzNiwgIDE1MzYwLAorMTYzODQsICAx
NzQwOCwgIDE4NDMyLCAgMTk0NTYsICAyMDQ4MCwgIDIxNTA0LCAgMjI1MjgsICAyMzU1MiwgIDI0
NTc2LCAgMjU2MDAsICAyNjYyNCwgIDI3NjQ4LCAgMjg2NzIsICAyOTY5NiwgIDMwNzIwLCAgMzE3
NDQsCiszMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0
NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0
LCAgMzE3NDQsICAzMTc0NCwKKzMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQs
ICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwg
IDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LAorMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAg
MzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAz
MTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsCiszMTc0NCwgIDMx
NzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3
NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0
NCwKKzMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0
LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQs
ICAzMTc0NCwgIDMxNzQ0LAorMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwg
IDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAg
MzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsCiszMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAz
MTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMx
NzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwKKzMyNzY4LCAgMzI3
NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2
OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4
LAorMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3Njgs
ICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwg
IDMyNzY4LCAgMzI3NjgsCiszMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAg
MzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAz
Mjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwKKzMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMy
NzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3
NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LAorMzI3NjgsICAzMjc2
OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4
LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3Njgs
CiszMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwg
IDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAg
MzI3NjgsICAzMjc2OCwKKzMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAz
Mjc2OCwgIDMyNzY4LCAgMzI3NjksICAzMjc3MCwgIDMyNzcyLCAgMzI3NzYsICAzMjc4NCwgIDMy
ODAwLCAgMzI4MzIsICAzMjg5NiwgIDMzMDI0LAorMzMyODAsICAzMzc5MiwgIDM0ODE2LCAgMzU4
NDAsICAzNjg2NCwgIDM3ODg4LCAgMzg5MTIsICAzOTkzNiwgIDQwOTYwLCAgNDE5ODQsICA0MzAw
OCwgIDQ0MDMyLCAgNDUwNTYsICA0NjA4MCwgIDQ3MTA0LCAgNDgxMjgsCis0OTE1MiwgIDUwMTc2
LCAgNTEyMDAsICA1MjIyNCwgIDUzMjQ4LCAgNTQyNzIsICA1NTI5NiwgIDU2MzIwLCAgNTczNDQs
ICA1ODM2OCwgIDU5MzkyLCAgNjA0MTYsICA2MTQ0MCwgIDYyNDY0LCAgNjM0ODgsICA2NDUxMiwK
KzY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAg
NjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2
NDUxMiwgIDY0NTEyLAorNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0
NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1
MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsCis2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUx
MiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEy
LCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwKKzY0NTEyLCAgNjQ1MTIs
ICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwg
IDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLAor
NjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2
NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0
NTEyLCAgNjQ1MTIsCis2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1
MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUx
MiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwKKzY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEy
LCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIs
ICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyCit9OworCit1bnNpZ25lZCBj
aGFyIHNoaWZ0VGFibGVbNTEyXSA9IHsKKzI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LAorMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsCisyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwK
KzI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LAorMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsCisyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwKKzI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjMsICAgICAyMiwgICAgIDIxLCAgICAg
MjAsICAgICAxOSwgICAgIDE4LCAgICAgMTcsICAgICAxNiwgICAgIDE1LAorMTQsICAgICAxMywg
ICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAg
ICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsCisx
MywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEz
LCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMs
ICAgICAyNCwKKzI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LAorMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsCisyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwKKzI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LAorMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsCisyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwKKzI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDEzLAorMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsCisyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwKKzI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LAorMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsCisyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwKKzI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LAorMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyMywgICAgIDIyLCAgICAgMjEs
ICAgICAyMCwgICAgIDE5LCAgICAgMTgsICAgICAxNywgICAgIDE2LCAgICAgMTUsCisxNCwgICAg
IDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAg
MTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAx
MywKKzEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAg
ICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAg
ICAxMywgICAgIDI0LAorMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsCisyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwKKzI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LAorMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
CisyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwKKzI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LAorMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMTMKK307CisKK3Vuc2lnbmVkIHNob3J0IGNv
bnZlcnRGbG9hdFRvSGFsZkZsb2F0KGZsb2F0IGYpCit7CisgICAgdW5zaWduZWQgdGVtcCA9ICoo
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCAqPigmZikpOworICAgIHVuc2lnbmVkIHNpZ25leHAg
PSAodGVtcCA+PiAyMykgJiAweDFmZjsKKyAgICByZXR1cm4gYmFzZVRhYmxlW3NpZ25leHBdICsg
KCh0ZW1wICYgMHgwMDdmZmZmZikgPj4gc2hpZnRUYWJsZVtzaWduZXhwXSk7Cit9CisKKy8qIEJF
R0lOIENPREUgU0hBUkVEIFdJVEggTU9aSUxMQSBGSVJFRk9YICovCisKKy8vIFRoZSBmb2xsb3dp
bmcgcGFja2luZyBhbmQgdW5wYWNraW5nIHJvdXRpbmVzIGFyZSBleHByZXNzZWQgaW4gdGVybXMg
b2YgZnVuY3Rpb24gdGVtcGxhdGVzIGFuZCBpbmxpbmUgZnVuY3Rpb25zIHRvIGFjaGlldmUgZ2Vu
ZXJhbGl0eSBhbmQgc3BlZWR1cC4KKy8vIEV4cGxpY2l0IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9u
cyBjb3JyZXNwb25kIHRvIHRoZSBjYXNlcyB0aGF0IHdvdWxkIG9jY3VyLgorLy8gU29tZSBjb2Rl
IGFyZSBtZXJnZWQgYmFjayBmcm9tIE1vemlsbGEgY29kZSBpbiBodHRwOi8vbXhyLm1vemlsbGEu
b3JnL21vemlsbGEtY2VudHJhbC9zb3VyY2UvY29udGVudC9jYW52YXMvc3JjL1dlYkdMVGV4ZWxD
b252ZXJzaW9ucy5oCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gUGl4ZWwgdW5wYWNraW5nIHJvdXRp
bmVzLgordGVtcGxhdGU8aW50IGZvcm1hdCwgdHlwZW5hbWUgU291cmNlVHlwZSwgdHlwZW5hbWUg
RHN0VHlwZT4KK0FMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2soY29uc3QgU291cmNlVHlwZSosIERz
dFR5cGUqLCB1bnNpZ25lZCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordGVt
cGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0UkdCOCwgdWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhfdCogc291cmNlLCB1aW50
OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGlu
YXRpb25bMF0gPSBzb3VyY2VbMF07CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFd
OworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXTsKKyAgICAgICAgZGVzdGluYXRp
b25bM10gPSAweEZGOworICAgICAgICBzb3VyY2UgKz0gMzsKKyAgICAgICAgZGVzdGluYXRpb24g
Kz0gNDsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEJHUjgsIHVpbnQ4X3QsIHVpbnQ4X3Q+KGNvbnN0
IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1Bl
clJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsg
KytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzJdOworICAgICAgICBkZXN0
aW5hdGlvblsxXSA9IHNvdXJjZVsxXTsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2Vb
MF07CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0gMHhGRjsKKyAgICAgICAgc291cmNlICs9IDM7
CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZ
U19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBUkdCOCwg
dWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5h
dGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBz
b3VyY2VbMV07CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzJdOworICAgICAgICBk
ZXN0aW5hdGlvblsyXSA9IHNvdXJjZVszXTsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSBzb3Vy
Y2VbMF07CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSA0Owor
ICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNz
Q29udGV4dDNEOjpEYXRhRm9ybWF0QUJHUjgsIHVpbnQ4X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4
X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7
CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzNdOworICAgICAgICBkZXN0aW5hdGlv
blsxXSA9IHNvdXJjZVsyXTsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMV07Cisg
ICAgICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNlWzBdOworICAgICAgICBzb3VyY2UgKz0gNDsK
KyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlT
X0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEJHUkE4LCB1
aW50OF90LCB1aW50OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0
aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgY29uc3QgdWludDMyX3QqIHNvdXJj
ZTMyID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgdWludDMyX3QqPihzb3VyY2UpOworICAg
IHVpbnQzMl90KiBkZXN0aW5hdGlvbjMyID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDMyX3Qq
PihkZXN0aW5hdGlvbik7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQ
ZXJSb3c7ICsraSkgeworICAgICAgICB1aW50MzJfdCBiZ3JhID0gc291cmNlMzJbaV07CisjaWYg
Q1BVKEJJR19FTkRJQU4pCisgICAgICAgIHVpbnQzMl90IGJyTWFzayA9IDB4ZmYwMGZmMDA7Cisg
ICAgICAgIHVpbnQzMl90IGdhTWFzayA9IDB4MDBmZjAwZmY7CisjZWxzZQorICAgICAgICB1aW50
MzJfdCBick1hc2sgPSAweDAwZmYwMGZmOworICAgICAgICB1aW50MzJfdCBnYU1hc2sgPSAweGZm
MDBmZjAwOworI2VuZGlmCisgICAgICAgIHVpbnQzMl90IHJnYmEgPSAoKChiZ3JhID4+IDE2KSB8
IChiZ3JhIDw8IDE2KSkgJiBick1hc2spIHwgKGJncmEgJiBnYU1hc2spOworICAgICAgICBkZXN0
aW5hdGlvbjMyW2ldID0gcmdiYTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElO
RSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE1NTUxLCB1aW50
MTZfdCwgdWludDhfdD4oY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJ
Q1MpCisgICAgU0lNRDo6dW5wYWNrT25lUm93T2ZSR0JBNTU1MVRvUkdCQTgoc291cmNlLCBkZXN0
aW5hdGlvbiwgcGl4ZWxzUGVyUm93KTsKKyNlbmRpZgorICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgdWludDE2X3QgcGFja2VkVmFs
dWUgPSBzb3VyY2VbMF07CisgICAgICAgIHVpbnQ4X3QgciA9IHBhY2tlZFZhbHVlID4+IDExOwor
ICAgICAgICB1aW50OF90IGcgPSAocGFja2VkVmFsdWUgPj4gNikgJiAweDFGOworICAgICAgICB1
aW50OF90IGIgPSAocGFja2VkVmFsdWUgPj4gMSkgJiAweDFGOworICAgICAgICBkZXN0aW5hdGlv
blswXSA9IChyIDw8IDMpIHwgKHIgJiAweDcpOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IChn
IDw8IDMpIHwgKGcgJiAweDcpOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IChiIDw8IDMpIHwg
KGIgJiAweDcpOworICAgICAgICBkZXN0aW5hdGlvblszXSA9IChwYWNrZWRWYWx1ZSAmIDB4MSkg
PyAweEZGIDogMHgwOworICAgICAgICBzb3VyY2UgKz0gMTsKKyAgICAgICAgZGVzdGluYXRpb24g
Kz0gNDsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE0NDQ0LCB1aW50MTZfdCwgdWludDhfdD4o
Y29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBp
eGVsc1BlclJvdykKK3sKKyNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCisgICAgU0lNRDo6
dW5wYWNrT25lUm93T2ZSR0JBNDQ0NFRvUkdCQTgoc291cmNlLCBkZXN0aW5hdGlvbiwgcGl4ZWxz
UGVyUm93KTsKKyNlbmRpZgorICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxz
UGVyUm93OyArK2kpIHsKKyAgICAgICAgdWludDE2X3QgcGFja2VkVmFsdWUgPSBzb3VyY2VbMF07
CisgICAgICAgIHVpbnQ4X3QgciA9IHBhY2tlZFZhbHVlID4+IDEyOworICAgICAgICB1aW50OF90
IGcgPSAocGFja2VkVmFsdWUgPj4gOCkgJiAweDBGOworICAgICAgICB1aW50OF90IGIgPSAocGFj
a2VkVmFsdWUgPj4gNCkgJiAweDBGOworICAgICAgICB1aW50OF90IGEgPSBwYWNrZWRWYWx1ZSAm
IDB4MEY7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gciA8PCA0IHwgcjsKKyAgICAgICAgZGVz
dGluYXRpb25bMV0gPSBnIDw8IDQgfCBnOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IGIgPDwg
NCB8IGI7CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0gYSA8PCA0IHwgYTsKKyAgICAgICAgc291
cmNlICs9IDE7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQorfQorCit0ZW1wbGF0
ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSR0I1NjUsIHVpbnQxNl90LCB1aW50OF90Pihjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50
OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworI2lmIEhBVkUoQVJN
X05FT05fSU5UUklOU0lDUykKKyAgICBTSU1EOjp1bnBhY2tPbmVSb3dPZlJHQjU2NVRvUkdCQTgo
c291cmNlLCBkZXN0aW5hdGlvbiwgcGl4ZWxzUGVyUm93KTsKKyNlbmRpZgorICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgdWludDE2
X3QgcGFja2VkVmFsdWUgPSBzb3VyY2VbMF07CisgICAgICAgIHVpbnQ4X3QgciA9IHBhY2tlZFZh
bHVlID4+IDExOworICAgICAgICB1aW50OF90IGcgPSAocGFja2VkVmFsdWUgPj4gNSkgJiAweDNG
OworICAgICAgICB1aW50OF90IGIgPSBwYWNrZWRWYWx1ZSAmIDB4MUY7CisgICAgICAgIGRlc3Rp
bmF0aW9uWzBdID0gKHIgPDwgMykgfCAociAmIDB4Nyk7CisgICAgICAgIGRlc3RpbmF0aW9uWzFd
ID0gKGcgPDwgMikgfCAoZyAmIDB4Myk7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gKGIgPDwg
MykgfCAoYiAmIDB4Nyk7CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0gMHhGRjsKKyAgICAgICAg
c291cmNlICs9IDE7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQorfQorCit0ZW1w
bGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRSOCwgdWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90
KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRp
b25bMF0gPSBzb3VyY2VbMF07CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzBdOwor
ICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVswXTsKKyAgICAgICAgZGVzdGluYXRpb25b
M10gPSAweEZGOworICAgICAgICBzb3VyY2UgKz0gMTsKKyAgICAgICAgZGVzdGluYXRpb24gKz0g
NDsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBOCwgdWludDhfdCwgdWludDhfdD4oY29uc3QgdWlu
dDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93
KQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kp
IHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07CisgICAgICAgIGRlc3RpbmF0
aW9uWzFdID0gc291cmNlWzBdOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVswXTsK
KyAgICAgICAgZGVzdGluYXRpb25bM10gPSBzb3VyY2VbMV07CisgICAgICAgIHNvdXJjZSArPSAy
OworICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdB
WVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVI4LCB1
aW50OF90LCB1aW50OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0
aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNv
dXJjZVsxXTsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV07CisgICAgICAgIGRl
c3RpbmF0aW9uWzJdID0gc291cmNlWzFdOworICAgICAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJj
ZVswXTsKKyAgICAgICAgc291cmNlICs9IDI7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Cisg
ICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3ND
b250ZXh0M0Q6OkRhdGFGb3JtYXRBOCwgdWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhfdCog
c291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQorewor
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAg
ICAgICAgZGVzdGluYXRpb25bMF0gPSAweDA7CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gMHgw
OworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IDB4MDsKKyAgICAgICAgZGVzdGluYXRpb25bM10g
PSBzb3VyY2VbMF07CisgICAgICAgIHNvdXJjZSArPSAxOworICAgICAgICBkZXN0aW5hdGlvbiAr
PSA0OworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTgsIHVpbnQ4X3QsIGZsb2F0Pihjb25zdCB1
aW50OF90KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93
KQoreworICAgIGNvbnN0IGZsb2F0IHNjYWxlRmFjdG9yID0gMS4wZiAvIDI1NS4wZjsKKyAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAg
IGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7CisgICAgICAgIGRlc3Rp
bmF0aW9uWzFdID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7CisgICAgICAgIGRlc3RpbmF0aW9u
WzJdID0gc291cmNlWzJdICogc2NhbGVGYWN0b3I7CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0g
c291cmNlWzNdICogc2NhbGVGYWN0b3I7CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBk
ZXN0aW5hdGlvbiArPSA0OworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZv
aWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QkdSQTgsIHVpbnQ4X3QsIGZs
b2F0Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
cGl4ZWxzUGVyUm93KQoreworICAgIGNvbnN0IGZsb2F0IHNjYWxlRmFjdG9yID0gMS4wZiAvIDI1
NS4wZjsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytp
KSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzJdICogc2NhbGVGYWN0b3I7Cisg
ICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7CisgICAgICAg
IGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7CisgICAgICAgIGRlc3Rp
bmF0aW9uWzNdID0gc291cmNlWzNdICogc2NhbGVGYWN0b3I7CisgICAgICAgIHNvdXJjZSArPSA0
OworICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdB
WVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QUJHUjgs
IHVpbnQ4X3QsIGZsb2F0Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlv
biwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGNvbnN0IGZsb2F0IHNjYWxlRmFjdG9y
ID0gMS4wZiAvIDI1NS4wZjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGl4ZWxzUGVy
Um93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbM10gKiBzY2FsZUZh
Y3RvcjsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMl0gKiBzY2FsZUZhY3RvcjsK
KyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMV0gKiBzY2FsZUZhY3RvcjsKKyAgICAg
ICAgZGVzdGluYXRpb25bM10gPSBzb3VyY2VbMF0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgc291
cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQorfQorCit0ZW1wbGF0
ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRBUkdCOCwgdWludDhfdCwgZmxvYXQ+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgZmxvYXQqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgY29uc3QgZmxvYXQgc2Nh
bGVGYWN0b3IgPSAxLjBmIC8gMjU1LjBmOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBw
aXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVsxXSAq
IHNjYWxlRmFjdG9yOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsyXSAqIHNjYWxl
RmFjdG9yOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVszXSAqIHNjYWxlRmFjdG9y
OworICAgICAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yOworICAg
ICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9Cit9CisK
K3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6
RGF0YUZvcm1hdFJHQjgsIHVpbnQ4X3QsIGZsb2F0Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIGZs
b2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGNvbnN0IGZs
b2F0IHNjYWxlRmFjdG9yID0gMS4wZiAvIDI1NS4wZjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3Vy
Y2VbMF0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV0g
KiBzY2FsZUZhY3RvcjsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMl0gKiBzY2Fs
ZUZhY3RvcjsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSAxOworICAgICAgICBzb3VyY2UgKz0g
MzsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxX
QVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEJHUjgs
IHVpbnQ4X3QsIGZsb2F0Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlv
biwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGNvbnN0IGZsb2F0IHNjYWxlRmFjdG9y
ID0gMS4wZiAvIDI1NS4wZjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGl4ZWxzUGVy
Um93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMl0gKiBzY2FsZUZh
Y3RvcjsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV0gKiBzY2FsZUZhY3RvcjsK
KyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMF0gKiBzY2FsZUZhY3RvcjsKKyAgICAg
ICAgZGVzdGluYXRpb25bM10gPSAxOworICAgICAgICBzb3VyY2UgKz0gMzsKKyAgICAgICAgZGVz
dGluYXRpb24gKz0gNDsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lk
IHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjMyRiwgZmxvYXQsIGZsb2F0
Pihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVs
c1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJv
dzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOworICAgICAgICBk
ZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXTsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3Vy
Y2VbMl07CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0gMTsKKyAgICAgICAgc291cmNlICs9IDM7
CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZ
U19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSMzJGLCBm
bG9hdCwgZmxvYXQ+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5z
aWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
cGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07
CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzBdOworICAgICAgICBkZXN0aW5hdGlv
blsyXSA9IHNvdXJjZVswXTsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSAxOworICAgICAgICBz
b3VyY2UgKz0gMTsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9Cit9CisKK3RlbXBs
YXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdFJBMzJGLCBmbG9hdCwgZmxvYXQ+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0g
PSBzb3VyY2VbMF07CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzBdOworICAgICAg
ICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVswXTsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSBz
b3VyY2VbMV07CisgICAgICAgIHNvdXJjZSArPSAyOworICAgICAgICBkZXN0aW5hdGlvbiArPSA0
OworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdyYXBo
aWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QTMyRiwgZmxvYXQsIGZsb2F0Pihjb25zdCBmbG9hdCog
c291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAg
ICAgIGRlc3RpbmF0aW9uWzBdID0gMDsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSAwOworICAg
ICAgICBkZXN0aW5hdGlvblsyXSA9IDA7CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNl
WzBdOworICAgICAgICBzb3VyY2UgKz0gMTsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAg
ICB9Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gUGl4ZWwgcGFja2luZyByb3V0aW5lcy4KKy8v
CisKK3RlbXBsYXRlPGludCBmb3JtYXQsIGludCBhbHBoYU9wLCB0eXBlbmFtZSBTb3VyY2VUeXBl
LCB0eXBlbmFtZSBEc3RUeXBlPgorQUxXQVlTX0lOTElORSB2b2lkIHBhY2soY29uc3QgU291cmNl
VHlwZSosIERzdFR5cGUqLCB1bnNpZ25lZCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdEE4LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcsIHVpbnQ4
X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNl
WzNdOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMTsKKyAg
ICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250
ZXh0M0Q6OkRhdGFGb3JtYXRSOCwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCB1
aW50OF90LCB1aW50OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0
aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNv
dXJjZVswXTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDE7
CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNz
Q29udGV4dDNEOjpEYXRhRm9ybWF0UjgsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvUHJlbXVs
dGlwbHksIHVpbnQ4X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCog
ZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGZsb2F0IHNjYWxl
RmFjdG9yID0gc291cmNlWzNdIC8gMjU1LjBmOworICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBz
dGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxl
RmFjdG9yKTsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VSOworICAgICAgICBzb3Vy
Y2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMTsKKyAgICB9Cit9CisKKy8vIEZJWE1F
OiB0aGlzIHJvdXRpbmUgaXMgbG9zc3kgYW5kIG11c3QgYmUgcmVtb3ZlZC4KK3RlbXBsYXRlPD4g
QUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSOCwg
R3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Vbm11bHRpcGx5LCB1aW50OF90LCB1aW50OF90Pihj
b25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhl
bHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJS
b3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSA/IDI1NS4w
ZiAvIHNvdXJjZVszXSA6IDEuMGY7CisgICAgICAgIHVpbnQ4X3Qgc291cmNlUiA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMF0pICogc2NhbGVGYWN0b3Ip
OworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVI7CisgICAgICAgIHNvdXJjZSArPSA0
OworICAgICAgICBkZXN0aW5hdGlvbiArPSAxOworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdB
WVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBOCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCB1aW50OF90LCB1aW50OF90Pihjb25zdCB1
aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJS
b3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsr
aSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsKKyAgICAgICAgZGVzdGlu
YXRpb25bMV0gPSBzb3VyY2VbM107CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0
aW5hdGlvbiArPSAyOworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQg
cGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBOCwgR3JhcGhpY3NDb250ZXh0M0Q6
OkFscGhhRG9QcmVtdWx0aXBseSwgdWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhfdCogc291
cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAg
ICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gLyAyNTUuMGY7CisgICAgICAgIHVpbnQ4
X3Qgc291cmNlUiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3Vy
Y2VbMF0pICogc2NhbGVGYWN0b3IpOworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVI7
CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzNdOworICAgICAgICBzb3VyY2UgKz0g
NDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMjsKKyAgICB9Cit9CisKKy8vIEZJWE1FOiB0aGlz
IHJvdXRpbmUgaXMgbG9zc3kgYW5kIG11c3QgYmUgcmVtb3ZlZC4KK3RlbXBsYXRlPD4gQUxXQVlT
X0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTgsIEdyYXBo
aWNzQ29udGV4dDNEOjpBbHBoYURvVW5tdWx0aXBseSwgdWludDhfdCwgdWludDhfdD4oY29uc3Qg
dWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVy
Um93KQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyAr
K2kpIHsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gPyAyNTUuMGYgLyBz
b3VyY2VbM10gOiAxLjBmOworICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1
aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKKyAg
ICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VSOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9
IHNvdXJjZVszXTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9
IDI7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBo
aWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCOCwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9O
b3RoaW5nLCB1aW50OF90LCB1aW50OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3Qq
IGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlv
blswXSA9IHNvdXJjZVswXTsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV07Cisg
ICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzJdOworICAgICAgICBzb3VyY2UgKz0gNDsK
KyAgICAgICAgZGVzdGluYXRpb24gKz0gMzsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlT
X0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0I4LCBHcmFw
aGljc0NvbnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5LCB1aW50OF90LCB1aW50OF90Pihjb25z
dCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQ
ZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7
ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSAvIDI1NS4wZjsK
KyAgICAgICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgIHVpbnQ4X3Qgc291
cmNlRyA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMV0p
ICogc2NhbGVGYWN0b3IpOworICAgICAgICB1aW50OF90IHNvdXJjZUIgPSBzdGF0aWNfY2FzdDx1
aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzJdKSAqIHNjYWxlRmFjdG9yKTsKKyAg
ICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VSOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9
IHNvdXJjZUc7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlQjsKKyAgICAgICAgc291
cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDM7CisgICAgfQorfQorCisvLyBGSVhN
RTogdGhpcyByb3V0aW5lIGlzIGxvc3N5IGFuZCBtdXN0IGJlIHJlbW92ZWQuCit0ZW1wbGF0ZTw+
IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdC
OCwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Vbm11bHRpcGx5LCB1aW50OF90LCB1aW50OF90
Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBw
aXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQ
ZXJSb3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSA/IDI1
NS4wZiAvIHNvdXJjZVszXSA6IDEuMGY7CisgICAgICAgIHVpbnQ4X3Qgc291cmNlUiA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMF0pICogc2NhbGVGYWN0
b3IpOworICAgICAgICB1aW50OF90IHNvdXJjZUcgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0
aWNfY2FzdDxmbG9hdD4oc291cmNlWzFdKSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAgdWludDhf
dCBzb3VyY2VCID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJj
ZVsyXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlUjsK
KyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VHOworICAgICAgICBkZXN0aW5hdGlvblsy
XSA9IHNvdXJjZUI7CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiAr
PSAzOworICAgIH0KK30KKworCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTgsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBo
YURvTm90aGluZywgdWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhfdCogc291cmNlLCB1aW50
OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIG1lbWNweShk
ZXN0aW5hdGlvbiwgc291cmNlLCBwaXhlbHNQZXJSb3cgKiA0KTsKK30KKwordGVtcGxhdGU8PiBB
TFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE4
LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5LCB1aW50OF90LCB1aW50OF90
Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBw
aXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQ
ZXJSb3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSAvIDI1
NS4wZjsKKyAgICAgICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgIHVpbnQ4
X3Qgc291cmNlRyA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3Vy
Y2VbMV0pICogc2NhbGVGYWN0b3IpOworICAgICAgICB1aW50OF90IHNvdXJjZUIgPSBzdGF0aWNf
Y2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzJdKSAqIHNjYWxlRmFjdG9y
KTsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VSOworICAgICAgICBkZXN0aW5hdGlv
blsxXSA9IHNvdXJjZUc7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlQjsKKyAgICAg
ICAgZGVzdGluYXRpb25bM10gPSBzb3VyY2VbM107CisgICAgICAgIHNvdXJjZSArPSA0OworICAg
ICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KK30KKworLy8gRklYTUU6IHRoaXMgcm91dGlu
ZSBpcyBsb3NzeSBhbmQgbXVzdCBiZSByZW1vdmVkLgordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5F
IHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE4LCBHcmFwaGljc0Nv
bnRleHQzRDo6QWxwaGFEb1VubXVsdGlwbHksIHVpbnQ4X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4
X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7
CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdID8gMjU1LjBmIC8gc291cmNl
WzNdIDogMS4wZjsKKyAgICAgICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWludDhf
dD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAg
IHVpbnQ4X3Qgc291cmNlRyA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0
Pihzb3VyY2VbMV0pICogc2NhbGVGYWN0b3IpOworICAgICAgICB1aW50OF90IHNvdXJjZUIgPSBz
dGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzJdKSAqIHNjYWxl
RmFjdG9yKTsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VSOworICAgICAgICBkZXN0
aW5hdGlvblsxXSA9IHNvdXJjZUc7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlQjsK
KyAgICAgICAgZGVzdGluYXRpb25bM10gPSBzb3VyY2VbM107CisgICAgICAgIHNvdXJjZSArPSA0
OworICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdB
WVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE0NDQ0
LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcsIHVpbnQ4X3QsIHVpbnQxNl90Pihj
b25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4
ZWxzUGVyUm93KQoreworI2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKKyAgICBTSU1EOjpw
YWNrT25lUm93T2ZSR0JBOFRvVW5zaWduZWRTaG9ydDQ0NDQoc291cmNlLCBkZXN0aW5hdGlvbiwg
cGl4ZWxzUGVyUm93KTsKKyNlbmRpZgorICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
cGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgKmRlc3RpbmF0aW9uID0gKCgoc291cmNlWzBd
ICYgMHhGMCkgPDwgOCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VbMV0gJiAw
eEYwKSA8PCA0KQorICAgICAgICAgICAgICAgICAgICAgICAgfCAoc291cmNlWzJdICYgMHhGMCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNvdXJjZVszXSA+PiA0KSk7CisgICAgICAgIHNv
dXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSAxOworICAgIH0KK30KKwordGVtcGxh
dGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1h
dFJHQkE0NDQ0LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5LCB1aW50OF90
LCB1aW50MTZfdD4oY29uc3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291
cmNlWzNdIC8gMjU1LjBmOworICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1
aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKKyAg
ICAgICAgdWludDhfdCBzb3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHNvdXJjZVsxXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgIHVpbnQ4X3Qgc291cmNl
QiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMl0pICog
c2NhbGVGYWN0b3IpOworICAgICAgICAqZGVzdGluYXRpb24gPSAoKChzb3VyY2VSICYgMHhGMCkg
PDwgOCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VHICYgMHhGMCkgPDwgNCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNvdXJjZUIgJiAweEYwKQorICAgICAgICAgICAg
ICAgICAgICAgICAgfCAoc291cmNlWzNdID4+IDQpKTsKKyAgICAgICAgc291cmNlICs9IDQ7Cisg
ICAgICAgIGRlc3RpbmF0aW9uICs9IDE7CisgICAgfQorfQorCisvLyBGSVhNRTogdGhpcyByb3V0
aW5lIGlzIGxvc3N5IGFuZCBtdXN0IGJlIHJlbW92ZWQuCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJ
TkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTQ0NDQsIEdyYXBo
aWNzQ29udGV4dDNEOjpBbHBoYURvVW5tdWx0aXBseSwgdWludDhfdCwgdWludDE2X3Q+KGNvbnN0
IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQ
ZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7
ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSA/IDI1NS4wZiAv
IHNvdXJjZVszXSA6IDEuMGY7CisgICAgICAgIHVpbnQ4X3Qgc291cmNlUiA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMF0pICogc2NhbGVGYWN0b3IpOwor
ICAgICAgICB1aW50OF90IHNvdXJjZUcgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2Fz
dDxmbG9hdD4oc291cmNlWzFdKSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAgdWludDhfdCBzb3Vy
Y2VCID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsyXSkg
KiBzY2FsZUZhY3Rvcik7CisgICAgICAgICpkZXN0aW5hdGlvbiA9ICgoKHNvdXJjZVIgJiAweEYw
KSA8PCA4KQorICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHNvdXJjZUcgJiAweEYwKSA8PCA0
KQorICAgICAgICAgICAgICAgICAgICAgICAgfCAoc291cmNlQiAmIDB4RjApCisgICAgICAgICAg
ICAgICAgICAgICAgICB8IChzb3VyY2VbM10gPj4gNCkpOworICAgICAgICBzb3VyY2UgKz0gNDsK
KyAgICAgICAgZGVzdGluYXRpb24gKz0gMTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlT
X0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNTU1MSwg
R3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCB1aW50OF90LCB1aW50MTZfdD4oY29u
c3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVs
c1BlclJvdykKK3sKKyNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCisgICAgU0lNRDo6cGFj
a09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NTUxKHNvdXJjZSwgZGVzdGluYXRpb24sIHBp
eGVsc1BlclJvdyk7CisjZW5kaWYKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBp
eGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgICpkZXN0aW5hdGlvbiA9ICgoKHNvdXJjZVswXSAm
IDB4RjgpIDw8IDgpCisgICAgICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNlWzFdICYgMHhG
OCkgPDwgMykKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VbMl0gJiAweEY4KSA+
PiAyKQorICAgICAgICAgICAgICAgICAgICAgICAgfCAoc291cmNlWzNdID4+IDcpKTsKKyAgICAg
ICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDE7CisgICAgfQorfQorCit0
ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0UkdCQTU1NTEsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvUHJlbXVsdGlwbHksIHVp
bnQ4X3QsIHVpbnQxNl90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5h
dGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3Ig
PSBzb3VyY2VbM10gLyAyNTUuMGY7CisgICAgICAgIHVpbnQ4X3Qgc291cmNlUiA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMF0pICogc2NhbGVGYWN0b3Ip
OworICAgICAgICB1aW50OF90IHNvdXJjZUcgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNf
Y2FzdDxmbG9hdD4oc291cmNlWzFdKSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAgdWludDhfdCBz
b3VyY2VCID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsy
XSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgICpkZXN0aW5hdGlvbiA9ICgoKHNvdXJjZVIgJiAw
eEY4KSA8PCA4KQorICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHNvdXJjZUcgJiAweEY4KSA8
PCAzKQorICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHNvdXJjZUIgJiAweEY4KSA+PiAyKQor
ICAgICAgICAgICAgICAgICAgICAgICAgfCAoc291cmNlWzNdID4+IDcpKTsKKyAgICAgICAgc291
cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDE7CisgICAgfQorfQorCisvLyBGSVhN
RTogdGhpcyByb3V0aW5lIGlzIGxvc3N5IGFuZCBtdXN0IGJlIHJlbW92ZWQuCit0ZW1wbGF0ZTw+
IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdC
QTU1NTEsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvVW5tdWx0aXBseSwgdWludDhfdCwgdWlu
dDE2X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBw
aXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVsz
XSA/IDI1NS4wZiAvIHNvdXJjZVszXSA6IDEuMGY7CisgICAgICAgIHVpbnQ4X3Qgc291cmNlUiA9
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMF0pICogc2Nh
bGVGYWN0b3IpOworICAgICAgICB1aW50OF90IHNvdXJjZUcgPSBzdGF0aWNfY2FzdDx1aW50OF90
PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzFdKSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAg
dWludDhfdCBzb3VyY2VCID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHNvdXJjZVsyXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgICpkZXN0aW5hdGlvbiA9ICgoKHNv
dXJjZVIgJiAweEY4KSA8PCA4KQorICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHNvdXJjZUcg
JiAweEY4KSA8PCAzKQorICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHNvdXJjZUIgJiAweEY4
KSA+PiAyKQorICAgICAgICAgICAgICAgICAgICAgICAgfCAoc291cmNlWzNdID4+IDcpKTsKKyAg
ICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDE7CisgICAgfQorfQor
Cit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UkdCNTY1LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcsIHVpbnQ4
X3QsIHVpbnQxNl90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlv
biwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworI2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lD
UykKKyAgICBTSU1EOjpwYWNrT25lUm93T2ZSR0JBOFRvVW5zaWduZWRTaG9ydDU2NShzb3VyY2Us
IGRlc3RpbmF0aW9uLCBwaXhlbHNQZXJSb3cpOworI2VuZGlmCisgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICAqZGVzdGluYXRpb24g
PSAoKChzb3VyY2VbMF0gJiAweEY4KSA8PCA4KQorICAgICAgICAgICAgICAgICAgICAgICAgfCAo
KHNvdXJjZVsxXSAmIDB4RkMpIDw8IDMpCisgICAgICAgICAgICAgICAgICAgICAgICB8ICgoc291
cmNlWzJdICYgMHhGOCkgPj4gMykpOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVz
dGluYXRpb24gKz0gMTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lk
IHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0I1NjUsIEdyYXBoaWNzQ29udGV4
dDNEOjpBbHBoYURvUHJlbXVsdGlwbHksIHVpbnQ4X3QsIHVpbnQxNl90Pihjb25zdCB1aW50OF90
KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQor
eworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsK
KyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gLyAyNTUuMGY7CisgICAgICAg
IHVpbnQ4X3Qgc291cmNlUiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0
Pihzb3VyY2VbMF0pICogc2NhbGVGYWN0b3IpOworICAgICAgICB1aW50OF90IHNvdXJjZUcgPSBz
dGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzFdKSAqIHNjYWxl
RmFjdG9yKTsKKyAgICAgICAgdWludDhfdCBzb3VyY2VCID0gc3RhdGljX2Nhc3Q8dWludDhfdD4o
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsyXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgICpk
ZXN0aW5hdGlvbiA9ICgoKHNvdXJjZVIgJiAweEY4KSA8PCA4KQorICAgICAgICAgICAgICAgICAg
ICAgICAgfCAoKHNvdXJjZUcgJiAweEZDKSA8PCAzKQorICAgICAgICAgICAgICAgICAgICAgICAg
fCAoKHNvdXJjZUIgJiAweEY4KSA+PiAzKSk7CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAg
ICBkZXN0aW5hdGlvbiArPSAxOworICAgIH0KK30KKworLy8gRklYTUU6IHRoaXMgcm91dGluZSBp
cyBsb3NzeSBhbmQgbXVzdCBiZSByZW1vdmVkLgordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZv
aWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjU2NSwgR3JhcGhpY3NDb250
ZXh0M0Q6OkFscGhhRG9Vbm11bHRpcGx5LCB1aW50OF90LCB1aW50MTZfdD4oY29uc3QgdWludDhf
dCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7
CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdID8gMjU1LjBmIC8gc291cmNl
WzNdIDogMS4wZjsKKyAgICAgICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWludDhf
dD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAg
IHVpbnQ4X3Qgc291cmNlRyA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0
Pihzb3VyY2VbMV0pICogc2NhbGVGYWN0b3IpOworICAgICAgICB1aW50OF90IHNvdXJjZUIgPSBz
dGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzJdKSAqIHNjYWxl
RmFjdG9yKTsKKyAgICAgICAgKmRlc3RpbmF0aW9uID0gKCgoc291cmNlUiAmIDB4RjgpIDw8IDgp
CisgICAgICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNlRyAmIDB4RkMpIDw8IDMpCisgICAg
ICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNlQiAmIDB4RjgpID4+IDMpKTsKKyAgICAgICAg
c291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDE7CisgICAgfQorfQorCit0ZW1w
bGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9y
bWF0UkdCMzJGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcsIGZsb2F0LCBmbG9h
dD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhl
bHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJS
b3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsKKyAgICAgICAg
ZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV07CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291
cmNlWzJdOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMzsK
KyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3ND
b250ZXh0M0Q6OkRhdGFGb3JtYXRSR0IzMkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvUHJl
bXVsdGlwbHksIGZsb2F0LCBmbG9hdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3Rv
ciA9IHNvdXJjZVszXTsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF0gKiBzY2Fs
ZUZhY3RvcjsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV0gKiBzY2FsZUZhY3Rv
cjsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMl0gKiBzY2FsZUZhY3RvcjsKKyAg
ICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDM7CisgICAgfQorfQor
Cit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UkdCMzJGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1VubXVsdGlwbHksIGZs
b2F0LCBmbG9hdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBw
aXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVsz
XSA/IDEuMGYgLyBzb3VyY2VbM10gOiAxLjBmOworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNv
dXJjZVswXSAqIHNjYWxlRmFjdG9yOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsx
XSAqIHNjYWxlRmFjdG9yOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXSAqIHNj
YWxlRmFjdG9yOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0g
MzsKKyAgICB9Cit9CisKKy8vIFVzZWQgb25seSBkdXJpbmcgUkdCQTggb3IgQkdSQTggLT4gZmxv
YXRpbmctcG9pbnQgdXBsb2Fkcy4KK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8
R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMzJGLCBHcmFwaGljc0NvbnRleHQzRDo6
QWxwaGFEb05vdGhpbmcsIGZsb2F0LCBmbG9hdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQq
IGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgbWVtY3B5KGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIHBpeGVsc1BlclJvdyAqIDQgKiBzaXplb2YoZmxvYXQpKTsKK30KKwor
dGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdFJHQkEzMkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvUHJlbXVsdGlwbHksIGZs
b2F0LCBmbG9hdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBw
aXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVsz
XTsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF0gKiBzY2FsZUZhY3RvcjsKKyAg
ICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAg
ZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMl0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgZGVzdGlu
YXRpb25bM10gPSBzb3VyY2VbM107CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0
aW5hdGlvbiArPSA0OworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQg
cGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkEzMkYsIEdyYXBoaWNzQ29udGV4
dDNEOjpBbHBoYURvVW5tdWx0aXBseSwgZmxvYXQsIGZsb2F0Pihjb25zdCBmbG9hdCogc291cmNl
LCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGZs
b2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdID8gMS4wZiAvIHNvdXJjZVszXSA6IDEuMGY7Cisg
ICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7CisgICAgICAg
IGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7CisgICAgICAgIGRlc3Rp
bmF0aW9uWzJdID0gc291cmNlWzJdICogc2NhbGVGYWN0b3I7CisgICAgICAgIGRlc3RpbmF0aW9u
WzNdID0gc291cmNlWzNdOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRp
b24gKz0gNDsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8
R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBMzJGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxw
aGFEb05vdGhpbmcsIGZsb2F0LCBmbG9hdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblsw
XSA9IHNvdXJjZVszXTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9u
ICs9IDE7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjMyRiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhh
RG9Ob3RoaW5nLCBmbG9hdCwgZmxvYXQ+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0g
PSBzb3VyY2VbMF07CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiAr
PSAxOworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFIzMkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURv
UHJlbXVsdGlwbHksIGZsb2F0LCBmbG9hdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZh
Y3RvciA9IHNvdXJjZVszXTsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF0gKiBz
Y2FsZUZhY3RvcjsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9
IDE7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBo
aWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjMyRiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9V
bm11bHRpcGx5LCBmbG9hdCwgZmxvYXQ+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0
b3IgPSBzb3VyY2VbM10gPyAxLjBmIC8gc291cmNlWzNdIDogMS4wZjsKKyAgICAgICAgZGVzdGlu
YXRpb25bMF0gPSBzb3VyY2VbMF0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgc291cmNlICs9IDQ7
CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDE7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZ
U19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkEzMkYsIEdy
YXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywgZmxvYXQsIGZsb2F0Pihjb25zdCBmbG9h
dCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sK
KyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Cisg
ICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOworICAgICAgICBkZXN0aW5hdGlvblsx
XSA9IHNvdXJjZVszXTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9u
ICs9IDI7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkEzMkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBo
YURvUHJlbXVsdGlwbHksIGZsb2F0LCBmbG9hdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQq
IGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2Fs
ZUZhY3RvciA9IHNvdXJjZVszXTsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF0g
KiBzY2FsZUZhY3RvcjsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbM107CisgICAg
ICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSAyOworICAgIH0KK30KKwor
dGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdFJBMzJGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1VubXVsdGlwbHksIGZsb2F0
LCBmbG9hdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhl
bHNQZXJSb3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSA/
IDEuMGYgLyBzb3VyY2VbM10gOiAxLjBmOworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJj
ZVswXSAqIHNjYWxlRmFjdG9yOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVszXTsK
KyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDI7CisgICAgfQor
fQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0UkdCQTE2RiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCBm
bG9hdCwgdWludDE2X3Q+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlv
biwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRG
bG9hdFRvSGFsZkZsb2F0KHNvdXJjZVswXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gY29u
dmVydEZsb2F0VG9IYWxmRmxvYXQoc291cmNlWzFdKTsKKyAgICAgICAgZGVzdGluYXRpb25bMl0g
PSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbMl0pOworICAgICAgICBkZXN0aW5hdGlv
blszXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVszXSk7CisgICAgICAgIHNvdXJj
ZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KK30KKwordGVtcGxhdGU8
PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJH
QkExNkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvUHJlbXVsdGlwbHksIGZsb2F0LCB1aW50
MTZfdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1Bl
clJvdzsgKytpKSB7CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdOworICAg
ICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVswXSAq
IHNjYWxlRmFjdG9yKTsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBjb252ZXJ0RmxvYXRUb0hh
bGZGbG9hdChzb3VyY2VbMV0gKiBzY2FsZUZhY3Rvcik7CisgICAgICAgIGRlc3RpbmF0aW9uWzJd
ID0gY29udmVydEZsb2F0VG9IYWxmRmxvYXQoc291cmNlWzJdICogc2NhbGVGYWN0b3IpOworICAg
ICAgICBkZXN0aW5hdGlvblszXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVszXSk7
CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0K
K30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdFJHQkExNkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvVW5tdWx0aXBs
eSwgZmxvYXQsIHVpbnQxNl90Pihjb25zdCBmbG9hdCogc291cmNlLCB1aW50MTZfdCogZGVzdGlu
YXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBz
b3VyY2VbM10gPyAxLjBmIC8gc291cmNlWzNdIDogMS4wZjsKKyAgICAgICAgZGVzdGluYXRpb25b
MF0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbMF0gKiBzY2FsZUZhY3Rvcik7Cisg
ICAgICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydEZsb2F0VG9IYWxmRmxvYXQoc291cmNlWzFd
ICogc2NhbGVGYWN0b3IpOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IGNvbnZlcnRGbG9hdFRv
SGFsZkZsb2F0KHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAgZGVzdGluYXRpb25b
M10gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbM10pOworICAgICAgICBzb3VyY2Ug
Kz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4g
QUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0Ix
NkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywgZmxvYXQsIHVpbnQxNl90Pihj
b25zdCBmbG9hdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVs
c1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyAr
K2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChz
b3VyY2VbMF0pOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZs
b2F0KHNvdXJjZVsxXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gY29udmVydEZsb2F0VG9I
YWxmRmxvYXQoc291cmNlWzJdKTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3Rp
bmF0aW9uICs9IDM7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBw
YWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCMTZGLCBHcmFwaGljc0NvbnRleHQz
RDo6QWxwaGFEb1ByZW11bHRpcGx5LCBmbG9hdCwgdWludDE2X3Q+KGNvbnN0IGZsb2F0KiBzb3Vy
Y2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBm
bG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXTsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBj
b252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbMF0gKiBzY2FsZUZhY3Rvcik7CisgICAgICAg
IGRlc3RpbmF0aW9uWzFdID0gY29udmVydEZsb2F0VG9IYWxmRmxvYXQoc291cmNlWzFdICogc2Nh
bGVGYWN0b3IpOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZs
b2F0KHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAg
ICAgIGRlc3RpbmF0aW9uICs9IDM7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJ
TkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCMTZGLCBHcmFwaGlj
c0NvbnRleHQzRDo6QWxwaGFEb1VubXVsdGlwbHksIGZsb2F0LCB1aW50MTZfdD4oY29uc3QgZmxv
YXQqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cp
Cit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Cisg
ICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdID8gMS4wZiAvIHNvdXJjZVszXSA6
IDEuMGY7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydEZsb2F0VG9IYWxmRmxvYXQo
c291cmNlWzBdICogc2NhbGVGYWN0b3IpOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZl
cnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVsxXSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAgZGVz
dGluYXRpb25bMl0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbMl0gKiBzY2FsZUZh
Y3Rvcik7CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSAzOwor
ICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0Nv
bnRleHQzRDo6RGF0YUZvcm1hdFJBMTZGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhp
bmcsIGZsb2F0LCB1aW50MTZfdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgdWludDE2X3QqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29u
dmVydEZsb2F0VG9IYWxmRmxvYXQoc291cmNlWzBdKTsKKyAgICAgICAgZGVzdGluYXRpb25bMV0g
PSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbM10pOworICAgICAgICBzb3VyY2UgKz0g
NDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMjsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxX
QVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTE2Riwg
R3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9QcmVtdWx0aXBseSwgZmxvYXQsIHVpbnQxNl90Pihj
b25zdCBmbG9hdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVs
c1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyAr
K2kpIHsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM107CisgICAgICAgIGRl
c3RpbmF0aW9uWzBdID0gY29udmVydEZsb2F0VG9IYWxmRmxvYXQoc291cmNlWzBdICogc2NhbGVG
YWN0b3IpOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZsb2F0
KHNvdXJjZVszXSk7CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiAr
PSAyOworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMTZGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFE
b1VubXVsdGlwbHksIGZsb2F0LCB1aW50MTZfdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgdWludDE2
X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGZsb2F0IHNjYWxl
RmFjdG9yID0gc291cmNlWzNdID8gMS4wZiAvIHNvdXJjZVszXSA6IDEuMGY7CisgICAgICAgIGRl
c3RpbmF0aW9uWzBdID0gY29udmVydEZsb2F0VG9IYWxmRmxvYXQoc291cmNlWzBdICogc2NhbGVG
YWN0b3IpOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZsb2F0
KHNvdXJjZVszXSk7CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiAr
PSAyOworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFIxNkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURv
Tm90aGluZywgZmxvYXQsIHVpbnQxNl90Pihjb25zdCBmbG9hdCogc291cmNlLCB1aW50MTZfdCog
ZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0g
PSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbMF0pOworICAgICAgICBzb3VyY2UgKz0g
NDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxX
QVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSMTZGLCBH
cmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5LCBmbG9hdCwgdWludDE2X3Q+KGNv
bnN0IGZsb2F0KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxz
UGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsr
aSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXTsKKyAgICAgICAgZGVz
dGluYXRpb25bMF0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbMF0gKiBzY2FsZUZh
Y3Rvcik7CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSAxOwor
ICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0Nv
bnRleHQzRDo6RGF0YUZvcm1hdFIxNkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvVW5tdWx0
aXBseSwgZmxvYXQsIHVpbnQxNl90Pihjb25zdCBmbG9hdCogc291cmNlLCB1aW50MTZfdCogZGVz
dGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3Ig
PSBzb3VyY2VbM10gPyAxLjBmIC8gc291cmNlWzNdIDogMS4wZjsKKyAgICAgICAgZGVzdGluYXRp
b25bMF0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbMF0gKiBzY2FsZUZhY3Rvcik7
CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSAxOworICAgIH0K
K30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdEExNkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywgZmxv
YXQsIHVpbnQxNl90Pihjb25zdCBmbG9hdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
cGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Rmxv
YXRUb0hhbGZGbG9hdChzb3VyY2VbM10pOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAg
ZGVzdGluYXRpb24gKz0gMTsKKyAgICB9Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBIYXNBbHBo
YShpbnQgZm9ybWF0KQoreworICAgIHJldHVybiBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXRBOAorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRBMTZGCisgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdEEzMkYKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0UkE4CisgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdEFSOAorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSQTE2RgorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSQTMyRgorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSR0JBOAorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRCR1JBOAorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRBUkdCOAorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRBQkdSOAorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSR0JBMTZGCisgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdFJHQkEzMkYKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0UkdCQTQ0NDQKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UkdCQTU1NTE7Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBIYXNDb2xvcihpbnQg
Zm9ybWF0KQoreworICAgIHJldHVybiBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRSR0JBOAorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRSR0JBMTZGCisgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdFJHQkEzMkYKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UkdCOAorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRSR0IxNkYKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UkdCMzJGCisgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6
RGF0YUZvcm1hdEJHUjgKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0QkdSQTgKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0QVJHQjgKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0QUJHUjgKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UkdCQTU1NTEKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0UkdCQTQ0NDQKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4
dDNEOjpEYXRhRm9ybWF0UkdCNTY1CisgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdFI4CisgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdFIxNkYKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0UjMyRgorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXRSQTgKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UkExNkYKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UkEzMkYKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0QVI4OworfQorCit0ZW1wbGF0ZTxpbnQgRm9ybWF0Pgorc3RydWN0IElzRmxvYXRG
b3JtYXQgeworICAgIHN0YXRpYyBjb25zdCBib29sIFZhbHVlID0KKyAgICAgICAgRm9ybWF0ID09
IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTMyRgorICAgICAgICB8fCBGb3JtYXQg
PT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0IzMkYKKyAgICAgICAgfHwgRm9ybWF0
ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkEzMkYKKyAgICAgICAgfHwgRm9ybWF0
ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjMyRgorICAgICAgICB8fCBGb3JtYXQg
PT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBMzJGOworfTsKKwordGVtcGxhdGU8aW50
IEZvcm1hdD4KK3N0cnVjdCBJc0hhbGZGbG9hdEZvcm1hdCB7CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgVmFsdWUgPQorICAgICAgICBGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSR0JBMTZGCisgICAgICAgIHx8IEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdFJHQjE2RgorICAgICAgICB8fCBGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRSQTE2RgorICAgICAgICB8fCBGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRSMTZGCisgICAgICAgIHx8IEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdEExNkY7Cit9OworCit0ZW1wbGF0ZTxpbnQgRm9ybWF0Pgorc3RydWN0IElzMTZicHBGb3Jt
YXQgeworICAgIHN0YXRpYyBjb25zdCBib29sIFZhbHVlID0KKyAgICAgICAgRm9ybWF0ID09IEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTU1NTEKKyAgICAgICAgfHwgRm9ybWF0ID09
IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTQ0NDQKKyAgICAgICAgfHwgRm9ybWF0
ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCNTY1OworfTsKKwordGVtcGxhdGU8
aW50IEZvcm1hdCwgYm9vbCBJc0Zsb2F0ID0gSXNGbG9hdEZvcm1hdDxGb3JtYXQ+OjpWYWx1ZSwg
Ym9vbCBJc0hhbGZGbG9hdCA9IElzSGFsZkZsb2F0Rm9ybWF0PEZvcm1hdD46OlZhbHVlLCBib29s
IElzMTZicHAgPSBJczE2YnBwRm9ybWF0PEZvcm1hdD46OlZhbHVlPgorc3RydWN0IERhdGFUeXBl
Rm9yRm9ybWF0IHsKKyAgICB0eXBlZGVmIHVpbnQ4X3QgVHlwZTsKK307CisKK3RlbXBsYXRlPGlu
dCBGb3JtYXQ+CitzdHJ1Y3QgRGF0YVR5cGVGb3JGb3JtYXQ8Rm9ybWF0LCB0cnVlLCBmYWxzZSwg
ZmFsc2U+IHsKKyAgICB0eXBlZGVmIGZsb2F0IFR5cGU7Cit9OworCit0ZW1wbGF0ZTxpbnQgRm9y
bWF0Pgorc3RydWN0IERhdGFUeXBlRm9yRm9ybWF0PEZvcm1hdCwgZmFsc2UsIHRydWUsIGZhbHNl
PiB7CisgICAgdHlwZWRlZiB1aW50MTZfdCBUeXBlOworfTsKKwordGVtcGxhdGU8aW50IEZvcm1h
dD4KK3N0cnVjdCBEYXRhVHlwZUZvckZvcm1hdDxGb3JtYXQsIGZhbHNlLCBmYWxzZSwgdHJ1ZT4g
eworICAgIHR5cGVkZWYgdWludDE2X3QgVHlwZTsKK307CisKK3RlbXBsYXRlPGludCBGb3JtYXQ+
CitzdHJ1Y3QgSW50ZXJtZWRpYXRlRm9ybWF0IHsKKyAgICBzdGF0aWMgY29uc3QgaW50IFZhbHVl
ID0gKElzRmxvYXRGb3JtYXQ8Rm9ybWF0Pjo6VmFsdWUgfHwgSXNIYWxmRmxvYXRGb3JtYXQ8Rm9y
bWF0Pjo6VmFsdWUpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMzJGIDogR3Jh
cGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBODsKK307CisKK0FMV0FZU19JTkxJTkUgdW5z
aWduZWQgVGV4ZWxCeXRlc0ZvckZvcm1hdChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBm
b3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpEYXRhRm9ybWF0Ujg6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1h
dEE4OgorICAgICAgICByZXR1cm4gMTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0UkE4OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBUjg6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE1NTUxOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNDQ0NDoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpEYXRhRm9ybWF0UkdCNTY1OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXRBMTZGOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRS
MTZGOgorICAgICAgICByZXR1cm4gMjsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0UkdCODoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QkdSODoK
KyAgICAgICAgcmV0dXJuIDM7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1h
dFJHQkE4OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBUkdCODoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QUJHUjg6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEJHUkE4OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkRhdGFGb3JtYXRSMzJGOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRBMzJGOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTE2RjoKKyAg
ICAgICAgcmV0dXJuIDQ7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJH
QjE2RjoKKyAgICAgICAgcmV0dXJuIDY7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdFJBMzJGOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JB
MTZGOgorICAgICAgICByZXR1cm4gODsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0UkdCMzJGOgorICAgICAgICByZXR1cm4gMTI7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdFJHQkEzMkY6CisgICAgICAgIHJldHVybiAxNjsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKKy8qIEVORCBDT0RFIFNIQVJFRCBXSVRI
IE1PWklMTEEgRklSRUZPWCAqLworCitjbGFzcyBGb3JtYXRDb252ZXJ0ZXIgeworcHVibGljOgor
ICAgIEZvcm1hdENvbnZlcnRlcih1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LAorICAg
ICAgICBjb25zdCB2b2lkKiBzcmNTdGFydCwgdm9pZCogZHN0U3RhcnQsIGludCBzcmNTdHJpZGUs
IGludCBkc3RTdHJpZGUpCisgICAgICAgIDogbV93aWR0aCh3aWR0aCksIG1faGVpZ2h0KGhlaWdo
dCksIG1fc3JjU3RhcnQoc3JjU3RhcnQpLCBtX2RzdFN0YXJ0KGRzdFN0YXJ0KSwgbV9zcmNTdHJp
ZGUoc3JjU3RyaWRlKSwgbV9kc3RTdHJpZGUoZHN0U3RyaWRlKSwgbV9zdWNjZXNzKGZhbHNlKQor
ICAgIHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgTWF4TnVtYmVyT2ZDb21wb25lbnRzID0gNDsK
KyAgICAgICAgY29uc3QgdW5zaWduZWQgTWF4Qnl0ZXNQZXJDb21wb25lbnQgID0gNDsKKyAgICAg
ICAgbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQ4
X3RbXT4obV93aWR0aCAqIE1heE51bWJlck9mQ29tcG9uZW50cyAqIE1heEJ5dGVzUGVyQ29tcG9u
ZW50KTsKKworICAgICAgICBBU1NFUlQobV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGEuZ2V0
KCkpOworICAgIH0KKworICAgIHZvaWQgY29udmVydChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdCBzcmNGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IGRzdEZvcm1hdCwg
R3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhT3ApOworICAgIGJvb2wgU3VjY2VzcygpIGNvbnN0IHsg
cmV0dXJuIG1fc3VjY2VzczsgfQorCitwcml2YXRlOgorICAgIHRlbXBsYXRlPEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0IFNyY0Zvcm1hdD4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29u
dmVydChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBkc3RGb3JtYXQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpBbHBoYU9wKTsKKworICAgIHRlbXBsYXRlPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0IFNyY0Zvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgRHN0Rm9ybWF0
PgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjb252ZXJ0KEdyYXBoaWNzQ29udGV4dDNEOjpBbHBo
YU9wKTsKKworICAgIHRlbXBsYXRlPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IFNyY0Zv
cm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgRHN0Rm9ybWF0LCBHcmFwaGljc0Nv
bnRleHQzRDo6QWxwaGFPcCBhbHBoYU9wPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjb252ZXJ0
KCk7CisKKyAgICBjb25zdCB1bnNpZ25lZCBtX3dpZHRoLCBtX2hlaWdodDsKKyAgICBjb25zdCB2
b2lkKiBjb25zdCBtX3NyY1N0YXJ0OworICAgIHZvaWQqIGNvbnN0IG1fZHN0U3RhcnQ7CisgICAg
Y29uc3QgaW50IG1fc3JjU3RyaWRlLCBtX2RzdFN0cmlkZTsKKyAgICBib29sIG1fc3VjY2VzczsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiBtX3VucGFja2VkSW50ZXJtZWRpYXRlU3Jj
RGF0YTsKK307CisKK3ZvaWQgRm9ybWF0Q29udmVydGVyOjpjb252ZXJ0KEdyYXBoaWNzQ29udGV4
dDNEOjpEYXRhRm9ybWF0IHNyY0Zvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQg
ZHN0Rm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFPcCBhbHBoYU9wKQoreworI2RlZmlu
ZSBGT1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQoU3JjRm9ybWF0KSBcCisgICAgY2FzZSBT
cmNGb3JtYXQ6IFwKKyAgICAgICAgcmV0dXJuIGNvbnZlcnQ8U3JjRm9ybWF0Pihkc3RGb3JtYXQs
IGFscGhhT3ApOworCisgICAgICAgIHN3aXRjaCAoc3JjRm9ybWF0KSB7CisgICAgICAgICAgICBG
T1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSOCkKKyAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFwaGlj
c0NvbnRleHQzRDo6RGF0YUZvcm1hdEE4KQorICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NB
U0VfU1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjMyRikKKyAgICAgICAg
ICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdEEzMkYpCisgICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQo
R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTgpCisgICAgICAgICAgICBGT1JNQVRDT05W
RVJURVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTMyRikK
KyAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdFJHQjgpCisgICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9T
UkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRCR1I4KQorICAgICAgICAgICAg
Rk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9y
bWF0UkdCNTY1KQorICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCMzJGKQorICAgICAgICAgICAgRk9STUFUQ09O
VkVSVEVSX0NBU0VfU1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTgp
CisgICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250
ZXh0M0Q6OkRhdGFGb3JtYXRBUkdCOCkKKyAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNF
X1NSQ0ZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFCR1I4KQorICAgICAgICAg
ICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0QVI4KQorICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QkdSQTgpCisgICAgICAgICAgICBGT1JNQVRDT05W
RVJURVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNTU1
MSkKKyAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFwaGljc0Nv
bnRleHQzRDo6RGF0YUZvcm1hdFJHQkE0NDQ0KQorICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVS
X0NBU0VfU1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTMyRikKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisjdW5kZWYgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUCit9CisKK3RlbXBsYXRl
PEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IFNyY0Zvcm1hdD4KK0FMV0FZU19JTkxJTkUg
dm9pZCBGb3JtYXRDb252ZXJ0ZXI6OmNvbnZlcnQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXQgZHN0Rm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFPcCBhbHBoYU9wKQoreworI2Rl
ZmluZSBGT1JNQVRDT05WRVJURVJfQ0FTRV9EU1RGT1JNQVQoRHN0Rm9ybWF0KSBcCisgICAgY2Fz
ZSBEc3RGb3JtYXQ6IFwKKyAgICAgICAgcmV0dXJuIGNvbnZlcnQ8U3JjRm9ybWF0LCBEc3RGb3Jt
YXQ+KGFscGhhT3ApOworCisgICAgICAgIHN3aXRjaCAoZHN0Rm9ybWF0KSB7CisgICAgICAgICAg
ICBGT1JNQVRDT05WRVJURVJfQ0FTRV9EU1RGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRSOCkKKyAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX0RTVEZPUk1BVChHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFIxNkYpCisgICAgICAgICAgICBGT1JNQVRDT05WRVJU
RVJfQ0FTRV9EU1RGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSMzJGKQorICAg
ICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfRFNURk9STUFUKEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0QTgpCisgICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9EU1RGT1JN
QVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBMTZGKQorICAgICAgICAgICAgRk9STUFU
Q09OVkVSVEVSX0NBU0VfRFNURk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QTMy
RikKKyAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX0RTVEZPUk1BVChHcmFwaGljc0Nv
bnRleHQzRDo6RGF0YUZvcm1hdFJBOCkKKyAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNF
X0RTVEZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMTZGKQorICAgICAgICAg
ICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfRFNURk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0UkEzMkYpCisgICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9EU1RGT1JNQVQo
R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0I4KQorICAgICAgICAgICAgRk9STUFUQ09O
VkVSVEVSX0NBU0VfRFNURk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCNTY1
KQorICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfRFNURk9STUFUKEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0UkdCMTZGKQorICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NB
U0VfRFNURk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCMzJGKQorICAgICAg
ICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfRFNURk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UkdCQTgpCisgICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9EU1RGT1JN
QVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNTU1MSkKKyAgICAgICAgICAgIEZP
Uk1BVENPTlZFUlRFUl9DQVNFX0RTVEZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1h
dFJHQkE0NDQ0KQorICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfRFNURk9STUFUKEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTE2RikKKyAgICAgICAgICAgIEZPUk1BVENP
TlZFUlRFUl9DQVNFX0RTVEZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkEz
MkYpCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfQorCisjdW5kZWYgRk9STUFUQ09OVkVSVEVSX0NBU0VfRFNURk9STUFUCit9CisK
K3RlbXBsYXRlPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IFNyY0Zvcm1hdCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgRHN0Rm9ybWF0PgorQUxXQVlTX0lOTElORSB2b2lkIEZv
cm1hdENvbnZlcnRlcjo6Y29udmVydChHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFPcCBhbHBoYU9w
KQoreworI2RlZmluZSBGT1JNQVRDT05WRVJURVJfQ0FTRV9BTFBIQU9QKGFscGhhT3ApIFwKKyAg
ICBjYXNlIGFscGhhT3A6IFwKKyAgICAgICAgcmV0dXJuIGNvbnZlcnQ8U3JjRm9ybWF0LCBEc3RG
b3JtYXQsIGFscGhhT3A+KCk7CisKKyAgICAgICAgc3dpdGNoIChhbHBoYU9wKSB7CisgICAgICAg
ICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9BTFBIQU9QKEdyYXBoaWNzQ29udGV4dDNEOjpBbHBo
YURvTm90aGluZykKKyAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX0FMUEhBT1AoR3Jh
cGhpY3NDb250ZXh0M0Q6OkFscGhhRG9QcmVtdWx0aXBseSkKKyAgICAgICAgICAgIEZPUk1BVENP
TlZFUlRFUl9DQVNFX0FMUEhBT1AoR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Vbm11bHRpcGx5
KQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KKyN1bmRlZiBGT1JNQVRDT05WRVJURVJfQ0FTRV9BTFBIQU9QCit9CisKK3RlbXBs
YXRlPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IFNyY0Zvcm1hdCwgR3JhcGhpY3NDb250
ZXh0M0Q6OkRhdGFGb3JtYXQgRHN0Rm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFPcCBh
bHBoYU9wPgorQUxXQVlTX0lOTElORV9FWENFUFRfTVNWQyB2b2lkIEZvcm1hdENvbnZlcnRlcjo6
Y29udmVydCgpCit7CisgICAgLy8gTWFueSBpbnN0YW50aWF0aW9ucyBvZiB0aGlzIHRlbXBsYXRl
IGZ1bmN0aW9uIHdpbGwgbmV2ZXIgYmUgZW50ZXJlZCwgc28gd2UgdHJ5CisgICAgLy8gdG8gcmV0
dXJuIGltbWVkaWF0ZWx5IGluIHRoZXNlIGNhc2VzIHRvIGF2b2lkIHRoZSBjb21waWxlciB0byBn
ZW5lcmF0ZSB1c2VsZXNzIGNvZGUuCisgICAgaWYgKFNyY0Zvcm1hdCA9PSBEc3RGb3JtYXQgJiYg
YWxwaGFPcCA9PSBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcpIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFJ
c0Zsb2F0Rm9ybWF0PERzdEZvcm1hdD46OlZhbHVlICYmIElzRmxvYXRGb3JtYXQ8U3JjRm9ybWF0
Pjo6VmFsdWUpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICAvLyBPbmx5IHRleHR1cmVzIHVwbG9hZGVkIGZyb20gRE9NIGVsZW1l
bnRzIG9yIEltYWdlRGF0YSBjYW4gYWxsb3cgRHN0Rm9ybWF0ICE9IFNyY0Zvcm1hdC4KKyAgICBj
b25zdCBib29sIHNyY0Zvcm1hdENvbWVzRnJvbURPTUVsZW1lbnRPckltYWdlRGF0YSA9IEdyYXBo
aWNzQ29udGV4dDNEOjpzcmNGb3JtYXRDb21lc0Zyb21ET01FbGVtZW50T3JJbWFnZURhdGEoU3Jj
Rm9ybWF0KTsKKyAgICBpZiAoIXNyY0Zvcm1hdENvbWVzRnJvbURPTUVsZW1lbnRPckltYWdlRGF0
YSAmJiBTcmNGb3JtYXQgIT0gRHN0Rm9ybWF0KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIExpa2V3aXNlLCBvbmx5IHRleHR1
cmVzIHVwbG9hZGVkIGZyb20gRE9NIGVsZW1lbnRzIG9yIEltYWdlRGF0YSBjYW4gcG9zc2libHkg
aGF2ZSB0byBiZSB1bnByZW11bHRpcGxpZWQuCisgICAgaWYgKCFzcmNGb3JtYXRDb21lc0Zyb21E
T01FbGVtZW50T3JJbWFnZURhdGEgJiYgYWxwaGFPcCA9PSBHcmFwaGljc0NvbnRleHQzRDo6QWxw
aGFEb1VubXVsdGlwbHkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaWYgKCghSGFzQWxwaGEoU3JjRm9ybWF0KSB8fCAhSGFzQ29s
b3IoU3JjRm9ybWF0KSB8fCAhSGFzQ29sb3IoRHN0Rm9ybWF0KSkgJiYgYWxwaGFPcCAhPSBHcmFw
aGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0eXBlZGVmIHR5cGVuYW1lIERh
dGFUeXBlRm9yRm9ybWF0PFNyY0Zvcm1hdD46OlR5cGUgU3JjVHlwZTsKKyAgICB0eXBlZGVmIHR5
cGVuYW1lIERhdGFUeXBlRm9yRm9ybWF0PERzdEZvcm1hdD46OlR5cGUgRHN0VHlwZTsKKyAgICBj
b25zdCBpbnQgSW50ZXJtZWRpYXRlU3JjRm9ybWF0ID0gSW50ZXJtZWRpYXRlRm9ybWF0PERzdEZv
cm1hdD46OlZhbHVlOworICAgIHR5cGVkZWYgdHlwZW5hbWUgRGF0YVR5cGVGb3JGb3JtYXQ8SW50
ZXJtZWRpYXRlU3JjRm9ybWF0Pjo6VHlwZSBJbnRlcm1lZGlhdGVTcmNUeXBlOworICAgIGNvbnN0
IHB0cmRpZmZfdCBzcmNTdHJpZGVJbkVsZW1lbnRzID0gbV9zcmNTdHJpZGUgLyBzaXplb2YoU3Jj
VHlwZSk7CisgICAgY29uc3QgcHRyZGlmZl90IGRzdFN0cmlkZUluRWxlbWVudHMgPSBtX2RzdFN0
cmlkZSAvIHNpemVvZihEc3RUeXBlKTsKKyAgICBjb25zdCBib29sIHRyaXZpYWxVbnBhY2sgPSAo
U3JjRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTggJiYgIUlzRmxv
YXRGb3JtYXQ8RHN0Rm9ybWF0Pjo6VmFsdWUgJiYgIUlzSGFsZkZsb2F0Rm9ybWF0PERzdEZvcm1h
dD46OlZhbHVlKSB8fCBTcmNGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRS
R0JBMzJGOworICAgIGNvbnN0IGJvb2wgdHJpdmlhbFBhY2sgPSAoRHN0Rm9ybWF0ID09IEdyYXBo
aWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTggfHwgRHN0Rm9ybWF0ID09IEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0UkdCQTMyRikgJiYgYWxwaGFPcCA9PSBHcmFwaGljc0NvbnRleHQz
RDo6QWxwaGFEb05vdGhpbmcgJiYgbV9kc3RTdHJpZGUgPiAwOworICAgIEFTU0VSVCghdHJpdmlh
bFVucGFjayB8fCAhdHJpdmlhbFBhY2spOworCisgICAgY29uc3QgU3JjVHlwZSAqc3JjUm93U3Rh
cnQgPSBzdGF0aWNfY2FzdDxjb25zdCBTcmNUeXBlKj4obV9zcmNTdGFydCk7CisgICAgRHN0VHlw
ZSogZHN0Um93U3RhcnQgPSBzdGF0aWNfY2FzdDxEc3RUeXBlKj4obV9kc3RTdGFydCk7CisgICAg
aWYgKCF0cml2aWFsVW5wYWNrICYmIHRyaXZpYWxQYWNrKSB7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9oZWlnaHQ7ICsraSkgeworICAgICAgICAgICAgdW5wYWNrPFNyY0Zvcm1h
dD4oc3JjUm93U3RhcnQsIGRzdFJvd1N0YXJ0LCBtX3dpZHRoKTsKKyAgICAgICAgICAgIHNyY1Jv
d1N0YXJ0ICs9IHNyY1N0cmlkZUluRWxlbWVudHM7CisgICAgICAgICAgICBkc3RSb3dTdGFydCAr
PSBkc3RTdHJpZGVJbkVsZW1lbnRzOworICAgICAgICB9CisgICAgfSBlbHNlIGlmICghdHJpdmlh
bFVucGFjayAmJiAhdHJpdmlhbFBhY2spIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2hlaWdodDsgKytpKSB7CisgICAgICAgICAgICB1bnBhY2s8U3JjRm9ybWF0PihzcmNSb3dT
dGFydCwgcmVpbnRlcnByZXRfY2FzdF9wdHI8SW50ZXJtZWRpYXRlU3JjVHlwZSo+KG1fdW5wYWNr
ZWRJbnRlcm1lZGlhdGVTcmNEYXRhLmdldCgpKSwgbV93aWR0aCk7CisgICAgICAgICAgICBwYWNr
PERzdEZvcm1hdCwgYWxwaGFPcD4ocmVpbnRlcnByZXRfY2FzdF9wdHI8SW50ZXJtZWRpYXRlU3Jj
VHlwZSo+KG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhLmdldCgpKSwgZHN0Um93U3RhcnQs
IG1fd2lkdGgpOworICAgICAgICAgICAgc3JjUm93U3RhcnQgKz0gc3JjU3RyaWRlSW5FbGVtZW50
czsKKyAgICAgICAgICAgIGRzdFJvd1N0YXJ0ICs9IGRzdFN0cmlkZUluRWxlbWVudHM7CisgICAg
ICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faGVp
Z2h0OyArK2kpIHsKKyAgICAgICAgICAgIHBhY2s8RHN0Rm9ybWF0LCBhbHBoYU9wPihzcmNSb3dT
dGFydCwgZHN0Um93U3RhcnQsIG1fd2lkdGgpOworICAgICAgICAgICAgc3JjUm93U3RhcnQgKz0g
c3JjU3RyaWRlSW5FbGVtZW50czsKKyAgICAgICAgICAgIGRzdFJvd1N0YXJ0ICs9IGRzdFN0cmlk
ZUluRWxlbWVudHM7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9zdWNjZXNzID0gdHJ1ZTsKKyAg
ICByZXR1cm47Cit9CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitib29sIEdyYXBoaWNz
Q29udGV4dDNEOjpwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZURhdGEsIERhdGFGb3Jt
YXQgc291cmNlRGF0YUZvcm1hdCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5z
aWduZWQgc291cmNlVW5wYWNrQWxpZ25tZW50LCB1bnNpZ25lZCBkZXN0aW5hdGlvbkZvcm1hdCwg
dW5zaWduZWQgZGVzdGluYXRpb25UeXBlLCBBbHBoYU9wIGFscGhhT3AsIHZvaWQqIGRlc3RpbmF0
aW9uRGF0YSwgYm9vbCBmbGlwWSkKK3sKKyAgICBpbnQgdmFsaWRTcmMgPSB3aWR0aCAqIFRleGVs
Qnl0ZXNGb3JGb3JtYXQoc291cmNlRGF0YUZvcm1hdCk7CisgICAgaW50IHJlbWFpbmRlciA9IHNv
dXJjZVVucGFja0FsaWdubWVudCA/ICh2YWxpZFNyYyAlIHNvdXJjZVVucGFja0FsaWdubWVudCkg
OiAwOworICAgIGludCBzcmNTdHJpZGUgPSByZW1haW5kZXIgPyAodmFsaWRTcmMgKyBzb3VyY2VV
bnBhY2tBbGlnbm1lbnQgLSByZW1haW5kZXIpIDogdmFsaWRTcmM7CisKKyAgICBEYXRhRm9ybWF0
IGRzdERhdGFGb3JtYXQgPSBnZXREYXRhRm9ybWF0KGRlc3RpbmF0aW9uRm9ybWF0LCBkZXN0aW5h
dGlvblR5cGUpOworICAgIGludCBkc3RTdHJpZGUgPSB3aWR0aCAqIFRleGVsQnl0ZXNGb3JGb3Jt
YXQoZHN0RGF0YUZvcm1hdCk7CisgICAgaWYgKGZsaXBZKSB7CisgICAgICAgIGRlc3RpbmF0aW9u
RGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihkZXN0aW5hdGlvbkRhdGEpICsgZHN0U3RyaWRl
KihoZWlnaHQgLSAxKTsKKyAgICAgICAgZHN0U3RyaWRlID0gLWRzdFN0cmlkZTsKKyAgICB9Cisg
ICAgaWYgKCFIYXNBbHBoYShzb3VyY2VEYXRhRm9ybWF0KSB8fCAhSGFzQ29sb3Ioc291cmNlRGF0
YUZvcm1hdCkgfHwgIUhhc0NvbG9yKGRzdERhdGFGb3JtYXQpKQorICAgICAgICBhbHBoYU9wID0g
QWxwaGFEb05vdGhpbmc7CisKKyAgICBpZiAoc291cmNlRGF0YUZvcm1hdCA9PSBkc3REYXRhRm9y
bWF0ICYmIGFscGhhT3AgPT0gQWxwaGFEb05vdGhpbmcpIHsKKyAgICAgICAgY29uc3QgdWludDhf
dCogcHRyID0gc291cmNlRGF0YTsKKyAgICAgICAgY29uc3QgdWludDhfdCogcHRyRW5kID0gc291
cmNlRGF0YSArIHNyY1N0cmlkZSAqIGhlaWdodDsKKyAgICAgICAgdW5zaWduZWQgcm93U2l6ZSA9
IChkc3RTdHJpZGUgPiAwKSA/IGRzdFN0cmlkZTogLWRzdFN0cmlkZTsKKyAgICAgICAgdWludDhf
dCogZHN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRlc3RpbmF0aW9uRGF0YSk7CisgICAgICAg
IHdoaWxlIChwdHIgPCBwdHJFbmQpIHsKKyAgICAgICAgICAgIG1lbWNweShkc3QsIHB0ciwgcm93
U2l6ZSk7CisgICAgICAgICAgICBwdHIgKz0gc3JjU3RyaWRlOworICAgICAgICAgICAgZHN0ICs9
IGRzdFN0cmlkZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICBGb3JtYXRDb252ZXJ0ZXIgY29udmVydGVyKHdpZHRoLCBoZWlnaHQsIHNvdXJjZURhdGEsIGRl
c3RpbmF0aW9uRGF0YSwgc3JjU3RyaWRlLCBkc3RTdHJpZGUpOworICAgIGNvbnZlcnRlci5jb252
ZXJ0KHNvdXJjZURhdGFGb3JtYXQsIGRzdERhdGFGb3JtYXQsIGFscGhhT3ApOworICAgIGlmICgh
Y29udmVydGVyLlN1Y2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0
cnVlOworfQorCit1bnNpZ25lZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q2xlYXJCaXRzQnlBdHRh
Y2htZW50VHlwZShHQzNEZW51bSBhdHRhY2htZW50KQoreworICAgIHN3aXRjaCAoYXR0YWNobWVu
dCkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwOgorICAg
IGNhc2UgRXh0ZW5zaW9uczNEOjpDT0xPUl9BVFRBQ0hNRU5UMV9FWFQ6CisgICAgY2FzZSBFeHRl
bnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQyX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6
Q09MT1JfQVRUQUNITUVOVDNfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT0xPUl9BVFRB
Q0hNRU5UNF9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQ1X0VY
VDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09MT1JfQVRUQUNITUVOVDZfRVhUOgorICAgIGNh
c2UgRXh0ZW5zaW9uczNEOjpDT0xPUl9BVFRBQ0hNRU5UN19FWFQ6CisgICAgY2FzZSBFeHRlbnNp
b25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQ4X0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09M
T1JfQVRUQUNITUVOVDlfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT0xPUl9BVFRBQ0hN
RU5UMTBfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT0xPUl9BVFRBQ0hNRU5UMTFfRVhU
OgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT0xPUl9BVFRBQ0hNRU5UMTJfRVhUOgorICAgIGNh
c2UgRXh0ZW5zaW9uczNEOjpDT0xPUl9BVFRBQ0hNRU5UMTNfRVhUOgorICAgIGNhc2UgRXh0ZW5z
aW9uczNEOjpDT0xPUl9BVFRBQ0hNRU5UMTRfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpD
T0xPUl9BVFRBQ0hNRU5UMTVfRVhUOgorICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTE9SX0JVRkZFUl9CSVQ7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRU
QUNITUVOVDoKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9CVUZGRVJf
QklUOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVDoKKyAg
ICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAg
ICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQgfCBHcmFwaGljc0Nv
bnRleHQzRDo6U1RFTkNJTF9CVUZGRVJfQklUOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biAwOworICAgIH0KK30KKwordW5zaWduZWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldENsZWFyQml0
c0J5Rm9ybWF0KEdDM0RlbnVtIGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkxVTUlOQU5DRToKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpMVU1JTkFOQ0VfQUxQ
SEE6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQjU2NToKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE0OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQjVfQTE6CisgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVG
RkVSX0JJVDsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQxNjoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQ6CisgICAgICAgIHJl
dHVybiBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQlVGRkVSX0JJVDsKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpTVEVOQ0lMX0lOREVYODoKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29u
dGV4dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
REVQVEhfU1RFTkNJTDoKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9C
VUZGRVJfQklUIHwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQlVGRkVSX0JJVDsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRDaGFubmVsQml0c0J5Rm9ybWF0KEdDM0RlbnVtIGZvcm1hdCkKK3sKKyAg
ICBzd2l0Y2ggKGZvcm1hdCkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBOgor
ICAgICAgICByZXR1cm4gQ2hhbm5lbEFscGhhOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkxVTUlOQU5DRToKKyAgICAgICAgcmV0dXJuIENoYW5uZWxSR0I7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6TFVNSU5BTkNFX0FMUEhBOgorICAgICAgICByZXR1cm4gQ2hhbm5lbFJHQkE7
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQjU2NToKKyAgICAgICAgcmV0dXJuIENoYW5uZWxSR0I7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6UkdCQToKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBNDoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I1X0ExOgorICAgICAgICByZXR1cm4gQ2hh
bm5lbFJHQkE7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTY6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UOgorICAgICAgICBy
ZXR1cm4gQ2hhbm5lbERlcHRoOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxf
SU5ERVg4OgorICAgICAgICByZXR1cm4gQ2hhbm5lbFN0ZW5jaWw7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTDoKKyAgICAgICAgcmV0dXJuIENoYW5uZWxEZXB0aCB8
IENoYW5uZWxTdGVuY2lsOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0K
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKDNEX0dSQVBISUNT
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3Jt
YXRDb252ZXJ0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyMCAr
MjksMTIgQEAKIAogI2lmIFVTRSgzRF9HUkFQSElDUykKIAotI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNELmgiCi0KLSNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKLSNpbmNsdWRlICJJbWFnZS5o
IgotI2luY2x1ZGUgIkltYWdlRGF0YS5oIgotI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKKyNp
bmNsdWRlICJGb3JtYXRDb252ZXJ0ZXIuaCIKIAogI2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lD
UykKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRE5FT04uaCIKICNlbmRpZgogCi0jaW5jbHVk
ZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+Ci0KIC8vIFZpc3VhbCBTdHVkaW8gY3Jhc2hlcyB3aXRoIGEgQzEwNjMgRmF0YWwgRXJyb3Ig
aWYgZXZlcnl0aGluZyBpcyBpbmxpbmVkLgogI2lmIENPTVBJTEVSKE1TVkMpCiAjZGVmaW5lIEFM
V0FZU19JTkxJTkVfRVhDRVBUX01TVkMKQEAgLTUyLDI5MSArNDQsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLW5hbWVzcGFjZSB7Ci0KLUdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0
IGdldERhdGFGb3JtYXQoR0MzRGVudW0gZGVzdGluYXRpb25Gb3JtYXQsIEdDM0RlbnVtIGRlc3Rp
bmF0aW9uVHlwZSkKLXsKLSAgICBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBkc3RGb3Jt
YXQgPSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE4OwotICAgIHN3aXRjaCAoZGVz
dGluYXRpb25UeXBlKSB7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllU
RToKLSAgICAgICAgc3dpdGNoIChkZXN0aW5hdGlvbkZvcm1hdCkgewotICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0I6Ci0gICAgICAgICAgICBkc3RGb3JtYXQgPSBHcmFwaGljc0Nv
bnRleHQzRDo6RGF0YUZvcm1hdFJHQjg7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQToKLSAgICAgICAgICAgIGRzdEZvcm1hdCA9IEdyYXBo
aWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTg7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QUxQSEE6Ci0gICAgICAgICAgICBkc3RGb3JtYXQg
PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEE4OwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkxVTUlOQU5DRToKLSAgICAgICAgICAgIGRz
dEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0Ujg7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TFVNSU5BTkNFX0FMUEhBOgot
ICAgICAgICAgICAgZHN0Rm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTg7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JUXzRfNF80XzQ6Ci0gICAgICAgIGRzdEZvcm1h
dCA9IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTQ0NDQ7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JUXzVfNV81XzE6Ci0g
ICAgICAgIGRzdEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTU1NTE7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NI
T1JUXzVfNl81OgotICAgICAgICBkc3RGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdFJHQjU2NTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
SEFMRl9GTE9BVF9PRVM6IC8vIE9FU190ZXh0dXJlX2hhbGZfZmxvYXQKLSAgICAgICAgc3dpdGNo
IChkZXN0aW5hdGlvbkZvcm1hdCkgewotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0I6Ci0gICAgICAgICAgICBkc3RGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1h
dFJHQjE2RjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBOgotICAgICAgICAgICAgZHN0Rm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRSR0JBMTZGOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkFMUEhBOgotICAgICAgICAgICAgZHN0Rm9ybWF0ID0gR3JhcGhpY3NDb250
ZXh0M0Q6OkRhdGFGb3JtYXRBMTZGOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkxVTUlOQU5DRToKLSAgICAgICAgICAgIGRzdEZvcm1hdCA9IEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjE2RjsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpMVU1JTkFOQ0VfQUxQSEE6Ci0gICAgICAgICAg
ICBkc3RGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMTZGOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpGTE9BVDogLy8gT0VTX3RleHR1cmVfZmxvYXQKLSAgICAgICAgc3dpdGNoIChkZXN0
aW5hdGlvbkZvcm1hdCkgewotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I6Ci0g
ICAgICAgICAgICBkc3RGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjMy
RjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBOgotICAgICAgICAgICAgZHN0Rm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSR0JBMzJGOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OkFMUEhBOgotICAgICAgICAgICAgZHN0Rm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXRBMzJGOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkxVTUlOQU5DRToKLSAgICAgICAgICAgIGRzdEZvcm1hdCA9IEdyYXBoaWNz
Q29udGV4dDNEOjpEYXRhRm9ybWF0UjMyRjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpMVU1JTkFOQ0VfQUxQSEE6Ci0gICAgICAgICAgICBkc3RG
b3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMzJGOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRzdEZvcm1hdDsKLX0KLQotfSAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCi0KLWJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdl
MkRSZXNvdXJjZVNhZmUoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50
IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBHQzNEaW50IHVucGFja0Fs
aWdubWVudCkKLXsKLSAgICBBU1NFUlQodW5wYWNrQWxpZ25tZW50ID09IDEgfHwgdW5wYWNrQWxp
Z25tZW50ID09IDIgfHwgdW5wYWNrQWxpZ25tZW50ID09IDQgfHwgdW5wYWNrQWxpZ25tZW50ID09
IDgpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBjaGFyW10+IHplcm87Ci0gICAgaWYg
KCFpc1Jlc291cmNlU2FmZSgpICYmIHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKSB7Ci0gICAgICAg
IHVuc2lnbmVkIGludCBzaXplOwotICAgICAgICBHQzNEZW51bSBlcnJvciA9IGNvbXB1dGVJbWFn
ZVNpemVJbkJ5dGVzKGZvcm1hdCwgdHlwZSwgd2lkdGgsIGhlaWdodCwgdW5wYWNrQWxpZ25tZW50
LCAmc2l6ZSwgMCk7Ci0gICAgICAgIGlmIChlcnJvciAhPSBHcmFwaGljc0NvbnRleHQzRDo6Tk9f
RVJST1IpIHsKLSAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKGVycm9yKTsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICB6ZXJvID0gc3RkOjptYWtlX3Vu
aXF1ZTx1bnNpZ25lZCBjaGFyW10+KHNpemUpOwotICAgICAgICBpZiAoIXplcm8pIHsKLSAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVF
KTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBtZW1zZXQo
emVyby5nZXQoKSwgMCwgc2l6ZSk7Ci0gICAgfQotICAgIHJldHVybiB0ZXhJbWFnZTJEKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwg
dHlwZSwgemVyby5nZXQoKSk7Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXB1dGVG
b3JtYXRBbmRUeXBlUGFyYW1ldGVycyhHQzNEZW51bSBmb3JtYXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gdHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQqIGNvbXBvbmVudHNQZXJQaXhlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIGJ5dGVzUGVyQ29tcG9u
ZW50KQotewotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6QUxQSEE6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TFVNSU5BTkNFOgotICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDoKLSAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpERVBUSF9TVEVOQ0lMOgotICAgICAgICAqY29tcG9uZW50c1BlclBpeGVsID0g
MTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TFVNSU5BTkNF
X0FMUEhBOgotICAgICAgICAqY29tcG9uZW50c1BlclBpeGVsID0gMjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCOgotICAgICAgICAqY29tcG9uZW50c1Bl
clBpeGVsID0gMzsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQToKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6QkdSQV9FWFQ6IC8vIEdMX0VYVF90ZXh0dXJl
X2Zvcm1hdF9CR1JBODg4OAotICAgICAgICAqY29tcG9uZW50c1BlclBpeGVsID0gNDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9C
WVRFOgotICAgICAgICAqYnl0ZXNQZXJDb21wb25lbnQgPSBzaXplb2YoR0MzRHVieXRlKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQ6
Ci0gICAgICAgICpieXRlc1BlckNvbXBvbmVudCA9IHNpemVvZihHQzNEdXNob3J0KTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlRfNV82
XzU6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlRfNF80XzRfNDoK
LSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVF81XzVfNV8xOgotICAg
ICAgICAqY29tcG9uZW50c1BlclBpeGVsID0gMTsKLSAgICAgICAgKmJ5dGVzUGVyQ29tcG9uZW50
ID0gc2l6ZW9mKEdDM0R1c2hvcnQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpVTlNJR05FRF9JTlRfMjRfODoKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpVTlNJR05FRF9JTlQ6Ci0gICAgICAgICpieXRlc1BlckNvbXBvbmVudCA9IHNpemVvZihHQzNE
dWludCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FU
OiAvLyBPRVNfdGV4dHVyZV9mbG9hdAotICAgICAgICAqYnl0ZXNQZXJDb21wb25lbnQgPSBzaXpl
b2YoR0MzRGZsb2F0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6SEFMRl9GTE9BVF9PRVM6IC8vIE9FU190ZXh0dXJlX2hhbGZfZmxvYXQKLSAgICAgICAgKmJ5
dGVzUGVyQ29tcG9uZW50ID0gc2l6ZW9mKEdDM0RoYWxmZmxvYXQpOwotICAgICAgICBicmVhazsK
LSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0
cnVlOwotfQotCi1HQzNEZW51bSBHcmFwaGljc0NvbnRleHQzRDo6Y29tcHV0ZUltYWdlU2l6ZUlu
Qnl0ZXMoR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYWxpZ25tZW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogaW1hZ2VTaXplSW5C
eXRlcywgdW5zaWduZWQgaW50KiBwYWRkaW5nSW5CeXRlcykKLXsKLSAgICBBU1NFUlQoaW1hZ2VT
aXplSW5CeXRlcyk7Ci0gICAgQVNTRVJUKGFsaWdubWVudCA9PSAxIHx8IGFsaWdubWVudCA9PSAy
IHx8IGFsaWdubWVudCA9PSA0IHx8IGFsaWdubWVudCA9PSA4KTsKLSAgICBpZiAod2lkdGggPCAw
IHx8IGhlaWdodCA8IDApCi0gICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9WQUxVRTsKLSAgICB1bnNpZ25lZCBpbnQgYnl0ZXNQZXJDb21wb25lbnQsIGNvbXBvbmVudHNQ
ZXJQaXhlbDsKLSAgICBpZiAoIWNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyhmb3JtYXQs
IHR5cGUsICZieXRlc1BlckNvbXBvbmVudCwgJmNvbXBvbmVudHNQZXJQaXhlbCkpCi0gICAgICAg
IHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNOwotICAgIGlmICghd2lkdGgg
fHwgIWhlaWdodCkgewotICAgICAgICAqaW1hZ2VTaXplSW5CeXRlcyA9IDA7Ci0gICAgICAgIGlm
IChwYWRkaW5nSW5CeXRlcykKLSAgICAgICAgICAgICpwYWRkaW5nSW5CeXRlcyA9IDA7Ci0gICAg
ICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1I7Ci0gICAgfQotICAgIENoZWNr
ZWQ8dWludDMyX3QsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkVmFsdWUgPSBieXRlc1BlckNvbXBv
bmVudCAqIGNvbXBvbmVudHNQZXJQaXhlbDsKLSAgICBjaGVja2VkVmFsdWUgKj0gIHdpZHRoOwot
ICAgIGlmIChjaGVja2VkVmFsdWUuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUU7Ci0gICAgdW5zaWduZWQgaW50IHZhbGlkUm93
U2l6ZSA9IGNoZWNrZWRWYWx1ZS51bnNhZmVHZXQoKTsKLSAgICB1bnNpZ25lZCBpbnQgcGFkZGlu
ZyA9IDA7Ci0gICAgdW5zaWduZWQgaW50IHJlc2lkdWFsID0gdmFsaWRSb3dTaXplICUgYWxpZ25t
ZW50OwotICAgIGlmIChyZXNpZHVhbCkgewotICAgICAgICBwYWRkaW5nID0gYWxpZ25tZW50IC0g
cmVzaWR1YWw7Ci0gICAgICAgIGNoZWNrZWRWYWx1ZSArPSBwYWRkaW5nOwotICAgIH0KLSAgICAv
LyBMYXN0IHJvdyBuZWVkcyBubyBwYWRkaW5nLgotICAgIGNoZWNrZWRWYWx1ZSAqPSAoaGVpZ2h0
IC0gMSk7Ci0gICAgY2hlY2tlZFZhbHVlICs9IHZhbGlkUm93U2l6ZTsKLSAgICBpZiAoY2hlY2tl
ZFZhbHVlLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX1ZBTFVFOwotICAgICppbWFnZVNpemVJbkJ5dGVzID0gY2hlY2tlZFZhbHVlLnVu
c2FmZUdldCgpOwotICAgIGlmIChwYWRkaW5nSW5CeXRlcykKLSAgICAgICAgKnBhZGRpbmdJbkJ5
dGVzID0gcGFkZGluZzsKLSAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SOwot
fQotCi1HcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OkltYWdlRXh0cmFjdG9yKElt
YWdlKiBpbWFnZSwgSW1hZ2VIdG1sRG9tU291cmNlIGltYWdlSHRtbERvbVNvdXJjZSwgYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKQotewotICAg
IG1faW1hZ2UgPSBpbWFnZTsKLSAgICBtX2ltYWdlSHRtbERvbVNvdXJjZSA9IGltYWdlSHRtbERv
bVNvdXJjZTsKLSAgICBtX2V4dHJhY3RTdWNjZWVkZWQgPSBleHRyYWN0SW1hZ2UocHJlbXVsdGlw
bHlBbHBoYSwgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpOwotfQotCi1ib29sIEdyYXBoaWNz
Q29udGV4dDNEOjpwYWNrSW1hZ2VEYXRhKAotICAgIEltYWdlKiBpbWFnZSwKLSAgICBjb25zdCB2
b2lkKiBwaXhlbHMsCi0gICAgR0MzRGVudW0gZm9ybWF0LAotICAgIEdDM0RlbnVtIHR5cGUsCi0g
ICAgYm9vbCBmbGlwWSwKLSAgICBBbHBoYU9wIGFscGhhT3AsCi0gICAgRGF0YUZvcm1hdCBzb3Vy
Y2VGb3JtYXQsCi0gICAgdW5zaWduZWQgd2lkdGgsCi0gICAgdW5zaWduZWQgaGVpZ2h0LAotICAg
IHVuc2lnbmVkIHNvdXJjZVVucGFja0FsaWdubWVudCwKLSAgICBWZWN0b3I8dWludDhfdD4mIGRh
dGEpCi17Ci0gICAgaWYgKCFwaXhlbHMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHVu
c2lnbmVkIHBhY2tlZFNpemU7Ci0gICAgLy8gT3V0cHV0IGRhdGEgaXMgdGlnaHRseSBwYWNrZWQg
KGFsaWdubWVudCA9PSAxKS4KLSAgICBpZiAoY29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0
LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCAxLCAmcGFja2VkU2l6ZSwgMCkgIT0gR3JhcGhpY3NDb250
ZXh0M0Q6Ok5PX0VSUk9SKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZGF0YS5yZXNpemUo
cGFja2VkU2l6ZSk7Ci0KLSAgICBpZiAoIXBhY2tQaXhlbHMocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4ocGl4ZWxzKSwgc291cmNlRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VV
bnBhY2tBbGlnbm1lbnQsIGZvcm1hdCwgdHlwZSwgYWxwaGFPcCwgZGF0YS5kYXRhKCksIGZsaXBZ
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChJbWFnZU9ic2VydmVyICpvYnNlcnZl
ciA9IGltYWdlLT5pbWFnZU9ic2VydmVyKCkpCi0gICAgICAgIG9ic2VydmVyLT5kaWREcmF3KGlt
YWdlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6ZXh0
cmFjdEltYWdlRGF0YShJbWFnZURhdGEqIGltYWdlRGF0YSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGZsaXBZLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIHByZW11bHRpcGx5QWxwaGEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKLXsKLSAg
ICBpZiAoIWltYWdlRGF0YSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGludCB3aWR0aCA9
IGltYWdlRGF0YS0+d2lkdGgoKTsKLSAgICBpbnQgaGVpZ2h0ID0gaW1hZ2VEYXRhLT5oZWlnaHQo
KTsKLQotICAgIHVuc2lnbmVkIGludCBwYWNrZWRTaXplOwotICAgIC8vIE91dHB1dCBkYXRhIGlz
IHRpZ2h0bHkgcGFja2VkIChhbGlnbm1lbnQgPT0gMSkuCi0gICAgaWYgKGNvbXB1dGVJbWFnZVNp
emVJbkJ5dGVzKGZvcm1hdCwgdHlwZSwgd2lkdGgsIGhlaWdodCwgMSwgJnBhY2tlZFNpemUsIDAp
ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGRhdGEucmVzaXplKHBhY2tlZFNpemUpOwotCi0gICAgaWYgKCFwYWNrUGl4ZWxzKGltYWdl
RGF0YS0+ZGF0YSgpLT5kYXRhKCksIERhdGFGb3JtYXRSR0JBOCwgd2lkdGgsIGhlaWdodCwgMCwg
Zm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhID8gQWxwaGFEb1ByZW11bHRpcGx5IDogQWxw
aGFEb05vdGhpbmcsIGRhdGEuZGF0YSgpLCBmbGlwWSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEdyYXBoaWNzQ29udGV4dDNEOjpleHRyYWN0
VGV4dHVyZURhdGEodW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwg
R0MzRGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgdW5wYWNrQWxpZ25tZW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgZmxpcFksIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkKiBwaXhl
bHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+JiBkYXRhKQotewotICAgIC8vIEFzc3VtZXMgZm9ybWF0LCB0eXBlLCBldGMuIGhhdmUg
YWxyZWFkeSBiZWVuIHZhbGlkYXRlZC4KLSAgICBEYXRhRm9ybWF0IHNvdXJjZURhdGFGb3JtYXQg
PSBnZXREYXRhRm9ybWF0KGZvcm1hdCwgdHlwZSk7Ci0KLSAgICAvLyBSZXNpemUgdGhlIG91dHB1
dCBidWZmZXIuCi0gICAgdW5zaWduZWQgaW50IGNvbXBvbmVudHNQZXJQaXhlbCwgYnl0ZXNQZXJD
b21wb25lbnQ7Ci0gICAgaWYgKCFjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMoZm9ybWF0
LCB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb21wb25l
bnRzUGVyUGl4ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ5
dGVzUGVyQ29tcG9uZW50KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIGlu
dCBieXRlc1BlclBpeGVsID0gY29tcG9uZW50c1BlclBpeGVsICogYnl0ZXNQZXJDb21wb25lbnQ7
Ci0gICAgZGF0YS5yZXNpemUod2lkdGggKiBoZWlnaHQgKiBieXRlc1BlclBpeGVsKTsKLQotICAg
IGlmICghcGFja1BpeGVscyhzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzKSwgc291
cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgdW5wYWNrQWxpZ25tZW50LCBmb3JtYXQsIHR5
cGUsIChwcmVtdWx0aXBseUFscGhhID8gQWxwaGFEb1ByZW11bHRpcGx5IDogQWxwaGFEb05vdGhp
bmcpLCBkYXRhLmRhdGEoKSwgZmxpcFkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotbmFtZXNwYWNlIHsKIAogLy8gRm9sbG93aW5nIEZsb2F0IHRvIEhh
bGYtRmxvYXQgY29udmVyaW9uIGNvZGUgaXMgZnJvbSB0aGUgaW1wbGVtZW50YXRpb24gb2YgZnRw
Oi8vd3d3LmZveC10b29sa2l0Lm9yZy9wdWIvZmFzdGhhbGZmbG9hdGNvbnZlcnNpb24ucGRmLAog
Ly8gIkZhc3QgSGFsZiBGbG9hdCBDb252ZXJzaW9ucyIgYnkgSmVyb2VuIHZhbiBkZXIgWmlqcCwg
Tm92ZW1iZXIgMjAwOCAoUmV2aXNlZCBTZXB0ZW1iZXIgMjAxMCkuCkBAIC00NTQsNyArMTYxLDcg
QEAgdW5zaWduZWQgY2hhciBzaGlmdFRhYmxlWzUxMl0gPSB7CiAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAxMwogfTsKIAotdW5z
aWduZWQgc2hvcnQgY29udmVydEZsb2F0VG9IYWxmRmxvYXQoZmxvYXQgZikKK2lubGluZSB1bnNp
Z25lZCBzaG9ydCBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChmbG9hdCBmKQogewogICAgIHVuc2ln
bmVkIHRlbXAgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgKj4oJmYpKTsKICAgICB1bnNp
Z25lZCBzaWduZXhwID0gKHRlbXAgPj4gMjMpICYgMHgxZmY7CkBAIC0xMzYxLDQ5ICsxMDY4LDYg
QEAgdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaAogICAgIH0KIH0KIAot
QUxXQVlTX0lOTElORSBib29sIEhhc0FscGhhKGludCBmb3JtYXQpCi17Ci0gICAgcmV0dXJuIGZv
cm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEE4Ci0gICAgICAgIHx8IGZvcm1h
dCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEExNkYKLSAgICAgICAgfHwgZm9ybWF0
ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QTMyRgotICAgICAgICB8fCBmb3JtYXQg
PT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTgKLSAgICAgICAgfHwgZm9ybWF0ID09
IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVI4Ci0gICAgICAgIHx8IGZvcm1hdCA9PSBH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMTZGCi0gICAgICAgIHx8IGZvcm1hdCA9PSBH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMzJGCi0gICAgICAgIHx8IGZvcm1hdCA9PSBH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE4Ci0gICAgICAgIHx8IGZvcm1hdCA9PSBH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEJHUkE4Ci0gICAgICAgIHx8IGZvcm1hdCA9PSBH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSR0I4Ci0gICAgICAgIHx8IGZvcm1hdCA9PSBH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFCR1I4Ci0gICAgICAgIHx8IGZvcm1hdCA9PSBH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkExNkYKLSAgICAgICAgfHwgZm9ybWF0ID09
IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTMyRgotICAgICAgICB8fCBmb3JtYXQg
PT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNDQ0NAotICAgICAgICB8fCBmb3Jt
YXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNTU1MTsKLX0KLQotQUxXQVlT
X0lOTElORSBib29sIEhhc0NvbG9yKGludCBmb3JtYXQpCi17Ci0gICAgcmV0dXJuIGZvcm1hdCA9
PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE4Ci0gICAgICAgIHx8IGZvcm1hdCA9
PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkExNkYKLSAgICAgICAgfHwgZm9ybWF0
ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTMyRgotICAgICAgICB8fCBmb3Jt
YXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0I4Ci0gICAgICAgIHx8IGZvcm1h
dCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjE2RgotICAgICAgICB8fCBmb3Jt
YXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0IzMkYKLSAgICAgICAgfHwgZm9y
bWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QkdSOAotICAgICAgICB8fCBmb3Jt
YXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRCR1JBOAotICAgICAgICB8fCBmb3Jt
YXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBUkdCOAotICAgICAgICB8fCBmb3Jt
YXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBQkdSOAotICAgICAgICB8fCBmb3Jt
YXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNTU1MQotICAgICAgICB8fCBm
b3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNDQ0NAotICAgICAgICB8
fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0I1NjUKLSAgICAgICAg
fHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjgKLSAgICAgICAgfHwg
Zm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjE2RgotICAgICAgICB8fCBm
b3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSMzJGCi0gICAgICAgIHx8IGZv
cm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBOAotICAgICAgICB8fCBmb3Jt
YXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTE2RgotICAgICAgICB8fCBmb3Jt
YXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTMyRgotICAgICAgICB8fCBmb3Jt
YXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBUjg7Ci19Ci0KIHRlbXBsYXRlPGlu
dCBGb3JtYXQ+CiBzdHJ1Y3QgSXNGbG9hdEZvcm1hdCB7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wg
VmFsdWUgPQpAQCAtMTQ1Nyw4MSArMTEyMSw5IEBAIHN0cnVjdCBJbnRlcm1lZGlhdGVGb3JtYXQg
ewogICAgIHN0YXRpYyBjb25zdCBpbnQgVmFsdWUgPSAoSXNGbG9hdEZvcm1hdDxGb3JtYXQ+OjpW
YWx1ZSB8fCBJc0hhbGZGbG9hdEZvcm1hdDxGb3JtYXQ+OjpWYWx1ZSkgPyBHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdFJHQkEzMkYgOiBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJH
QkE4OwogfTsKIAotQUxXQVlTX0lOTElORSB1bnNpZ25lZCBUZXhlbEJ5dGVzRm9yRm9ybWF0KEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IGZvcm1hdCkKLXsKLSAgICBzd2l0Y2ggKGZvcm1h
dCkgewotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSODoKLSAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QTg6Ci0gICAgICAgIHJldHVybiAxOwotICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTg6Ci0gICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSODoKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UkdCQTU1NTE6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1h
dFJHQkE0NDQ0OgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0I1NjU6
Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEExNkY6Ci0gICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFIxNkY6Ci0gICAgICAgIHJldHVybiAyOwotICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0I4OgotICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRCR1I4OgotICAgICAgICByZXR1cm4gMzsKLSAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTg6Ci0gICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6RGF0YUZvcm1hdEFSR0I4OgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRBQkdSODoKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QkdS
QTg6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFIzMkY6Ci0gICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEEzMkY6Ci0gICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6RGF0YUZvcm1hdFJBMTZGOgotICAgICAgICByZXR1cm4gNDsKLSAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCMTZGOgotICAgICAgICByZXR1cm4gNjsKLSAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkEzMkY6Ci0gICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkExNkY6Ci0gICAgICAgIHJldHVybiA4OwotICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0IzMkY6Ci0gICAgICAgIHJldHVy
biAxMjsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTMyRjoKLSAg
ICAgICAgcmV0dXJuIDE2OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0K
LX0KIAogLyogRU5EIENPREUgU0hBUkVEIFdJVEggTU9aSUxMQSBGSVJFRk9YICovCiAKLWNsYXNz
IEZvcm1hdENvbnZlcnRlciB7Ci1wdWJsaWM6Ci0gICAgRm9ybWF0Q29udmVydGVyKHVuc2lnbmVk
IHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsCi0gICAgICAgIGNvbnN0IHZvaWQqIHNyY1N0YXJ0LCB2
b2lkKiBkc3RTdGFydCwgaW50IHNyY1N0cmlkZSwgaW50IGRzdFN0cmlkZSkKLSAgICAgICAgOiBt
X3dpZHRoKHdpZHRoKSwgbV9oZWlnaHQoaGVpZ2h0KSwgbV9zcmNTdGFydChzcmNTdGFydCksIG1f
ZHN0U3RhcnQoZHN0U3RhcnQpLCBtX3NyY1N0cmlkZShzcmNTdHJpZGUpLCBtX2RzdFN0cmlkZShk
c3RTdHJpZGUpLCBtX3N1Y2Nlc3MoZmFsc2UpCi0gICAgewotICAgICAgICBjb25zdCB1bnNpZ25l
ZCBNYXhOdW1iZXJPZkNvbXBvbmVudHMgPSA0OwotICAgICAgICBjb25zdCB1bnNpZ25lZCBNYXhC
eXRlc1BlckNvbXBvbmVudCAgPSA0OwotICAgICAgICBtX3VucGFja2VkSW50ZXJtZWRpYXRlU3Jj
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDhfdFtdPihtX3dpZHRoICogTWF4TnVtYmVyT2ZD
b21wb25lbnRzICogTWF4Qnl0ZXNQZXJDb21wb25lbnQpOwotCi0gICAgICAgIEFTU0VSVChtX3Vu
cGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YS5nZXQoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBjb252
ZXJ0KEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IHNyY0Zvcm1hdCwgR3JhcGhpY3NDb250
ZXh0M0Q6OkRhdGFGb3JtYXQgZHN0Rm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFPcCk7
Ci0gICAgYm9vbCBTdWNjZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZXNzOyB9Ci0KLXByaXZh
dGU6Ci0gICAgdGVtcGxhdGU8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgU3JjRm9ybWF0
PgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjb252ZXJ0KEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0IGRzdEZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhT3ApOwotCi0gICAgdGVt
cGxhdGU8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgU3JjRm9ybWF0LCBHcmFwaGljc0Nv
bnRleHQzRDo6RGF0YUZvcm1hdCBEc3RGb3JtYXQ+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGNv
bnZlcnQoR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhT3ApOwotCi0gICAgdGVtcGxhdGU8R3JhcGhp
Y3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgU3JjRm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdCBEc3RGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYU9wIGFscGhhT3A+Ci0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIGNvbnZlcnQoKTsKLQotICAgIGNvbnN0IHVuc2lnbmVkIG1f
d2lkdGgsIG1faGVpZ2h0OwotICAgIGNvbnN0IHZvaWQqIGNvbnN0IG1fc3JjU3RhcnQ7Ci0gICAg
dm9pZCogY29uc3QgbV9kc3RTdGFydDsKLSAgICBjb25zdCBpbnQgbV9zcmNTdHJpZGUsIG1fZHN0
U3RyaWRlOwotICAgIGJvb2wgbV9zdWNjZXNzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90
W10+IG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhOwotfTsKLQogdm9pZCBGb3JtYXRDb252
ZXJ0ZXI6OmNvbnZlcnQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgc3JjRm9ybWF0LCBH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBkc3RGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNE
OjpBbHBoYU9wIGFscGhhT3ApCiB7CiAjZGVmaW5lIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZP
Uk1BVChTcmNGb3JtYXQpIFwKQEAgLTE2MzgsNyArMTIzMCw3IEBAIEFMV0FZU19JTkxJTkVfRVhD
RVBUX01TVkMgdm9pZCBGb3JtYXRDb24KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCghSGFzQWxwaGEoU3JjRm9ybWF0KSB8fCAh
SGFzQ29sb3IoU3JjRm9ybWF0KSB8fCAhSGFzQ29sb3IoRHN0Rm9ybWF0KSkgJiYgYWxwaGFPcCAh
PSBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcpIHsKKyAgICBpZiAoKCFHcmFwaGlj
c0NvbnRleHQzRDo6aGFzQWxwaGEoU3JjRm9ybWF0KSB8fCAhR3JhcGhpY3NDb250ZXh0M0Q6Omhh
c0NvbG9yKFNyY0Zvcm1hdCkgfHwgIUdyYXBoaWNzQ29udGV4dDNEOjpoYXNDb2xvcihEc3RGb3Jt
YXQpKSAmJiBhbHBoYU9wICE9IEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZykgewog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTE2NzksMTI2ICsxMjcxLDYgQEAgQUxXQVlTX0lOTElORV9FWENFUFRfTVNWQyB2b2lkIEZvcm1h
dENvbgogICAgIHJldHVybjsKIH0KIAotfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCi0KLWJvb2wg
R3JhcGhpY3NDb250ZXh0M0Q6OnBhY2tQaXhlbHMoY29uc3QgdWludDhfdCogc291cmNlRGF0YSwg
RGF0YUZvcm1hdCBzb3VyY2VEYXRhRm9ybWF0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVp
Z2h0LCB1bnNpZ25lZCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIHVuc2lnbmVkIGRlc3RpbmF0aW9u
Rm9ybWF0LCB1bnNpZ25lZCBkZXN0aW5hdGlvblR5cGUsIEFscGhhT3AgYWxwaGFPcCwgdm9pZCog
ZGVzdGluYXRpb25EYXRhLCBib29sIGZsaXBZKQotewotICAgIGludCB2YWxpZFNyYyA9IHdpZHRo
ICogVGV4ZWxCeXRlc0ZvckZvcm1hdChzb3VyY2VEYXRhRm9ybWF0KTsKLSAgICBpbnQgcmVtYWlu
ZGVyID0gc291cmNlVW5wYWNrQWxpZ25tZW50ID8gKHZhbGlkU3JjICUgc291cmNlVW5wYWNrQWxp
Z25tZW50KSA6IDA7Ci0gICAgaW50IHNyY1N0cmlkZSA9IHJlbWFpbmRlciA/ICh2YWxpZFNyYyAr
IHNvdXJjZVVucGFja0FsaWdubWVudCAtIHJlbWFpbmRlcikgOiB2YWxpZFNyYzsKLQotICAgIERh
dGFGb3JtYXQgZHN0RGF0YUZvcm1hdCA9IGdldERhdGFGb3JtYXQoZGVzdGluYXRpb25Gb3JtYXQs
IGRlc3RpbmF0aW9uVHlwZSk7Ci0gICAgaW50IGRzdFN0cmlkZSA9IHdpZHRoICogVGV4ZWxCeXRl
c0ZvckZvcm1hdChkc3REYXRhRm9ybWF0KTsKLSAgICBpZiAoZmxpcFkpIHsKLSAgICAgICAgZGVz
dGluYXRpb25EYXRhID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRlc3RpbmF0aW9uRGF0YSkgKyBk
c3RTdHJpZGUqKGhlaWdodCAtIDEpOwotICAgICAgICBkc3RTdHJpZGUgPSAtZHN0U3RyaWRlOwot
ICAgIH0KLSAgICBpZiAoIUhhc0FscGhhKHNvdXJjZURhdGFGb3JtYXQpIHx8ICFIYXNDb2xvcihz
b3VyY2VEYXRhRm9ybWF0KSB8fCAhSGFzQ29sb3IoZHN0RGF0YUZvcm1hdCkpCi0gICAgICAgIGFs
cGhhT3AgPSBBbHBoYURvTm90aGluZzsKLQotICAgIGlmIChzb3VyY2VEYXRhRm9ybWF0ID09IGRz
dERhdGFGb3JtYXQgJiYgYWxwaGFPcCA9PSBBbHBoYURvTm90aGluZykgewotICAgICAgICBjb25z
dCB1aW50OF90KiBwdHIgPSBzb3VyY2VEYXRhOwotICAgICAgICBjb25zdCB1aW50OF90KiBwdHJF
bmQgPSBzb3VyY2VEYXRhICsgc3JjU3RyaWRlICogaGVpZ2h0OwotICAgICAgICB1bnNpZ25lZCBy
b3dTaXplID0gKGRzdFN0cmlkZSA+IDApID8gZHN0U3RyaWRlOiAtZHN0U3RyaWRlOwotICAgICAg
ICB1aW50OF90KiBkc3QgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGVzdGluYXRpb25EYXRhKTsK
LSAgICAgICAgd2hpbGUgKHB0ciA8IHB0ckVuZCkgewotICAgICAgICAgICAgbWVtY3B5KGRzdCwg
cHRyLCByb3dTaXplKTsKLSAgICAgICAgICAgIHB0ciArPSBzcmNTdHJpZGU7Ci0gICAgICAgICAg
ICBkc3QgKz0gZHN0U3RyaWRlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLQotICAgIEZvcm1hdENvbnZlcnRlciBjb252ZXJ0ZXIod2lkdGgsIGhlaWdodCwgc291cmNl
RGF0YSwgZGVzdGluYXRpb25EYXRhLCBzcmNTdHJpZGUsIGRzdFN0cmlkZSk7Ci0gICAgY29udmVy
dGVyLmNvbnZlcnQoc291cmNlRGF0YUZvcm1hdCwgZHN0RGF0YUZvcm1hdCwgYWxwaGFPcCk7Ci0g
ICAgaWYgKCFjb252ZXJ0ZXIuU3VjY2VzcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLXVuc2lnbmVkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRDbGVhckJp
dHNCeUF0dGFjaG1lbnRUeXBlKEdDM0RlbnVtIGF0dGFjaG1lbnQpCi17Ci0gICAgc3dpdGNoIChh
dHRhY2htZW50KSB7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVO
VDA6Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQxX0VYVDoKLSAgICBj
YXNlIEV4dGVuc2lvbnMzRDo6Q09MT1JfQVRUQUNITUVOVDJfRVhUOgotICAgIGNhc2UgRXh0ZW5z
aW9uczNEOjpDT0xPUl9BVFRBQ0hNRU5UM19FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNP
TE9SX0FUVEFDSE1FTlQ0X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09MT1JfQVRUQUNI
TUVOVDVfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT0xPUl9BVFRBQ0hNRU5UNl9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQ3X0VYVDoKLSAgICBjYXNl
IEV4dGVuc2lvbnMzRDo6Q09MT1JfQVRUQUNITUVOVDhfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9u
czNEOjpDT0xPUl9BVFRBQ0hNRU5UOV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTE9S
X0FUVEFDSE1FTlQxMF9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1F
TlQxMV9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQxMl9FWFQ6
Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQxM19FWFQ6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQxNF9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNp
b25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQxNV9FWFQ6Ci0gICAgICAgIHJldHVybiBHcmFwaGljc0Nv
bnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJVDsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9BVFRBQ0hNRU5UOgotICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRI
X0JVRkZFUl9CSVQ7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hN
RU5UOgotICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQlVGRkVSX0JJ
VDsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQ6
Ci0gICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQlVGRkVSX0JJVCB8IEdy
YXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7Ci0gICAgZGVmYXVsdDoKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotfQotCi11bnNpZ25lZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
Q2xlYXJCaXRzQnlGb3JtYXQoR0MzRGVudW0gZm9ybWF0KQotewotICAgIHN3aXRjaCAoZm9ybWF0
KSB7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QUxQSEE6Ci0gICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6TFVNSU5BTkNFOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkxVTUlO
QU5DRV9BTFBIQToKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I6Ci0gICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6UkdCNTY1OgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkE6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTQ6Ci0gICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCNV9BMToKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpD
T0xPUl9CVUZGRVJfQklUOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBP
TkVOVDE2OgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDoKLSAg
ICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9CVUZGRVJfQklUOwotICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfSU5ERVg4OgotICAgICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQlVGRkVSX0JJVDsKLSAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpERVBUSF9TVEVOQ0lMOgotICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6
OkRFUFRIX0JVRkZFUl9CSVQgfCBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9CVUZGRVJfQklU
OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLX0KLQotdW5zaWduZWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldENoYW5uZWxCaXRzQnlGb3JtYXQoR0MzRGVudW0gZm9ybWF0
KQotewotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
QUxQSEE6Ci0gICAgICAgIHJldHVybiBDaGFubmVsQWxwaGE7Ci0gICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6TFVNSU5BTkNFOgotICAgICAgICByZXR1cm4gQ2hhbm5lbFJHQjsKLSAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpMVU1JTkFOQ0VfQUxQSEE6Ci0gICAgICAgIHJldHVybiBDaGFu
bmVsUkdCQTsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I6Ci0gICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6UkdCNTY1OgotICAgICAgICByZXR1cm4gQ2hhbm5lbFJHQjsKLSAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkE0OgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQjVfQTE6Ci0gICAgICAgIHJl
dHVybiBDaGFubmVsUkdCQTsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01Q
T05FTlQxNjoKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQ6Ci0g
ICAgICAgIHJldHVybiBDaGFubmVsRGVwdGg7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
U1RFTkNJTF9JTkRFWDg6Ci0gICAgICAgIHJldHVybiBDaGFubmVsU3RlbmNpbDsKLSAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMOgotICAgICAgICByZXR1cm4gQ2hhbm5l
bERlcHRoIHwgQ2hhbm5lbFN0ZW5jaWw7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoM0Rf
R1JBUEhJQ1MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRD
b252ZXJ0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb3JtYXRDb252ZXJ0ZXIuaAkocmV2aXNpb24gMTYxNzY5KQkoZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHA6MTYxNzY5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxODA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIE1vemlsbGEg
Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIFVTRSgzRF9HUkFQSElDUykKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCisKKyNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgor
I2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKKworI2lm
IEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRE5F
T04uaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKy8vIFZpc3VhbCBTdHVkaW8gY3Jhc2hlcyB3
aXRoIGEgQzEwNjMgRmF0YWwgRXJyb3IgaWYgZXZlcnl0aGluZyBpcyBpbmxpbmVkLgorI2lmIENP
TVBJTEVSKE1TVkMpCisjZGVmaW5lIEFMV0FZU19JTkxJTkVfRVhDRVBUX01TVkMKKyNlbHNlCisj
ZGVmaW5lIEFMV0FZU19JTkxJTkVfRVhDRVBUX01TVkMgQUxXQVlTX0lOTElORQorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIHsKKworR3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXQgZ2V0RGF0YUZvcm1hdChHQzNEZW51bSBkZXN0aW5hdGlvbkZvcm1hdCwgR0Mz
RGVudW0gZGVzdGluYXRpb25UeXBlKQoreworICAgIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9y
bWF0IGRzdEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTg7CisgICAg
c3dpdGNoIChkZXN0aW5hdGlvblR5cGUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpV
TlNJR05FRF9CWVRFOgorICAgICAgICBzd2l0Y2ggKGRlc3RpbmF0aW9uRm9ybWF0KSB7CisgICAg
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQjoKKyAgICAgICAgICAgIGRzdEZvcm1hdCA9
IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCODsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOgorICAgICAgICAgICAgZHN0Rm9y
bWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBODsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBTFBIQToKKyAgICAgICAgICAg
IGRzdEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QTg7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TFVNSU5BTkNFOgorICAg
ICAgICAgICAgZHN0Rm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSODsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpMVU1JTkFO
Q0VfQUxQSEE6CisgICAgICAgICAgICBkc3RGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdFJBODsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlRfNF80XzRfNDoKKyAgICAg
ICAgZHN0Rm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNDQ0NDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlRf
NV81XzVfMToKKyAgICAgICAgZHN0Rm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSR0JBNTU1MTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfU0hPUlRfNV82XzU6CisgICAgICAgIGRzdEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4
dDNEOjpEYXRhRm9ybWF0UkdCNTY1OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpIQUxGX0ZMT0FUX09FUzogLy8gT0VTX3RleHR1cmVfaGFsZl9mbG9hdAorICAg
ICAgICBzd2l0Y2ggKGRlc3RpbmF0aW9uRm9ybWF0KSB7CisgICAgICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQjoKKyAgICAgICAgICAgIGRzdEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0UkdCMTZGOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJHQkE6CisgICAgICAgICAgICBkc3RGb3JtYXQgPSBHcmFwaGljc0Nv
bnRleHQzRDo6RGF0YUZvcm1hdFJHQkExNkY7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QUxQSEE6CisgICAgICAgICAgICBkc3RGb3JtYXQgPSBH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEExNkY7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TFVNSU5BTkNFOgorICAgICAgICAgICAgZHN0
Rm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSMTZGOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkxVTUlOQU5DRV9BTFBIQToK
KyAgICAgICAgICAgIGRzdEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkEx
NkY7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOiAvLyBPRVNfdGV4dHVyZV9mbG9hdAorICAgICAgICBz
d2l0Y2ggKGRlc3RpbmF0aW9uRm9ybWF0KSB7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQjoKKyAgICAgICAgICAgIGRzdEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0UkdCMzJGOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkE6CisgICAgICAgICAgICBkc3RGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdFJHQkEzMkY7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6QUxQSEE6CisgICAgICAgICAgICBkc3RGb3JtYXQgPSBHcmFwaGlj
c0NvbnRleHQzRDo6RGF0YUZvcm1hdEEzMkY7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TFVNSU5BTkNFOgorICAgICAgICAgICAgZHN0Rm9ybWF0
ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSMzJGOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkxVTUlOQU5DRV9BTFBIQToKKyAgICAg
ICAgICAgIGRzdEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkEzMkY7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gZHN0Rm9ybWF0
OworfQorCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKworYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
IEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWln
aHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEdDM0Rp
bnQgdW5wYWNrQWxpZ25tZW50KQoreworICAgIEFTU0VSVCh1bnBhY2tBbGlnbm1lbnQgPT0gMSB8
fCB1bnBhY2tBbGlnbm1lbnQgPT0gMiB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gNCB8fCB1bnBhY2tB
bGlnbm1lbnQgPT0gOCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNoYXJbXT4gemVy
bzsKKyAgICBpZiAoIWlzUmVzb3VyY2VTYWZlKCkgJiYgd2lkdGggPiAwICYmIGhlaWdodCA+IDAp
IHsKKyAgICAgICAgdW5zaWduZWQgaW50IHNpemU7CisgICAgICAgIEdDM0RlbnVtIGVycm9yID0g
Y29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCB1bnBh
Y2tBbGlnbm1lbnQsICZzaXplLCAwKTsKKyAgICAgICAgaWYgKGVycm9yICE9IEdyYXBoaWNzQ29u
dGV4dDNEOjpOT19FUlJPUikgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3Ip
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHplcm8gPSBz
dGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkIGNoYXJbXT4oc2l6ZSk7CisgICAgICAgIGlmICghemVy
bykgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklO
VkFMSURfVkFMVUUpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIG1lbXNldCh6ZXJvLmdldCgpLCAwLCBzaXplKTsKKyAgICB9CisgICAgcmV0dXJuIHRleElt
YWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRl
ciwgZm9ybWF0LCB0eXBlLCB6ZXJvLmdldCgpKTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6Y29tcHV0ZUZvcm1hdEFuZFR5cGVQYXJhbWV0ZXJzKEdDM0RlbnVtIGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51
bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCogY29tcG9uZW50c1BlclBpeGVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogYnl0
ZXNQZXJDb21wb25lbnQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpBTFBIQToKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpMVU1JTkFO
Q0U6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5DSUw6CisgICAgICAgICpjb21wb25lbnRz
UGVyUGl4ZWwgPSAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpMVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgICpjb21wb25lbnRzUGVyUGl4ZWwgPSAyOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I6CisgICAgICAgICpj
b21wb25lbnRzUGVyUGl4ZWwgPSAzOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpCR1JBX0VYVDogLy8gR0xf
RVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4CisgICAgICAgICpjb21wb25lbnRzUGVyUGl4ZWwg
PSA0OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlVOU0lHTkVEX0JZVEU6CisgICAgICAgICpieXRlc1BlckNvbXBvbmVudCA9IHNpemVvZihHQzNE
dWJ5dGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJ
R05FRF9TSE9SVDoKKyAgICAgICAgKmJ5dGVzUGVyQ29tcG9uZW50ID0gc2l6ZW9mKEdDM0R1c2hv
cnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05F
RF9TSE9SVF81XzZfNToKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9S
VF80XzRfNF80OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JUXzVf
NV81XzE6CisgICAgICAgICpjb21wb25lbnRzUGVyUGl4ZWwgPSAxOworICAgICAgICAqYnl0ZXNQ
ZXJDb21wb25lbnQgPSBzaXplb2YoR0MzRHVzaG9ydCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0lOVF8yNF84OgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlVOU0lHTkVEX0lOVDoKKyAgICAgICAgKmJ5dGVzUGVyQ29tcG9uZW50ID0g
c2l6ZW9mKEdDM0R1aW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6RkxPQVQ6IC8vIE9FU190ZXh0dXJlX2Zsb2F0CisgICAgICAgICpieXRlc1BlckNvbXBv
bmVudCA9IHNpemVvZihHQzNEZmxvYXQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpIQUxGX0ZMT0FUX09FUzogLy8gT0VTX3RleHR1cmVfaGFsZl9mbG9hdAor
ICAgICAgICAqYnl0ZXNQZXJDb21wb25lbnQgPSBzaXplb2YoR0MzRGhhbGZmbG9hdCk7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK0dDM0RlbnVtIEdyYXBoaWNzQ29udGV4dDNEOjpjb21wdXRl
SW1hZ2VTaXplSW5CeXRlcyhHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEdDM0RzaXpl
aSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBhbGlnbm1lbnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBp
bWFnZVNpemVJbkJ5dGVzLCB1bnNpZ25lZCBpbnQqIHBhZGRpbmdJbkJ5dGVzKQoreworICAgIEFT
U0VSVChpbWFnZVNpemVJbkJ5dGVzKTsKKyAgICBBU1NFUlQoYWxpZ25tZW50ID09IDEgfHwgYWxp
Z25tZW50ID09IDIgfHwgYWxpZ25tZW50ID09IDQgfHwgYWxpZ25tZW50ID09IDgpOworICAgIGlm
ICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4
dDNEOjpJTlZBTElEX1ZBTFVFOworICAgIHVuc2lnbmVkIGludCBieXRlc1BlckNvbXBvbmVudCwg
Y29tcG9uZW50c1BlclBpeGVsOworICAgIGlmICghY29tcHV0ZUZvcm1hdEFuZFR5cGVQYXJhbWV0
ZXJzKGZvcm1hdCwgdHlwZSwgJmJ5dGVzUGVyQ29tcG9uZW50LCAmY29tcG9uZW50c1BlclBpeGVs
KSkKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU07CisgICAg
aWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSB7CisgICAgICAgICppbWFnZVNpemVJbkJ5dGVzID0gMDsK
KyAgICAgICAgaWYgKHBhZGRpbmdJbkJ5dGVzKQorICAgICAgICAgICAgKnBhZGRpbmdJbkJ5dGVz
ID0gMDsKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUjsKKyAgICB9
CisgICAgQ2hlY2tlZDx1aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRWYWx1ZSA9IGJ5
dGVzUGVyQ29tcG9uZW50ICogY29tcG9uZW50c1BlclBpeGVsOworICAgIGNoZWNrZWRWYWx1ZSAq
PSAgd2lkdGg7CisgICAgaWYgKGNoZWNrZWRWYWx1ZS5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAg
IHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRTsKKyAgICB1bnNpZ25lZCBp
bnQgdmFsaWRSb3dTaXplID0gY2hlY2tlZFZhbHVlLnVuc2FmZUdldCgpOworICAgIHVuc2lnbmVk
IGludCBwYWRkaW5nID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgcmVzaWR1YWwgPSB2YWxpZFJvd1Np
emUgJSBhbGlnbm1lbnQ7CisgICAgaWYgKHJlc2lkdWFsKSB7CisgICAgICAgIHBhZGRpbmcgPSBh
bGlnbm1lbnQgLSByZXNpZHVhbDsKKyAgICAgICAgY2hlY2tlZFZhbHVlICs9IHBhZGRpbmc7Cisg
ICAgfQorICAgIC8vIExhc3Qgcm93IG5lZWRzIG5vIHBhZGRpbmcuCisgICAgY2hlY2tlZFZhbHVl
ICo9IChoZWlnaHQgLSAxKTsKKyAgICBjaGVja2VkVmFsdWUgKz0gdmFsaWRSb3dTaXplOworICAg
IGlmIChjaGVja2VkVmFsdWUuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1cm4gR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUU7CisgICAgKmltYWdlU2l6ZUluQnl0ZXMgPSBjaGVj
a2VkVmFsdWUudW5zYWZlR2V0KCk7CisgICAgaWYgKHBhZGRpbmdJbkJ5dGVzKQorICAgICAgICAq
cGFkZGluZ0luQnl0ZXMgPSBwYWRkaW5nOworICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6
Tk9fRVJST1I7Cit9CisKK0dyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6SW1hZ2VF
eHRyYWN0b3IoSW1hZ2UqIGltYWdlLCBJbWFnZUh0bWxEb21Tb3VyY2UgaW1hZ2VIdG1sRG9tU291
cmNlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2Zp
bGUpCit7CisgICAgbV9pbWFnZSA9IGltYWdlOworICAgIG1faW1hZ2VIdG1sRG9tU291cmNlID0g
aW1hZ2VIdG1sRG9tU291cmNlOworICAgIG1fZXh0cmFjdFN1Y2NlZWRlZCA9IGV4dHJhY3RJbWFn
ZShwcmVtdWx0aXBseUFscGhhLCBpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSk7Cit9CisKK2Jv
b2wgR3JhcGhpY3NDb250ZXh0M0Q6OnBhY2tJbWFnZURhdGEoCisgICAgSW1hZ2UqIGltYWdlLAor
ICAgIGNvbnN0IHZvaWQqIHBpeGVscywKKyAgICBHQzNEZW51bSBmb3JtYXQsCisgICAgR0MzRGVu
dW0gdHlwZSwKKyAgICBib29sIGZsaXBZLAorICAgIEFscGhhT3AgYWxwaGFPcCwKKyAgICBEYXRh
Rm9ybWF0IHNvdXJjZUZvcm1hdCwKKyAgICB1bnNpZ25lZCB3aWR0aCwKKyAgICB1bnNpZ25lZCBo
ZWlnaHQsCisgICAgdW5zaWduZWQgc291cmNlVW5wYWNrQWxpZ25tZW50LAorICAgIFZlY3Rvcjx1
aW50OF90PiYgZGF0YSkKK3sKKyAgICBpZiAoIXBpeGVscykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgdW5zaWduZWQgcGFja2VkU2l6ZTsKKyAgICAvLyBPdXRwdXQgZGF0YSBpcyB0aWdo
dGx5IHBhY2tlZCAoYWxpZ25tZW50ID09IDEpLgorICAgIGlmIChjb21wdXRlSW1hZ2VTaXplSW5C
eXRlcyhmb3JtYXQsIHR5cGUsIHdpZHRoLCBoZWlnaHQsIDEsICZwYWNrZWRTaXplLCAwKSAhPSBH
cmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBk
YXRhLnJlc2l6ZShwYWNrZWRTaXplKTsKKworICAgIGlmICghcGFja1BpeGVscyhyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMpLCBzb3VyY2VGb3JtYXQsIHdpZHRoLCBoZWln
aHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZm9ybWF0LCB0eXBlLCBhbHBoYU9wLCBkYXRhLmRh
dGEoKSwgZmxpcFkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKEltYWdlT2JzZXJ2
ZXIgKm9ic2VydmVyID0gaW1hZ2UtPmltYWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAgb2JzZXJ2ZXIt
PmRpZERyYXcoaW1hZ2UpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEdyYXBoaWNzQ29u
dGV4dDNEOjpleHRyYWN0SW1hZ2VEYXRhKEltYWdlRGF0YSogaW1hZ2VEYXRhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIHR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmxpcFksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+JiBk
YXRhKQoreworICAgIGlmICghaW1hZ2VEYXRhKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aW50IHdpZHRoID0gaW1hZ2VEYXRhLT53aWR0aCgpOworICAgIGludCBoZWlnaHQgPSBpbWFnZURh
dGEtPmhlaWdodCgpOworCisgICAgdW5zaWduZWQgaW50IHBhY2tlZFNpemU7CisgICAgLy8gT3V0
cHV0IGRhdGEgaXMgdGlnaHRseSBwYWNrZWQgKGFsaWdubWVudCA9PSAxKS4KKyAgICBpZiAoY29t
cHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCAxLCAmcGFj
a2VkU2l6ZSwgMCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgZGF0YS5yZXNpemUocGFja2VkU2l6ZSk7CisKKyAgICBpZiAoIXBhY2tQ
aXhlbHMoaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSwgRGF0YUZvcm1hdFJHQkE4LCB3aWR0aCwg
aGVpZ2h0LCAwLCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEgPyBBbHBoYURvUHJlbXVs
dGlwbHkgOiBBbHBoYURvTm90aGluZywgZGF0YS5kYXRhKCksIGZsaXBZKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OmV4dHJhY3RUZXh0dXJlRGF0YSh1bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGludCBo
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVu
dW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCB1bnBhY2tBbGlnbm1lbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBs
eUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQqIHBpeGVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWZWN0b3I8dWludDhfdD4mIGRhdGEpCit7CisgICAgLy8gQXNzdW1lcyBmb3JtYXQsIHR5cGUs
IGV0Yy4gaGF2ZSBhbHJlYWR5IGJlZW4gdmFsaWRhdGVkLgorICAgIERhdGFGb3JtYXQgc291cmNl
RGF0YUZvcm1hdCA9IGdldERhdGFGb3JtYXQoZm9ybWF0LCB0eXBlKTsKKworICAgIC8vIFJlc2l6
ZSB0aGUgb3V0cHV0IGJ1ZmZlci4KKyAgICB1bnNpZ25lZCBpbnQgY29tcG9uZW50c1BlclBpeGVs
LCBieXRlc1BlckNvbXBvbmVudDsKKyAgICBpZiAoIWNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1l
dGVycyhmb3JtYXQsIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmNvbXBvbmVudHNQZXJQaXhlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmYnl0ZXNQZXJDb21wb25lbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
dW5zaWduZWQgaW50IGJ5dGVzUGVyUGl4ZWwgPSBjb21wb25lbnRzUGVyUGl4ZWwgKiBieXRlc1Bl
ckNvbXBvbmVudDsKKyAgICBkYXRhLnJlc2l6ZSh3aWR0aCAqIGhlaWdodCAqIGJ5dGVzUGVyUGl4
ZWwpOworCisgICAgaWYgKCFwYWNrUGl4ZWxzKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihw
aXhlbHMpLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCB1bnBhY2tBbGlnbm1lbnQs
IGZvcm1hdCwgdHlwZSwgKHByZW11bHRpcGx5QWxwaGEgPyBBbHBoYURvUHJlbXVsdGlwbHkgOiBB
bHBoYURvTm90aGluZyksIGRhdGEuZGF0YSgpLCBmbGlwWSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiB0cnVlOworfQorCituYW1lc3BhY2UgeworCisvLyBGb2xsb3dpbmcg
RmxvYXQgdG8gSGFsZi1GbG9hdCBjb252ZXJpb24gY29kZSBpcyBmcm9tIHRoZSBpbXBsZW1lbnRh
dGlvbiBvZiBmdHA6Ly93d3cuZm94LXRvb2xraXQub3JnL3B1Yi9mYXN0aGFsZmZsb2F0Y29udmVy
c2lvbi5wZGYsCisvLyAiRmFzdCBIYWxmIEZsb2F0IENvbnZlcnNpb25zIiBieSBKZXJvZW4gdmFu
IGRlciBaaWpwLCBOb3ZlbWJlciAyMDA4IChSZXZpc2VkIFNlcHRlbWJlciAyMDEwKS4KKy8vIFNw
ZWNpYWxseSwgdGhlIGJhc2V0YWJsZVs1MTJdIGFuZCBzaGlmdHRhYmxlWzUxMl0gYXJlIGdlbmVy
YXRlZCBhcyBmb2xsb3dzOgorLyoKK3Vuc2lnbmVkIHNob3J0IGJhc2V0YWJsZVs1MTJdOwordW5z
aWduZWQgY2hhciBzaGlmdHRhYmxlWzUxMl07CisKK3ZvaWQgZ2VuZXJhdGV0YWJsZXMoKXsKKyAg
ICB1bnNpZ25lZCBpbnQgaTsKKyAgICBpbnQgZTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyAr
K2kpeworICAgICAgICBlID0gaSAtIDEyNzsKKyAgICAgICAgaWYgKGUgPCAtMjQpeyAvLyBWZXJ5
IHNtYWxsIG51bWJlcnMgbWFwIHRvIHplcm8KKyAgICAgICAgICAgIGJhc2V0YWJsZVtpIHwgMHgw
MDBdID0gMHgwMDAwOworICAgICAgICAgICAgYmFzZXRhYmxlW2kgfCAweDEwMF0gPSAweDgwMDA7
CisgICAgICAgICAgICBzaGlmdHRhYmxlW2kgfCAweDAwMF0gPSAyNDsKKyAgICAgICAgICAgIHNo
aWZ0dGFibGVbaSB8IDB4MTAwXSA9IDI0OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGUg
PCAtMTQpIHsgLy8gU21hbGwgbnVtYmVycyBtYXAgdG8gZGVub3JtcworICAgICAgICAgICAgYmFz
ZXRhYmxlW2kgfCAweDAwMF0gPSAoMHgwNDAwPj4oLWUtMTQpKTsKKyAgICAgICAgICAgIGJhc2V0
YWJsZVtpIHwgMHgxMDBdID0gKDB4MDQwMD4+KC1lLTE0KSkgfCAweDgwMDA7CisgICAgICAgICAg
ICBzaGlmdHRhYmxlW2kgfCAweDAwMF0gPSAtZS0xOworICAgICAgICAgICAgc2hpZnR0YWJsZVtp
IHwgMHgxMDBdID0gLWUtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlIDw9IDE1KXsg
Ly8gTm9ybWFsIG51bWJlcnMganVzdCBsb3NlIHByZWNpc2lvbgorICAgICAgICAgICAgYmFzZXRh
YmxlW2kgfCAweDAwMF0gPSAoKGUrMTUpPDwxMCk7CisgICAgICAgICAgICBiYXNldGFibGVbaXwg
MHgxMDBdID0gKChlKzE1KTw8MTApIHwgMHg4MDAwOworICAgICAgICAgICAgc2hpZnR0YWJsZVtp
fDB4MDAwXSA9IDEzOworICAgICAgICAgICAgc2hpZnR0YWJsZVtpfDB4MTAwXSA9IDEzOworICAg
ICAgICB9CisgICAgICAgIGVsc2UgaWYgKGU8MTI4KXsgLy8gTGFyZ2UgbnVtYmVycyBtYXAgdG8g
SW5maW5pdHkKKyAgICAgICAgICAgIGJhc2V0YWJsZVtpfDB4MDAwXSA9IDB4N0MwMDsKKyAgICAg
ICAgICAgIGJhc2V0YWJsZVtpfDB4MTAwXSA9IDB4RkMwMDsKKyAgICAgICAgICAgIHNoaWZ0dGFi
bGVbaXwweDAwMF0gPSAyNDsKKyAgICAgICAgICAgIHNoaWZ0dGFibGVbaXwweDEwMF0gPSAyNDsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsgLy8gSW5maW5pdHkgYW5kIE5hTidzIHN0YXkgSW5m
aW5pdHkgYW5kIE5hTidzCisgICAgICAgICAgICBiYXNldGFibGVbaXwweDAwMF0gPSAweDdDMDA7
CisgICAgICAgICAgICBiYXNldGFibGVbaXwweDEwMF0gPSAweEZDMDA7CisgICAgICAgICAgICBz
aGlmdHRhYmxlW2l8MHgwMDBdID0gMTM7CisgICAgICAgICAgICBzaGlmdHRhYmxlW2l8MHgxMDBd
ID0gMTM7CisgICAgICAgfQorICAgIH0KK30KKyovCisKK3Vuc2lnbmVkIHNob3J0IGJhc2VUYWJs
ZVs1MTJdID0geworMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAg
ICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAg
ICAwLCAgICAgIDAsICAgICAgMCwKKzAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwg
ICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAg
ICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsCiswLCAgICAgIDAsICAgICAgMCwgICAgICAw
LCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAs
ICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLAorMCwgICAgICAwLCAgICAg
IDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAg
MCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwKKzAsICAg
ICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAg
ICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAg
IDAsCiswLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAg
ICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAg
ICAgMCwgICAgICAwLAorMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAs
ICAgICAgMCwgICAgICAxLCAgICAgIDIsICAgICAgNCwgICAgICA4LCAgICAgIDE2LCAgICAgMzIs
ICAgICA2NCwgICAgIDEyOCwgICAgMjU2LAorNTEyLCAgICAxMDI0LCAgIDIwNDgsICAgMzA3Miwg
ICA0MDk2LCAgIDUxMjAsICAgNjE0NCwgICA3MTY4LCAgIDgxOTIsICAgOTIxNiwgICAxMDI0MCwg
IDExMjY0LCAgMTIyODgsICAxMzMxMiwgIDE0MzM2LCAgMTUzNjAsCisxNjM4NCwgIDE3NDA4LCAg
MTg0MzIsICAxOTQ1NiwgIDIwNDgwLCAgMjE1MDQsICAyMjUyOCwgIDIzNTUyLCAgMjQ1NzYsICAy
NTYwMCwgIDI2NjI0LCAgMjc2NDgsICAyODY3MiwgIDI5Njk2LCAgMzA3MjAsICAzMTc0NCwKKzMx
NzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3
NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0
NCwgIDMxNzQ0LAorMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0
LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQs
ICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsCiszMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwg
IDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAg
MzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwKKzMxNzQ0LCAgMzE3NDQsICAz
MTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMx
NzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LAorMzE3
NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0
NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0
LCAgMzE3NDQsCiszMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQs
ICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwg
IDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwKKzMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAg
MzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAz
MTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LAorMzI3NjgsICAzMjc2OCwgIDMy
NzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3
NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsCiszMjc2
OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4
LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3Njgs
ICAzMjc2OCwKKzMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwg
IDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAg
MzI3NjgsICAzMjc2OCwgIDMyNzY4LAorMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAz
Mjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMy
NzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsCiszMjc2OCwgIDMyNzY4LCAgMzI3
NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2
OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwKKzMyNzY4
LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3Njgs
ICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwg
IDMyNzY4LAorMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAg
MzI3NjgsICAzMjc2OSwgIDMyNzcwLCAgMzI3NzIsICAzMjc3NiwgIDMyNzg0LCAgMzI4MDAsICAz
MjgzMiwgIDMyODk2LCAgMzMwMjQsCiszMzI4MCwgIDMzNzkyLCAgMzQ4MTYsICAzNTg0MCwgIDM2
ODY0LCAgMzc4ODgsICAzODkxMiwgIDM5OTM2LCAgNDA5NjAsICA0MTk4NCwgIDQzMDA4LCAgNDQw
MzIsICA0NTA1NiwgIDQ2MDgwLCAgNDcxMDQsICA0ODEyOCwKKzQ5MTUyLCAgNTAxNzYsICA1MTIw
MCwgIDUyMjI0LCAgNTMyNDgsICA1NDI3MiwgIDU1Mjk2LCAgNTYzMjAsICA1NzM0NCwgIDU4MzY4
LCAgNTkzOTIsICA2MDQxNiwgIDYxNDQwLCAgNjI0NjQsICA2MzQ4OCwgIDY0NTEyLAorNjQ1MTIs
ICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwg
IDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAg
NjQ1MTIsCis2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2
NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0
NTEyLCAgNjQ1MTIsICA2NDUxMiwKKzY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1
MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUx
MiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLAorNjQ1MTIsICA2NDUxMiwgIDY0NTEy
LCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIs
ICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsCis2NDUxMiwg
IDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAg
NjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2
NDUxMiwKKzY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0
NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1
MTIsICA2NDUxMiwgIDY0NTEyLAorNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUx
MiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEy
LCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIKK307CisKK3Vuc2lnbmVkIGNoYXIgc2hp
ZnRUYWJsZVs1MTJdID0geworMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsCisyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwKKzI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LAorMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsCisyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwKKzI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LAorMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyMywgICAgIDIyLCAgICAgMjEsICAgICAyMCwgICAg
IDE5LCAgICAgMTgsICAgICAxNywgICAgIDE2LCAgICAgMTUsCisxNCwgICAgIDEzLCAgICAgMTMs
ICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywg
ICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywKKzEzLCAgICAg
MTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAx
MywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDI0
LAorMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsCisyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwKKzI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LAorMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsCisyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwK
KzI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LAorMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMTMsCisyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwKKzI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LAorMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsCisy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwKKzI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LAorMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsCisyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDIzLCAgICAgMjIsICAgICAyMSwgICAgIDIw
LCAgICAgMTksICAgICAxOCwgICAgIDE3LCAgICAgMTYsICAgICAxNSwKKzE0LCAgICAgMTMsICAg
ICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAg
IDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLAorMTMs
ICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywg
ICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAg
ICAgMjQsCisyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwKKzI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LAorMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsCisyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwKKzI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LAorMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsCisyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAxMworfTsKKwordW5zaWduZWQgc2hvcnQgY29udmVydEZs
b2F0VG9IYWxmRmxvYXQoZmxvYXQgZikKK3sKKyAgICB1bnNpZ25lZCB0ZW1wID0gKihyZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkICo+KCZmKSk7CisgICAgdW5zaWduZWQgc2lnbmV4cCA9ICh0ZW1w
ID4+IDIzKSAmIDB4MWZmOworICAgIHJldHVybiBiYXNlVGFibGVbc2lnbmV4cF0gKyAoKHRlbXAg
JiAweDAwN2ZmZmZmKSA+PiBzaGlmdFRhYmxlW3NpZ25leHBdKTsKK30KKworLyogQkVHSU4gQ09E
RSBTSEFSRUQgV0lUSCBNT1pJTExBIEZJUkVGT1ggKi8KKworLy8gVGhlIGZvbGxvd2luZyBwYWNr
aW5nIGFuZCB1bnBhY2tpbmcgcm91dGluZXMgYXJlIGV4cHJlc3NlZCBpbiB0ZXJtcyBvZiBmdW5j
dGlvbiB0ZW1wbGF0ZXMgYW5kIGlubGluZSBmdW5jdGlvbnMgdG8gYWNoaWV2ZSBnZW5lcmFsaXR5
IGFuZCBzcGVlZHVwLgorLy8gRXhwbGljaXQgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIGNvcnJl
c3BvbmQgdG8gdGhlIGNhc2VzIHRoYXQgd291bGQgb2NjdXIuCisvLyBTb21lIGNvZGUgYXJlIG1l
cmdlZCBiYWNrIGZyb20gTW96aWxsYSBjb2RlIGluIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96
aWxsYS1jZW50cmFsL3NvdXJjZS9jb250ZW50L2NhbnZhcy9zcmMvV2ViR0xUZXhlbENvbnZlcnNp
b25zLmgKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBQaXhlbCB1bnBhY2tpbmcgcm91dGluZXMuCit0
ZW1wbGF0ZTxpbnQgZm9ybWF0LCB0eXBlbmFtZSBTb3VyY2VUeXBlLCB0eXBlbmFtZSBEc3RUeXBl
PgorQUxXQVlTX0lOTElORSB2b2lkIHVucGFjayhjb25zdCBTb3VyY2VUeXBlKiwgRHN0VHlwZSos
IHVuc2lnbmVkKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit0ZW1wbGF0ZTw+
IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRS
R0I4LCB1aW50OF90LCB1aW50OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblsw
XSA9IHNvdXJjZVswXTsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV07CisgICAg
ICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzJdOworICAgICAgICBkZXN0aW5hdGlvblszXSA9
IDB4RkY7CisgICAgICAgIHNvdXJjZSArPSAzOworICAgICAgICBkZXN0aW5hdGlvbiArPSA0Owor
ICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNz
Q29udGV4dDNEOjpEYXRhRm9ybWF0QkdSOCwgdWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhf
dCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQor
eworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsK
KyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMl07CisgICAgICAgIGRlc3RpbmF0aW9u
WzFdID0gc291cmNlWzFdOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVswXTsKKyAg
ICAgICAgZGVzdGluYXRpb25bM10gPSAweEZGOworICAgICAgICBzb3VyY2UgKz0gMzsKKyAgICAg
ICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElO
RSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSR0I4LCB1aW50OF90
LCB1aW50OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1
bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVsx
XTsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMl07CisgICAgICAgIGRlc3RpbmF0
aW9uWzJdID0gc291cmNlWzNdOworICAgICAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVswXTsK
KyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQor
fQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0
M0Q6OkRhdGFGb3JtYXRBQkdSOCwgdWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhfdCogc291
cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAg
ICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbM107CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0g
c291cmNlWzJdOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsxXTsKKyAgICAgICAg
ZGVzdGluYXRpb25bM10gPSBzb3VyY2VbMF07CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAg
ICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5F
IHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QkdSQTgsIHVpbnQ4X3Qs
IHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVu
c2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBjb25zdCB1aW50MzJfdCogc291cmNlMzIgPSBy
ZWludGVycHJldF9jYXN0X3B0cjxjb25zdCB1aW50MzJfdCo+KHNvdXJjZSk7CisgICAgdWludDMy
X3QqIGRlc3RpbmF0aW9uMzIgPSByZWludGVycHJldF9jYXN0X3B0cjx1aW50MzJfdCo+KGRlc3Rp
bmF0aW9uKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsg
KytpKSB7CisgICAgICAgIHVpbnQzMl90IGJncmEgPSBzb3VyY2UzMltpXTsKKyNpZiBDUFUoQklH
X0VORElBTikKKyAgICAgICAgdWludDMyX3QgYnJNYXNrID0gMHhmZjAwZmYwMDsKKyAgICAgICAg
dWludDMyX3QgZ2FNYXNrID0gMHgwMGZmMDBmZjsKKyNlbHNlCisgICAgICAgIHVpbnQzMl90IGJy
TWFzayA9IDB4MDBmZjAwZmY7CisgICAgICAgIHVpbnQzMl90IGdhTWFzayA9IDB4ZmYwMGZmMDA7
CisjZW5kaWYKKyAgICAgICAgdWludDMyX3QgcmdiYSA9ICgoKGJncmEgPj4gMTYpIHwgKGJncmEg
PDwgMTYpKSAmIGJyTWFzaykgfCAoYmdyYSAmIGdhTWFzayk7CisgICAgICAgIGRlc3RpbmF0aW9u
MzJbaV0gPSByZ2JhOworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQg
dW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTU1NTEsIHVpbnQxNl90LCB1
aW50OF90Pihjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5z
aWduZWQgcGl4ZWxzUGVyUm93KQoreworI2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKKyAg
ICBTSU1EOjp1bnBhY2tPbmVSb3dPZlJHQkE1NTUxVG9SR0JBOChzb3VyY2UsIGRlc3RpbmF0aW9u
LCBwaXhlbHNQZXJSb3cpOworI2VuZGlmCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICB1aW50MTZfdCBwYWNrZWRWYWx1ZSA9IHNv
dXJjZVswXTsKKyAgICAgICAgdWludDhfdCByID0gcGFja2VkVmFsdWUgPj4gMTE7CisgICAgICAg
IHVpbnQ4X3QgZyA9IChwYWNrZWRWYWx1ZSA+PiA2KSAmIDB4MUY7CisgICAgICAgIHVpbnQ4X3Qg
YiA9IChwYWNrZWRWYWx1ZSA+PiAxKSAmIDB4MUY7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0g
KHIgPDwgMykgfCAociAmIDB4Nyk7CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gKGcgPDwgMykg
fCAoZyAmIDB4Nyk7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gKGIgPDwgMykgfCAoYiAmIDB4
Nyk7CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0gKHBhY2tlZFZhbHVlICYgMHgxKSA/IDB4RkYg
OiAweDA7CisgICAgICAgIHNvdXJjZSArPSAxOworICAgICAgICBkZXN0aW5hdGlvbiArPSA0Owor
ICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNz
Q29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTQ0NDQsIHVpbnQxNl90LCB1aW50OF90Pihjb25zdCB1
aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVy
Um93KQoreworI2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKKyAgICBTSU1EOjp1bnBhY2tP
bmVSb3dPZlJHQkE0NDQ0VG9SR0JBOChzb3VyY2UsIGRlc3RpbmF0aW9uLCBwaXhlbHNQZXJSb3cp
OworI2VuZGlmCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7
ICsraSkgeworICAgICAgICB1aW50MTZfdCBwYWNrZWRWYWx1ZSA9IHNvdXJjZVswXTsKKyAgICAg
ICAgdWludDhfdCByID0gcGFja2VkVmFsdWUgPj4gMTI7CisgICAgICAgIHVpbnQ4X3QgZyA9IChw
YWNrZWRWYWx1ZSA+PiA4KSAmIDB4MEY7CisgICAgICAgIHVpbnQ4X3QgYiA9IChwYWNrZWRWYWx1
ZSA+PiA0KSAmIDB4MEY7CisgICAgICAgIHVpbnQ4X3QgYSA9IHBhY2tlZFZhbHVlICYgMHgwRjsK
KyAgICAgICAgZGVzdGluYXRpb25bMF0gPSByIDw8IDQgfCByOworICAgICAgICBkZXN0aW5hdGlv
blsxXSA9IGcgPDwgNCB8IGc7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gYiA8PCA0IHwgYjsK
KyAgICAgICAgZGVzdGluYXRpb25bM10gPSBhIDw8IDQgfCBhOworICAgICAgICBzb3VyY2UgKz0g
MTsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxX
QVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjU2
NSwgdWludDE2X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisjaWYgSEFWRShBUk1fTkVPTl9J
TlRSSU5TSUNTKQorICAgIFNJTUQ6OnVucGFja09uZVJvd09mUkdCNTY1VG9SR0JBOChzb3VyY2Us
IGRlc3RpbmF0aW9uLCBwaXhlbHNQZXJSb3cpOworI2VuZGlmCisgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICB1aW50MTZfdCBwYWNr
ZWRWYWx1ZSA9IHNvdXJjZVswXTsKKyAgICAgICAgdWludDhfdCByID0gcGFja2VkVmFsdWUgPj4g
MTE7CisgICAgICAgIHVpbnQ4X3QgZyA9IChwYWNrZWRWYWx1ZSA+PiA1KSAmIDB4M0Y7CisgICAg
ICAgIHVpbnQ4X3QgYiA9IHBhY2tlZFZhbHVlICYgMHgxRjsKKyAgICAgICAgZGVzdGluYXRpb25b
MF0gPSAociA8PCAzKSB8IChyICYgMHg3KTsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSAoZyA8
PCAyKSB8IChnICYgMHgzKTsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSAoYiA8PCAzKSB8IChi
ICYgMHg3KTsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSAweEZGOworICAgICAgICBzb3VyY2Ug
Kz0gMTsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4g
QUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFI4
LCB1aW50OF90LCB1aW50OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9
IHNvdXJjZVswXTsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMF07CisgICAgICAg
IGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzBdOworICAgICAgICBkZXN0aW5hdGlvblszXSA9IDB4
RkY7CisgICAgICAgIHNvdXJjZSArPSAxOworICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAg
IH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0UkE4LCB1aW50OF90LCB1aW50OF90Pihjb25zdCB1aW50OF90KiBz
b3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7Cisg
ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAg
ICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsKKyAgICAgICAgZGVzdGluYXRpb25bMV0g
PSBzb3VyY2VbMF07CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzBdOworICAgICAg
ICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVsxXTsKKyAgICAgICAgc291cmNlICs9IDI7CisgICAg
ICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJ
TkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBUjgsIHVpbnQ4X3Qs
IHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVu
c2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzFd
OworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXTsKKyAgICAgICAgZGVzdGluYXRp
b25bMl0gPSBzb3VyY2VbMV07CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNlWzBdOwor
ICAgICAgICBzb3VyY2UgKz0gMjsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9Cit9
CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdEE4LCB1aW50OF90LCB1aW50OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2Us
IHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBk
ZXN0aW5hdGlvblswXSA9IDB4MDsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSAweDA7CisgICAg
ICAgIGRlc3RpbmF0aW9uWzJdID0gMHgwOworICAgICAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJj
ZVswXTsKKyAgICAgICAgc291cmNlICs9IDE7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Cisg
ICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3ND
b250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBOCwgdWludDhfdCwgZmxvYXQ+KGNvbnN0IHVpbnQ4X3Qq
IHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7Cisg
ICAgY29uc3QgZmxvYXQgc2NhbGVGYWN0b3IgPSAxLjBmIC8gMjU1LjBmOworICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGlu
YXRpb25bMF0gPSBzb3VyY2VbMF0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgZGVzdGluYXRpb25b
MV0gPSBzb3VyY2VbMV0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBz
b3VyY2VbMl0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSBzb3VyY2Vb
M10gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0
aW9uICs9IDQ7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBh
Y2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRCR1JBOCwgdWludDhfdCwgZmxvYXQ+KGNv
bnN0IHVpbnQ4X3QqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQ
ZXJSb3cpCit7CisgICAgY29uc3QgZmxvYXQgc2NhbGVGYWN0b3IgPSAxLjBmIC8gMjU1LjBmOwor
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAg
ICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMl0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAg
ZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgZGVzdGlu
YXRpb25bMl0gPSBzb3VyY2VbMF0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgZGVzdGluYXRpb25b
M10gPSBzb3VyY2VbM10gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAg
ICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJ
TkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBQkdSOCwgdWludDhf
dCwgZmxvYXQ+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgY29uc3QgZmxvYXQgc2NhbGVGYWN0b3IgPSAxLjBm
IC8gMjU1LjBmOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsr
aSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVszXSAqIHNjYWxlRmFjdG9yOwor
ICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9yOworICAgICAg
ICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsxXSAqIHNjYWxlRmFjdG9yOworICAgICAgICBkZXN0
aW5hdGlvblszXSA9IHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yOworICAgICAgICBzb3VyY2UgKz0g
NDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxX
QVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSR0I4
LCB1aW50OF90LCBmbG9hdD4oY29uc3QgdWludDhfdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBjb25zdCBmbG9hdCBzY2FsZUZhY3Rv
ciA9IDEuMGYgLyAyNTUuMGY7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1Bl
clJvdzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzFdICogc2NhbGVG
YWN0b3I7CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzJdICogc2NhbGVGYWN0b3I7
CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzNdICogc2NhbGVGYWN0b3I7CisgICAg
ICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7CisgICAgICAgIHNv
dXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KK30KKwordGVtcGxh
dGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9y
bWF0UkdCOCwgdWludDhfdCwgZmxvYXQ+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgZmxvYXQqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgY29uc3QgZmxvYXQgc2Nh
bGVGYWN0b3IgPSAxLjBmIC8gMjU1LjBmOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBw
aXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXSAq
IHNjYWxlRmFjdG9yOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXSAqIHNjYWxl
RmFjdG9yOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9y
OworICAgICAgICBkZXN0aW5hdGlvblszXSA9IDE7CisgICAgICAgIHNvdXJjZSArPSAzOworICAg
ICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5M
SU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QkdSOCwgdWludDhf
dCwgZmxvYXQ+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgY29uc3QgZmxvYXQgc2NhbGVGYWN0b3IgPSAxLjBm
IC8gMjU1LjBmOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsr
aSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9yOwor
ICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXSAqIHNjYWxlRmFjdG9yOworICAgICAg
ICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yOworICAgICAgICBkZXN0
aW5hdGlvblszXSA9IDE7CisgICAgICAgIHNvdXJjZSArPSAzOworICAgICAgICBkZXN0aW5hdGlv
biArPSA0OworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNr
PEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCMzJGLCBmbG9hdCwgZmxvYXQ+KGNvbnN0
IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93
KQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kp
IHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07CisgICAgICAgIGRlc3RpbmF0
aW9uWzFdID0gc291cmNlWzFdOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXTsK
KyAgICAgICAgZGVzdGluYXRpb25bM10gPSAxOworICAgICAgICBzb3VyY2UgKz0gMzsKKyAgICAg
ICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElO
RSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFIzMkYsIGZsb2F0LCBm
bG9hdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBw
aXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQ
ZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsKKyAgICAg
ICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMF07CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0g
c291cmNlWzBdOworICAgICAgICBkZXN0aW5hdGlvblszXSA9IDE7CisgICAgICAgIHNvdXJjZSAr
PSAxOworICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KK30KKwordGVtcGxhdGU8PiBB
TFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkEz
MkYsIGZsb2F0LCBmbG9hdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9u
LCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJj
ZVswXTsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMF07CisgICAgICAgIGRlc3Rp
bmF0aW9uWzJdID0gc291cmNlWzBdOworICAgICAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVsx
XTsKKyAgICAgICAgc291cmNlICs9IDI7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAg
fQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250
ZXh0M0Q6OkRhdGFGb3JtYXRBMzJGLCBmbG9hdCwgZmxvYXQ+KGNvbnN0IGZsb2F0KiBzb3VyY2Us
IGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVz
dGluYXRpb25bMF0gPSAwOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IDA7CisgICAgICAgIGRl
c3RpbmF0aW9uWzJdID0gMDsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSBzb3VyY2VbMF07Cisg
ICAgICAgIHNvdXJjZSArPSAxOworICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisvLyBQaXhlbCBwYWNraW5nIHJvdXRpbmVzLgorLy8KKwordGVt
cGxhdGU8aW50IGZvcm1hdCwgaW50IGFscGhhT3AsIHR5cGVuYW1lIFNvdXJjZVR5cGUsIHR5cGVu
YW1lIERzdFR5cGU+CitBTFdBWVNfSU5MSU5FIHZvaWQgcGFjayhjb25zdCBTb3VyY2VUeXBlKiwg
RHN0VHlwZSosIHVuc2lnbmVkKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit0
ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0QTgsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywgdWludDhfdCwgdWlu
dDhfdD4oY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4
ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbM107Cisg
ICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSAxOworICAgIH0KK30K
KwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6
RGF0YUZvcm1hdFI4LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcsIHVpbnQ4X3Qs
IHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVu
c2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBd
OworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMTsKKyAgICB9
Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0
M0Q6OkRhdGFGb3JtYXRSOCwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9QcmVtdWx0aXBseSwg
dWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5h
dGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3Ig
PSBzb3VyY2VbM10gLyAyNTUuMGY7CisgICAgICAgIHVpbnQ4X3Qgc291cmNlUiA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMF0pICogc2NhbGVGYWN0b3Ip
OworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVI7CisgICAgICAgIHNvdXJjZSArPSA0
OworICAgICAgICBkZXN0aW5hdGlvbiArPSAxOworICAgIH0KK30KKworLy8gRklYTUU6IHRoaXMg
cm91dGluZSBpcyBsb3NzeSBhbmQgbXVzdCBiZSByZW1vdmVkLgordGVtcGxhdGU8PiBBTFdBWVNf
SU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFI4LCBHcmFwaGlj
c0NvbnRleHQzRDo6QWxwaGFEb1VubXVsdGlwbHksIHVpbnQ4X3QsIHVpbnQ4X3Q+KGNvbnN0IHVp
bnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJv
dykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytp
KSB7CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdID8gMjU1LjBmIC8gc291
cmNlWzNdIDogMS4wZjsKKyAgICAgICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7CisgICAg
ICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlUjsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAg
ICAgIGRlc3RpbmF0aW9uICs9IDE7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJ
TkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkE4LCBHcmFwaGljc0Nv
bnRleHQzRDo6QWxwaGFEb05vdGhpbmcsIHVpbnQ4X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3Qq
IHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sK
KyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Cisg
ICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOworICAgICAgICBkZXN0aW5hdGlvblsx
XSA9IHNvdXJjZVszXTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9u
ICs9IDI7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkE4LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFE
b1ByZW11bHRpcGx5LCB1aW50OF90LCB1aW50OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVp
bnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBmbG9h
dCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSAvIDI1NS4wZjsKKyAgICAgICAgdWludDhfdCBzb3Vy
Y2VSID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVswXSkg
KiBzY2FsZUZhY3Rvcik7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlUjsKKyAgICAg
ICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbM107CisgICAgICAgIHNvdXJjZSArPSA0OworICAg
ICAgICBkZXN0aW5hdGlvbiArPSAyOworICAgIH0KK30KKworLy8gRklYTUU6IHRoaXMgcm91dGlu
ZSBpcyBsb3NzeSBhbmQgbXVzdCBiZSByZW1vdmVkLgordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5F
IHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBOCwgR3JhcGhpY3NDb250
ZXh0M0Q6OkFscGhhRG9Vbm11bHRpcGx5LCB1aW50OF90LCB1aW50OF90Pihjb25zdCB1aW50OF90
KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7
CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewor
ICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSA/IDI1NS4wZiAvIHNvdXJjZVsz
XSA6IDEuMGY7CisgICAgICAgIHVpbnQ4X3Qgc291cmNlUiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMF0pICogc2NhbGVGYWN0b3IpOworICAgICAgICBk
ZXN0aW5hdGlvblswXSA9IHNvdXJjZVI7CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNl
WzNdOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMjsKKyAg
ICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250
ZXh0M0Q6OkRhdGFGb3JtYXRSR0I4LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcs
IHVpbnQ4X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGlu
YXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0g
c291cmNlWzBdOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXTsKKyAgICAgICAg
ZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMl07CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAg
ICBkZXN0aW5hdGlvbiArPSAzOworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5F
IHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjgsIEdyYXBoaWNzQ29u
dGV4dDNEOjpBbHBoYURvUHJlbXVsdGlwbHksIHVpbnQ4X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4
X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7
CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdIC8gMjU1LjBmOworICAgICAg
ICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9h
dD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAgdWludDhfdCBzb3VyY2VHID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsxXSkgKiBzY2Fs
ZUZhY3Rvcik7CisgICAgICAgIHVpbnQ4X3Qgc291cmNlQiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMl0pICogc2NhbGVGYWN0b3IpOworICAgICAgICBk
ZXN0aW5hdGlvblswXSA9IHNvdXJjZVI7CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNl
RzsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VCOworICAgICAgICBzb3VyY2UgKz0g
NDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMzsKKyAgICB9Cit9CisKKy8vIEZJWE1FOiB0aGlz
IHJvdXRpbmUgaXMgbG9zc3kgYW5kIG11c3QgYmUgcmVtb3ZlZC4KK3RlbXBsYXRlPD4gQUxXQVlT
X0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0I4LCBHcmFw
aGljc0NvbnRleHQzRDo6QWxwaGFEb1VubXVsdGlwbHksIHVpbnQ4X3QsIHVpbnQ4X3Q+KGNvbnN0
IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1Bl
clJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsg
KytpKSB7CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdID8gMjU1LjBmIC8g
c291cmNlWzNdIDogMS4wZjsKKyAgICAgICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7Cisg
ICAgICAgIHVpbnQ4X3Qgc291cmNlRyA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0
PGZsb2F0Pihzb3VyY2VbMV0pICogc2NhbGVGYWN0b3IpOworICAgICAgICB1aW50OF90IHNvdXJj
ZUIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzJdKSAq
IHNjYWxlRmFjdG9yKTsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VSOworICAgICAg
ICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZUc7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291
cmNlQjsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDM7Cisg
ICAgfQorfQorCisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3ND
b250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBOCwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3Ro
aW5nLCB1aW50OF90LCB1aW50OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgbWVtY3B5KGRlc3RpbmF0
aW9uLCBzb3VyY2UsIHBpeGVsc1BlclJvdyAqIDQpOworfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19J
TkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTgsIEdyYXBo
aWNzQ29udGV4dDNEOjpBbHBoYURvUHJlbXVsdGlwbHksIHVpbnQ4X3QsIHVpbnQ4X3Q+KGNvbnN0
IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1Bl
clJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsg
KytpKSB7CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdIC8gMjU1LjBmOwor
ICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2Fz
dDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAgdWludDhfdCBzb3Vy
Y2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsxXSkg
KiBzY2FsZUZhY3Rvcik7CisgICAgICAgIHVpbnQ4X3Qgc291cmNlQiA9IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMl0pICogc2NhbGVGYWN0b3IpOworICAg
ICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVI7CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0g
c291cmNlRzsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VCOworICAgICAgICBkZXN0
aW5hdGlvblszXSA9IHNvdXJjZVszXTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRl
c3RpbmF0aW9uICs9IDQ7CisgICAgfQorfQorCisvLyBGSVhNRTogdGhpcyByb3V0aW5lIGlzIGxv
c3N5IGFuZCBtdXN0IGJlIHJlbW92ZWQuCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBw
YWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTgsIEdyYXBoaWNzQ29udGV4dDNE
OjpBbHBoYURvVW5tdWx0aXBseSwgdWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhfdCogc291
cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAg
ICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gPyAyNTUuMGYgLyBzb3VyY2VbM10gOiAx
LjBmOworICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0
aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAgdWludDhf
dCBzb3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJj
ZVsxXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgIHVpbnQ4X3Qgc291cmNlQiA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMl0pICogc2NhbGVGYWN0b3Ip
OworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVI7CisgICAgICAgIGRlc3RpbmF0aW9u
WzFdID0gc291cmNlRzsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VCOworICAgICAg
ICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVszXTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAg
ICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJ
TkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTQ0NDQsIEdyYXBo
aWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywgdWludDhfdCwgdWludDE2X3Q+KGNvbnN0IHVp
bnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJS
b3cpCit7CisjaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQorICAgIFNJTUQ6OnBhY2tPbmVS
b3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0NDQ0NChzb3VyY2UsIGRlc3RpbmF0aW9uLCBwaXhlbHNQ
ZXJSb3cpOworI2VuZGlmCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQ
ZXJSb3c7ICsraSkgeworICAgICAgICAqZGVzdGluYXRpb24gPSAoKChzb3VyY2VbMF0gJiAweEYw
KSA8PCA4KQorICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHNvdXJjZVsxXSAmIDB4RjApIDw8
IDQpCisgICAgICAgICAgICAgICAgICAgICAgICB8IChzb3VyY2VbMl0gJiAweEYwKQorICAgICAg
ICAgICAgICAgICAgICAgICAgfCAoc291cmNlWzNdID4+IDQpKTsKKyAgICAgICAgc291cmNlICs9
IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDE7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFM
V0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTQ0
NDQsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvUHJlbXVsdGlwbHksIHVpbnQ4X3QsIHVpbnQx
Nl90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4
ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10g
LyAyNTUuMGY7CisgICAgICAgIHVpbnQ4X3Qgc291cmNlUiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMF0pICogc2NhbGVGYWN0b3IpOworICAgICAgICB1
aW50OF90IHNvdXJjZUcgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4o
c291cmNlWzFdKSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAgdWludDhfdCBzb3VyY2VCID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsyXSkgKiBzY2FsZUZh
Y3Rvcik7CisgICAgICAgICpkZXN0aW5hdGlvbiA9ICgoKHNvdXJjZVIgJiAweEYwKSA8PCA4KQor
ICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHNvdXJjZUcgJiAweEYwKSA8PCA0KQorICAgICAg
ICAgICAgICAgICAgICAgICAgfCAoc291cmNlQiAmIDB4RjApCisgICAgICAgICAgICAgICAgICAg
ICAgICB8IChzb3VyY2VbM10gPj4gNCkpOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAg
ZGVzdGluYXRpb24gKz0gMTsKKyAgICB9Cit9CisKKy8vIEZJWE1FOiB0aGlzIHJvdXRpbmUgaXMg
bG9zc3kgYW5kIG11c3QgYmUgcmVtb3ZlZC4KK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lk
IHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNDQ0NCwgR3JhcGhpY3NDb250
ZXh0M0Q6OkFscGhhRG9Vbm11bHRpcGx5LCB1aW50OF90LCB1aW50MTZfdD4oY29uc3QgdWludDhf
dCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7
CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdID8gMjU1LjBmIC8gc291cmNl
WzNdIDogMS4wZjsKKyAgICAgICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWludDhf
dD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAg
IHVpbnQ4X3Qgc291cmNlRyA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0
Pihzb3VyY2VbMV0pICogc2NhbGVGYWN0b3IpOworICAgICAgICB1aW50OF90IHNvdXJjZUIgPSBz
dGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzJdKSAqIHNjYWxl
RmFjdG9yKTsKKyAgICAgICAgKmRlc3RpbmF0aW9uID0gKCgoc291cmNlUiAmIDB4RjApIDw8IDgp
CisgICAgICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNlRyAmIDB4RjApIDw8IDQpCisgICAg
ICAgICAgICAgICAgICAgICAgICB8IChzb3VyY2VCICYgMHhGMCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHwgKHNvdXJjZVszXSA+PiA0KSk7CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAg
ICBkZXN0aW5hdGlvbiArPSAxOworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5F
IHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE1NTUxLCBHcmFwaGlj
c0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcsIHVpbnQ4X3QsIHVpbnQxNl90Pihjb25zdCB1aW50
OF90KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93
KQoreworI2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKKyAgICBTSU1EOjpwYWNrT25lUm93
T2ZSR0JBOFRvVW5zaWduZWRTaG9ydDU1NTEoc291cmNlLCBkZXN0aW5hdGlvbiwgcGl4ZWxzUGVy
Um93KTsKKyNlbmRpZgorICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVy
Um93OyArK2kpIHsKKyAgICAgICAgKmRlc3RpbmF0aW9uID0gKCgoc291cmNlWzBdICYgMHhGOCkg
PDwgOCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VbMV0gJiAweEY4KSA8PCAz
KQorICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHNvdXJjZVsyXSAmIDB4RjgpID4+IDIpCisg
ICAgICAgICAgICAgICAgICAgICAgICB8IChzb3VyY2VbM10gPj4gNykpOworICAgICAgICBzb3Vy
Y2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMTsKKyAgICB9Cit9CisKK3RlbXBsYXRl
PD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRS
R0JBNTU1MSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9QcmVtdWx0aXBseSwgdWludDhfdCwg
dWludDE2X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1
bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJj
ZVszXSAvIDI1NS4wZjsKKyAgICAgICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7CisgICAg
ICAgIHVpbnQ4X3Qgc291cmNlRyA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZs
b2F0Pihzb3VyY2VbMV0pICogc2NhbGVGYWN0b3IpOworICAgICAgICB1aW50OF90IHNvdXJjZUIg
PSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzJdKSAqIHNj
YWxlRmFjdG9yKTsKKyAgICAgICAgKmRlc3RpbmF0aW9uID0gKCgoc291cmNlUiAmIDB4RjgpIDw8
IDgpCisgICAgICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNlRyAmIDB4RjgpIDw8IDMpCisg
ICAgICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNlQiAmIDB4RjgpID4+IDIpCisgICAgICAg
ICAgICAgICAgICAgICAgICB8IChzb3VyY2VbM10gPj4gNykpOworICAgICAgICBzb3VyY2UgKz0g
NDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMTsKKyAgICB9Cit9CisKKy8vIEZJWE1FOiB0aGlz
IHJvdXRpbmUgaXMgbG9zc3kgYW5kIG11c3QgYmUgcmVtb3ZlZC4KK3RlbXBsYXRlPD4gQUxXQVlT
X0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNTU1MSwg
R3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Vbm11bHRpcGx5LCB1aW50OF90LCB1aW50MTZfdD4o
Y29uc3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBp
eGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1Bl
clJvdzsgKytpKSB7CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdID8gMjU1
LjBmIC8gc291cmNlWzNdIDogMS4wZjsKKyAgICAgICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rv
cik7CisgICAgICAgIHVpbnQ4X3Qgc291cmNlRyA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRp
Y19jYXN0PGZsb2F0Pihzb3VyY2VbMV0pICogc2NhbGVGYWN0b3IpOworICAgICAgICB1aW50OF90
IHNvdXJjZUIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNl
WzJdKSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAgKmRlc3RpbmF0aW9uID0gKCgoc291cmNlUiAm
IDB4RjgpIDw8IDgpCisgICAgICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNlRyAmIDB4Rjgp
IDw8IDMpCisgICAgICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNlQiAmIDB4RjgpID4+IDIp
CisgICAgICAgICAgICAgICAgICAgICAgICB8IChzb3VyY2VbM10gPj4gNykpOworICAgICAgICBz
b3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMTsKKyAgICB9Cit9CisKK3RlbXBs
YXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSR0I1NjUsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywgdWludDhfdCwgdWlu
dDE2X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBwaXhlbHNQZXJSb3cpCit7CisjaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQorICAg
IFNJTUQ6OnBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0NTY1KHNvdXJjZSwgZGVzdGlu
YXRpb24sIHBpeGVsc1BlclJvdyk7CisjZW5kaWYKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgICpkZXN0aW5hdGlvbiA9ICgoKHNv
dXJjZVswXSAmIDB4RjgpIDw8IDgpCisgICAgICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNl
WzFdICYgMHhGQykgPDwgMykKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VbMl0g
JiAweEY4KSA+PiAzKSk7CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlv
biArPSAxOworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjU2NSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFs
cGhhRG9QcmVtdWx0aXBseSwgdWludDhfdCwgdWludDE2X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJj
ZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAg
ICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSAvIDI1NS4wZjsKKyAgICAgICAgdWludDhf
dCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJj
ZVswXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgIHVpbnQ4X3Qgc291cmNlRyA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMV0pICogc2NhbGVGYWN0b3Ip
OworICAgICAgICB1aW50OF90IHNvdXJjZUIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNf
Y2FzdDxmbG9hdD4oc291cmNlWzJdKSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAgKmRlc3RpbmF0
aW9uID0gKCgoc291cmNlUiAmIDB4RjgpIDw8IDgpCisgICAgICAgICAgICAgICAgICAgICAgICB8
ICgoc291cmNlRyAmIDB4RkMpIDw8IDMpCisgICAgICAgICAgICAgICAgICAgICAgICB8ICgoc291
cmNlQiAmIDB4RjgpID4+IDMpKTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3Rp
bmF0aW9uICs9IDE7CisgICAgfQorfQorCisvLyBGSVhNRTogdGhpcyByb3V0aW5lIGlzIGxvc3N5
IGFuZCBtdXN0IGJlIHJlbW92ZWQuCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNr
PEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCNTY1LCBHcmFwaGljc0NvbnRleHQzRDo6
QWxwaGFEb1VubXVsdGlwbHksIHVpbnQ4X3QsIHVpbnQxNl90Pihjb25zdCB1aW50OF90KiBzb3Vy
Y2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAg
ICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gPyAyNTUuMGYgLyBzb3VyY2VbM10gOiAx
LjBmOworICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0
aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAgdWludDhf
dCBzb3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJj
ZVsxXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgIHVpbnQ4X3Qgc291cmNlQiA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMl0pICogc2NhbGVGYWN0b3Ip
OworICAgICAgICAqZGVzdGluYXRpb24gPSAoKChzb3VyY2VSICYgMHhGOCkgPDwgOCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VHICYgMHhGQykgPDwgMykKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHwgKChzb3VyY2VCICYgMHhGOCkgPj4gMykpOworICAgICAgICBzb3VyY2Ug
Kz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4g
QUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0Iz
MkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywgZmxvYXQsIGZsb2F0Pihjb25z
dCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJv
dykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytp
KSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOworICAgICAgICBkZXN0aW5h
dGlvblsxXSA9IHNvdXJjZVsxXTsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMl07
CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSAzOworICAgIH0K
K30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdFJHQjMyRiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9QcmVtdWx0aXBs
eSwgZmxvYXQsIGZsb2F0Pihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291
cmNlWzNdOworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXSAqIHNjYWxlRmFjdG9y
OworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXSAqIHNjYWxlRmFjdG9yOworICAg
ICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9yOworICAgICAgICBz
b3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMzsKKyAgICB9Cit9CisKK3RlbXBs
YXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSR0IzMkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvVW5tdWx0aXBseSwgZmxvYXQsIGZs
b2F0Pihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBp
eGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1Bl
clJvdzsgKytpKSB7CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdID8gMS4w
ZiAvIHNvdXJjZVszXSA6IDEuMGY7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBd
ICogc2NhbGVGYWN0b3I7CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFdICogc2Nh
bGVGYWN0b3I7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzJdICogc2NhbGVGYWN0
b3I7CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSAzOworICAg
IH0KK30KKworLy8gVXNlZCBvbmx5IGR1cmluZyBSR0JBOCBvciBCR1JBOCAtPiBmbG9hdGluZy1w
b2ludCB1cGxvYWRzLgordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGlj
c0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkEzMkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURv
Tm90aGluZywgZmxvYXQsIGZsb2F0Pihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGlu
YXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBtZW1jcHkoZGVzdGluYXRpb24s
IHNvdXJjZSwgcGl4ZWxzUGVyUm93ICogNCAqIHNpemVvZihmbG9hdCkpOworfQorCit0ZW1wbGF0
ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0
UkdCQTMyRiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9QcmVtdWx0aXBseSwgZmxvYXQsIGZs
b2F0Pihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBp
eGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1Bl
clJvdzsgKytpKSB7CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdOworICAg
ICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yOworICAgICAgICBk
ZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXSAqIHNjYWxlRmFjdG9yOworICAgICAgICBkZXN0aW5h
dGlvblsyXSA9IHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9yOworICAgICAgICBkZXN0aW5hdGlvblsz
XSA9IHNvdXJjZVszXTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9u
ICs9IDQ7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTMyRiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFs
cGhhRG9Vbm11bHRpcGx5LCBmbG9hdCwgZmxvYXQ+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0
KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZmxvYXQgc2Nh
bGVGYWN0b3IgPSBzb3VyY2VbM10gPyAxLjBmIC8gc291cmNlWzNdIDogMS4wZjsKKyAgICAgICAg
ZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgZGVzdGlu
YXRpb25bMV0gPSBzb3VyY2VbMV0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgZGVzdGluYXRpb25b
Ml0gPSBzb3VyY2VbMl0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSBz
b3VyY2VbM107CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSA0
OworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGlj
c0NvbnRleHQzRDo6RGF0YUZvcm1hdEEzMkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90
aGluZywgZmxvYXQsIGZsb2F0Pihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291
cmNlWzNdOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMTsK
KyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3ND
b250ZXh0M0Q6OkRhdGFGb3JtYXRSMzJGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhp
bmcsIGZsb2F0LCBmbG9hdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9u
LCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJj
ZVswXTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDE7Cisg
ICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0UjMyRiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9QcmVtdWx0
aXBseSwgZmxvYXQsIGZsb2F0Pihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0g
c291cmNlWzNdOworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXSAqIHNjYWxlRmFj
dG9yOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMTsKKyAg
ICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250
ZXh0M0Q6OkRhdGFGb3JtYXRSMzJGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1VubXVsdGlw
bHksIGZsb2F0LCBmbG9hdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9u
LCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNv
dXJjZVszXSA/IDEuMGYgLyBzb3VyY2VbM10gOiAxLjBmOworICAgICAgICBkZXN0aW5hdGlvblsw
XSA9IHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAg
ICAgZGVzdGluYXRpb24gKz0gMTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElO
RSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTMyRiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCBmbG9hdCwgZmxvYXQ+KGNvbnN0IGZsb2F0KiBzb3Vy
Y2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAg
ZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291
cmNlWzNdOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMjsK
KyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3ND
b250ZXh0M0Q6OkRhdGFGb3JtYXRSQTMyRiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9QcmVt
dWx0aXBseSwgZmxvYXQsIGZsb2F0Pihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGlu
YXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9y
ID0gc291cmNlWzNdOworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXSAqIHNjYWxl
RmFjdG9yOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVszXTsKKyAgICAgICAgc291
cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDI7CisgICAgfQorfQorCit0ZW1wbGF0
ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0
UkEzMkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvVW5tdWx0aXBseSwgZmxvYXQsIGZsb2F0
Pihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVs
c1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJv
dzsgKytpKSB7CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdID8gMS4wZiAv
IHNvdXJjZVszXSA6IDEuMGY7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICog
c2NhbGVGYWN0b3I7CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzNdOworICAgICAg
ICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMjsKKyAgICB9Cit9CisKK3Rl
bXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRSR0JBMTZGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcsIGZsb2F0LCB1
aW50MTZfdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVs
c1BlclJvdzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydEZsb2F0VG9I
YWxmRmxvYXQoc291cmNlWzBdKTsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBjb252ZXJ0Rmxv
YXRUb0hhbGZGbG9hdChzb3VyY2VbMV0pOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IGNvbnZl
cnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVsyXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0g
Y29udmVydEZsb2F0VG9IYWxmRmxvYXQoc291cmNlWzNdKTsKKyAgICAgICAgc291cmNlICs9IDQ7
CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZ
U19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTE2Riwg
R3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9QcmVtdWx0aXBseSwgZmxvYXQsIHVpbnQxNl90Pihj
b25zdCBmbG9hdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVs
c1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyAr
K2kpIHsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM107CisgICAgICAgIGRl
c3RpbmF0aW9uWzBdID0gY29udmVydEZsb2F0VG9IYWxmRmxvYXQoc291cmNlWzBdICogc2NhbGVG
YWN0b3IpOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZsb2F0
KHNvdXJjZVsxXSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBjb252
ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbMl0gKiBzY2FsZUZhY3Rvcik7CisgICAgICAgIGRl
c3RpbmF0aW9uWzNdID0gY29udmVydEZsb2F0VG9IYWxmRmxvYXQoc291cmNlWzNdKTsKKyAgICAg
ICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQorfQorCit0
ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0UkdCQTE2RiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Vbm11bHRpcGx5LCBmbG9h
dCwgdWludDE2X3Q+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwg
dW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBw
aXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVsz
XSA/IDEuMGYgLyBzb3VyY2VbM10gOiAxLjBmOworICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNv
bnZlcnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAg
ZGVzdGluYXRpb25bMV0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbMV0gKiBzY2Fs
ZUZhY3Rvcik7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gY29udmVydEZsb2F0VG9IYWxmRmxv
YXQoc291cmNlWzJdICogc2NhbGVGYWN0b3IpOworICAgICAgICBkZXN0aW5hdGlvblszXSA9IGNv
bnZlcnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVszXSk7CisgICAgICAgIHNvdXJjZSArPSA0Owor
ICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNf
SU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjE2RiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCBmbG9hdCwgdWludDE2X3Q+KGNvbnN0IGZs
b2F0KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93
KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewor
ICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVsw
XSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydEZsb2F0VG9IYWxmRmxvYXQoc291
cmNlWzFdKTsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9h
dChzb3VyY2VbMl0pOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24g
Kz0gMzsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3Jh
cGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0IxNkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBo
YURvUHJlbXVsdGlwbHksIGZsb2F0LCB1aW50MTZfdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgdWlu
dDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGZsb2F0IHNj
YWxlRmFjdG9yID0gc291cmNlWzNdOworICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRG
bG9hdFRvSGFsZkZsb2F0KHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAgZGVzdGlu
YXRpb25bMV0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbMV0gKiBzY2FsZUZhY3Rv
cik7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gY29udmVydEZsb2F0VG9IYWxmRmxvYXQoc291
cmNlWzJdICogc2NhbGVGYWN0b3IpOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVz
dGluYXRpb24gKz0gMzsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lk
IHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0IxNkYsIEdyYXBoaWNzQ29udGV4
dDNEOjpBbHBoYURvVW5tdWx0aXBseSwgZmxvYXQsIHVpbnQxNl90Pihjb25zdCBmbG9hdCogc291
cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAg
ZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gPyAxLjBmIC8gc291cmNlWzNdIDogMS4wZjsK
KyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2Vb
MF0gKiBzY2FsZUZhY3Rvcik7CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydEZsb2F0
VG9IYWxmRmxvYXQoc291cmNlWzFdICogc2NhbGVGYWN0b3IpOworICAgICAgICBkZXN0aW5hdGlv
blsyXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9yKTsK
KyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDM7CisgICAgfQor
fQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0UkExNkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywgZmxv
YXQsIHVpbnQxNl90Pihjb25zdCBmbG9hdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
cGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Rmxv
YXRUb0hhbGZGbG9hdChzb3VyY2VbMF0pOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZl
cnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVszXSk7CisgICAgICAgIHNvdXJjZSArPSA0OworICAg
ICAgICBkZXN0aW5hdGlvbiArPSAyOworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5M
SU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMTZGLCBHcmFwaGlj
c0NvbnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5LCBmbG9hdCwgdWludDE2X3Q+KGNvbnN0IGZs
b2F0KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93
KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewor
ICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXTsKKyAgICAgICAgZGVzdGluYXRp
b25bMF0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbMF0gKiBzY2FsZUZhY3Rvcik7
CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydEZsb2F0VG9IYWxmRmxvYXQoc291cmNl
WzNdKTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDI7Cisg
ICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0UkExNkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvVW5tdWx0
aXBseSwgZmxvYXQsIHVpbnQxNl90Pihjb25zdCBmbG9hdCogc291cmNlLCB1aW50MTZfdCogZGVz
dGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3Ig
PSBzb3VyY2VbM10gPyAxLjBmIC8gc291cmNlWzNdIDogMS4wZjsKKyAgICAgICAgZGVzdGluYXRp
b25bMF0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbMF0gKiBzY2FsZUZhY3Rvcik7
CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydEZsb2F0VG9IYWxmRmxvYXQoc291cmNl
WzNdKTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDI7Cisg
ICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0UjE2RiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5n
LCBmbG9hdCwgdWludDE2X3Q+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5h
dGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZl
cnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVswXSk7CisgICAgICAgIHNvdXJjZSArPSA0OworICAg
ICAgICBkZXN0aW5hdGlvbiArPSAxOworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5M
SU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFIxNkYsIEdyYXBoaWNz
Q29udGV4dDNEOjpBbHBoYURvUHJlbXVsdGlwbHksIGZsb2F0LCB1aW50MTZfdD4oY29uc3QgZmxv
YXQqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cp
Cit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Cisg
ICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdOworICAgICAgICBkZXN0aW5hdGlv
blswXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yKTsK
KyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDE7CisgICAgfQor
fQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0UjE2RiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Vbm11bHRpcGx5LCBm
bG9hdCwgdWludDE2X3Q+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlv
biwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJj
ZVszXSA/IDEuMGYgLyBzb3VyY2VbM10gOiAxLjBmOworICAgICAgICBkZXN0aW5hdGlvblswXSA9
IGNvbnZlcnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yKTsKKyAgICAg
ICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDE7CisgICAgfQorfQorCit0
ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0QTE2RiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCBmbG9hdCwgdWlu
dDE2X3Q+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQ
ZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRGbG9hdFRvSGFs
ZkZsb2F0KHNvdXJjZVszXSk7CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5h
dGlvbiArPSAxOworICAgIH0KK30KKworQUxXQVlTX0lOTElORSBib29sIEhhc0FscGhhKGludCBm
b3JtYXQpCit7CisgICAgcmV0dXJuIGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdEE4CisgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1h
dEExNkYKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0
QTMyRgorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRS
QTgKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVI4
CisgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMTZG
CisgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMzJG
CisgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE4
CisgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEJHUkE4
CisgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSR0I4
CisgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFCR1I4
CisgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkEx
NkYKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdC
QTMyRgorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRS
R0JBNDQ0NAorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSR0JBNTU1MTsKK30KKworQUxXQVlTX0lOTElORSBib29sIEhhc0NvbG9yKGludCBmb3JtYXQp
Cit7CisgICAgcmV0dXJuIGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJH
QkE4CisgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJH
QkExNkYKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0
UkdCQTMyRgorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSR0I4CisgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1h
dFJHQjE2RgorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSR0IzMkYKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9y
bWF0QkdSOAorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRCR1JBOAorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRBUkdCOAorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRBQkdSOAorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSR0JBNTU1MQorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRSR0JBNDQ0NAorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRSR0I1NjUKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UjgKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0UjE2RgorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRSMzJGCisgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdFJBOAorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSQTE2RgorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSQTMyRgorICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRBUjg7Cit9CisKK3RlbXBsYXRlPGludCBGb3JtYXQ+CitzdHJ1Y3QgSXNGbG9hdEZvcm1hdCB7
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgVmFsdWUgPQorICAgICAgICBGb3JtYXQgPT0gR3JhcGhp
Y3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMzJGCisgICAgICAgIHx8IEZvcm1hdCA9PSBHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjMyRgorICAgICAgICB8fCBGb3JtYXQgPT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTMyRgorICAgICAgICB8fCBGb3JtYXQgPT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSMzJGCisgICAgICAgIHx8IEZvcm1hdCA9PSBHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEEzMkY7Cit9OworCit0ZW1wbGF0ZTxpbnQgRm9ybWF0
Pgorc3RydWN0IElzSGFsZkZsb2F0Rm9ybWF0IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBWYWx1
ZSA9CisgICAgICAgIEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkEx
NkYKKyAgICAgICAgfHwgRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdC
MTZGCisgICAgICAgIHx8IEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJB
MTZGCisgICAgICAgIHx8IEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFIx
NkYKKyAgICAgICAgfHwgRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QTE2
RjsKK307CisKK3RlbXBsYXRlPGludCBGb3JtYXQ+CitzdHJ1Y3QgSXMxNmJwcEZvcm1hdCB7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgVmFsdWUgPQorICAgICAgICBGb3JtYXQgPT0gR3JhcGhpY3ND
b250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNTU1MQorICAgICAgICB8fCBGb3JtYXQgPT0gR3JhcGhp
Y3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNDQ0NAorICAgICAgICB8fCBGb3JtYXQgPT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0I1NjU7Cit9OworCit0ZW1wbGF0ZTxpbnQgRm9y
bWF0LCBib29sIElzRmxvYXQgPSBJc0Zsb2F0Rm9ybWF0PEZvcm1hdD46OlZhbHVlLCBib29sIElz
SGFsZkZsb2F0ID0gSXNIYWxmRmxvYXRGb3JtYXQ8Rm9ybWF0Pjo6VmFsdWUsIGJvb2wgSXMxNmJw
cCA9IElzMTZicHBGb3JtYXQ8Rm9ybWF0Pjo6VmFsdWU+CitzdHJ1Y3QgRGF0YVR5cGVGb3JGb3Jt
YXQgeworICAgIHR5cGVkZWYgdWludDhfdCBUeXBlOworfTsKKwordGVtcGxhdGU8aW50IEZvcm1h
dD4KK3N0cnVjdCBEYXRhVHlwZUZvckZvcm1hdDxGb3JtYXQsIHRydWUsIGZhbHNlLCBmYWxzZT4g
eworICAgIHR5cGVkZWYgZmxvYXQgVHlwZTsKK307CisKK3RlbXBsYXRlPGludCBGb3JtYXQ+Citz
dHJ1Y3QgRGF0YVR5cGVGb3JGb3JtYXQ8Rm9ybWF0LCBmYWxzZSwgdHJ1ZSwgZmFsc2U+IHsKKyAg
ICB0eXBlZGVmIHVpbnQxNl90IFR5cGU7Cit9OworCit0ZW1wbGF0ZTxpbnQgRm9ybWF0Pgorc3Ry
dWN0IERhdGFUeXBlRm9yRm9ybWF0PEZvcm1hdCwgZmFsc2UsIGZhbHNlLCB0cnVlPiB7CisgICAg
dHlwZWRlZiB1aW50MTZfdCBUeXBlOworfTsKKwordGVtcGxhdGU8aW50IEZvcm1hdD4KK3N0cnVj
dCBJbnRlcm1lZGlhdGVGb3JtYXQgeworICAgIHN0YXRpYyBjb25zdCBpbnQgVmFsdWUgPSAoSXNG
bG9hdEZvcm1hdDxGb3JtYXQ+OjpWYWx1ZSB8fCBJc0hhbGZGbG9hdEZvcm1hdDxGb3JtYXQ+OjpW
YWx1ZSkgPyBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkEzMkYgOiBHcmFwaGljc0Nv
bnRleHQzRDo6RGF0YUZvcm1hdFJHQkE4OworfTsKKworQUxXQVlTX0lOTElORSB1bnNpZ25lZCBU
ZXhlbEJ5dGVzRm9yRm9ybWF0KEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IGZvcm1hdCkK
K3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRSODoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QTg6Cisg
ICAgICAgIHJldHVybiAxOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRS
QTg6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSODoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTU1NTE6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE0NDQ0OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkRhdGFGb3JtYXRSR0I1NjU6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdEExNkY6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFIxNkY6Cisg
ICAgICAgIHJldHVybiAyOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRS
R0I4OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRCR1I4OgorICAgICAg
ICByZXR1cm4gMzsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTg6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSR0I4OgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBQkdSODoKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0QkdSQTg6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdFIzMkY6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEEzMkY6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMTZGOgorICAgICAgICBy
ZXR1cm4gNDsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCMTZGOgor
ICAgICAgICByZXR1cm4gNjsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0
UkEzMkY6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkExNkY6Cisg
ICAgICAgIHJldHVybiA4OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRS
R0IzMkY6CisgICAgICAgIHJldHVybiAxMjsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UkdCQTMyRjoKKyAgICAgICAgcmV0dXJuIDE2OworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KK30KKworLyogRU5EIENPREUgU0hBUkVEIFdJVEggTU9aSUxM
QSBGSVJFRk9YICovCisKK2NsYXNzIEZvcm1hdENvbnZlcnRlciB7CitwdWJsaWM6CisgICAgRm9y
bWF0Q29udmVydGVyKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsCisgICAgICAgIGNv
bnN0IHZvaWQqIHNyY1N0YXJ0LCB2b2lkKiBkc3RTdGFydCwgaW50IHNyY1N0cmlkZSwgaW50IGRz
dFN0cmlkZSkKKyAgICAgICAgOiBtX3dpZHRoKHdpZHRoKSwgbV9oZWlnaHQoaGVpZ2h0KSwgbV9z
cmNTdGFydChzcmNTdGFydCksIG1fZHN0U3RhcnQoZHN0U3RhcnQpLCBtX3NyY1N0cmlkZShzcmNT
dHJpZGUpLCBtX2RzdFN0cmlkZShkc3RTdHJpZGUpLCBtX3N1Y2Nlc3MoZmFsc2UpCisgICAgewor
ICAgICAgICBjb25zdCB1bnNpZ25lZCBNYXhOdW1iZXJPZkNvbXBvbmVudHMgPSA0OworICAgICAg
ICBjb25zdCB1bnNpZ25lZCBNYXhCeXRlc1BlckNvbXBvbmVudCAgPSA0OworICAgICAgICBtX3Vu
cGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDhfdFtdPiht
X3dpZHRoICogTWF4TnVtYmVyT2ZDb21wb25lbnRzICogTWF4Qnl0ZXNQZXJDb21wb25lbnQpOwor
CisgICAgICAgIEFTU0VSVChtX3VucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YS5nZXQoKSk7Cisg
ICAgfQorCisgICAgdm9pZCBjb252ZXJ0KEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IHNy
Y0Zvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgZHN0Rm9ybWF0LCBHcmFwaGlj
c0NvbnRleHQzRDo6QWxwaGFPcCk7CisgICAgYm9vbCBTdWNjZXNzKCkgY29uc3QgeyByZXR1cm4g
bV9zdWNjZXNzOyB9CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8R3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXQgU3JjRm9ybWF0PgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjb252ZXJ0KEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IGRzdEZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6
OkFscGhhT3ApOworCisgICAgdGVtcGxhdGU8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQg
U3JjRm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBEc3RGb3JtYXQ+CisgICAg
QUxXQVlTX0lOTElORSB2b2lkIGNvbnZlcnQoR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhT3ApOwor
CisgICAgdGVtcGxhdGU8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgU3JjRm9ybWF0LCBH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBEc3RGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNE
OjpBbHBoYU9wIGFscGhhT3A+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNvbnZlcnQoKTsKKwor
ICAgIGNvbnN0IHVuc2lnbmVkIG1fd2lkdGgsIG1faGVpZ2h0OworICAgIGNvbnN0IHZvaWQqIGNv
bnN0IG1fc3JjU3RhcnQ7CisgICAgdm9pZCogY29uc3QgbV9kc3RTdGFydDsKKyAgICBjb25zdCBp
bnQgbV9zcmNTdHJpZGUsIG1fZHN0U3RyaWRlOworICAgIGJvb2wgbV9zdWNjZXNzOworICAgIHN0
ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhOwor
fTsKKwordm9pZCBGb3JtYXRDb252ZXJ0ZXI6OmNvbnZlcnQoR3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXQgc3JjRm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBkc3RGb3Jt
YXQsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYU9wIGFscGhhT3ApCit7CisjZGVmaW5lIEZPUk1B
VENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVChTcmNGb3JtYXQpIFwKKyAgICBjYXNlIFNyY0Zvcm1h
dDogXAorICAgICAgICByZXR1cm4gY29udmVydDxTcmNGb3JtYXQ+KGRzdEZvcm1hdCwgYWxwaGFP
cCk7CisKKyAgICAgICAgc3dpdGNoIChzcmNGb3JtYXQpIHsKKyAgICAgICAgICAgIEZPUk1BVENP
TlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFI4KQor
ICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdyYXBoaWNzQ29udGV4
dDNEOjpEYXRhRm9ybWF0QTgpCisgICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9TUkNG
T1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSMzJGKQorICAgICAgICAgICAgRk9S
TUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0
QTMyRikKKyAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFwaGlj
c0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBOCkKKyAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9D
QVNFX1NSQ0ZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMzJGKQorICAgICAg
ICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UkdCOCkKKyAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1B
VChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEJHUjgpCisgICAgICAgICAgICBGT1JNQVRD
T05WRVJURVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0I1
NjUpCisgICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3ND
b250ZXh0M0Q6OkRhdGFGb3JtYXRSR0IzMkYpCisgICAgICAgICAgICBGT1JNQVRDT05WRVJURVJf
Q0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBOCkKKyAgICAg
ICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6
RGF0YUZvcm1hdEFSR0I4KQorICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9S
TUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QUJHUjgpCisgICAgICAgICAgICBGT1JN
QVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRB
UjgpCisgICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3ND
b250ZXh0M0Q6OkRhdGFGb3JtYXRCR1JBOCkKKyAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9D
QVNFX1NSQ0ZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE1NTUxKQorICAg
ICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0UkdCQTQ0NDQpCisgICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9T
UkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMzJGKQorICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyN1
bmRlZiBGT1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQKK30KKwordGVtcGxhdGU8R3JhcGhp
Y3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgU3JjRm9ybWF0PgorQUxXQVlTX0lOTElORSB2b2lkIEZv
cm1hdENvbnZlcnRlcjo6Y29udmVydChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBkc3RG
b3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYU9wIGFscGhhT3ApCit7CisjZGVmaW5lIEZP
Uk1BVENPTlZFUlRFUl9DQVNFX0RTVEZPUk1BVChEc3RGb3JtYXQpIFwKKyAgICBjYXNlIERzdEZv
cm1hdDogXAorICAgICAgICByZXR1cm4gY29udmVydDxTcmNGb3JtYXQsIERzdEZvcm1hdD4oYWxw
aGFPcCk7CisKKyAgICAgICAgc3dpdGNoIChkc3RGb3JtYXQpIHsKKyAgICAgICAgICAgIEZPUk1B
VENPTlZFUlRFUl9DQVNFX0RTVEZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFI4
KQorICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfRFNURk9STUFUKEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0UjE2RikKKyAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNF
X0RTVEZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFIzMkYpCisgICAgICAgICAg
ICBGT1JNQVRDT05WRVJURVJfQ0FTRV9EU1RGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRBOCkKKyAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX0RTVEZPUk1BVChHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEExNkYpCisgICAgICAgICAgICBGT1JNQVRDT05WRVJU
RVJfQ0FTRV9EU1RGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBMzJGKQorICAg
ICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfRFNURk9STUFUKEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0UkE4KQorICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfRFNURk9S
TUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkExNkYpCisgICAgICAgICAgICBGT1JN
QVRDT05WRVJURVJfQ0FTRV9EU1RGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRS
QTMyRikKKyAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX0RTVEZPUk1BVChHcmFwaGlj
c0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjgpCisgICAgICAgICAgICBGT1JNQVRDT05WRVJURVJf
Q0FTRV9EU1RGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0I1NjUpCisgICAg
ICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9EU1RGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXRSR0IxNkYpCisgICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9EU1RG
T1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0IzMkYpCisgICAgICAgICAgICBG
T1JNQVRDT05WRVJURVJfQ0FTRV9EU1RGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSR0JBOCkKKyAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX0RTVEZPUk1BVChHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE1NTUxKQorICAgICAgICAgICAgRk9STUFUQ09O
VkVSVEVSX0NBU0VfRFNURk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTQ0
NDQpCisgICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9EU1RGT1JNQVQoR3JhcGhpY3ND
b250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMTZGKQorICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVS
X0NBU0VfRFNURk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTMyRikKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisKKyN1bmRlZiBGT1JNQVRDT05WRVJURVJfQ0FTRV9EU1RGT1JNQVQKK30KKwordGVtcGxh
dGU8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgU3JjRm9ybWF0LCBHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdCBEc3RGb3JtYXQ+CitBTFdBWVNfSU5MSU5FIHZvaWQgRm9ybWF0Q29u
dmVydGVyOjpjb252ZXJ0KEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYU9wIGFscGhhT3ApCit7Cisj
ZGVmaW5lIEZPUk1BVENPTlZFUlRFUl9DQVNFX0FMUEhBT1AoYWxwaGFPcCkgXAorICAgIGNhc2Ug
YWxwaGFPcDogXAorICAgICAgICByZXR1cm4gY29udmVydDxTcmNGb3JtYXQsIERzdEZvcm1hdCwg
YWxwaGFPcD4oKTsKKworICAgICAgICBzd2l0Y2ggKGFscGhhT3ApIHsKKyAgICAgICAgICAgIEZP
Uk1BVENPTlZFUlRFUl9DQVNFX0FMUEhBT1AoR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3Ro
aW5nKQorICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfQUxQSEFPUChHcmFwaGljc0Nv
bnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5KQorICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVS
X0NBU0VfQUxQSEFPUChHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1VubXVsdGlwbHkpCisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
fQorI3VuZGVmIEZPUk1BVENPTlZFUlRFUl9DQVNFX0FMUEhBT1AKK30KKwordGVtcGxhdGU8R3Jh
cGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgU3JjRm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6
RGF0YUZvcm1hdCBEc3RGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYU9wIGFscGhhT3A+
CitBTFdBWVNfSU5MSU5FX0VYQ0VQVF9NU1ZDIHZvaWQgRm9ybWF0Q29udmVydGVyOjpjb252ZXJ0
KCkKK3sKKyAgICAvLyBNYW55IGluc3RhbnRpYXRpb25zIG9mIHRoaXMgdGVtcGxhdGUgZnVuY3Rp
b24gd2lsbCBuZXZlciBiZSBlbnRlcmVkLCBzbyB3ZSB0cnkKKyAgICAvLyB0byByZXR1cm4gaW1t
ZWRpYXRlbHkgaW4gdGhlc2UgY2FzZXMgdG8gYXZvaWQgdGhlIGNvbXBpbGVyIHRvIGdlbmVyYXRl
IHVzZWxlc3MgY29kZS4KKyAgICBpZiAoU3JjRm9ybWF0ID09IERzdEZvcm1hdCAmJiBhbHBoYU9w
ID09IEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZykgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIUlzRmxvYXRG
b3JtYXQ8RHN0Rm9ybWF0Pjo6VmFsdWUgJiYgSXNGbG9hdEZvcm1hdDxTcmNGb3JtYXQ+OjpWYWx1
ZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIE9ubHkgdGV4dHVyZXMgdXBsb2FkZWQgZnJvbSBET00gZWxlbWVudHMgb3Ig
SW1hZ2VEYXRhIGNhbiBhbGxvdyBEc3RGb3JtYXQgIT0gU3JjRm9ybWF0LgorICAgIGNvbnN0IGJv
b2wgc3JjRm9ybWF0Q29tZXNGcm9tRE9NRWxlbWVudE9ySW1hZ2VEYXRhID0gR3JhcGhpY3NDb250
ZXh0M0Q6OnNyY0Zvcm1hdENvbWVzRnJvbURPTUVsZW1lbnRPckltYWdlRGF0YShTcmNGb3JtYXQp
OworICAgIGlmICghc3JjRm9ybWF0Q29tZXNGcm9tRE9NRWxlbWVudE9ySW1hZ2VEYXRhICYmIFNy
Y0Zvcm1hdCAhPSBEc3RGb3JtYXQpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gTGlrZXdpc2UsIG9ubHkgdGV4dHVyZXMgdXBs
b2FkZWQgZnJvbSBET00gZWxlbWVudHMgb3IgSW1hZ2VEYXRhIGNhbiBwb3NzaWJseSBoYXZlIHRv
IGJlIHVucHJlbXVsdGlwbGllZC4KKyAgICBpZiAoIXNyY0Zvcm1hdENvbWVzRnJvbURPTUVsZW1l
bnRPckltYWdlRGF0YSAmJiBhbHBoYU9wID09IEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvVW5t
dWx0aXBseSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBpZiAoKCFIYXNBbHBoYShTcmNGb3JtYXQpIHx8ICFIYXNDb2xvcihTcmNG
b3JtYXQpIHx8ICFIYXNDb2xvcihEc3RGb3JtYXQpKSAmJiBhbHBoYU9wICE9IEdyYXBoaWNzQ29u
dGV4dDNEOjpBbHBoYURvTm90aGluZykgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHR5cGVkZWYgdHlwZW5hbWUgRGF0YVR5cGVG
b3JGb3JtYXQ8U3JjRm9ybWF0Pjo6VHlwZSBTcmNUeXBlOworICAgIHR5cGVkZWYgdHlwZW5hbWUg
RGF0YVR5cGVGb3JGb3JtYXQ8RHN0Rm9ybWF0Pjo6VHlwZSBEc3RUeXBlOworICAgIGNvbnN0IGlu
dCBJbnRlcm1lZGlhdGVTcmNGb3JtYXQgPSBJbnRlcm1lZGlhdGVGb3JtYXQ8RHN0Rm9ybWF0Pjo6
VmFsdWU7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBEYXRhVHlwZUZvckZvcm1hdDxJbnRlcm1lZGlh
dGVTcmNGb3JtYXQ+OjpUeXBlIEludGVybWVkaWF0ZVNyY1R5cGU7CisgICAgY29uc3QgcHRyZGlm
Zl90IHNyY1N0cmlkZUluRWxlbWVudHMgPSBtX3NyY1N0cmlkZSAvIHNpemVvZihTcmNUeXBlKTsK
KyAgICBjb25zdCBwdHJkaWZmX3QgZHN0U3RyaWRlSW5FbGVtZW50cyA9IG1fZHN0U3RyaWRlIC8g
c2l6ZW9mKERzdFR5cGUpOworICAgIGNvbnN0IGJvb2wgdHJpdmlhbFVucGFjayA9IChTcmNGb3Jt
YXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBOCAmJiAhSXNGbG9hdEZvcm1h
dDxEc3RGb3JtYXQ+OjpWYWx1ZSAmJiAhSXNIYWxmRmxvYXRGb3JtYXQ8RHN0Rm9ybWF0Pjo6VmFs
dWUpIHx8IFNyY0Zvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkEzMkY7
CisgICAgY29uc3QgYm9vbCB0cml2aWFsUGFjayA9IChEc3RGb3JtYXQgPT0gR3JhcGhpY3NDb250
ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBOCB8fCBEc3RGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXRSR0JBMzJGKSAmJiBhbHBoYU9wID09IEdyYXBoaWNzQ29udGV4dDNEOjpBbHBo
YURvTm90aGluZyAmJiBtX2RzdFN0cmlkZSA+IDA7CisgICAgQVNTRVJUKCF0cml2aWFsVW5wYWNr
IHx8ICF0cml2aWFsUGFjayk7CisKKyAgICBjb25zdCBTcmNUeXBlICpzcmNSb3dTdGFydCA9IHN0
YXRpY19jYXN0PGNvbnN0IFNyY1R5cGUqPihtX3NyY1N0YXJ0KTsKKyAgICBEc3RUeXBlKiBkc3RS
b3dTdGFydCA9IHN0YXRpY19jYXN0PERzdFR5cGUqPihtX2RzdFN0YXJ0KTsKKyAgICBpZiAoIXRy
aXZpYWxVbnBhY2sgJiYgdHJpdmlhbFBhY2spIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2hlaWdodDsgKytpKSB7CisgICAgICAgICAgICB1bnBhY2s8U3JjRm9ybWF0PihzcmNS
b3dTdGFydCwgZHN0Um93U3RhcnQsIG1fd2lkdGgpOworICAgICAgICAgICAgc3JjUm93U3RhcnQg
Kz0gc3JjU3RyaWRlSW5FbGVtZW50czsKKyAgICAgICAgICAgIGRzdFJvd1N0YXJ0ICs9IGRzdFN0
cmlkZUluRWxlbWVudHM7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKCF0cml2aWFsVW5wYWNr
ICYmICF0cml2aWFsUGFjaykgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faGVp
Z2h0OyArK2kpIHsKKyAgICAgICAgICAgIHVucGFjazxTcmNGb3JtYXQ+KHNyY1Jvd1N0YXJ0LCBy
ZWludGVycHJldF9jYXN0X3B0cjxJbnRlcm1lZGlhdGVTcmNUeXBlKj4obV91bnBhY2tlZEludGVy
bWVkaWF0ZVNyY0RhdGEuZ2V0KCkpLCBtX3dpZHRoKTsKKyAgICAgICAgICAgIHBhY2s8RHN0Rm9y
bWF0LCBhbHBoYU9wPihyZWludGVycHJldF9jYXN0X3B0cjxJbnRlcm1lZGlhdGVTcmNUeXBlKj4o
bV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGEuZ2V0KCkpLCBkc3RSb3dTdGFydCwgbV93aWR0
aCk7CisgICAgICAgICAgICBzcmNSb3dTdGFydCArPSBzcmNTdHJpZGVJbkVsZW1lbnRzOworICAg
ICAgICAgICAgZHN0Um93U3RhcnQgKz0gZHN0U3RyaWRlSW5FbGVtZW50czsKKyAgICAgICAgfQor
ICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9oZWlnaHQ7ICsr
aSkgeworICAgICAgICAgICAgcGFjazxEc3RGb3JtYXQsIGFscGhhT3A+KHNyY1Jvd1N0YXJ0LCBk
c3RSb3dTdGFydCwgbV93aWR0aCk7CisgICAgICAgICAgICBzcmNSb3dTdGFydCArPSBzcmNTdHJp
ZGVJbkVsZW1lbnRzOworICAgICAgICAgICAgZHN0Um93U3RhcnQgKz0gZHN0U3RyaWRlSW5FbGVt
ZW50czsKKyAgICAgICAgfQorICAgIH0KKyAgICBtX3N1Y2Nlc3MgPSB0cnVlOworICAgIHJldHVy
bjsKK30KKworfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OnBhY2tQaXhlbHMoY29uc3QgdWludDhfdCogc291cmNlRGF0YSwgRGF0YUZvcm1hdCBzb3Vy
Y2VEYXRhRm9ybWF0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCB1bnNpZ25lZCBz
b3VyY2VVbnBhY2tBbGlnbm1lbnQsIHVuc2lnbmVkIGRlc3RpbmF0aW9uRm9ybWF0LCB1bnNpZ25l
ZCBkZXN0aW5hdGlvblR5cGUsIEFscGhhT3AgYWxwaGFPcCwgdm9pZCogZGVzdGluYXRpb25EYXRh
LCBib29sIGZsaXBZKQoreworICAgIGludCB2YWxpZFNyYyA9IHdpZHRoICogVGV4ZWxCeXRlc0Zv
ckZvcm1hdChzb3VyY2VEYXRhRm9ybWF0KTsKKyAgICBpbnQgcmVtYWluZGVyID0gc291cmNlVW5w
YWNrQWxpZ25tZW50ID8gKHZhbGlkU3JjICUgc291cmNlVW5wYWNrQWxpZ25tZW50KSA6IDA7Cisg
ICAgaW50IHNyY1N0cmlkZSA9IHJlbWFpbmRlciA/ICh2YWxpZFNyYyArIHNvdXJjZVVucGFja0Fs
aWdubWVudCAtIHJlbWFpbmRlcikgOiB2YWxpZFNyYzsKKworICAgIERhdGFGb3JtYXQgZHN0RGF0
YUZvcm1hdCA9IGdldERhdGFGb3JtYXQoZGVzdGluYXRpb25Gb3JtYXQsIGRlc3RpbmF0aW9uVHlw
ZSk7CisgICAgaW50IGRzdFN0cmlkZSA9IHdpZHRoICogVGV4ZWxCeXRlc0ZvckZvcm1hdChkc3RE
YXRhRm9ybWF0KTsKKyAgICBpZiAoZmxpcFkpIHsKKyAgICAgICAgZGVzdGluYXRpb25EYXRhID0g
c3RhdGljX2Nhc3Q8dWludDhfdCo+KGRlc3RpbmF0aW9uRGF0YSkgKyBkc3RTdHJpZGUqKGhlaWdo
dCAtIDEpOworICAgICAgICBkc3RTdHJpZGUgPSAtZHN0U3RyaWRlOworICAgIH0KKyAgICBpZiAo
IUhhc0FscGhhKHNvdXJjZURhdGFGb3JtYXQpIHx8ICFIYXNDb2xvcihzb3VyY2VEYXRhRm9ybWF0
KSB8fCAhSGFzQ29sb3IoZHN0RGF0YUZvcm1hdCkpCisgICAgICAgIGFscGhhT3AgPSBBbHBoYURv
Tm90aGluZzsKKworICAgIGlmIChzb3VyY2VEYXRhRm9ybWF0ID09IGRzdERhdGFGb3JtYXQgJiYg
YWxwaGFPcCA9PSBBbHBoYURvTm90aGluZykgeworICAgICAgICBjb25zdCB1aW50OF90KiBwdHIg
PSBzb3VyY2VEYXRhOworICAgICAgICBjb25zdCB1aW50OF90KiBwdHJFbmQgPSBzb3VyY2VEYXRh
ICsgc3JjU3RyaWRlICogaGVpZ2h0OworICAgICAgICB1bnNpZ25lZCByb3dTaXplID0gKGRzdFN0
cmlkZSA+IDApID8gZHN0U3RyaWRlOiAtZHN0U3RyaWRlOworICAgICAgICB1aW50OF90KiBkc3Qg
PSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGVzdGluYXRpb25EYXRhKTsKKyAgICAgICAgd2hpbGUg
KHB0ciA8IHB0ckVuZCkgeworICAgICAgICAgICAgbWVtY3B5KGRzdCwgcHRyLCByb3dTaXplKTsK
KyAgICAgICAgICAgIHB0ciArPSBzcmNTdHJpZGU7CisgICAgICAgICAgICBkc3QgKz0gZHN0U3Ry
aWRlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIEZvcm1h
dENvbnZlcnRlciBjb252ZXJ0ZXIod2lkdGgsIGhlaWdodCwgc291cmNlRGF0YSwgZGVzdGluYXRp
b25EYXRhLCBzcmNTdHJpZGUsIGRzdFN0cmlkZSk7CisgICAgY29udmVydGVyLmNvbnZlcnQoc291
cmNlRGF0YUZvcm1hdCwgZHN0RGF0YUZvcm1hdCwgYWxwaGFPcCk7CisgICAgaWYgKCFjb252ZXJ0
ZXIuU3VjY2VzcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3Vuc2lnbmVkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRDbGVhckJpdHNCeUF0dGFjaG1lbnRU
eXBlKEdDM0RlbnVtIGF0dGFjaG1lbnQpCit7CisgICAgc3dpdGNoIChhdHRhY2htZW50KSB7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDA6CisgICAgY2FzZSBF
eHRlbnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMz
RDo6Q09MT1JfQVRUQUNITUVOVDJfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT0xPUl9B
VFRBQ0hNRU5UM19FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQ0
X0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09MT1JfQVRUQUNITUVOVDVfRVhUOgorICAg
IGNhc2UgRXh0ZW5zaW9uczNEOjpDT0xPUl9BVFRBQ0hNRU5UNl9FWFQ6CisgICAgY2FzZSBFeHRl
bnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQ3X0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6
Q09MT1JfQVRUQUNITUVOVDhfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT0xPUl9BVFRB
Q0hNRU5UOV9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQxMF9F
WFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQxMV9FWFQ6CisgICAg
Y2FzZSBFeHRlbnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQxMl9FWFQ6CisgICAgY2FzZSBFeHRl
bnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQxM19FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6
OkNPTE9SX0FUVEFDSE1FTlQxNF9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTE9SX0FU
VEFDSE1FTlQxNV9FWFQ6CisgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1Jf
QlVGRkVSX0JJVDsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5U
OgorICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQ7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICBy
ZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQlVGRkVSX0JJVDsKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAgIHJldHVy
biBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQlVGRkVSX0JJVCB8IEdyYXBoaWNzQ29udGV4dDNE
OjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorfQorCit1bnNpZ25lZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q2xlYXJCaXRzQnlGb3Jt
YXQoR0MzRGVudW0gZm9ybWF0KQoreworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6QUxQSEE6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TFVN
SU5BTkNFOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkxVTUlOQU5DRV9BTFBIQToKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6UkdCNTY1OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6UkdCQTQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdC
NV9BMToKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklU
OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDE2OgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDoKKyAgICAgICAgcmV0dXJuIEdy
YXBoaWNzQ29udGV4dDNEOjpERVBUSF9CVUZGRVJfQklUOworICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlNURU5DSUxfSU5ERVg4OgorICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6
OlNURU5DSUxfQlVGRkVSX0JJVDsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9T
VEVOQ0lMOgorICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9C
SVQgfCBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9CVUZGRVJfQklUOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwordW5zaWduZWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldENoYW5uZWxCaXRzQnlGb3JtYXQoR0MzRGVudW0gZm9ybWF0KQoreworICAgIHN3aXRj
aCAoZm9ybWF0KSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QUxQSEE6CisgICAgICAg
IHJldHVybiBDaGFubmVsQWxwaGE7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TFVNSU5B
TkNFOgorICAgICAgICByZXR1cm4gQ2hhbm5lbFJHQjsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpMVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgIHJldHVybiBDaGFubmVsUkdCQTsKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
UkdCNTY1OgorICAgICAgICByZXR1cm4gQ2hhbm5lbFJHQjsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE0OgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQjVfQTE6CisgICAgICAgIHJldHVybiBDaGFubmVsUkdC
QTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQxNjoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQ6CisgICAgICAgIHJldHVybiBD
aGFubmVsRGVwdGg7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9JTkRFWDg6
CisgICAgICAgIHJldHVybiBDaGFubmVsU3RlbmNpbDsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpERVBUSF9TVEVOQ0lMOgorICAgICAgICByZXR1cm4gQ2hhbm5lbERlcHRoIHwgQ2hhbm5l
bFN0ZW5jaWw7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoM0RfR1JBUEhJQ1MpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0
ZXIuaAkod29ya2luZyBjb3B5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9ybWF0Q29udmVydGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE0NzkgKzMwLDIwIEBACiAj
aWYgVVNFKDNEX0dSQVBISUNTKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLQot
I2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgotI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAi
SW1hZ2VEYXRhLmgiCi0jaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgotCi0jaWYgSEFWRShBUk1f
TkVPTl9JTlRSSU5TSUNTKQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNETkVPTi5oIgotI2Vu
ZGlmCi0KLSNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAotLy8gVmlzdWFsIFN0dWRpbyBjcmFzaGVzIHdpdGggYSBDMTA2
MyBGYXRhbCBFcnJvciBpZiBldmVyeXRoaW5nIGlzIGlubGluZWQuCi0jaWYgQ09NUElMRVIoTVNW
QykKLSNkZWZpbmUgQUxXQVlTX0lOTElORV9FWENFUFRfTVNWQwotI2Vsc2UKLSNkZWZpbmUgQUxX
QVlTX0lOTElORV9FWENFUFRfTVNWQyBBTFdBWVNfSU5MSU5FCi0jZW5kaWYKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1uYW1lc3BhY2UgewotCi1HcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1h
dCBnZXREYXRhRm9ybWF0KEdDM0RlbnVtIGRlc3RpbmF0aW9uRm9ybWF0LCBHQzNEZW51bSBkZXN0
aW5hdGlvblR5cGUpCi17Ci0gICAgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgZHN0Rm9y
bWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBODsKLSAgICBzd2l0Y2ggKGRl
c3RpbmF0aW9uVHlwZSkgewotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZ
VEU6Ci0gICAgICAgIHN3aXRjaCAoZGVzdGluYXRpb25Gb3JtYXQpIHsKLSAgICAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6UkdCOgotICAgICAgICAgICAgZHN0Rm9ybWF0ID0gR3JhcGhpY3ND
b250ZXh0M0Q6OkRhdGFGb3JtYXRSR0I4OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE6Ci0gICAgICAgICAgICBkc3RGb3JtYXQgPSBHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE4OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBOgotICAgICAgICAgICAgZHN0Rm9ybWF0
ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBODsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpMVU1JTkFOQ0U6Ci0gICAgICAgICAgICBk
c3RGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFI4OwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkxVTUlOQU5DRV9BTFBIQToK
LSAgICAgICAgICAgIGRzdEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkE4
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVF80XzRfNF80OgotICAgICAgICBkc3RGb3Jt
YXQgPSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE0NDQ0OwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVF81XzVfNV8xOgot
ICAgICAgICBkc3RGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE1NTUx
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9T
SE9SVF81XzZfNToKLSAgICAgICAgZHN0Rm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRSR0I1NjU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkhBTEZfRkxPQVRfT0VTOiAvLyBPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Ci0gICAgICAgIHN3aXRj
aCAoZGVzdGluYXRpb25Gb3JtYXQpIHsKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
UkdCOgotICAgICAgICAgICAgZHN0Rm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSR0IxNkY7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQToKLSAgICAgICAgICAgIGRzdEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UkdCQTE2RjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpBTFBIQToKLSAgICAgICAgICAgIGRzdEZvcm1hdCA9IEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0QTE2RjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpMVU1JTkFOQ0U6Ci0gICAgICAgICAgICBkc3RGb3JtYXQgPSBH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFIxNkY7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TFVNSU5BTkNFX0FMUEhBOgotICAgICAgICAg
ICAgZHN0Rm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTE2RjsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6RkxPQVQ6IC8vIE9FU190ZXh0dXJlX2Zsb2F0Ci0gICAgICAgIHN3aXRjaCAoZGVz
dGluYXRpb25Gb3JtYXQpIHsKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCOgot
ICAgICAgICAgICAgZHN0Rm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0Iz
MkY7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQToKLSAgICAgICAgICAgIGRzdEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9y
bWF0UkdCQTMyRjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpBTFBIQToKLSAgICAgICAgICAgIGRzdEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0QTMyRjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpMVU1JTkFOQ0U6Ci0gICAgICAgICAgICBkc3RGb3JtYXQgPSBHcmFwaGlj
c0NvbnRleHQzRDo6RGF0YUZvcm1hdFIzMkY7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TFVNSU5BTkNFX0FMUEhBOgotICAgICAgICAgICAgZHN0
Rm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTMyRjsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotICAgIHJldHVybiBkc3RGb3JtYXQ7Ci19Ci0KLX0g
Ly8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi1ib29sIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFn
ZTJEUmVzb3VyY2VTYWZlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGlu
dCBib3JkZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRGludCB1bnBhY2tB
bGlnbm1lbnQpCi17Ci0gICAgQVNTRVJUKHVucGFja0FsaWdubWVudCA9PSAxIHx8IHVucGFja0Fs
aWdubWVudCA9PSAyIHx8IHVucGFja0FsaWdubWVudCA9PSA0IHx8IHVucGFja0FsaWdubWVudCA9
PSA4KTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWQgY2hhcltdPiB6ZXJvOwotICAgIGlm
ICghaXNSZXNvdXJjZVNhZmUoKSAmJiB3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCkgewotICAgICAg
ICB1bnNpZ25lZCBpbnQgc2l6ZTsKLSAgICAgICAgR0MzRGVudW0gZXJyb3IgPSBjb21wdXRlSW1h
Z2VTaXplSW5CeXRlcyhmb3JtYXQsIHR5cGUsIHdpZHRoLCBoZWlnaHQsIHVucGFja0FsaWdubWVu
dCwgJnNpemUsIDApOwotICAgICAgICBpZiAoZXJyb3IgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5P
X0VSUk9SKSB7Ci0gICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihlcnJvcik7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgemVybyA9IHN0ZDo6bWFrZV91
bmlxdWU8dW5zaWduZWQgY2hhcltdPihzaXplKTsKLSAgICAgICAgaWYgKCF6ZXJvKSB7Ci0gICAg
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxV
RSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgbWVtc2V0
KHplcm8uZ2V0KCksIDAsIHNpemUpOwotICAgIH0KLSAgICByZXR1cm4gdGV4SW1hZ2UyRCh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQs
IHR5cGUsIHplcm8uZ2V0KCkpOwotfQotCi1ib29sIEdyYXBoaWNzQ29udGV4dDNEOjpjb21wdXRl
Rm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMoR0MzRGVudW0gZm9ybWF0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIHR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50KiBjb21wb25lbnRzUGVyUGl4ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBieXRlc1BlckNvbXBv
bmVudCkKLXsKLSAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkFMUEhBOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkxVTUlOQU5DRToKLSAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQ6Ci0gICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTDoKLSAgICAgICAgKmNvbXBvbmVudHNQZXJQaXhlbCA9
IDE7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkxVTUlOQU5D
RV9BTFBIQToKLSAgICAgICAgKmNvbXBvbmVudHNQZXJQaXhlbCA9IDI7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQjoKLSAgICAgICAgKmNvbXBvbmVudHNQ
ZXJQaXhlbCA9IDM7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkE6Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkJHUkFfRVhUOiAvLyBHTF9FWFRfdGV4dHVy
ZV9mb3JtYXRfQkdSQTg4ODgKLSAgICAgICAgKmNvbXBvbmVudHNQZXJQaXhlbCA9IDQ7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
ICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURf
QllURToKLSAgICAgICAgKmJ5dGVzUGVyQ29tcG9uZW50ID0gc2l6ZW9mKEdDM0R1Ynl0ZSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JU
OgotICAgICAgICAqYnl0ZXNQZXJDb21wb25lbnQgPSBzaXplb2YoR0MzRHVzaG9ydCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JUXzVf
Nl81OgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JUXzRfNF80XzQ6
Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlRfNV81XzVfMToKLSAg
ICAgICAgKmNvbXBvbmVudHNQZXJQaXhlbCA9IDE7Ci0gICAgICAgICpieXRlc1BlckNvbXBvbmVu
dCA9IHNpemVvZihHQzNEdXNob3J0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6VU5TSUdORURfSU5UXzI0Xzg6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6VU5TSUdORURfSU5UOgotICAgICAgICAqYnl0ZXNQZXJDb21wb25lbnQgPSBzaXplb2YoR0Mz
RHVpbnQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9B
VDogLy8gT0VTX3RleHR1cmVfZmxvYXQKLSAgICAgICAgKmJ5dGVzUGVyQ29tcG9uZW50ID0gc2l6
ZW9mKEdDM0RmbG9hdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkhBTEZfRkxPQVRfT0VTOiAvLyBPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Ci0gICAgICAgICpi
eXRlc1BlckNvbXBvbmVudCA9IHNpemVvZihHQzNEaGFsZmZsb2F0KTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXB1dGVJbWFnZVNpemVJ
bkJ5dGVzKEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRHNpemVpIHdpZHRoLCBH
QzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGFsaWdubWVudCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIGltYWdlU2l6ZUlu
Qnl0ZXMsIHVuc2lnbmVkIGludCogcGFkZGluZ0luQnl0ZXMpCi17Ci0gICAgQVNTRVJUKGltYWdl
U2l6ZUluQnl0ZXMpOwotICAgIEFTU0VSVChhbGlnbm1lbnQgPT0gMSB8fCBhbGlnbm1lbnQgPT0g
MiB8fCBhbGlnbm1lbnQgPT0gNCB8fCBhbGlnbm1lbnQgPT0gOCk7Ci0gICAgaWYgKHdpZHRoIDwg
MCB8fCBoZWlnaHQgPCAwKQotICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfVkFMVUU7Ci0gICAgdW5zaWduZWQgaW50IGJ5dGVzUGVyQ29tcG9uZW50LCBjb21wb25lbnRz
UGVyUGl4ZWw7Ci0gICAgaWYgKCFjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMoZm9ybWF0
LCB0eXBlLCAmYnl0ZXNQZXJDb21wb25lbnQsICZjb21wb25lbnRzUGVyUGl4ZWwpKQotICAgICAg
ICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTTsKLSAgICBpZiAoIXdpZHRo
IHx8ICFoZWlnaHQpIHsKLSAgICAgICAgKmltYWdlU2l6ZUluQnl0ZXMgPSAwOwotICAgICAgICBp
ZiAocGFkZGluZ0luQnl0ZXMpCi0gICAgICAgICAgICAqcGFkZGluZ0luQnl0ZXMgPSAwOwotICAg
ICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SOwotICAgIH0KLSAgICBDaGVj
a2VkPHVpbnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZFZhbHVlID0gYnl0ZXNQZXJDb21w
b25lbnQgKiBjb21wb25lbnRzUGVyUGl4ZWw7Ci0gICAgY2hlY2tlZFZhbHVlICo9ICB3aWR0aDsK
LSAgICBpZiAoY2hlY2tlZFZhbHVlLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFOwotICAgIHVuc2lnbmVkIGludCB2YWxpZFJv
d1NpemUgPSBjaGVja2VkVmFsdWUudW5zYWZlR2V0KCk7Ci0gICAgdW5zaWduZWQgaW50IHBhZGRp
bmcgPSAwOwotICAgIHVuc2lnbmVkIGludCByZXNpZHVhbCA9IHZhbGlkUm93U2l6ZSAlIGFsaWdu
bWVudDsKLSAgICBpZiAocmVzaWR1YWwpIHsKLSAgICAgICAgcGFkZGluZyA9IGFsaWdubWVudCAt
IHJlc2lkdWFsOwotICAgICAgICBjaGVja2VkVmFsdWUgKz0gcGFkZGluZzsKLSAgICB9Ci0gICAg
Ly8gTGFzdCByb3cgbmVlZHMgbm8gcGFkZGluZy4KLSAgICBjaGVja2VkVmFsdWUgKj0gKGhlaWdo
dCAtIDEpOwotICAgIGNoZWNrZWRWYWx1ZSArPSB2YWxpZFJvd1NpemU7Ci0gICAgaWYgKGNoZWNr
ZWRWYWx1ZS5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9WQUxVRTsKLSAgICAqaW1hZ2VTaXplSW5CeXRlcyA9IGNoZWNrZWRWYWx1ZS51
bnNhZmVHZXQoKTsKLSAgICBpZiAocGFkZGluZ0luQnl0ZXMpCi0gICAgICAgICpwYWRkaW5nSW5C
eXRlcyA9IHBhZGRpbmc7Ci0gICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUjsK
LX0KLQotR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpJbWFnZUV4dHJhY3RvcihJ
bWFnZSogaW1hZ2UsIEltYWdlSHRtbERvbVNvdXJjZSBpbWFnZUh0bWxEb21Tb3VyY2UsIGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSkKLXsKLSAg
ICBtX2ltYWdlID0gaW1hZ2U7Ci0gICAgbV9pbWFnZUh0bWxEb21Tb3VyY2UgPSBpbWFnZUh0bWxE
b21Tb3VyY2U7Ci0gICAgbV9leHRyYWN0U3VjY2VlZGVkID0gZXh0cmFjdEltYWdlKHByZW11bHRp
cGx5QWxwaGEsIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKTsKLX0KLQotYm9vbCBHcmFwaGlj
c0NvbnRleHQzRDo6cGFja0ltYWdlRGF0YSgKLSAgICBJbWFnZSogaW1hZ2UsCi0gICAgY29uc3Qg
dm9pZCogcGl4ZWxzLAotICAgIEdDM0RlbnVtIGZvcm1hdCwKLSAgICBHQzNEZW51bSB0eXBlLAot
ICAgIGJvb2wgZmxpcFksCi0gICAgQWxwaGFPcCBhbHBoYU9wLAotICAgIERhdGFGb3JtYXQgc291
cmNlRm9ybWF0LAotICAgIHVuc2lnbmVkIHdpZHRoLAotICAgIHVuc2lnbmVkIGhlaWdodCwKLSAg
ICB1bnNpZ25lZCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsCi0gICAgVmVjdG9yPHVpbnQ4X3Q+JiBk
YXRhKQotewotICAgIGlmICghcGl4ZWxzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB1
bnNpZ25lZCBwYWNrZWRTaXplOwotICAgIC8vIE91dHB1dCBkYXRhIGlzIHRpZ2h0bHkgcGFja2Vk
IChhbGlnbm1lbnQgPT0gMSkuCi0gICAgaWYgKGNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKGZvcm1h
dCwgdHlwZSwgd2lkdGgsIGhlaWdodCwgMSwgJnBhY2tlZFNpemUsIDApICE9IEdyYXBoaWNzQ29u
dGV4dDNEOjpOT19FUlJPUikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGRhdGEucmVzaXpl
KHBhY2tlZFNpemUpOwotCi0gICAgaWYgKCFwYWNrUGl4ZWxzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHBpeGVscyksIHNvdXJjZUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNl
VW5wYWNrQWxpZ25tZW50LCBmb3JtYXQsIHR5cGUsIGFscGhhT3AsIGRhdGEuZGF0YSgpLCBmbGlw
WSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoSW1hZ2VPYnNlcnZlciAqb2JzZXJ2
ZXIgPSBpbWFnZS0+aW1hZ2VPYnNlcnZlcigpKQotICAgICAgICBvYnNlcnZlci0+ZGlkRHJhdyhp
bWFnZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmV4
dHJhY3RJbWFnZURhdGEoSW1hZ2VEYXRhKiBpbWFnZURhdGEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlwWSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4mIGRhdGEpCi17Ci0g
ICAgaWYgKCFpbWFnZURhdGEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbnQgd2lkdGgg
PSBpbWFnZURhdGEtPndpZHRoKCk7Ci0gICAgaW50IGhlaWdodCA9IGltYWdlRGF0YS0+aGVpZ2h0
KCk7Ci0KLSAgICB1bnNpZ25lZCBpbnQgcGFja2VkU2l6ZTsKLSAgICAvLyBPdXRwdXQgZGF0YSBp
cyB0aWdodGx5IHBhY2tlZCAoYWxpZ25tZW50ID09IDEpLgotICAgIGlmIChjb21wdXRlSW1hZ2VT
aXplSW5CeXRlcyhmb3JtYXQsIHR5cGUsIHdpZHRoLCBoZWlnaHQsIDEsICZwYWNrZWRTaXplLCAw
KSAhPSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBkYXRhLnJlc2l6ZShwYWNrZWRTaXplKTsKLQotICAgIGlmICghcGFja1BpeGVscyhpbWFn
ZURhdGEtPmRhdGEoKS0+ZGF0YSgpLCBEYXRhRm9ybWF0UkdCQTgsIHdpZHRoLCBoZWlnaHQsIDAs
IGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSA/IEFscGhhRG9QcmVtdWx0aXBseSA6IEFs
cGhhRG9Ob3RoaW5nLCBkYXRhLmRhdGEoKSwgZmxpcFkpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6ZXh0cmFj
dFRleHR1cmVEYXRhKHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQs
IEdDM0RlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHVucGFja0FsaWdubWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogcGl4
ZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3Rvcjx1
aW50OF90PiYgZGF0YSkKLXsKLSAgICAvLyBBc3N1bWVzIGZvcm1hdCwgdHlwZSwgZXRjLiBoYXZl
IGFscmVhZHkgYmVlbiB2YWxpZGF0ZWQuCi0gICAgRGF0YUZvcm1hdCBzb3VyY2VEYXRhRm9ybWF0
ID0gZ2V0RGF0YUZvcm1hdChmb3JtYXQsIHR5cGUpOwotCi0gICAgLy8gUmVzaXplIHRoZSBvdXRw
dXQgYnVmZmVyLgotICAgIHVuc2lnbmVkIGludCBjb21wb25lbnRzUGVyUGl4ZWwsIGJ5dGVzUGVy
Q29tcG9uZW50OwotICAgIGlmICghY29tcHV0ZUZvcm1hdEFuZFR5cGVQYXJhbWV0ZXJzKGZvcm1h
dCwgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tcG9u
ZW50c1BlclBpeGVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZi
eXRlc1BlckNvbXBvbmVudCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1bnNpZ25lZCBp
bnQgYnl0ZXNQZXJQaXhlbCA9IGNvbXBvbmVudHNQZXJQaXhlbCAqIGJ5dGVzUGVyQ29tcG9uZW50
OwotICAgIGRhdGEucmVzaXplKHdpZHRoICogaGVpZ2h0ICogYnl0ZXNQZXJQaXhlbCk7Ci0KLSAg
ICBpZiAoIXBhY2tQaXhlbHMoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscyksIHNv
dXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHVucGFja0FsaWdubWVudCwgZm9ybWF0LCB0
eXBlLCAocHJlbXVsdGlwbHlBbHBoYSA/IEFscGhhRG9QcmVtdWx0aXBseSA6IEFscGhhRG9Ob3Ro
aW5nKSwgZGF0YS5kYXRhKCksIGZsaXBZKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIEZvbGxvd2luZyBGbG9hdCB0byBI
YWxmLUZsb2F0IGNvbnZlcmlvbiBjb2RlIGlzIGZyb20gdGhlIGltcGxlbWVudGF0aW9uIG9mIGZ0
cDovL3d3dy5mb3gtdG9vbGtpdC5vcmcvcHViL2Zhc3RoYWxmZmxvYXRjb252ZXJzaW9uLnBkZiwK
LS8vICJGYXN0IEhhbGYgRmxvYXQgQ29udmVyc2lvbnMiIGJ5IEplcm9lbiB2YW4gZGVyIFppanAs
IE5vdmVtYmVyIDIwMDggKFJldmlzZWQgU2VwdGVtYmVyIDIwMTApLgotLy8gU3BlY2lhbGx5LCB0
aGUgYmFzZXRhYmxlWzUxMl0gYW5kIHNoaWZ0dGFibGVbNTEyXSBhcmUgZ2VuZXJhdGVkIGFzIGZv
bGxvd3M6Ci0vKgotdW5zaWduZWQgc2hvcnQgYmFzZXRhYmxlWzUxMl07Ci11bnNpZ25lZCBjaGFy
IHNoaWZ0dGFibGVbNTEyXTsKLQotdm9pZCBnZW5lcmF0ZXRhYmxlcygpewotICAgIHVuc2lnbmVk
IGludCBpOwotICAgIGludCBlOwotICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7ICsraSl7Ci0gICAg
ICAgIGUgPSBpIC0gMTI3OwotICAgICAgICBpZiAoZSA8IC0yNCl7IC8vIFZlcnkgc21hbGwgbnVt
YmVycyBtYXAgdG8gemVybwotICAgICAgICAgICAgYmFzZXRhYmxlW2kgfCAweDAwMF0gPSAweDAw
MDA7Ci0gICAgICAgICAgICBiYXNldGFibGVbaSB8IDB4MTAwXSA9IDB4ODAwMDsKLSAgICAgICAg
ICAgIHNoaWZ0dGFibGVbaSB8IDB4MDAwXSA9IDI0OwotICAgICAgICAgICAgc2hpZnR0YWJsZVtp
IHwgMHgxMDBdID0gMjQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZSA8IC0xNCkgeyAv
LyBTbWFsbCBudW1iZXJzIG1hcCB0byBkZW5vcm1zCi0gICAgICAgICAgICBiYXNldGFibGVbaSB8
IDB4MDAwXSA9ICgweDA0MDA+PigtZS0xNCkpOwotICAgICAgICAgICAgYmFzZXRhYmxlW2kgfCAw
eDEwMF0gPSAoMHgwNDAwPj4oLWUtMTQpKSB8IDB4ODAwMDsKLSAgICAgICAgICAgIHNoaWZ0dGFi
bGVbaSB8IDB4MDAwXSA9IC1lLTE7Ci0gICAgICAgICAgICBzaGlmdHRhYmxlW2kgfCAweDEwMF0g
PSAtZS0xOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGUgPD0gMTUpeyAvLyBOb3JtYWwg
bnVtYmVycyBqdXN0IGxvc2UgcHJlY2lzaW9uCi0gICAgICAgICAgICBiYXNldGFibGVbaSB8IDB4
MDAwXSA9ICgoZSsxNSk8PDEwKTsKLSAgICAgICAgICAgIGJhc2V0YWJsZVtpfCAweDEwMF0gPSAo
KGUrMTUpPDwxMCkgfCAweDgwMDA7Ci0gICAgICAgICAgICBzaGlmdHRhYmxlW2l8MHgwMDBdID0g
MTM7Ci0gICAgICAgICAgICBzaGlmdHRhYmxlW2l8MHgxMDBdID0gMTM7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZSBpZiAoZTwxMjgpeyAvLyBMYXJnZSBudW1iZXJzIG1hcCB0byBJbmZpbml0eQot
ICAgICAgICAgICAgYmFzZXRhYmxlW2l8MHgwMDBdID0gMHg3QzAwOwotICAgICAgICAgICAgYmFz
ZXRhYmxlW2l8MHgxMDBdID0gMHhGQzAwOwotICAgICAgICAgICAgc2hpZnR0YWJsZVtpfDB4MDAw
XSA9IDI0OwotICAgICAgICAgICAgc2hpZnR0YWJsZVtpfDB4MTAwXSA9IDI0OwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgeyAvLyBJbmZpbml0eSBhbmQgTmFOJ3Mgc3RheSBJbmZpbml0eSBhbmQg
TmFOJ3MKLSAgICAgICAgICAgIGJhc2V0YWJsZVtpfDB4MDAwXSA9IDB4N0MwMDsKLSAgICAgICAg
ICAgIGJhc2V0YWJsZVtpfDB4MTAwXSA9IDB4RkMwMDsKLSAgICAgICAgICAgIHNoaWZ0dGFibGVb
aXwweDAwMF0gPSAxMzsKLSAgICAgICAgICAgIHNoaWZ0dGFibGVbaXwweDEwMF0gPSAxMzsKLSAg
ICAgICB9Ci0gICAgfQotfQotKi8KLQotdW5zaWduZWQgc2hvcnQgYmFzZVRhYmxlWzUxMl0gPSB7
Ci0wLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAg
IDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAg
MCwgICAgICAwLAotMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAg
ICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAg
ICAwLCAgICAgIDAsICAgICAgMCwKLTAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwg
ICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAg
ICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsCi0wLCAgICAgIDAsICAgICAgMCwgICAgICAw
LCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAs
ICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLAotMCwgICAgICAwLCAgICAg
IDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAg
MCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwKLTAsICAg
ICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAg
ICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAg
IDAsCi0wLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAg
ICAgIDEsICAgICAgMiwgICAgICA0LCAgICAgIDgsICAgICAgMTYsICAgICAzMiwgICAgIDY0LCAg
ICAgMTI4LCAgICAyNTYsCi01MTIsICAgIDEwMjQsICAgMjA0OCwgICAzMDcyLCAgIDQwOTYsICAg
NTEyMCwgICA2MTQ0LCAgIDcxNjgsICAgODE5MiwgICA5MjE2LCAgIDEwMjQwLCAgMTEyNjQsICAx
MjI4OCwgIDEzMzEyLCAgMTQzMzYsICAxNTM2MCwKLTE2Mzg0LCAgMTc0MDgsICAxODQzMiwgIDE5
NDU2LCAgMjA0ODAsICAyMTUwNCwgIDIyNTI4LCAgMjM1NTIsICAyNDU3NiwgIDI1NjAwLCAgMjY2
MjQsICAyNzY0OCwgIDI4NjcyLCAgMjk2OTYsICAzMDcyMCwgIDMxNzQ0LAotMzE3NDQsICAzMTc0
NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0
LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQs
Ci0zMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwg
IDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAg
MzE3NDQsICAzMTc0NCwKLTMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAz
MTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMx
NzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LAotMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3
NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0
NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsCi0zMTc0NCwgIDMxNzQ0
LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQs
ICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwK
LTMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAg
MzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAz
MTc0NCwgIDMxNzQ0LAotMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMx
NzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3
NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsCi0zMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2
OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4
LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwKLTMyNzY4LCAgMzI3Njgs
ICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwg
IDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LAot
MzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAz
Mjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMy
NzY4LCAgMzI3NjgsCi0zMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3
NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2
OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwKLTMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4
LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3Njgs
ICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LAotMzI3NjgsICAzMjc2OCwg
IDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAg
MzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsCi0z
Mjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMy
NzY5LCAgMzI3NzAsICAzMjc3MiwgIDMyNzc2LCAgMzI3ODQsICAzMjgwMCwgIDMyODMyLCAgMzI4
OTYsICAzMzAyNCwKLTMzMjgwLCAgMzM3OTIsICAzNDgxNiwgIDM1ODQwLCAgMzY4NjQsICAzNzg4
OCwgIDM4OTEyLCAgMzk5MzYsICA0MDk2MCwgIDQxOTg0LCAgNDMwMDgsICA0NDAzMiwgIDQ1MDU2
LCAgNDYwODAsICA0NzEwNCwgIDQ4MTI4LAotNDkxNTIsICA1MDE3NiwgIDUxMjAwLCAgNTIyMjQs
ICA1MzI0OCwgIDU0MjcyLCAgNTUyOTYsICA1NjMyMCwgIDU3MzQ0LCAgNTgzNjgsICA1OTM5Miwg
IDYwNDE2LCAgNjE0NDAsICA2MjQ2NCwgIDYzNDg4LCAgNjQ1MTIsCi02NDUxMiwgIDY0NTEyLCAg
NjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2
NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwKLTY0
NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1
MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUx
MiwgIDY0NTEyLAotNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEy
LCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIs
ICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsCi02NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwg
IDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAg
NjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwKLTY0NTEyLCAgNjQ1MTIsICA2
NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0
NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLAotNjQ1
MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUx
MiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEy
LCAgNjQ1MTIsCi02NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIs
ICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwg
IDY0NTEyLCAgNjQ1MTIsICA2NDUxMgotfTsKLQotdW5zaWduZWQgY2hhciBzaGlmdFRhYmxlWzUx
Ml0gPSB7Ci0yNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwKLTI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LAotMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsCi0yNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwKLTI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LAotMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsCi0yNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDIzLCAgICAgMjIsICAgICAyMSwgICAgIDIwLCAgICAgMTksICAgICAx
OCwgICAgIDE3LCAgICAgMTYsICAgICAxNSwKLTE0LCAgICAgMTMsICAgICAxMywgICAgIDEzLCAg
ICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAg
ICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLAotMTMsICAgICAxMywgICAgIDEz
LCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMs
ICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMjQsCi0yNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwKLTI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LAotMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsCi0yNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwKLTI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LAotMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
Ci0yNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAxMywKLTI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LAotMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsCi0yNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwKLTI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LAot
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsCi0yNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwKLTI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjMsICAgICAyMiwgICAgIDIxLCAgICAgMjAsICAgICAxOSwg
ICAgIDE4LCAgICAgMTcsICAgICAxNiwgICAgIDE1LAotMTQsICAgICAxMywgICAgIDEzLCAgICAg
MTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAx
MywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsCi0xMywgICAgIDEzLCAg
ICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAg
ICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAyNCwKLTI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LAotMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsCi0yNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwKLTI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LAotMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsCi0yNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwKLTI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDEzCi19OwotCi11bnNpZ25lZCBzaG9ydCBjb252ZXJ0RmxvYXRUb0hhbGZG
bG9hdChmbG9hdCBmKQotewotICAgIHVuc2lnbmVkIHRlbXAgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8
dW5zaWduZWQgKj4oJmYpKTsKLSAgICB1bnNpZ25lZCBzaWduZXhwID0gKHRlbXAgPj4gMjMpICYg
MHgxZmY7Ci0gICAgcmV0dXJuIGJhc2VUYWJsZVtzaWduZXhwXSArICgodGVtcCAmIDB4MDA3ZmZm
ZmYpID4+IHNoaWZ0VGFibGVbc2lnbmV4cF0pOwotfQotCi0vKiBCRUdJTiBDT0RFIFNIQVJFRCBX
SVRIIE1PWklMTEEgRklSRUZPWCAqLwotCi0vLyBUaGUgZm9sbG93aW5nIHBhY2tpbmcgYW5kIHVu
cGFja2luZyByb3V0aW5lcyBhcmUgZXhwcmVzc2VkIGluIHRlcm1zIG9mIGZ1bmN0aW9uIHRlbXBs
YXRlcyBhbmQgaW5saW5lIGZ1bmN0aW9ucyB0byBhY2hpZXZlIGdlbmVyYWxpdHkgYW5kIHNwZWVk
dXAuCi0vLyBFeHBsaWNpdCB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMgY29ycmVzcG9uZCB0byB0
aGUgY2FzZXMgdGhhdCB3b3VsZCBvY2N1ci4KLS8vIFNvbWUgY29kZSBhcmUgbWVyZ2VkIGJhY2sg
ZnJvbSBNb3ppbGxhIGNvZGUgaW4gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhLWNlbnRy
YWwvc291cmNlL2NvbnRlbnQvY2FudmFzL3NyYy9XZWJHTFRleGVsQ29udmVyc2lvbnMuaAotCi0v
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS8vIFBpeGVsIHVucGFja2luZyByb3V0aW5lcy4KLXRlbXBsYXRlPGlu
dCBmb3JtYXQsIHR5cGVuYW1lIFNvdXJjZVR5cGUsIHR5cGVuYW1lIERzdFR5cGU+Ci1BTFdBWVNf
SU5MSU5FIHZvaWQgdW5wYWNrKGNvbnN0IFNvdXJjZVR5cGUqLCBEc3RUeXBlKiwgdW5zaWduZWQp
Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lO
TElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjgsIHVpbnQ4
X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNl
WzBdOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXTsKLSAgICAgICAgZGVzdGlu
YXRpb25bMl0gPSBzb3VyY2VbMl07Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0gMHhGRjsKLSAg
ICAgICAgc291cmNlICs9IDM7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAgfQotfQot
Ci10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXRCR1I4LCB1aW50OF90LCB1aW50OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2Us
IHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBk
ZXN0aW5hdGlvblswXSA9IHNvdXJjZVsyXTsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3Vy
Y2VbMV07Ci0gICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzBdOwotICAgICAgICBkZXN0
aW5hdGlvblszXSA9IDB4RkY7Ci0gICAgICAgIHNvdXJjZSArPSAzOwotICAgICAgICBkZXN0aW5h
dGlvbiArPSA0OwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5w
YWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVJHQjgsIHVpbnQ4X3QsIHVpbnQ4X3Q+
KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBp
eGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1Bl
clJvdzsgKytpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzFdOwotICAgICAg
ICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsyXTsKLSAgICAgICAgZGVzdGluYXRpb25bMl0gPSBz
b3VyY2VbM107Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNlWzBdOwotICAgICAgICBz
b3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKLSAgICB9Ci19Ci0KLXRlbXBs
YXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdEFCR1I4LCB1aW50OF90LCB1aW50OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4
X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBkZXN0aW5h
dGlvblswXSA9IHNvdXJjZVszXTsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMl07
Ci0gICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzFdOwotICAgICAgICBkZXN0aW5hdGlv
blszXSA9IHNvdXJjZVswXTsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0
aW9uICs9IDQ7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBh
Y2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRCR1JBOCwgdWludDhfdCwgdWludDhfdD4o
Y29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4
ZWxzUGVyUm93KQotewotICAgIGNvbnN0IHVpbnQzMl90KiBzb3VyY2UzMiA9IHJlaW50ZXJwcmV0
X2Nhc3RfcHRyPGNvbnN0IHVpbnQzMl90Kj4oc291cmNlKTsKLSAgICB1aW50MzJfdCogZGVzdGlu
YXRpb24zMiA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQzMl90Kj4oZGVzdGluYXRpb24pOwot
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAg
ICAgICAgdWludDMyX3QgYmdyYSA9IHNvdXJjZTMyW2ldOwotI2lmIENQVShCSUdfRU5ESUFOKQot
ICAgICAgICB1aW50MzJfdCBick1hc2sgPSAweGZmMDBmZjAwOwotICAgICAgICB1aW50MzJfdCBn
YU1hc2sgPSAweDAwZmYwMGZmOwotI2Vsc2UKLSAgICAgICAgdWludDMyX3QgYnJNYXNrID0gMHgw
MGZmMDBmZjsKLSAgICAgICAgdWludDMyX3QgZ2FNYXNrID0gMHhmZjAwZmYwMDsKLSNlbmRpZgot
ICAgICAgICB1aW50MzJfdCByZ2JhID0gKCgoYmdyYSA+PiAxNikgfCAoYmdyYSA8PCAxNikpICYg
YnJNYXNrKSB8IChiZ3JhICYgZ2FNYXNrKTsKLSAgICAgICAgZGVzdGluYXRpb24zMltpXSA9IHJn
YmE7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3Jh
cGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNTU1MSwgdWludDE2X3QsIHVpbnQ4X3Q+KGNv
bnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhl
bHNQZXJSb3cpCi17Ci0jaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotICAgIFNJTUQ6OnVu
cGFja09uZVJvd09mUkdCQTU1NTFUb1JHQkE4KHNvdXJjZSwgZGVzdGluYXRpb24sIHBpeGVsc1Bl
clJvdyk7Ci0jZW5kaWYKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1Bl
clJvdzsgKytpKSB7Ci0gICAgICAgIHVpbnQxNl90IHBhY2tlZFZhbHVlID0gc291cmNlWzBdOwot
ICAgICAgICB1aW50OF90IHIgPSBwYWNrZWRWYWx1ZSA+PiAxMTsKLSAgICAgICAgdWludDhfdCBn
ID0gKHBhY2tlZFZhbHVlID4+IDYpICYgMHgxRjsKLSAgICAgICAgdWludDhfdCBiID0gKHBhY2tl
ZFZhbHVlID4+IDEpICYgMHgxRjsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSAociA8PCAzKSB8
IChyICYgMHg3KTsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSAoZyA8PCAzKSB8IChnICYgMHg3
KTsKLSAgICAgICAgZGVzdGluYXRpb25bMl0gPSAoYiA8PCAzKSB8IChiICYgMHg3KTsKLSAgICAg
ICAgZGVzdGluYXRpb25bM10gPSAocGFja2VkVmFsdWUgJiAweDEpID8gMHhGRiA6IDB4MDsKLSAg
ICAgICAgc291cmNlICs9IDE7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAgfQotfQot
Ci10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXRSR0JBNDQ0NCwgdWludDE2X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQxNl90KiBz
b3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0j
aWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotICAgIFNJTUQ6OnVucGFja09uZVJvd09mUkdC
QTQ0NDRUb1JHQkE4KHNvdXJjZSwgZGVzdGluYXRpb24sIHBpeGVsc1BlclJvdyk7Ci0jZW5kaWYK
LSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0g
ICAgICAgIHVpbnQxNl90IHBhY2tlZFZhbHVlID0gc291cmNlWzBdOwotICAgICAgICB1aW50OF90
IHIgPSBwYWNrZWRWYWx1ZSA+PiAxMjsKLSAgICAgICAgdWludDhfdCBnID0gKHBhY2tlZFZhbHVl
ID4+IDgpICYgMHgwRjsKLSAgICAgICAgdWludDhfdCBiID0gKHBhY2tlZFZhbHVlID4+IDQpICYg
MHgwRjsKLSAgICAgICAgdWludDhfdCBhID0gcGFja2VkVmFsdWUgJiAweDBGOwotICAgICAgICBk
ZXN0aW5hdGlvblswXSA9IHIgPDwgNCB8IHI7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzFdID0gZyA8
PCA0IHwgZzsKLSAgICAgICAgZGVzdGluYXRpb25bMl0gPSBiIDw8IDQgfCBiOwotICAgICAgICBk
ZXN0aW5hdGlvblszXSA9IGEgPDwgNCB8IGE7Ci0gICAgICAgIHNvdXJjZSArPSAxOwotICAgICAg
ICBkZXN0aW5hdGlvbiArPSA0OwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5F
IHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCNTY1LCB1aW50MTZf
dCwgdWludDhfdD4oY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1Mp
Ci0gICAgU0lNRDo6dW5wYWNrT25lUm93T2ZSR0I1NjVUb1JHQkE4KHNvdXJjZSwgZGVzdGluYXRp
b24sIHBpeGVsc1BlclJvdyk7Ci0jZW5kaWYKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIHVpbnQxNl90IHBhY2tlZFZhbHVlID0g
c291cmNlWzBdOwotICAgICAgICB1aW50OF90IHIgPSBwYWNrZWRWYWx1ZSA+PiAxMTsKLSAgICAg
ICAgdWludDhfdCBnID0gKHBhY2tlZFZhbHVlID4+IDUpICYgMHgzRjsKLSAgICAgICAgdWludDhf
dCBiID0gcGFja2VkVmFsdWUgJiAweDFGOwotICAgICAgICBkZXN0aW5hdGlvblswXSA9IChyIDw8
IDMpIHwgKHIgJiAweDcpOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IChnIDw8IDIpIHwgKGcg
JiAweDMpOwotICAgICAgICBkZXN0aW5hdGlvblsyXSA9IChiIDw8IDMpIHwgKGIgJiAweDcpOwot
ICAgICAgICBkZXN0aW5hdGlvblszXSA9IDB4RkY7Ci0gICAgICAgIHNvdXJjZSArPSAxOwotICAg
ICAgICBkZXN0aW5hdGlvbiArPSA0OwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNfSU5M
SU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjgsIHVpbnQ4X3Qs
IHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVu
c2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBd
OwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVswXTsKLSAgICAgICAgZGVzdGluYXRp
b25bMl0gPSBzb3VyY2VbMF07Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0gMHhGRjsKLSAgICAg
ICAgc291cmNlICs9IDE7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAgfQotfQotCi10
ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRSQTgsIHVpbnQ4X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWlu
dDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGRlc3Rp
bmF0aW9uWzBdID0gc291cmNlWzBdOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsw
XTsKLSAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMF07Ci0gICAgICAgIGRlc3RpbmF0
aW9uWzNdID0gc291cmNlWzFdOwotICAgICAgICBzb3VyY2UgKz0gMjsKLSAgICAgICAgZGVzdGlu
YXRpb24gKz0gNDsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVu
cGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSOCwgdWludDhfdCwgdWludDhfdD4o
Y29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4
ZWxzUGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVy
Um93OyArK2kpIHsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMV07Ci0gICAgICAg
IGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFdOwotICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNv
dXJjZVsxXTsKLSAgICAgICAgZGVzdGluYXRpb25bM10gPSBzb3VyY2VbMF07Ci0gICAgICAgIHNv
dXJjZSArPSAyOwotICAgICAgICBkZXN0aW5hdGlvbiArPSA0OwotICAgIH0KLX0KLQotdGVtcGxh
dGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9y
bWF0QTgsIHVpbnQ4X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCog
ZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9u
WzBdID0gMHgwOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IDB4MDsKLSAgICAgICAgZGVzdGlu
YXRpb25bMl0gPSAweDA7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNlWzBdOwotICAg
ICAgICBzb3VyY2UgKz0gMTsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKLSAgICB9Ci19Ci0K
LXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6
RGF0YUZvcm1hdFJHQkE4LCB1aW50OF90LCBmbG9hdD4oY29uc3QgdWludDhfdCogc291cmNlLCBm
bG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBjb25zdCBm
bG9hdCBzY2FsZUZhY3RvciA9IDEuMGYgLyAyNTUuMGY7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBkZXN0aW5hdGlvblswXSA9
IHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJj
ZVsxXSAqIHNjYWxlRmFjdG9yOwotICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXSAq
IHNjYWxlRmFjdG9yOwotICAgICAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVszXSAqIHNjYWxl
RmFjdG9yOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gNDsK
LSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGlj
c0NvbnRleHQzRDo6RGF0YUZvcm1hdEJHUkE4LCB1aW50OF90LCBmbG9hdD4oY29uc3QgdWludDhf
dCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsK
LSAgICBjb25zdCBmbG9hdCBzY2FsZUZhY3RvciA9IDEuMGYgLyAyNTUuMGY7Ci0gICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBkZXN0
aW5hdGlvblswXSA9IHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9yOwotICAgICAgICBkZXN0aW5hdGlv
blsxXSA9IHNvdXJjZVsxXSAqIHNjYWxlRmFjdG9yOwotICAgICAgICBkZXN0aW5hdGlvblsyXSA9
IHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yOwotICAgICAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJj
ZVszXSAqIHNjYWxlRmFjdG9yOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGlu
YXRpb24gKz0gNDsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVu
cGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFCR1I4LCB1aW50OF90LCBmbG9hdD4o
Y29uc3QgdWludDhfdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVs
c1BlclJvdykKLXsKLSAgICBjb25zdCBmbG9hdCBzY2FsZUZhY3RvciA9IDEuMGYgLyAyNTUuMGY7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAg
ICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzNdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRl
c3RpbmF0aW9uWzFdID0gc291cmNlWzJdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRlc3RpbmF0
aW9uWzJdID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNd
ID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIHNvdXJjZSArPSA0OwotICAgICAg
ICBkZXN0aW5hdGlvbiArPSA0OwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5F
IHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVJHQjgsIHVpbnQ4X3Qs
IGZsb2F0Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGNvbnN0IGZsb2F0IHNjYWxlRmFjdG9yID0gMS4wZiAv
IDI1NS4wZjsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kp
IHsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMV0gKiBzY2FsZUZhY3RvcjsKLSAg
ICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMl0gKiBzY2FsZUZhY3RvcjsKLSAgICAgICAg
ZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbM10gKiBzY2FsZUZhY3RvcjsKLSAgICAgICAgZGVzdGlu
YXRpb25bM10gPSBzb3VyY2VbMF0gKiBzY2FsZUZhY3RvcjsKLSAgICAgICAgc291cmNlICs9IDQ7
Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZ
U19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0I4LCB1
aW50OF90LCBmbG9hdD4oY29uc3QgdWludDhfdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBjb25zdCBmbG9hdCBzY2FsZUZhY3RvciA9
IDEuMGYgLyAyNTUuMGY7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJv
dzsgKytpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0
b3I7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7Ci0g
ICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzJdICogc2NhbGVGYWN0b3I7Ci0gICAgICAg
IGRlc3RpbmF0aW9uWzNdID0gMTsKLSAgICAgICAgc291cmNlICs9IDM7Ci0gICAgICAgIGRlc3Rp
bmF0aW9uICs9IDQ7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1
bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRCR1I4LCB1aW50OF90LCBmbG9hdD4o
Y29uc3QgdWludDhfdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVs
c1BlclJvdykKLXsKLSAgICBjb25zdCBmbG9hdCBzY2FsZUZhY3RvciA9IDEuMGYgLyAyNTUuMGY7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAg
ICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzJdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRl
c3RpbmF0aW9uWzFdID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRlc3RpbmF0
aW9uWzJdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNd
ID0gMTsKLSAgICAgICAgc291cmNlICs9IDM7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0g
ICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3ND
b250ZXh0M0Q6OkRhdGFGb3JtYXRSR0IzMkYsIGZsb2F0LCBmbG9hdD4oY29uc3QgZmxvYXQqIHNv
dXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAg
ICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBz
b3VyY2VbMV07Ci0gICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzJdOwotICAgICAgICBk
ZXN0aW5hdGlvblszXSA9IDE7Ci0gICAgICAgIHNvdXJjZSArPSAzOwotICAgICAgICBkZXN0aW5h
dGlvbiArPSA0OwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5w
YWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjMyRiwgZmxvYXQsIGZsb2F0Pihjb25z
dCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJv
dykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytp
KSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwotICAgICAgICBkZXN0aW5h
dGlvblsxXSA9IHNvdXJjZVswXTsKLSAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMF07
Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0gMTsKLSAgICAgICAgc291cmNlICs9IDE7Ci0gICAg
ICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJ
TkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTMyRiwgZmxvYXQs
IGZsb2F0Pihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVk
IHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVs
c1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwotICAg
ICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVswXTsKLSAgICAgICAgZGVzdGluYXRpb25bMl0g
PSBzb3VyY2VbMF07Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNlWzFdOwotICAgICAg
ICBzb3VyY2UgKz0gMjsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKLSAgICB9Ci19Ci0KLXRl
bXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdEEzMkYsIGZsb2F0LCBmbG9hdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBkZXN0aW5hdGlvblsw
XSA9IDA7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzFdID0gMDsKLSAgICAgICAgZGVzdGluYXRpb25b
Ml0gPSAwOwotICAgICAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVswXTsKLSAgICAgICAgc291
cmNlICs9IDE7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAgfQotfQotCi0vLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS8vIFBpeGVsIHBhY2tpbmcgcm91dGluZXMuCi0vLwotCi10ZW1wbGF0ZTxpbnQg
Zm9ybWF0LCBpbnQgYWxwaGFPcCwgdHlwZW5hbWUgU291cmNlVHlwZSwgdHlwZW5hbWUgRHN0VHlw
ZT4KLUFMV0FZU19JTkxJTkUgdm9pZCBwYWNrKGNvbnN0IFNvdXJjZVR5cGUqLCBEc3RUeXBlKiwg
dW5zaWduZWQpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXRlbXBsYXRlPD4g
QUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBOCwg
R3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCB1aW50OF90LCB1aW50OF90Pihjb25z
dCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQ
ZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7
ICsraSkgewotICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVszXTsKLSAgICAgICAgc291
cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDE7Ci0gICAgfQotfQotCi10ZW1wbGF0
ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0
UjgsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywgdWludDhfdCwgdWludDhfdD4o
Y29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4
ZWxzUGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVy
Um93OyArK2kpIHsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07Ci0gICAgICAg
IHNvdXJjZSArPSA0OwotICAgICAgICBkZXN0aW5hdGlvbiArPSAxOwotICAgIH0KLX0KLQotdGVt
cGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdFI4LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5LCB1aW50OF90LCB1
aW50OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBw
aXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVsz
XSAvIDI1NS4wZjsKLSAgICAgICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWludDhf
dD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAg
IGRlc3RpbmF0aW9uWzBdID0gc291cmNlUjsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAg
IGRlc3RpbmF0aW9uICs9IDE7Ci0gICAgfQotfQotCi0vLyBGSVhNRTogdGhpcyByb3V0aW5lIGlz
IGxvc3N5IGFuZCBtdXN0IGJlIHJlbW92ZWQuCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9p
ZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjgsIEdyYXBoaWNzQ29udGV4dDNE
OjpBbHBoYURvVW5tdWx0aXBseSwgdWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhfdCogc291
cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewotICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAg
ICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gPyAyNTUuMGYgLyBzb3VyY2VbM10gOiAx
LjBmOwotICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0
aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICAgICAgZGVzdGlu
YXRpb25bMF0gPSBzb3VyY2VSOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGlu
YXRpb24gKz0gMTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBh
Y2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTgsIEdyYXBoaWNzQ29udGV4dDNEOjpB
bHBoYURvTm90aGluZywgdWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhfdCogc291cmNlLCB1
aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAgZGVz
dGluYXRpb25bMF0gPSBzb3VyY2VbMF07Ci0gICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNl
WzNdOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gMjsKLSAg
ICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250
ZXh0M0Q6OkRhdGFGb3JtYXRSQTgsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvUHJlbXVsdGlw
bHksIHVpbnQ4X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVz
dGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGZsb2F0IHNjYWxlRmFj
dG9yID0gc291cmNlWzNdIC8gMjU1LjBmOwotICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0
aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFj
dG9yKTsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VSOwotICAgICAgICBkZXN0aW5h
dGlvblsxXSA9IHNvdXJjZVszXTsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3Rp
bmF0aW9uICs9IDI7Ci0gICAgfQotfQotCi0vLyBGSVhNRTogdGhpcyByb3V0aW5lIGlzIGxvc3N5
IGFuZCBtdXN0IGJlIHJlbW92ZWQuCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNr
PEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkE4LCBHcmFwaGljc0NvbnRleHQzRDo6QWxw
aGFEb1VubXVsdGlwbHksIHVpbnQ4X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwg
dWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGZs
b2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdID8gMjU1LjBmIC8gc291cmNlWzNdIDogMS4wZjsK
LSAgICAgICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIGRlc3RpbmF0aW9u
WzBdID0gc291cmNlUjsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbM107Ci0gICAg
ICAgIHNvdXJjZSArPSA0OwotICAgICAgICBkZXN0aW5hdGlvbiArPSAyOwotICAgIH0KLX0KLQot
dGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdFJHQjgsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywgdWludDhfdCwg
dWludDhfdD4oY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5z
aWduZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
cGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07
Ci0gICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFdOwotICAgICAgICBkZXN0aW5hdGlv
blsyXSA9IHNvdXJjZVsyXTsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0
aW9uICs9IDM7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNr
PEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCOCwgR3JhcGhpY3NDb250ZXh0M0Q6OkFs
cGhhRG9QcmVtdWx0aXBseSwgdWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhfdCogc291cmNl
LCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAg
ZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gLyAyNTUuMGY7Ci0gICAgICAgIHVpbnQ4X3Qg
c291cmNlUiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2Vb
MF0pICogc2NhbGVGYWN0b3IpOwotICAgICAgICB1aW50OF90IHNvdXJjZUcgPSBzdGF0aWNfY2Fz
dDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzFdKSAqIHNjYWxlRmFjdG9yKTsK
LSAgICAgICAgdWludDhfdCBzb3VyY2VCID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHNvdXJjZVsyXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIGRlc3RpbmF0aW9u
WzBdID0gc291cmNlUjsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VHOwotICAgICAg
ICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZUI7Ci0gICAgICAgIHNvdXJjZSArPSA0OwotICAgICAg
ICBkZXN0aW5hdGlvbiArPSAzOwotICAgIH0KLX0KLQotLy8gRklYTUU6IHRoaXMgcm91dGluZSBp
cyBsb3NzeSBhbmQgbXVzdCBiZSByZW1vdmVkLgotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZv
aWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjgsIEdyYXBoaWNzQ29udGV4
dDNEOjpBbHBoYURvVW5tdWx0aXBseSwgdWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhfdCog
c291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewot
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAg
ICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gPyAyNTUuMGYgLyBzb3VyY2VbM10g
OiAxLjBmOwotICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50OF90Pihz
dGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICAgICAgdWlu
dDhfdCBzb3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNv
dXJjZVsxXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIHVpbnQ4X3Qgc291cmNlQiA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMl0pICogc2NhbGVGYWN0
b3IpOwotICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVI7Ci0gICAgICAgIGRlc3RpbmF0
aW9uWzFdID0gc291cmNlRzsKLSAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VCOwotICAg
ICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gMzsKLSAgICB9Ci19Ci0K
LQotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6
RGF0YUZvcm1hdFJHQkE4LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcsIHVpbnQ4
X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJj
ZSwgcGl4ZWxzUGVyUm93ICogNCk7Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lk
IHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBOCwgR3JhcGhpY3NDb250ZXh0
M0Q6OkFscGhhRG9QcmVtdWx0aXBseSwgdWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhfdCog
c291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewot
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAg
ICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gLyAyNTUuMGY7Ci0gICAgICAgIHVp
bnQ4X3Qgc291cmNlUiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihz
b3VyY2VbMF0pICogc2NhbGVGYWN0b3IpOwotICAgICAgICB1aW50OF90IHNvdXJjZUcgPSBzdGF0
aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzFdKSAqIHNjYWxlRmFj
dG9yKTsKLSAgICAgICAgdWludDhfdCBzb3VyY2VCID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsyXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIGRlc3Rp
bmF0aW9uWzBdID0gc291cmNlUjsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VHOwot
ICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZUI7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNd
ID0gc291cmNlWzNdOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24g
Kz0gNDsKLSAgICB9Ci19Ci0KLS8vIEZJWE1FOiB0aGlzIHJvdXRpbmUgaXMgbG9zc3kgYW5kIG11
c3QgYmUgcmVtb3ZlZC4KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhp
Y3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBOCwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9V
bm11bHRpcGx5LCB1aW50OF90LCB1aW50OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4
X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBmbG9hdCBz
Y2FsZUZhY3RvciA9IHNvdXJjZVszXSA/IDI1NS4wZiAvIHNvdXJjZVszXSA6IDEuMGY7Ci0gICAg
ICAgIHVpbnQ4X3Qgc291cmNlUiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZs
b2F0Pihzb3VyY2VbMF0pICogc2NhbGVGYWN0b3IpOwotICAgICAgICB1aW50OF90IHNvdXJjZUcg
PSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzFdKSAqIHNj
YWxlRmFjdG9yKTsKLSAgICAgICAgdWludDhfdCBzb3VyY2VCID0gc3RhdGljX2Nhc3Q8dWludDhf
dD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsyXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAg
IGRlc3RpbmF0aW9uWzBdID0gc291cmNlUjsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3Vy
Y2VHOwotICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZUI7Ci0gICAgICAgIGRlc3RpbmF0
aW9uWzNdID0gc291cmNlWzNdOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGlu
YXRpb24gKz0gNDsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBh
Y2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNDQ0NCwgR3JhcGhpY3NDb250ZXh0
M0Q6OkFscGhhRG9Ob3RoaW5nLCB1aW50OF90LCB1aW50MTZfdD4oY29uc3QgdWludDhfdCogc291
cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSNp
ZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0gICAgU0lNRDo6cGFja09uZVJvd09mUkdCQThU
b1Vuc2lnbmVkU2hvcnQ0NDQ0KHNvdXJjZSwgZGVzdGluYXRpb24sIHBpeGVsc1BlclJvdyk7Ci0j
ZW5kaWYKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytp
KSB7Ci0gICAgICAgICpkZXN0aW5hdGlvbiA9ICgoKHNvdXJjZVswXSAmIDB4RjApIDw8IDgpCi0g
ICAgICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNlWzFdICYgMHhGMCkgPDwgNCkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHwgKHNvdXJjZVsyXSAmIDB4RjApCi0gICAgICAgICAgICAgICAg
ICAgICAgICB8IChzb3VyY2VbM10gPj4gNCkpOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAg
ICAgZGVzdGluYXRpb24gKz0gMTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElO
RSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNDQ0NCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkFscGhhRG9QcmVtdWx0aXBseSwgdWludDhfdCwgdWludDE2X3Q+KGNvbnN0
IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQ
ZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7
ICsraSkgewotICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSAvIDI1NS4wZjsK
LSAgICAgICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIHVpbnQ4X3Qgc291
cmNlRyA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMV0p
ICogc2NhbGVGYWN0b3IpOwotICAgICAgICB1aW50OF90IHNvdXJjZUIgPSBzdGF0aWNfY2FzdDx1
aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzJdKSAqIHNjYWxlRmFjdG9yKTsKLSAg
ICAgICAgKmRlc3RpbmF0aW9uID0gKCgoc291cmNlUiAmIDB4RjApIDw8IDgpCi0gICAgICAgICAg
ICAgICAgICAgICAgICB8ICgoc291cmNlRyAmIDB4RjApIDw8IDQpCi0gICAgICAgICAgICAgICAg
ICAgICAgICB8IChzb3VyY2VCICYgMHhGMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNv
dXJjZVszXSA+PiA0KSk7Ci0gICAgICAgIHNvdXJjZSArPSA0OwotICAgICAgICBkZXN0aW5hdGlv
biArPSAxOwotICAgIH0KLX0KLQotLy8gRklYTUU6IHRoaXMgcm91dGluZSBpcyBsb3NzeSBhbmQg
bXVzdCBiZSByZW1vdmVkLgotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE0NDQ0LCBHcmFwaGljc0NvbnRleHQzRDo6QWxw
aGFEb1VubXVsdGlwbHksIHVpbnQ4X3QsIHVpbnQxNl90Pihjb25zdCB1aW50OF90KiBzb3VyY2Us
IHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAg
ZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gPyAyNTUuMGYgLyBzb3VyY2VbM10gOiAxLjBm
OwotICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNf
Y2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICAgICAgdWludDhfdCBz
b3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsx
XSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIHVpbnQ4X3Qgc291cmNlQiA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMl0pICogc2NhbGVGYWN0b3IpOwot
ICAgICAgICAqZGVzdGluYXRpb24gPSAoKChzb3VyY2VSICYgMHhGMCkgPDwgOCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHwgKChzb3VyY2VHICYgMHhGMCkgPDwgNCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHwgKHNvdXJjZUIgJiAweEYwKQotICAgICAgICAgICAgICAgICAgICAgICAgfCAo
c291cmNlWzNdID4+IDQpKTsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0
aW9uICs9IDE7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNr
PEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTU1NTEsIEdyYXBoaWNzQ29udGV4dDNE
OjpBbHBoYURvTm90aGluZywgdWludDhfdCwgdWludDE2X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJj
ZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0jaWYg
SEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotICAgIFNJTUQ6OnBhY2tPbmVSb3dPZlJHQkE4VG9V
bnNpZ25lZFNob3J0NTU1MShzb3VyY2UsIGRlc3RpbmF0aW9uLCBwaXhlbHNQZXJSb3cpOwotI2Vu
ZGlmCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkg
ewotICAgICAgICAqZGVzdGluYXRpb24gPSAoKChzb3VyY2VbMF0gJiAweEY4KSA8PCA4KQotICAg
ICAgICAgICAgICAgICAgICAgICAgfCAoKHNvdXJjZVsxXSAmIDB4RjgpIDw8IDMpCi0gICAgICAg
ICAgICAgICAgICAgICAgICB8ICgoc291cmNlWzJdICYgMHhGOCkgPj4gMikKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHwgKHNvdXJjZVszXSA+PiA3KSk7Ci0gICAgICAgIHNvdXJjZSArPSA0Owot
ICAgICAgICBkZXN0aW5hdGlvbiArPSAxOwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNf
SU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE1NTUxLCBH
cmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5LCB1aW50OF90LCB1aW50MTZfdD4o
Y29uc3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBp
eGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1Bl
clJvdzsgKytpKSB7Ci0gICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdIC8gMjU1
LjBmOwotICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0
aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICAgICAgdWludDhf
dCBzb3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJj
ZVsxXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIHVpbnQ4X3Qgc291cmNlQiA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMl0pICogc2NhbGVGYWN0b3Ip
OwotICAgICAgICAqZGVzdGluYXRpb24gPSAoKChzb3VyY2VSICYgMHhGOCkgPDwgOCkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VHICYgMHhGOCkgPDwgMykKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHwgKChzb3VyY2VCICYgMHhGOCkgPj4gMikKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHwgKHNvdXJjZVszXSA+PiA3KSk7Ci0gICAgICAgIHNvdXJjZSArPSA0OwotICAgICAg
ICBkZXN0aW5hdGlvbiArPSAxOwotICAgIH0KLX0KLQotLy8gRklYTUU6IHRoaXMgcm91dGluZSBp
cyBsb3NzeSBhbmQgbXVzdCBiZSByZW1vdmVkLgotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZv
aWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE1NTUxLCBHcmFwaGljc0Nv
bnRleHQzRDo6QWxwaGFEb1VubXVsdGlwbHksIHVpbnQ4X3QsIHVpbnQxNl90Pihjb25zdCB1aW50
OF90KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93
KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kp
IHsKLSAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gPyAyNTUuMGYgLyBzb3Vy
Y2VbM10gOiAxLjBmOwotICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50
OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICAg
ICAgdWludDhfdCBzb3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHNvdXJjZVsxXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIHVpbnQ4X3Qgc291cmNlQiA9
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMl0pICogc2Nh
bGVGYWN0b3IpOwotICAgICAgICAqZGVzdGluYXRpb24gPSAoKChzb3VyY2VSICYgMHhGOCkgPDwg
OCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VHICYgMHhGOCkgPDwgMykKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VCICYgMHhGOCkgPj4gMikKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHwgKHNvdXJjZVszXSA+PiA3KSk7Ci0gICAgICAgIHNvdXJjZSArPSA0
OwotICAgICAgICBkZXN0aW5hdGlvbiArPSAxOwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdB
WVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjU2NSwg
R3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCB1aW50OF90LCB1aW50MTZfdD4oY29u
c3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVs
c1BlclJvdykKLXsKLSNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0gICAgU0lNRDo6cGFj
a09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NjUoc291cmNlLCBkZXN0aW5hdGlvbiwgcGl4
ZWxzUGVyUm93KTsKLSNlbmRpZgotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4
ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAgKmRlc3RpbmF0aW9uID0gKCgoc291cmNlWzBdICYg
MHhGOCkgPDwgOCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VbMV0gJiAweEZD
KSA8PCAzKQotICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHNvdXJjZVsyXSAmIDB4RjgpID4+
IDMpKTsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDE7Ci0g
ICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0UkdCNTY1LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1ByZW11
bHRpcGx5LCB1aW50OF90LCB1aW50MTZfdD4oY29uc3QgdWludDhfdCogc291cmNlLCB1aW50MTZf
dCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGZsb2F0IHNj
YWxlRmFjdG9yID0gc291cmNlWzNdIC8gMjU1LjBmOwotICAgICAgICB1aW50OF90IHNvdXJjZVIg
PSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNj
YWxlRmFjdG9yKTsKLSAgICAgICAgdWludDhfdCBzb3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhf
dD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsxXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAg
IHVpbnQ4X3Qgc291cmNlQiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0
Pihzb3VyY2VbMl0pICogc2NhbGVGYWN0b3IpOwotICAgICAgICAqZGVzdGluYXRpb24gPSAoKChz
b3VyY2VSICYgMHhGOCkgPDwgOCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VH
ICYgMHhGQykgPDwgMykKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VCICYgMHhG
OCkgPj4gMykpOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0g
MTsKLSAgICB9Ci19Ci0KLS8vIEZJWE1FOiB0aGlzIHJvdXRpbmUgaXMgbG9zc3kgYW5kIG11c3Qg
YmUgcmVtb3ZlZC4KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3ND
b250ZXh0M0Q6OkRhdGFGb3JtYXRSR0I1NjUsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvVW5t
dWx0aXBseSwgdWludDhfdCwgdWludDE2X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2
X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBmbG9hdCBz
Y2FsZUZhY3RvciA9IHNvdXJjZVszXSA/IDI1NS4wZiAvIHNvdXJjZVszXSA6IDEuMGY7Ci0gICAg
ICAgIHVpbnQ4X3Qgc291cmNlUiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZs
b2F0Pihzb3VyY2VbMF0pICogc2NhbGVGYWN0b3IpOwotICAgICAgICB1aW50OF90IHNvdXJjZUcg
PSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzFdKSAqIHNj
YWxlRmFjdG9yKTsKLSAgICAgICAgdWludDhfdCBzb3VyY2VCID0gc3RhdGljX2Nhc3Q8dWludDhf
dD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsyXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAg
ICpkZXN0aW5hdGlvbiA9ICgoKHNvdXJjZVIgJiAweEY4KSA8PCA4KQotICAgICAgICAgICAgICAg
ICAgICAgICAgfCAoKHNvdXJjZUcgJiAweEZDKSA8PCAzKQotICAgICAgICAgICAgICAgICAgICAg
ICAgfCAoKHNvdXJjZUIgJiAweEY4KSA+PiAzKSk7Ci0gICAgICAgIHNvdXJjZSArPSA0OwotICAg
ICAgICBkZXN0aW5hdGlvbiArPSAxOwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNfSU5M
SU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjMyRiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCBmbG9hdCwgZmxvYXQ+KGNvbnN0IGZsb2F0KiBz
b3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewotICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAg
ICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07Ci0gICAgICAgIGRlc3RpbmF0aW9uWzFdID0g
c291cmNlWzFdOwotICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXTsKLSAgICAgICAg
c291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDM7Ci0gICAgfQotfQotCi10ZW1w
bGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9y
bWF0UkdCMzJGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5LCBmbG9hdCwg
ZmxvYXQ+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
cGl4ZWxzUGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxz
UGVyUm93OyArK2kpIHsKLSAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM107Ci0g
ICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7Ci0gICAgICAg
IGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRlc3Rp
bmF0aW9uWzJdID0gc291cmNlWzJdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIHNvdXJjZSArPSA0
OwotICAgICAgICBkZXN0aW5hdGlvbiArPSAzOwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdB
WVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjMyRiwg
R3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Vbm11bHRpcGx5LCBmbG9hdCwgZmxvYXQ+KGNvbnN0
IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93
KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kp
IHsKLSAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gPyAxLjBmIC8gc291cmNl
WzNdIDogMS4wZjsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF0gKiBzY2FsZUZh
Y3RvcjsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV0gKiBzY2FsZUZhY3RvcjsK
LSAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMl0gKiBzY2FsZUZhY3RvcjsKLSAgICAg
ICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDM7Ci0gICAgfQotfQotCi0v
LyBVc2VkIG9ubHkgZHVyaW5nIFJHQkE4IG9yIEJHUkE4IC0+IGZsb2F0aW5nLXBvaW50IHVwbG9h
ZHMuCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0UkdCQTMyRiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCBm
bG9hdCwgZmxvYXQ+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5z
aWduZWQgcGl4ZWxzUGVyUm93KQotewotICAgIG1lbWNweShkZXN0aW5hdGlvbiwgc291cmNlLCBw
aXhlbHNQZXJSb3cgKiA0ICogc2l6ZW9mKGZsb2F0KSk7Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlT
X0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMzJGLCBH
cmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5LCBmbG9hdCwgZmxvYXQ+KGNvbnN0
IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93
KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kp
IHsKLSAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM107Ci0gICAgICAgIGRlc3Rp
bmF0aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRlc3RpbmF0aW9u
WzFdID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzJdID0g
c291cmNlWzJdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNl
WzNdOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKLSAg
ICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250
ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMzJGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1VubXVs
dGlwbHksIGZsb2F0LCBmbG9hdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0
aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9
IHNvdXJjZVszXSA/IDEuMGYgLyBzb3VyY2VbM10gOiAxLjBmOwotICAgICAgICBkZXN0aW5hdGlv
blswXSA9IHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9
IHNvdXJjZVsxXSAqIHNjYWxlRmFjdG9yOwotICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJj
ZVsyXSAqIHNjYWxlRmFjdG9yOwotICAgICAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVszXTsK
LSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAgfQot
fQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0QTMyRiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCBmbG9h
dCwgZmxvYXQ+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4
ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbM107Ci0g
ICAgICAgIHNvdXJjZSArPSA0OwotICAgICAgICBkZXN0aW5hdGlvbiArPSAxOwotICAgIH0KLX0K
LQotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6
RGF0YUZvcm1hdFIzMkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywgZmxvYXQs
IGZsb2F0Pihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVk
IHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVs
c1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwotICAg
ICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gMTsKLSAgICB9Ci19Ci0K
LXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRSMzJGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5LCBmbG9h
dCwgZmxvYXQ+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4
ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM107
Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7Ci0gICAg
ICAgIHNvdXJjZSArPSA0OwotICAgICAgICBkZXN0aW5hdGlvbiArPSAxOwotICAgIH0KLX0KLQot
dGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdFIzMkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvVW5tdWx0aXBseSwgZmxvYXQs
IGZsb2F0Pihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVk
IHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVs
c1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdID8g
MS4wZiAvIHNvdXJjZVszXSA6IDEuMGY7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNl
WzBdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIHNvdXJjZSArPSA0OwotICAgICAgICBkZXN0aW5h
dGlvbiArPSAxOwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFj
azxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMzJGLCBHcmFwaGljc0NvbnRleHQzRDo6
QWxwaGFEb05vdGhpbmcsIGZsb2F0LCBmbG9hdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQq
IGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBkZXN0aW5hdGlv
blswXSA9IHNvdXJjZVswXTsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbM107Ci0g
ICAgICAgIHNvdXJjZSArPSA0OwotICAgICAgICBkZXN0aW5hdGlvbiArPSAyOwotICAgIH0KLX0K
LQotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6
RGF0YUZvcm1hdFJBMzJGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5LCBm
bG9hdCwgZmxvYXQ+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5z
aWduZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
cGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2Vb
M107Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7Ci0g
ICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzNdOwotICAgICAgICBzb3VyY2UgKz0gNDsK
LSAgICAgICAgZGVzdGluYXRpb24gKz0gMjsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlT
X0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTMyRiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Vbm11bHRpcGx5LCBmbG9hdCwgZmxvYXQ+KGNvbnN0IGZs
b2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQot
ewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsK
LSAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gPyAxLjBmIC8gc291cmNlWzNd
IDogMS4wZjsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF0gKiBzY2FsZUZhY3Rv
cjsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbM107Ci0gICAgICAgIHNvdXJjZSAr
PSA0OwotICAgICAgICBkZXN0aW5hdGlvbiArPSAyOwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBB
TFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkEx
NkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywgZmxvYXQsIHVpbnQxNl90Pihj
b25zdCBmbG9hdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVs
c1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyAr
K2kpIHsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChz
b3VyY2VbMF0pOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZs
b2F0KHNvdXJjZVsxXSk7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzJdID0gY29udmVydEZsb2F0VG9I
YWxmRmxvYXQoc291cmNlWzJdKTsKLSAgICAgICAgZGVzdGluYXRpb25bM10gPSBjb252ZXJ0Rmxv
YXRUb0hhbGZGbG9hdChzb3VyY2VbM10pOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAg
ZGVzdGluYXRpb24gKz0gNDsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2
b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMTZGLCBHcmFwaGljc0Nv
bnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5LCBmbG9hdCwgdWludDE2X3Q+KGNvbnN0IGZsb2F0
KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQot
ewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAg
ICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXTsKLSAgICAgICAgZGVzdGluYXRpb25b
MF0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbMF0gKiBzY2FsZUZhY3Rvcik7Ci0g
ICAgICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydEZsb2F0VG9IYWxmRmxvYXQoc291cmNlWzFd
ICogc2NhbGVGYWN0b3IpOwotICAgICAgICBkZXN0aW5hdGlvblsyXSA9IGNvbnZlcnRGbG9hdFRv
SGFsZkZsb2F0KHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9yKTsKLSAgICAgICAgZGVzdGluYXRpb25b
M10gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbM10pOwotICAgICAgICBzb3VyY2Ug
Kz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4g
QUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JB
MTZGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1VubXVsdGlwbHksIGZsb2F0LCB1aW50MTZf
dD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBw
aXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJv
dzsgKytpKSB7Ci0gICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdID8gMS4wZiAv
IHNvdXJjZVszXSA6IDEuMGY7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydEZsb2F0
VG9IYWxmRmxvYXQoc291cmNlWzBdICogc2NhbGVGYWN0b3IpOwotICAgICAgICBkZXN0aW5hdGlv
blsxXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVsxXSAqIHNjYWxlRmFjdG9yKTsK
LSAgICAgICAgZGVzdGluYXRpb25bMl0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2Vb
Ml0gKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0gY29udmVydEZsb2F0
VG9IYWxmRmxvYXQoc291cmNlWzNdKTsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRl
c3RpbmF0aW9uICs9IDQ7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9p
ZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCMTZGLCBHcmFwaGljc0NvbnRl
eHQzRDo6QWxwaGFEb05vdGhpbmcsIGZsb2F0LCB1aW50MTZfdD4oY29uc3QgZmxvYXQqIHNvdXJj
ZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGRl
c3RpbmF0aW9uWzBdID0gY29udmVydEZsb2F0VG9IYWxmRmxvYXQoc291cmNlWzBdKTsKLSAgICAg
ICAgZGVzdGluYXRpb25bMV0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbMV0pOwot
ICAgICAgICBkZXN0aW5hdGlvblsyXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVsy
XSk7Ci0gICAgICAgIHNvdXJjZSArPSA0OwotICAgICAgICBkZXN0aW5hdGlvbiArPSAzOwotICAg
IH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdFJHQjE2RiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9QcmVtdWx0
aXBseSwgZmxvYXQsIHVpbnQxNl90Pihjb25zdCBmbG9hdCogc291cmNlLCB1aW50MTZfdCogZGVz
dGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3Ig
PSBzb3VyY2VbM107Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydEZsb2F0VG9IYWxm
RmxvYXQoc291cmNlWzBdICogc2NhbGVGYWN0b3IpOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9
IGNvbnZlcnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVsxXSAqIHNjYWxlRmFjdG9yKTsKLSAgICAg
ICAgZGVzdGluYXRpb25bMl0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbMl0gKiBz
Y2FsZUZhY3Rvcik7Ci0gICAgICAgIHNvdXJjZSArPSA0OwotICAgICAgICBkZXN0aW5hdGlvbiAr
PSAzOwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjE2RiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhh
RG9Vbm11bHRpcGx5LCBmbG9hdCwgdWludDE2X3Q+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIHVpbnQx
Nl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBmbG9hdCBzY2Fs
ZUZhY3RvciA9IHNvdXJjZVszXSA/IDEuMGYgLyBzb3VyY2VbM10gOiAxLjBmOwotICAgICAgICBk
ZXN0aW5hdGlvblswXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVswXSAqIHNjYWxl
RmFjdG9yKTsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9h
dChzb3VyY2VbMV0gKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzJdID0gY29u
dmVydEZsb2F0VG9IYWxmRmxvYXQoc291cmNlWzJdICogc2NhbGVGYWN0b3IpOwotICAgICAgICBz
b3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gMzsKLSAgICB9Ci19Ci0KLXRlbXBs
YXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSQTE2RiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCBmbG9hdCwgdWludDE2
X3Q+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
cGl4ZWxzUGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQZXJS
b3c7ICsraSkgewotICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZs
b2F0KHNvdXJjZVswXSk7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydEZsb2F0VG9I
YWxmRmxvYXQoc291cmNlWzNdKTsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3Rp
bmF0aW9uICs9IDI7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBw
YWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkExNkYsIEdyYXBoaWNzQ29udGV4dDNE
OjpBbHBoYURvUHJlbXVsdGlwbHksIGZsb2F0LCB1aW50MTZfdD4oY29uc3QgZmxvYXQqIHNvdXJj
ZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGZs
b2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdOwotICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNv
bnZlcnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yKTsKLSAgICAgICAg
ZGVzdGluYXRpb25bMV0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbM10pOwotICAg
ICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gMjsKLSAgICB9Ci19Ci0K
LXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRSQTE2RiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Vbm11bHRpcGx5LCBmbG9h
dCwgdWludDE2X3Q+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwg
dW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBw
aXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVsz
XSA/IDEuMGYgLyBzb3VyY2VbM10gOiAxLjBmOwotICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNv
bnZlcnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yKTsKLSAgICAgICAg
ZGVzdGluYXRpb25bMV0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbM10pOwotICAg
ICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gMjsKLSAgICB9Ci19Ci0K
LXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRSMTZGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcsIGZsb2F0LCB1
aW50MTZfdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVs
c1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydEZsb2F0VG9I
YWxmRmxvYXQoc291cmNlWzBdKTsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3Rp
bmF0aW9uICs9IDE7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBw
YWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjE2RiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkFscGhhRG9QcmVtdWx0aXBseSwgZmxvYXQsIHVpbnQxNl90Pihjb25zdCBmbG9hdCogc291cmNl
LCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAgZmxv
YXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM107Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29u
dmVydEZsb2F0VG9IYWxmRmxvYXQoc291cmNlWzBdICogc2NhbGVGYWN0b3IpOwotICAgICAgICBz
b3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gMTsKLSAgICB9Ci19Ci0KLXRlbXBs
YXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSMTZGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1VubXVsdGlwbHksIGZsb2F0LCB1aW50
MTZfdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1Bl
clJvdzsgKytpKSB7Ci0gICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdID8gMS4w
ZiAvIHNvdXJjZVszXSA6IDEuMGY7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydEZs
b2F0VG9IYWxmRmxvYXQoc291cmNlWzBdICogc2NhbGVGYWN0b3IpOwotICAgICAgICBzb3VyY2Ug
Kz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gMTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4g
QUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBMTZG
LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcsIGZsb2F0LCB1aW50MTZfdD4oY29u
c3QgZmxvYXQqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQ
ZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytp
KSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydEZsb2F0VG9IYWxmRmxvYXQoc291
cmNlWzNdKTsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDE7
Ci0gICAgfQotfQotCi1BTFdBWVNfSU5MSU5FIGJvb2wgSGFzQWxwaGEoaW50IGZvcm1hdCkKLXsK
LSAgICByZXR1cm4gZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QTgKLSAg
ICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QTE2RgotICAg
ICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBMzJGCi0gICAg
ICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBOAotICAgICAg
ICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBUjgKLSAgICAgICAg
fHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkExNkYKLSAgICAgICAg
fHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkEzMkYKLSAgICAgICAg
fHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTgKLSAgICAgICAg
fHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QkdSQTgKLSAgICAgICAg
fHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVJHQjgKLSAgICAgICAg
fHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QUJHUjgKLSAgICAgICAg
fHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTE2RgotICAgICAg
ICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMzJGCi0gICAg
ICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE0NDQ0Ci0g
ICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE1NTUx
OwotfQotCi1BTFdBWVNfSU5MSU5FIGJvb2wgSGFzQ29sb3IoaW50IGZvcm1hdCkKLXsKLSAgICBy
ZXR1cm4gZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTgKLSAgICAg
ICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTE2RgotICAg
ICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMzJGCi0g
ICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjgKLSAg
ICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCMTZGCi0g
ICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjMyRgot
ICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRCR1I4Ci0g
ICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEJHUkE4Ci0g
ICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSR0I4Ci0g
ICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFCR1I4Ci0g
ICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE1NTUx
Ci0gICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE0
NDQ0Ci0gICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJH
QjU2NQotICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRS
OAotICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSMTZG
Ci0gICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFIzMkYK
LSAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkE4Ci0g
ICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMTZGCi0g
ICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMzJGCi0g
ICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSODsKLX0K
LQotdGVtcGxhdGU8aW50IEZvcm1hdD4KLXN0cnVjdCBJc0Zsb2F0Rm9ybWF0IHsKLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBWYWx1ZSA9Ci0gICAgICAgIEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdFJHQkEzMkYKLSAgICAgICAgfHwgRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4
dDNEOjpEYXRhRm9ybWF0UkdCMzJGCi0gICAgICAgIHx8IEZvcm1hdCA9PSBHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdFJBMzJGCi0gICAgICAgIHx8IEZvcm1hdCA9PSBHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdFIzMkYKLSAgICAgICAgfHwgRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4
dDNEOjpEYXRhRm9ybWF0QTMyRjsKLX07Ci0KLXRlbXBsYXRlPGludCBGb3JtYXQ+Ci1zdHJ1Y3Qg
SXNIYWxmRmxvYXRGb3JtYXQgewotICAgIHN0YXRpYyBjb25zdCBib29sIFZhbHVlID0KLSAgICAg
ICAgRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTE2RgotICAgICAg
ICB8fCBGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0IxNkYKLSAgICAg
ICAgfHwgRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkExNkYKLSAgICAg
ICAgfHwgRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjE2RgotICAgICAg
ICB8fCBGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBMTZGOwotfTsKLQot
dGVtcGxhdGU8aW50IEZvcm1hdD4KLXN0cnVjdCBJczE2YnBwRm9ybWF0IHsKLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBWYWx1ZSA9Ci0gICAgICAgIEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6
RGF0YUZvcm1hdFJHQkE1NTUxCi0gICAgICAgIHx8IEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdFJHQkE0NDQ0Ci0gICAgICAgIHx8IEZvcm1hdCA9PSBHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdFJHQjU2NTsKLX07Ci0KLXRlbXBsYXRlPGludCBGb3JtYXQsIGJvb2wg
SXNGbG9hdCA9IElzRmxvYXRGb3JtYXQ8Rm9ybWF0Pjo6VmFsdWUsIGJvb2wgSXNIYWxmRmxvYXQg
PSBJc0hhbGZGbG9hdEZvcm1hdDxGb3JtYXQ+OjpWYWx1ZSwgYm9vbCBJczE2YnBwID0gSXMxNmJw
cEZvcm1hdDxGb3JtYXQ+OjpWYWx1ZT4KLXN0cnVjdCBEYXRhVHlwZUZvckZvcm1hdCB7Ci0gICAg
dHlwZWRlZiB1aW50OF90IFR5cGU7Ci19OwotCi10ZW1wbGF0ZTxpbnQgRm9ybWF0Pgotc3RydWN0
IERhdGFUeXBlRm9yRm9ybWF0PEZvcm1hdCwgdHJ1ZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgdHlw
ZWRlZiBmbG9hdCBUeXBlOwotfTsKLQotdGVtcGxhdGU8aW50IEZvcm1hdD4KLXN0cnVjdCBEYXRh
VHlwZUZvckZvcm1hdDxGb3JtYXQsIGZhbHNlLCB0cnVlLCBmYWxzZT4gewotICAgIHR5cGVkZWYg
dWludDE2X3QgVHlwZTsKLX07Ci0KLXRlbXBsYXRlPGludCBGb3JtYXQ+Ci1zdHJ1Y3QgRGF0YVR5
cGVGb3JGb3JtYXQ8Rm9ybWF0LCBmYWxzZSwgZmFsc2UsIHRydWU+IHsKLSAgICB0eXBlZGVmIHVp
bnQxNl90IFR5cGU7Ci19OwotCi10ZW1wbGF0ZTxpbnQgRm9ybWF0Pgotc3RydWN0IEludGVybWVk
aWF0ZUZvcm1hdCB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBWYWx1ZSA9IChJc0Zsb2F0Rm9ybWF0
PEZvcm1hdD46OlZhbHVlIHx8IElzSGFsZkZsb2F0Rm9ybWF0PEZvcm1hdD46OlZhbHVlKSA/IEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTMyRiA6IEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UkdCQTg7Ci19OwotCi1BTFdBWVNfSU5MSU5FIHVuc2lnbmVkIFRleGVsQnl0ZXNG
b3JGb3JtYXQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgZm9ybWF0KQotewotICAgIHN3
aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFI4
OgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBODoKLSAgICAgICAgcmV0
dXJuIDE7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBODoKLSAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVI4OgotICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNTU1MToKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0UkdCQTQ0NDQ6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdFJHQjU2NToKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QTE2RjoK
LSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjE2RjoKLSAgICAgICAgcmV0
dXJuIDI7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjg6Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEJHUjg6Ci0gICAgICAgIHJldHVybiAz
OwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBODoKLSAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVJHQjg6Ci0gICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6RGF0YUZvcm1hdEFCR1I4OgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRCR1JBODoKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjMy
RjoKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QTMyRjoKLSAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkExNkY6Ci0gICAgICAgIHJldHVybiA0Owot
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0IxNkY6Ci0gICAgICAgIHJl
dHVybiA2OwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTMyRjoKLSAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTE2RjoKLSAgICAgICAgcmV0
dXJuIDg7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjMyRjoKLSAg
ICAgICAgcmV0dXJuIDEyOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRS
R0JBMzJGOgotICAgICAgICByZXR1cm4gMTY7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgfQotfQotCi0vKiBFTkQgQ09ERSBTSEFSRUQgV0lUSCBNT1pJTExBIEZJUkVGT1gg
Ki8KLQogY2xhc3MgRm9ybWF0Q29udmVydGVyIHsKIHB1YmxpYzoKLSAgICBGb3JtYXRDb252ZXJ0
ZXIodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwKLSAgICAgICAgY29uc3Qgdm9pZCog
c3JjU3RhcnQsIHZvaWQqIGRzdFN0YXJ0LCBpbnQgc3JjU3RyaWRlLCBpbnQgZHN0U3RyaWRlKQot
ICAgICAgICA6IG1fd2lkdGgod2lkdGgpLCBtX2hlaWdodChoZWlnaHQpLCBtX3NyY1N0YXJ0KHNy
Y1N0YXJ0KSwgbV9kc3RTdGFydChkc3RTdGFydCksIG1fc3JjU3RyaWRlKHNyY1N0cmlkZSksIG1f
ZHN0U3RyaWRlKGRzdFN0cmlkZSksIG1fc3VjY2VzcyhmYWxzZSkKKyAgICBGb3JtYXRDb252ZXJ0
ZXIodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgY29uc3Qgdm9pZCogc3JjU3RhcnQs
IHZvaWQqIGRzdFN0YXJ0LCBpbnQgc3JjU3RyaWRlLCBpbnQgZHN0U3RyaWRlKQorICAgICAgICA6
IG1fd2lkdGgod2lkdGgpCisgICAgICAgICwgbV9oZWlnaHQoaGVpZ2h0KQorICAgICAgICAsIG1f
c3JjU3RhcnQoc3JjU3RhcnQpCisgICAgICAgICwgbV9kc3RTdGFydChkc3RTdGFydCkKKyAgICAg
ICAgLCBtX3NyY1N0cmlkZShzcmNTdHJpZGUpCisgICAgICAgICwgbV9kc3RTdHJpZGUoZHN0U3Ry
aWRlKQorICAgICAgICAsIG1fc3VjY2VzcyhmYWxzZSkKICAgICB7CiAgICAgICAgIGNvbnN0IHVu
c2lnbmVkIE1heE51bWJlck9mQ29tcG9uZW50cyA9IDQ7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVk
IE1heEJ5dGVzUGVyQ29tcG9uZW50ICA9IDQ7CkBAIC0xNTEyLDcgKzUzLDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIHZvaWQgY29udmVydChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBz
cmNGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IGRzdEZvcm1hdCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkFscGhhT3ApOwotICAgIGJvb2wgU3VjY2VzcygpIGNvbnN0IHsgcmV0dXJu
IG1fc3VjY2VzczsgfQorICAgIGJvb2wgc3VjY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2Vz
czsgfQogCiBwcml2YXRlOgogICAgIHRlbXBsYXRlPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9y
bWF0IFNyY0Zvcm1hdD4KQEAgLTE1MzIsMjczICs3Myw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1
bmlxdWVfcHRyPHVpbnQ4X3RbXT4gbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGE7CiB9Owog
Ci12b2lkIEZvcm1hdENvbnZlcnRlcjo6Y29udmVydChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdCBzcmNGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IGRzdEZvcm1hdCwg
R3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhT3AgYWxwaGFPcCkKLXsKLSNkZWZpbmUgRk9STUFUQ09O
VkVSVEVSX0NBU0VfU1JDRk9STUFUKFNyY0Zvcm1hdCkgXAotICAgIGNhc2UgU3JjRm9ybWF0OiBc
Ci0gICAgICAgIHJldHVybiBjb252ZXJ0PFNyY0Zvcm1hdD4oZHN0Rm9ybWF0LCBhbHBoYU9wKTsK
LQotICAgICAgICBzd2l0Y2ggKHNyY0Zvcm1hdCkgewotICAgICAgICAgICAgRk9STUFUQ09OVkVS
VEVSX0NBU0VfU1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjgpCi0gICAg
ICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXRBOCkKLSAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1B
VChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFIzMkYpCi0gICAgICAgICAgICBGT1JNQVRD
T05WRVJURVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBMzJG
KQotICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0UkE4KQotICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0Vf
U1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkEzMkYpCi0gICAgICAgICAg
ICBGT1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRSR0I4KQotICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QkdSOCkKLSAgICAgICAgICAgIEZPUk1BVENPTlZF
UlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjU2NSkK
LSAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdFJHQjMyRikKLSAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNF
X1NSQ0ZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE4KQotICAgICAgICAg
ICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0QVJHQjgpCi0gICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQo
R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBQkdSOCkKLSAgICAgICAgICAgIEZPUk1BVENP
TlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSOCkK
LSAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdEJHUkE4KQotICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0Vf
U1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTU1NTEpCi0gICAgICAg
ICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRSR0JBNDQ0NCkKLSAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZP
Uk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkEzMkYpCi0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQotI3VuZGVm
IEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVAotfQotCi10ZW1wbGF0ZTxHcmFwaGljc0Nv
bnRleHQzRDo6RGF0YUZvcm1hdCBTcmNGb3JtYXQ+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgRm9ybWF0
Q29udmVydGVyOjpjb252ZXJ0KEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IGRzdEZvcm1h
dCwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhT3AgYWxwaGFPcCkKLXsKLSNkZWZpbmUgRk9STUFU
Q09OVkVSVEVSX0NBU0VfRFNURk9STUFUKERzdEZvcm1hdCkgXAotICAgIGNhc2UgRHN0Rm9ybWF0
OiBcCi0gICAgICAgIHJldHVybiBjb252ZXJ0PFNyY0Zvcm1hdCwgRHN0Rm9ybWF0PihhbHBoYU9w
KTsKLQotICAgICAgICBzd2l0Y2ggKGRzdEZvcm1hdCkgewotICAgICAgICAgICAgRk9STUFUQ09O
VkVSVEVSX0NBU0VfRFNURk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjgpCi0g
ICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9EU1RGT1JNQVQoR3JhcGhpY3NDb250ZXh0
M0Q6OkRhdGFGb3JtYXRSMTZGKQotICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfRFNU
Rk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjMyRikKLSAgICAgICAgICAgIEZP
Uk1BVENPTlZFUlRFUl9DQVNFX0RTVEZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1h
dEE4KQotICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfRFNURk9STUFUKEdyYXBoaWNz
Q29udGV4dDNEOjpEYXRhRm9ybWF0QTE2RikKLSAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9D
QVNFX0RTVEZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEEzMkYpCi0gICAgICAg
ICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9EU1RGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRSQTgpCi0gICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9EU1RGT1JNQVQo
R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTE2RikKLSAgICAgICAgICAgIEZPUk1BVENP
TlZFUlRFUl9DQVNFX0RTVEZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMzJG
KQotICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfRFNURk9STUFUKEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0UkdCOCkKLSAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNF
X0RTVEZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjU2NSkKLSAgICAgICAg
ICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX0RTVEZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdFJHQjE2RikKLSAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX0RTVEZPUk1B
VChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjMyRikKLSAgICAgICAgICAgIEZPUk1B
VENPTlZFUlRFUl9DQVNFX0RTVEZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJH
QkE4KQotICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfRFNURk9STUFUKEdyYXBoaWNz
Q29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTU1NTEpCi0gICAgICAgICAgICBGT1JNQVRDT05WRVJU
RVJfQ0FTRV9EU1RGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNDQ0NCkK
LSAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX0RTVEZPUk1BVChHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdFJHQkExNkYpCi0gICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FT
RV9EU1RGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMzJGKQotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0K
LQotI3VuZGVmIEZPUk1BVENPTlZFUlRFUl9DQVNFX0RTVEZPUk1BVAotfQotCi10ZW1wbGF0ZTxH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBTcmNGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0IERzdEZvcm1hdD4KLUFMV0FZU19JTkxJTkUgdm9pZCBGb3JtYXRDb252ZXJ0
ZXI6OmNvbnZlcnQoR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhT3AgYWxwaGFPcCkKLXsKLSNkZWZp
bmUgRk9STUFUQ09OVkVSVEVSX0NBU0VfQUxQSEFPUChhbHBoYU9wKSBcCi0gICAgY2FzZSBhbHBo
YU9wOiBcCi0gICAgICAgIHJldHVybiBjb252ZXJ0PFNyY0Zvcm1hdCwgRHN0Rm9ybWF0LCBhbHBo
YU9wPigpOwotCi0gICAgICAgIHN3aXRjaCAoYWxwaGFPcCkgewotICAgICAgICAgICAgRk9STUFU
Q09OVkVSVEVSX0NBU0VfQUxQSEFPUChHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcp
Ci0gICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9BTFBIQU9QKEdyYXBoaWNzQ29udGV4
dDNEOjpBbHBoYURvUHJlbXVsdGlwbHkpCi0gICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FT
RV9BTFBIQU9QKEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvVW5tdWx0aXBseSkKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9Ci0j
dW5kZWYgRk9STUFUQ09OVkVSVEVSX0NBU0VfQUxQSEFPUAotfQotCi10ZW1wbGF0ZTxHcmFwaGlj
c0NvbnRleHQzRDo6RGF0YUZvcm1hdCBTcmNGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0IERzdEZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhT3AgYWxwaGFPcD4KLUFM
V0FZU19JTkxJTkVfRVhDRVBUX01TVkMgdm9pZCBGb3JtYXRDb252ZXJ0ZXI6OmNvbnZlcnQoKQot
ewotICAgIC8vIE1hbnkgaW5zdGFudGlhdGlvbnMgb2YgdGhpcyB0ZW1wbGF0ZSBmdW5jdGlvbiB3
aWxsIG5ldmVyIGJlIGVudGVyZWQsIHNvIHdlIHRyeQotICAgIC8vIHRvIHJldHVybiBpbW1lZGlh
dGVseSBpbiB0aGVzZSBjYXNlcyB0byBhdm9pZCB0aGUgY29tcGlsZXIgdG8gZ2VuZXJhdGUgdXNl
bGVzcyBjb2RlLgotICAgIGlmIChTcmNGb3JtYXQgPT0gRHN0Rm9ybWF0ICYmIGFscGhhT3AgPT0g
R3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nKSB7Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghSXNGbG9hdEZvcm1h
dDxEc3RGb3JtYXQ+OjpWYWx1ZSAmJiBJc0Zsb2F0Rm9ybWF0PFNyY0Zvcm1hdD46OlZhbHVlKSB7
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgLy8gT25seSB0ZXh0dXJlcyB1cGxvYWRlZCBmcm9tIERPTSBlbGVtZW50cyBvciBJbWFn
ZURhdGEgY2FuIGFsbG93IERzdEZvcm1hdCAhPSBTcmNGb3JtYXQuCi0gICAgY29uc3QgYm9vbCBz
cmNGb3JtYXRDb21lc0Zyb21ET01FbGVtZW50T3JJbWFnZURhdGEgPSBHcmFwaGljc0NvbnRleHQz
RDo6c3JjRm9ybWF0Q29tZXNGcm9tRE9NRWxlbWVudE9ySW1hZ2VEYXRhKFNyY0Zvcm1hdCk7Ci0g
ICAgaWYgKCFzcmNGb3JtYXRDb21lc0Zyb21ET01FbGVtZW50T3JJbWFnZURhdGEgJiYgU3JjRm9y
bWF0ICE9IERzdEZvcm1hdCkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBMaWtld2lzZSwgb25seSB0ZXh0dXJlcyB1cGxvYWRl
ZCBmcm9tIERPTSBlbGVtZW50cyBvciBJbWFnZURhdGEgY2FuIHBvc3NpYmx5IGhhdmUgdG8gYmUg
dW5wcmVtdWx0aXBsaWVkLgotICAgIGlmICghc3JjRm9ybWF0Q29tZXNGcm9tRE9NRWxlbWVudE9y
SW1hZ2VEYXRhICYmIGFscGhhT3AgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Vbm11bHRp
cGx5KSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGlmICgoIUhhc0FscGhhKFNyY0Zvcm1hdCkgfHwgIUhhc0NvbG9yKFNyY0Zvcm1h
dCkgfHwgIUhhc0NvbG9yKERzdEZvcm1hdCkpICYmIGFscGhhT3AgIT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkFscGhhRG9Ob3RoaW5nKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBEYXRhVHlwZUZvckZv
cm1hdDxTcmNGb3JtYXQ+OjpUeXBlIFNyY1R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBEYXRh
VHlwZUZvckZvcm1hdDxEc3RGb3JtYXQ+OjpUeXBlIERzdFR5cGU7Ci0gICAgY29uc3QgaW50IElu
dGVybWVkaWF0ZVNyY0Zvcm1hdCA9IEludGVybWVkaWF0ZUZvcm1hdDxEc3RGb3JtYXQ+OjpWYWx1
ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIERhdGFUeXBlRm9yRm9ybWF0PEludGVybWVkaWF0ZVNy
Y0Zvcm1hdD46OlR5cGUgSW50ZXJtZWRpYXRlU3JjVHlwZTsKLSAgICBjb25zdCBwdHJkaWZmX3Qg
c3JjU3RyaWRlSW5FbGVtZW50cyA9IG1fc3JjU3RyaWRlIC8gc2l6ZW9mKFNyY1R5cGUpOwotICAg
IGNvbnN0IHB0cmRpZmZfdCBkc3RTdHJpZGVJbkVsZW1lbnRzID0gbV9kc3RTdHJpZGUgLyBzaXpl
b2YoRHN0VHlwZSk7Ci0gICAgY29uc3QgYm9vbCB0cml2aWFsVW5wYWNrID0gKFNyY0Zvcm1hdCA9
PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE4ICYmICFJc0Zsb2F0Rm9ybWF0PERz
dEZvcm1hdD46OlZhbHVlICYmICFJc0hhbGZGbG9hdEZvcm1hdDxEc3RGb3JtYXQ+OjpWYWx1ZSkg
fHwgU3JjRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTMyRjsKLSAg
ICBjb25zdCBib29sIHRyaXZpYWxQYWNrID0gKERzdEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdFJHQkE4IHx8IERzdEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdFJHQkEzMkYpICYmIGFscGhhT3AgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9O
b3RoaW5nICYmIG1fZHN0U3RyaWRlID4gMDsKLSAgICBBU1NFUlQoIXRyaXZpYWxVbnBhY2sgfHwg
IXRyaXZpYWxQYWNrKTsKLQotICAgIGNvbnN0IFNyY1R5cGUgKnNyY1Jvd1N0YXJ0ID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgU3JjVHlwZSo+KG1fc3JjU3RhcnQpOwotICAgIERzdFR5cGUqIGRzdFJvd1N0
YXJ0ID0gc3RhdGljX2Nhc3Q8RHN0VHlwZSo+KG1fZHN0U3RhcnQpOwotICAgIGlmICghdHJpdmlh
bFVucGFjayAmJiB0cml2aWFsUGFjaykgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1faGVpZ2h0OyArK2kpIHsKLSAgICAgICAgICAgIHVucGFjazxTcmNGb3JtYXQ+KHNyY1Jvd1N0
YXJ0LCBkc3RSb3dTdGFydCwgbV93aWR0aCk7Ci0gICAgICAgICAgICBzcmNSb3dTdGFydCArPSBz
cmNTdHJpZGVJbkVsZW1lbnRzOwotICAgICAgICAgICAgZHN0Um93U3RhcnQgKz0gZHN0U3RyaWRl
SW5FbGVtZW50czsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoIXRyaXZpYWxVbnBhY2sgJiYg
IXRyaXZpYWxQYWNrKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9oZWlnaHQ7
ICsraSkgewotICAgICAgICAgICAgdW5wYWNrPFNyY0Zvcm1hdD4oc3JjUm93U3RhcnQsIHJlaW50
ZXJwcmV0X2Nhc3RfcHRyPEludGVybWVkaWF0ZVNyY1R5cGUqPihtX3VucGFja2VkSW50ZXJtZWRp
YXRlU3JjRGF0YS5nZXQoKSksIG1fd2lkdGgpOwotICAgICAgICAgICAgcGFjazxEc3RGb3JtYXQs
IGFscGhhT3A+KHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEludGVybWVkaWF0ZVNyY1R5cGUqPihtX3Vu
cGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YS5nZXQoKSksIGRzdFJvd1N0YXJ0LCBtX3dpZHRoKTsK
LSAgICAgICAgICAgIHNyY1Jvd1N0YXJ0ICs9IHNyY1N0cmlkZUluRWxlbWVudHM7Ci0gICAgICAg
ICAgICBkc3RSb3dTdGFydCArPSBkc3RTdHJpZGVJbkVsZW1lbnRzOwotICAgICAgICB9Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2hlaWdodDsgKytpKSB7
Ci0gICAgICAgICAgICBwYWNrPERzdEZvcm1hdCwgYWxwaGFPcD4oc3JjUm93U3RhcnQsIGRzdFJv
d1N0YXJ0LCBtX3dpZHRoKTsKLSAgICAgICAgICAgIHNyY1Jvd1N0YXJ0ICs9IHNyY1N0cmlkZUlu
RWxlbWVudHM7Ci0gICAgICAgICAgICBkc3RSb3dTdGFydCArPSBkc3RTdHJpZGVJbkVsZW1lbnRz
OwotICAgICAgICB9Ci0gICAgfQotICAgIG1fc3VjY2VzcyA9IHRydWU7Ci0gICAgcmV0dXJuOwot
fQotCi19IC8vIGFub255bW91cyBuYW1lc3BhY2UKLQotYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6
cGFja1BpeGVscyhjb25zdCB1aW50OF90KiBzb3VyY2VEYXRhLCBEYXRhRm9ybWF0IHNvdXJjZURh
dGFGb3JtYXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIHNvdXJj
ZVVucGFja0FsaWdubWVudCwgdW5zaWduZWQgZGVzdGluYXRpb25Gb3JtYXQsIHVuc2lnbmVkIGRl
c3RpbmF0aW9uVHlwZSwgQWxwaGFPcCBhbHBoYU9wLCB2b2lkKiBkZXN0aW5hdGlvbkRhdGEsIGJv
b2wgZmxpcFkpCi17Ci0gICAgaW50IHZhbGlkU3JjID0gd2lkdGggKiBUZXhlbEJ5dGVzRm9yRm9y
bWF0KHNvdXJjZURhdGFGb3JtYXQpOwotICAgIGludCByZW1haW5kZXIgPSBzb3VyY2VVbnBhY2tB
bGlnbm1lbnQgPyAodmFsaWRTcmMgJSBzb3VyY2VVbnBhY2tBbGlnbm1lbnQpIDogMDsKLSAgICBp
bnQgc3JjU3RyaWRlID0gcmVtYWluZGVyID8gKHZhbGlkU3JjICsgc291cmNlVW5wYWNrQWxpZ25t
ZW50IC0gcmVtYWluZGVyKSA6IHZhbGlkU3JjOwotCi0gICAgRGF0YUZvcm1hdCBkc3REYXRhRm9y
bWF0ID0gZ2V0RGF0YUZvcm1hdChkZXN0aW5hdGlvbkZvcm1hdCwgZGVzdGluYXRpb25UeXBlKTsK
LSAgICBpbnQgZHN0U3RyaWRlID0gd2lkdGggKiBUZXhlbEJ5dGVzRm9yRm9ybWF0KGRzdERhdGFG
b3JtYXQpOwotICAgIGlmIChmbGlwWSkgewotICAgICAgICBkZXN0aW5hdGlvbkRhdGEgPSBzdGF0
aWNfY2FzdDx1aW50OF90Kj4oZGVzdGluYXRpb25EYXRhKSArIGRzdFN0cmlkZSooaGVpZ2h0IC0g
MSk7Ci0gICAgICAgIGRzdFN0cmlkZSA9IC1kc3RTdHJpZGU7Ci0gICAgfQotICAgIGlmICghSGFz
QWxwaGEoc291cmNlRGF0YUZvcm1hdCkgfHwgIUhhc0NvbG9yKHNvdXJjZURhdGFGb3JtYXQpIHx8
ICFIYXNDb2xvcihkc3REYXRhRm9ybWF0KSkKLSAgICAgICAgYWxwaGFPcCA9IEFscGhhRG9Ob3Ro
aW5nOwotCi0gICAgaWYgKHNvdXJjZURhdGFGb3JtYXQgPT0gZHN0RGF0YUZvcm1hdCAmJiBhbHBo
YU9wID09IEFscGhhRG9Ob3RoaW5nKSB7Ci0gICAgICAgIGNvbnN0IHVpbnQ4X3QqIHB0ciA9IHNv
dXJjZURhdGE7Ci0gICAgICAgIGNvbnN0IHVpbnQ4X3QqIHB0ckVuZCA9IHNvdXJjZURhdGEgKyBz
cmNTdHJpZGUgKiBoZWlnaHQ7Ci0gICAgICAgIHVuc2lnbmVkIHJvd1NpemUgPSAoZHN0U3RyaWRl
ID4gMCkgPyBkc3RTdHJpZGU6IC1kc3RTdHJpZGU7Ci0gICAgICAgIHVpbnQ4X3QqIGRzdCA9IHN0
YXRpY19jYXN0PHVpbnQ4X3QqPihkZXN0aW5hdGlvbkRhdGEpOwotICAgICAgICB3aGlsZSAocHRy
IDwgcHRyRW5kKSB7Ci0gICAgICAgICAgICBtZW1jcHkoZHN0LCBwdHIsIHJvd1NpemUpOwotICAg
ICAgICAgICAgcHRyICs9IHNyY1N0cmlkZTsKLSAgICAgICAgICAgIGRzdCArPSBkc3RTdHJpZGU7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgRm9ybWF0Q29u
dmVydGVyIGNvbnZlcnRlcih3aWR0aCwgaGVpZ2h0LCBzb3VyY2VEYXRhLCBkZXN0aW5hdGlvbkRh
dGEsIHNyY1N0cmlkZSwgZHN0U3RyaWRlKTsKLSAgICBjb252ZXJ0ZXIuY29udmVydChzb3VyY2VE
YXRhRm9ybWF0LCBkc3REYXRhRm9ybWF0LCBhbHBoYU9wKTsKLSAgICBpZiAoIWNvbnZlcnRlci5T
dWNjZXNzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
dW5zaWduZWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldENsZWFyQml0c0J5QXR0YWNobWVudFR5cGUo
R0MzRGVudW0gYXR0YWNobWVudCkKLXsKLSAgICBzd2l0Y2ggKGF0dGFjaG1lbnQpIHsKLSAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMDoKLSAgICBjYXNlIEV4dGVu
c2lvbnMzRDo6Q09MT1JfQVRUQUNITUVOVDFfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpD
T0xPUl9BVFRBQ0hNRU5UMl9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTE9SX0FUVEFD
SE1FTlQzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09MT1JfQVRUQUNITUVOVDRfRVhU
OgotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT0xPUl9BVFRBQ0hNRU5UNV9FWFQ6Ci0gICAgY2Fz
ZSBFeHRlbnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQ2X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lv
bnMzRDo6Q09MT1JfQVRUQUNITUVOVDdfRVhUOgotICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT0xP
Ul9BVFRBQ0hNRU5UOF9FWFQ6Ci0gICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1F
TlQ5X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09MT1JfQVRUQUNITUVOVDEwX0VYVDoK
LSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09MT1JfQVRUQUNITUVOVDExX0VYVDoKLSAgICBjYXNl
IEV4dGVuc2lvbnMzRDo6Q09MT1JfQVRUQUNITUVOVDEyX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lv
bnMzRDo6Q09MT1JfQVRUQUNITUVOVDEzX0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09M
T1JfQVRUQUNITUVOVDE0X0VYVDoKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09MT1JfQVRUQUNI
TUVOVDE1X0VYVDoKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZG
RVJfQklUOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQ6Ci0g
ICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQlVGRkVSX0JJVDsKLSAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQ6Ci0gICAgICAgIHJldHVy
biBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9CVUZGRVJfQklUOwotICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVDoKLSAgICAgICAgcmV0dXJuIEdy
YXBoaWNzQ29udGV4dDNEOjpERVBUSF9CVUZGRVJfQklUIHwgR3JhcGhpY3NDb250ZXh0M0Q6OlNU
RU5DSUxfQlVGRkVSX0JJVDsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gMDsKLSAgICB9
Ci19Ci0KLXVuc2lnbmVkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRDbGVhckJpdHNCeUZvcm1hdChH
QzNEZW51bSBmb3JtYXQpCi17Ci0gICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpBTFBIQToKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpMVU1JTkFO
Q0U6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TFVNSU5BTkNFX0FMUEhBOgotICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQjoKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0I1NjU6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQToKLSAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBNDoKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I1X0Ex
OgotICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQ7Ci0g
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTY6Ci0gICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UOgotICAgICAgICByZXR1cm4gR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQ7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6U1RFTkNJTF9JTkRFWDg6Ci0gICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6U1RF
TkNJTF9CVUZGRVJfQklUOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5D
SUw6Ci0gICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQlVGRkVSX0JJVCB8
IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQotfQotCi11bnNpZ25lZCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdChHQzNEZW51bSBmb3JtYXQpCi17Ci0gICAgc3dpdGNoIChm
b3JtYXQpIHsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBTFBIQToKLSAgICAgICAgcmV0
dXJuIENoYW5uZWxBbHBoYTsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpMVU1JTkFOQ0U6
Ci0gICAgICAgIHJldHVybiBDaGFubmVsUkdCOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkxVTUlOQU5DRV9BTFBIQToKLSAgICAgICAgcmV0dXJuIENoYW5uZWxSR0JBOwotICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQjoKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0I1
NjU6Ci0gICAgICAgIHJldHVybiBDaGFubmVsUkdCOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQkE6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTQ6Ci0gICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6UkdCNV9BMToKLSAgICAgICAgcmV0dXJuIENoYW5uZWxSR0JBOwot
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDE2OgotICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDoKLSAgICAgICAgcmV0dXJuIENoYW5u
ZWxEZXB0aDsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0lOREVYODoKLSAg
ICAgICAgcmV0dXJuIENoYW5uZWxTdGVuY2lsOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkRFUFRIX1NURU5DSUw6Ci0gICAgICAgIHJldHVybiBDaGFubmVsRGVwdGggfCBDaGFubmVsU3Rl
bmNpbDsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19Ci0KIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRSgzRF9HUkFQSElDUykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5jcHAJKHJldmlzaW9uIDE2MTc2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjQgKzMy
LDExIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKIAogI2luY2x1ZGUgIkV4dGVu
c2lvbnMzRC5oIgorI2luY2x1ZGUgIkZvcm1hdENvbnZlcnRlci5oIgogI2luY2x1ZGUgIkltYWdl
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgog
Ci0jaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNETkVPTi5oIgotI2VuZGlmCi0KLSNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5o
PgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLQotLy8gVmlzdWFsIFN0dWRpbyBjcmFz
aGVzIHdpdGggYSBDMTA2MyBGYXRhbCBFcnJvciBpZiBldmVyeXRoaW5nIGlzIGlubGluZWQuCi0j
aWYgQ09NUElMRVIoTVNWQykKLSNkZWZpbmUgQUxXQVlTX0lOTElORV9FWENFUFRfTVNWQwotI2Vs
c2UKLSNkZWZpbmUgQUxXQVlTX0lOTElORV9FWENFUFRfTVNWQyBBTFdBWVNfSU5MSU5FCi0jZW5k
aWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewpAQCAtMTU5LDEwICsxNDYs
NyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEUmVzb3VyCiAgICAgcmV0dXJu
IHRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IGJvcmRlciwgZm9ybWF0LCB0eXBlLCB6ZXJvLmdldCgpKTsKIH0KIAotYm9vbCBHcmFwaGljc0Nv
bnRleHQzRDo6Y29tcHV0ZUZvcm1hdEFuZFR5cGVQYXJhbWV0ZXJzKEdDM0RlbnVtIGZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
QzNEZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCogY29tcG9uZW50c1BlclBpeGVsLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCogYnl0ZXNQZXJDb21wb25lbnQpCitib29sIEdyYXBoaWNzQ29udGV4dDNEOjpjb21wdXRlRm9y
bWF0QW5kVHlwZVBhcmFtZXRlcnMoR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCB1bnNp
Z25lZCBpbnQqIGNvbXBvbmVudHNQZXJQaXhlbCwgdW5zaWduZWQgaW50KiBieXRlc1BlckNvbXBv
bmVudCkKIHsKICAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkFMUEhBOgpAQCAtMjEzLDggKzE5Nyw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmNv
bXB1dGVGb3JtYXRBbmQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotR0MzRGVudW0gR3JhcGhpY3ND
b250ZXh0M0Q6OmNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVu
dW0gdHlwZSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGFsaWdu
bWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQqIGltYWdlU2l6ZUluQnl0ZXMsIHVuc2lnbmVkIGludCogcGFkZGluZ0lu
Qnl0ZXMpCitHQzNEZW51bSBHcmFwaGljc0NvbnRleHQzRDo6Y29tcHV0ZUltYWdlU2l6ZUluQnl0
ZXMoR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0Rz
aXplaSBoZWlnaHQsIEdDM0RpbnQgYWxpZ25tZW50LCB1bnNpZ25lZCBpbnQqIGltYWdlU2l6ZUlu
Qnl0ZXMsIHVuc2lnbmVkIGludCogcGFkZGluZ0luQnl0ZXMpCiB7CiAgICAgQVNTRVJUKGltYWdl
U2l6ZUluQnl0ZXMpOwogICAgIEFTU0VSVChhbGlnbm1lbnQgPT0gMSB8fCBhbGlnbm1lbnQgPT0g
MiB8fCBhbGlnbm1lbnQgPT0gNCB8fCBhbGlnbm1lbnQgPT0gOCk7CkBAIC0yNTgsMTggKzI0MSw3
IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6SW1hZ2UKICAgICBtX2V4dHJh
Y3RTdWNjZWVkZWQgPSBleHRyYWN0SW1hZ2UocHJlbXVsdGlwbHlBbHBoYSwgaWdub3JlR2FtbWFB
bmRDb2xvclByb2ZpbGUpOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDNEOjpwYWNrSW1hZ2VE
YXRhKAotICAgIEltYWdlKiBpbWFnZSwKLSAgICBjb25zdCB2b2lkKiBwaXhlbHMsCi0gICAgR0Mz
RGVudW0gZm9ybWF0LAotICAgIEdDM0RlbnVtIHR5cGUsCi0gICAgYm9vbCBmbGlwWSwKLSAgICBB
bHBoYU9wIGFscGhhT3AsCi0gICAgRGF0YUZvcm1hdCBzb3VyY2VGb3JtYXQsCi0gICAgdW5zaWdu
ZWQgd2lkdGgsCi0gICAgdW5zaWduZWQgaGVpZ2h0LAotICAgIHVuc2lnbmVkIHNvdXJjZVVucGFj
a0FsaWdubWVudCwKLSAgICBWZWN0b3I8dWludDhfdD4mIGRhdGEpCitib29sIEdyYXBoaWNzQ29u
dGV4dDNEOjpwYWNrSW1hZ2VEYXRhKCBJbWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQqIHBpeGVscywg
R0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBib29sIGZsaXBZLCBBbHBoYU9wIGFscGhh
T3AsIERhdGFGb3JtYXQgc291cmNlRm9ybWF0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVp
Z2h0LCB1bnNpZ25lZCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIFZlY3Rvcjx1aW50OF90PiYgZGF0
YSkKIHsKICAgICBpZiAoIXBpeGVscykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjgyLDE3
ICsyNTQsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6cGFja0ltYWdlRGF0YSgKIAogICAg
IGlmICghcGFja1BpeGVscyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMp
LCBzb3VyY2VGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZm9y
bWF0LCB0eXBlLCBhbHBoYU9wLCBkYXRhLmRhdGEoKSwgZmxpcFkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKEltYWdlT2JzZXJ2ZXIgKm9ic2VydmVyID0gaW1hZ2UtPmltYWdlT2Jz
ZXJ2ZXIoKSkKKyAgICBpZiAoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBpbWFnZS0+aW1hZ2VP
YnNlcnZlcigpKQogICAgICAgICBvYnNlcnZlci0+ZGlkRHJhdyhpbWFnZSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmV4dHJhY3RJbWFnZURhdGEoSW1h
Z2VEYXRhKiBpbWFnZURhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdDM0RlbnVtIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0MzRGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBmbGlwWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBwcmVtdWx0aXBseUFscGhhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWZWN0b3I8dWludDhfdD4mIGRhdGEpCitib29sIEdyYXBoaWNzQ29udGV4dDNE
OjpleHRyYWN0SW1hZ2VEYXRhKEltYWdlRGF0YSogaW1hZ2VEYXRhLCBHQzNEZW51bSBmb3JtYXQs
IEdDM0RlbnVtIHR5cGUsIGJvb2wgZmxpcFksIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgVmVjdG9y
PHVpbnQ4X3Q+JiBkYXRhKQogewogICAgIGlmICghaW1hZ2VEYXRhKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0zMTEsMjEgKzI3OCwxNCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpleHRy
YWN0SW1hZ2VEYXRhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OmV4dHJhY3RUZXh0dXJlRGF0YSh1bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGludCBo
ZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVu
dW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCB1bnBhY2tBbGlnbm1lbnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBs
eUFscGhhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQqIHBpeGVscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWZWN0b3I8dWludDhfdD4mIGRhdGEpCitib29sIEdyYXBoaWNzQ29udGV4dDNEOjpleHRyYWN0
VGV4dHVyZURhdGEodW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0LCBHQzNE
ZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIHVuc2lnbmVkIGludCB1bnBhY2tBbGlnbm1lbnQs
IGJvb2wgZmxpcFksIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgY29uc3Qgdm9pZCogcGl4ZWxzLCBW
ZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7CiAgICAgLy8gQXNzdW1lcyBmb3JtYXQsIHR5cGUsIGV0
Yy4gaGF2ZSBhbHJlYWR5IGJlZW4gdmFsaWRhdGVkLgogICAgIERhdGFGb3JtYXQgc291cmNlRGF0
YUZvcm1hdCA9IGdldERhdGFGb3JtYXQoZm9ybWF0LCB0eXBlKTsKIAogICAgIC8vIFJlc2l6ZSB0
aGUgb3V0cHV0IGJ1ZmZlci4KICAgICB1bnNpZ25lZCBpbnQgY29tcG9uZW50c1BlclBpeGVsLCBi
eXRlc1BlckNvbXBvbmVudDsKLSAgICBpZiAoIWNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVy
cyhmb3JtYXQsIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmNvbXBvbmVudHNQZXJQaXhlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmYnl0ZXNQZXJDb21wb25lbnQpKQorICAgIGlmICghY29tcHV0ZUZvcm1hdEFuZFR5cGVQ
YXJhbWV0ZXJzKGZvcm1hdCwgdHlwZSwgJmNvbXBvbmVudHNQZXJQaXhlbCwgJmJ5dGVzUGVyQ29t
cG9uZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHVuc2lnbmVkIGludCBieXRlc1Bl
clBpeGVsID0gY29tcG9uZW50c1BlclBpeGVsICogYnl0ZXNQZXJDb21wb25lbnQ7CiAgICAgZGF0
YS5yZXNpemUod2lkdGggKiBoZWlnaHQgKiBieXRlc1BlclBpeGVsKTsKQEAgLTMzNiwxMTI3ICsy
OTYsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpleHRyYWN0VGV4dHVyZURhCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLW5hbWVzcGFjZSB7Ci0KLS8vIEZvbGxvd2luZyBGbG9hdCB0byBIYWxm
LUZsb2F0IGNvbnZlcmlvbiBjb2RlIGlzIGZyb20gdGhlIGltcGxlbWVudGF0aW9uIG9mIGZ0cDov
L3d3dy5mb3gtdG9vbGtpdC5vcmcvcHViL2Zhc3RoYWxmZmxvYXRjb252ZXJzaW9uLnBkZiwKLS8v
ICJGYXN0IEhhbGYgRmxvYXQgQ29udmVyc2lvbnMiIGJ5IEplcm9lbiB2YW4gZGVyIFppanAsIE5v
dmVtYmVyIDIwMDggKFJldmlzZWQgU2VwdGVtYmVyIDIwMTApLgotLy8gU3BlY2lhbGx5LCB0aGUg
YmFzZXRhYmxlWzUxMl0gYW5kIHNoaWZ0dGFibGVbNTEyXSBhcmUgZ2VuZXJhdGVkIGFzIGZvbGxv
d3M6Ci0vKgotdW5zaWduZWQgc2hvcnQgYmFzZXRhYmxlWzUxMl07Ci11bnNpZ25lZCBjaGFyIHNo
aWZ0dGFibGVbNTEyXTsKLQotdm9pZCBnZW5lcmF0ZXRhYmxlcygpewotICAgIHVuc2lnbmVkIGlu
dCBpOwotICAgIGludCBlOwotICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7ICsraSl7Ci0gICAgICAg
IGUgPSBpIC0gMTI3OwotICAgICAgICBpZiAoZSA8IC0yNCl7IC8vIFZlcnkgc21hbGwgbnVtYmVy
cyBtYXAgdG8gemVybwotICAgICAgICAgICAgYmFzZXRhYmxlW2kgfCAweDAwMF0gPSAweDAwMDA7
Ci0gICAgICAgICAgICBiYXNldGFibGVbaSB8IDB4MTAwXSA9IDB4ODAwMDsKLSAgICAgICAgICAg
IHNoaWZ0dGFibGVbaSB8IDB4MDAwXSA9IDI0OwotICAgICAgICAgICAgc2hpZnR0YWJsZVtpIHwg
MHgxMDBdID0gMjQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZSA8IC0xNCkgeyAvLyBT
bWFsbCBudW1iZXJzIG1hcCB0byBkZW5vcm1zCi0gICAgICAgICAgICBiYXNldGFibGVbaSB8IDB4
MDAwXSA9ICgweDA0MDA+PigtZS0xNCkpOwotICAgICAgICAgICAgYmFzZXRhYmxlW2kgfCAweDEw
MF0gPSAoMHgwNDAwPj4oLWUtMTQpKSB8IDB4ODAwMDsKLSAgICAgICAgICAgIHNoaWZ0dGFibGVb
aSB8IDB4MDAwXSA9IC1lLTE7Ci0gICAgICAgICAgICBzaGlmdHRhYmxlW2kgfCAweDEwMF0gPSAt
ZS0xOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGUgPD0gMTUpeyAvLyBOb3JtYWwgbnVt
YmVycyBqdXN0IGxvc2UgcHJlY2lzaW9uCi0gICAgICAgICAgICBiYXNldGFibGVbaSB8IDB4MDAw
XSA9ICgoZSsxNSk8PDEwKTsKLSAgICAgICAgICAgIGJhc2V0YWJsZVtpfCAweDEwMF0gPSAoKGUr
MTUpPDwxMCkgfCAweDgwMDA7Ci0gICAgICAgICAgICBzaGlmdHRhYmxlW2l8MHgwMDBdID0gMTM7
Ci0gICAgICAgICAgICBzaGlmdHRhYmxlW2l8MHgxMDBdID0gMTM7Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZSBpZiAoZTwxMjgpeyAvLyBMYXJnZSBudW1iZXJzIG1hcCB0byBJbmZpbml0eQotICAg
ICAgICAgICAgYmFzZXRhYmxlW2l8MHgwMDBdID0gMHg3QzAwOwotICAgICAgICAgICAgYmFzZXRh
YmxlW2l8MHgxMDBdID0gMHhGQzAwOwotICAgICAgICAgICAgc2hpZnR0YWJsZVtpfDB4MDAwXSA9
IDI0OwotICAgICAgICAgICAgc2hpZnR0YWJsZVtpfDB4MTAwXSA9IDI0OwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgeyAvLyBJbmZpbml0eSBhbmQgTmFOJ3Mgc3RheSBJbmZpbml0eSBhbmQgTmFO
J3MKLSAgICAgICAgICAgIGJhc2V0YWJsZVtpfDB4MDAwXSA9IDB4N0MwMDsKLSAgICAgICAgICAg
IGJhc2V0YWJsZVtpfDB4MTAwXSA9IDB4RkMwMDsKLSAgICAgICAgICAgIHNoaWZ0dGFibGVbaXww
eDAwMF0gPSAxMzsKLSAgICAgICAgICAgIHNoaWZ0dGFibGVbaXwweDEwMF0gPSAxMzsKLSAgICAg
ICB9Ci0gICAgfQotfQotKi8KLQotdW5zaWduZWQgc2hvcnQgYmFzZVRhYmxlWzUxMl0gPSB7Ci0w
LCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAs
ICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwg
ICAgICAwLAotMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAg
MCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAw
LCAgICAgIDAsICAgICAgMCwKLTAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAg
ICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAg
IDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsCi0wLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAg
ICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAg
ICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLAotMCwgICAgICAwLCAgICAgIDAs
ICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwg
ICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwKLTAsICAgICAg
MCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAw
LCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAs
Ci0wLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAgIDAsICAgICAgMCwgICAgICAwLCAgICAg
IDEsICAgICAgMiwgICAgICA0LCAgICAgIDgsICAgICAgMTYsICAgICAzMiwgICAgIDY0LCAgICAg
MTI4LCAgICAyNTYsCi01MTIsICAgIDEwMjQsICAgMjA0OCwgICAzMDcyLCAgIDQwOTYsICAgNTEy
MCwgICA2MTQ0LCAgIDcxNjgsICAgODE5MiwgICA5MjE2LCAgIDEwMjQwLCAgMTEyNjQsICAxMjI4
OCwgIDEzMzEyLCAgMTQzMzYsICAxNTM2MCwKLTE2Mzg0LCAgMTc0MDgsICAxODQzMiwgIDE5NDU2
LCAgMjA0ODAsICAyMTUwNCwgIDIyNTI4LCAgMjM1NTIsICAyNDU3NiwgIDI1NjAwLCAgMjY2MjQs
ICAyNzY0OCwgIDI4NjcyLCAgMjk2OTYsICAzMDcyMCwgIDMxNzQ0LAotMzE3NDQsICAzMTc0NCwg
IDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAg
MzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsCi0z
MTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMx
NzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3
NDQsICAzMTc0NCwKLTMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0
NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0
LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LAotMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQs
ICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwg
IDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsCi0zMTc0NCwgIDMxNzQ0LCAg
MzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAz
MTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwKLTMx
NzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3
NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0
NCwgIDMxNzQ0LAotMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0
LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQs
ICAzMTc0NCwgIDMxNzQ0LCAgMzE3NDQsCi0zMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwg
IDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAg
MzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwKLTMyNzY4LCAgMzI3NjgsICAz
Mjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMy
NzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LAotMzI3
NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2
OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4
LCAgMzI3NjgsCi0zMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3Njgs
ICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwg
IDMyNzY4LCAgMzI3NjgsICAzMjc2OCwKLTMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAg
MzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAz
Mjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LAotMzI3NjgsICAzMjc2OCwgIDMy
NzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3
NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsCi0zMjc2
OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY4LCAgMzI3NjgsICAzMjc2OCwgIDMyNzY5
LCAgMzI3NzAsICAzMjc3MiwgIDMyNzc2LCAgMzI3ODQsICAzMjgwMCwgIDMyODMyLCAgMzI4OTYs
ICAzMzAyNCwKLTMzMjgwLCAgMzM3OTIsICAzNDgxNiwgIDM1ODQwLCAgMzY4NjQsICAzNzg4OCwg
IDM4OTEyLCAgMzk5MzYsICA0MDk2MCwgIDQxOTg0LCAgNDMwMDgsICA0NDAzMiwgIDQ1MDU2LCAg
NDYwODAsICA0NzEwNCwgIDQ4MTI4LAotNDkxNTIsICA1MDE3NiwgIDUxMjAwLCAgNTIyMjQsICA1
MzI0OCwgIDU0MjcyLCAgNTUyOTYsICA1NjMyMCwgIDU3MzQ0LCAgNTgzNjgsICA1OTM5MiwgIDYw
NDE2LCAgNjE0NDAsICA2MjQ2NCwgIDYzNDg4LCAgNjQ1MTIsCi02NDUxMiwgIDY0NTEyLCAgNjQ1
MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUx
MiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwKLTY0NTEy
LCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIs
ICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwg
IDY0NTEyLAotNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAg
NjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2
NDUxMiwgIDY0NTEyLCAgNjQ1MTIsCi02NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0
NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1
MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwKLTY0NTEyLCAgNjQ1MTIsICA2NDUx
MiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEy
LCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLAotNjQ1MTIs
ICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwg
IDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAg
NjQ1MTIsCi02NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2
NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0NTEyLCAgNjQ1MTIsICA2NDUxMiwgIDY0
NTEyLCAgNjQ1MTIsICA2NDUxMgotfTsKLQotdW5zaWduZWQgY2hhciBzaGlmdFRhYmxlWzUxMl0g
PSB7Ci0yNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwKLTI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LAotMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsCi0yNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwKLTI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LAotMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsCi0yNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDIzLCAgICAgMjIsICAgICAyMSwgICAgIDIwLCAgICAgMTksICAgICAxOCwg
ICAgIDE3LCAgICAgMTYsICAgICAxNSwKLTE0LCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAg
MTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAx
MywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLAotMTMsICAgICAxMywgICAgIDEzLCAg
ICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAg
ICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMjQsCi0yNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwK
LTI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LAotMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsCi0yNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwKLTI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LAotMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsCi0y
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAxMywKLTI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LAotMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsCi0yNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwKLTI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LAotMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsCi0yNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwKLTI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjMsICAgICAyMiwgICAgIDIxLCAgICAgMjAsICAgICAxOSwgICAg
IDE4LCAgICAgMTcsICAgICAxNiwgICAgIDE1LAotMTQsICAgICAxMywgICAgIDEzLCAgICAgMTMs
ICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywg
ICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsCi0xMywgICAgIDEzLCAgICAg
MTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAx
MywgICAgIDEzLCAgICAgMTMsICAgICAxMywgICAgIDEzLCAgICAgMTMsICAgICAyNCwKLTI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAg
IDI0LAotMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwg
ICAgIDI0LCAgICAgMjQsCi0yNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwKLTI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LAotMjQsICAgICAyNCwgICAgIDI0
LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQs
ICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsCi0yNCwgICAg
IDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAg
MjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAy
NCwKLTI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAg
ICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAgICAyNCwgICAgIDI0LCAgICAgMjQsICAg
ICAyNCwgICAgIDEzCi19OwotCi11bnNpZ25lZCBzaG9ydCBjb252ZXJ0RmxvYXRUb0hhbGZGbG9h
dChmbG9hdCBmKQotewotICAgIHVuc2lnbmVkIHRlbXAgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dW5z
aWduZWQgKj4oJmYpKTsKLSAgICB1bnNpZ25lZCBzaWduZXhwID0gKHRlbXAgPj4gMjMpICYgMHgx
ZmY7Ci0gICAgcmV0dXJuIGJhc2VUYWJsZVtzaWduZXhwXSArICgodGVtcCAmIDB4MDA3ZmZmZmYp
ID4+IHNoaWZ0VGFibGVbc2lnbmV4cF0pOwotfQotCi0vKiBCRUdJTiBDT0RFIFNIQVJFRCBXSVRI
IE1PWklMTEEgRklSRUZPWCAqLwotCi0vLyBUaGUgZm9sbG93aW5nIHBhY2tpbmcgYW5kIHVucGFj
a2luZyByb3V0aW5lcyBhcmUgZXhwcmVzc2VkIGluIHRlcm1zIG9mIGZ1bmN0aW9uIHRlbXBsYXRl
cyBhbmQgaW5saW5lIGZ1bmN0aW9ucyB0byBhY2hpZXZlIGdlbmVyYWxpdHkgYW5kIHNwZWVkdXAu
Ci0vLyBFeHBsaWNpdCB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMgY29ycmVzcG9uZCB0byB0aGUg
Y2FzZXMgdGhhdCB3b3VsZCBvY2N1ci4KLS8vIFNvbWUgY29kZSBhcmUgbWVyZ2VkIGJhY2sgZnJv
bSBNb3ppbGxhIGNvZGUgaW4gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhLWNlbnRyYWwv
c291cmNlL2NvbnRlbnQvY2FudmFzL3NyYy9XZWJHTFRleGVsQ29udmVyc2lvbnMuaAotCi0vLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS8vIFBpeGVsIHVucGFja2luZyByb3V0aW5lcy4KLXRlbXBsYXRlPGludCBm
b3JtYXQsIHR5cGVuYW1lIFNvdXJjZVR5cGUsIHR5cGVuYW1lIERzdFR5cGU+Ci1BTFdBWVNfSU5M
SU5FIHZvaWQgdW5wYWNrKGNvbnN0IFNvdXJjZVR5cGUqLCBEc3RUeXBlKiwgdW5zaWduZWQpCi17
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElO
RSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjgsIHVpbnQ4X3Qs
IHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVu
c2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBd
OwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXTsKLSAgICAgICAgZGVzdGluYXRp
b25bMl0gPSBzb3VyY2VbMl07Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0gMHhGRjsKLSAgICAg
ICAgc291cmNlICs9IDM7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAgfQotfQotCi10
ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRCR1I4LCB1aW50OF90LCB1aW50OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVp
bnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBkZXN0
aW5hdGlvblswXSA9IHNvdXJjZVsyXTsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2Vb
MV07Ci0gICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzBdOwotICAgICAgICBkZXN0aW5h
dGlvblszXSA9IDB4RkY7Ci0gICAgICAgIHNvdXJjZSArPSAzOwotICAgICAgICBkZXN0aW5hdGlv
biArPSA0OwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNr
PEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVJHQjgsIHVpbnQ4X3QsIHVpbnQ4X3Q+KGNv
bnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVs
c1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJv
dzsgKytpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzFdOwotICAgICAgICBk
ZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsyXTsKLSAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3Vy
Y2VbM107Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNlWzBdOwotICAgICAgICBzb3Vy
Y2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKLSAgICB9Ci19Ci0KLXRlbXBsYXRl
PD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1h
dEFCR1I4LCB1aW50OF90LCB1aW50OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3Qq
IGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBkZXN0aW5hdGlv
blswXSA9IHNvdXJjZVszXTsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMl07Ci0g
ICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzFdOwotICAgICAgICBkZXN0aW5hdGlvblsz
XSA9IHNvdXJjZVswXTsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0aW9u
ICs9IDQ7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8
R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRCR1JBOCwgdWludDhfdCwgdWludDhfdD4oY29u
c3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxz
UGVyUm93KQotewotICAgIGNvbnN0IHVpbnQzMl90KiBzb3VyY2UzMiA9IHJlaW50ZXJwcmV0X2Nh
c3RfcHRyPGNvbnN0IHVpbnQzMl90Kj4oc291cmNlKTsKLSAgICB1aW50MzJfdCogZGVzdGluYXRp
b24zMiA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQzMl90Kj4oZGVzdGluYXRpb24pOwotICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAg
ICAgdWludDMyX3QgYmdyYSA9IHNvdXJjZTMyW2ldOwotI2lmIENQVShCSUdfRU5ESUFOKQotICAg
ICAgICB1aW50MzJfdCBick1hc2sgPSAweGZmMDBmZjAwOwotICAgICAgICB1aW50MzJfdCBnYU1h
c2sgPSAweDAwZmYwMGZmOwotI2Vsc2UKLSAgICAgICAgdWludDMyX3QgYnJNYXNrID0gMHgwMGZm
MDBmZjsKLSAgICAgICAgdWludDMyX3QgZ2FNYXNrID0gMHhmZjAwZmYwMDsKLSNlbmRpZgotICAg
ICAgICB1aW50MzJfdCByZ2JhID0gKCgoYmdyYSA+PiAxNikgfCAoYmdyYSA8PCAxNikpICYgYnJN
YXNrKSB8IChiZ3JhICYgZ2FNYXNrKTsKLSAgICAgICAgZGVzdGluYXRpb24zMltpXSA9IHJnYmE7
Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhp
Y3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNTU1MSwgdWludDE2X3QsIHVpbnQ4X3Q+KGNvbnN0
IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQ
ZXJSb3cpCi17Ci0jaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotICAgIFNJTUQ6OnVucGFj
a09uZVJvd09mUkdCQTU1NTFUb1JHQkE4KHNvdXJjZSwgZGVzdGluYXRpb24sIHBpeGVsc1BlclJv
dyk7Ci0jZW5kaWYKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJv
dzsgKytpKSB7Ci0gICAgICAgIHVpbnQxNl90IHBhY2tlZFZhbHVlID0gc291cmNlWzBdOwotICAg
ICAgICB1aW50OF90IHIgPSBwYWNrZWRWYWx1ZSA+PiAxMTsKLSAgICAgICAgdWludDhfdCBnID0g
KHBhY2tlZFZhbHVlID4+IDYpICYgMHgxRjsKLSAgICAgICAgdWludDhfdCBiID0gKHBhY2tlZFZh
bHVlID4+IDEpICYgMHgxRjsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSAociA8PCAzKSB8IChy
ICYgMHg3KTsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSAoZyA8PCAzKSB8IChnICYgMHg3KTsK
LSAgICAgICAgZGVzdGluYXRpb25bMl0gPSAoYiA8PCAzKSB8IChiICYgMHg3KTsKLSAgICAgICAg
ZGVzdGluYXRpb25bM10gPSAocGFja2VkVmFsdWUgJiAweDEpID8gMHhGRiA6IDB4MDsKLSAgICAg
ICAgc291cmNlICs9IDE7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAgfQotfQotCi10
ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRSR0JBNDQ0NCwgdWludDE2X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQxNl90KiBzb3Vy
Y2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0jaWYg
SEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotICAgIFNJTUQ6OnVucGFja09uZVJvd09mUkdCQTQ0
NDRUb1JHQkE4KHNvdXJjZSwgZGVzdGluYXRpb24sIHBpeGVsc1BlclJvdyk7Ci0jZW5kaWYKLSAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAg
ICAgIHVpbnQxNl90IHBhY2tlZFZhbHVlID0gc291cmNlWzBdOwotICAgICAgICB1aW50OF90IHIg
PSBwYWNrZWRWYWx1ZSA+PiAxMjsKLSAgICAgICAgdWludDhfdCBnID0gKHBhY2tlZFZhbHVlID4+
IDgpICYgMHgwRjsKLSAgICAgICAgdWludDhfdCBiID0gKHBhY2tlZFZhbHVlID4+IDQpICYgMHgw
RjsKLSAgICAgICAgdWludDhfdCBhID0gcGFja2VkVmFsdWUgJiAweDBGOwotICAgICAgICBkZXN0
aW5hdGlvblswXSA9IHIgPDwgNCB8IHI7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzFdID0gZyA8PCA0
IHwgZzsKLSAgICAgICAgZGVzdGluYXRpb25bMl0gPSBiIDw8IDQgfCBiOwotICAgICAgICBkZXN0
aW5hdGlvblszXSA9IGEgPDwgNCB8IGE7Ci0gICAgICAgIHNvdXJjZSArPSAxOwotICAgICAgICBk
ZXN0aW5hdGlvbiArPSA0OwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZv
aWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCNTY1LCB1aW50MTZfdCwg
dWludDhfdD4oY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVu
c2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0g
ICAgU0lNRDo6dW5wYWNrT25lUm93T2ZSR0I1NjVUb1JHQkE4KHNvdXJjZSwgZGVzdGluYXRpb24s
IHBpeGVsc1BlclJvdyk7Ci0jZW5kaWYKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIHVpbnQxNl90IHBhY2tlZFZhbHVlID0gc291
cmNlWzBdOwotICAgICAgICB1aW50OF90IHIgPSBwYWNrZWRWYWx1ZSA+PiAxMTsKLSAgICAgICAg
dWludDhfdCBnID0gKHBhY2tlZFZhbHVlID4+IDUpICYgMHgzRjsKLSAgICAgICAgdWludDhfdCBi
ID0gcGFja2VkVmFsdWUgJiAweDFGOwotICAgICAgICBkZXN0aW5hdGlvblswXSA9IChyIDw8IDMp
IHwgKHIgJiAweDcpOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IChnIDw8IDIpIHwgKGcgJiAw
eDMpOwotICAgICAgICBkZXN0aW5hdGlvblsyXSA9IChiIDw8IDMpIHwgKGIgJiAweDcpOwotICAg
ICAgICBkZXN0aW5hdGlvblszXSA9IDB4RkY7Ci0gICAgICAgIHNvdXJjZSArPSAxOwotICAgICAg
ICBkZXN0aW5hdGlvbiArPSA0OwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5F
IHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjgsIHVpbnQ4X3QsIHVp
bnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2ln
bmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBp
eGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwot
ICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVswXTsKLSAgICAgICAgZGVzdGluYXRpb25b
Ml0gPSBzb3VyY2VbMF07Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0gMHhGRjsKLSAgICAgICAg
c291cmNlICs9IDE7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAgfQotfQotCi10ZW1w
bGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRSQTgsIHVpbnQ4X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhf
dCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGRlc3RpbmF0
aW9uWzBdID0gc291cmNlWzBdOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVswXTsK
LSAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMF07Ci0gICAgICAgIGRlc3RpbmF0aW9u
WzNdID0gc291cmNlWzFdOwotICAgICAgICBzb3VyY2UgKz0gMjsKLSAgICAgICAgZGVzdGluYXRp
b24gKz0gNDsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFj
azxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSOCwgdWludDhfdCwgdWludDhfdD4oY29u
c3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxz
UGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93
OyArK2kpIHsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMV07Ci0gICAgICAgIGRl
c3RpbmF0aW9uWzFdID0gc291cmNlWzFdOwotICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJj
ZVsxXTsKLSAgICAgICAgZGVzdGluYXRpb25bM10gPSBzb3VyY2VbMF07Ci0gICAgICAgIHNvdXJj
ZSArPSAyOwotICAgICAgICBkZXN0aW5hdGlvbiArPSA0OwotICAgIH0KLX0KLQotdGVtcGxhdGU8
PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0
QTgsIHVpbnQ4X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVz
dGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBd
ID0gMHgwOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IDB4MDsKLSAgICAgICAgZGVzdGluYXRp
b25bMl0gPSAweDA7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNlWzBdOwotICAgICAg
ICBzb3VyY2UgKz0gMTsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKLSAgICB9Ci19Ci0KLXRl
bXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdFJHQkE4LCB1aW50OF90LCBmbG9hdD4oY29uc3QgdWludDhfdCogc291cmNlLCBmbG9h
dCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBjb25zdCBmbG9h
dCBzY2FsZUZhY3RvciA9IDEuMGYgLyAyNTUuMGY7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNv
dXJjZVswXSAqIHNjYWxlRmFjdG9yOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsx
XSAqIHNjYWxlRmFjdG9yOwotICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXSAqIHNj
YWxlRmFjdG9yOwotICAgICAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVszXSAqIHNjYWxlRmFj
dG9yOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKLSAg
ICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0Nv
bnRleHQzRDo6RGF0YUZvcm1hdEJHUkE4LCB1aW50OF90LCBmbG9hdD4oY29uc3QgdWludDhfdCog
c291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAg
ICBjb25zdCBmbG9hdCBzY2FsZUZhY3RvciA9IDEuMGYgLyAyNTUuMGY7Ci0gICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBkZXN0aW5h
dGlvblswXSA9IHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9yOwotICAgICAgICBkZXN0aW5hdGlvblsx
XSA9IHNvdXJjZVsxXSAqIHNjYWxlRmFjdG9yOwotICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNv
dXJjZVswXSAqIHNjYWxlRmFjdG9yOwotICAgICAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVsz
XSAqIHNjYWxlRmFjdG9yOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRp
b24gKz0gNDsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFj
azxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFCR1I4LCB1aW50OF90LCBmbG9hdD4oY29u
c3QgdWludDhfdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1Bl
clJvdykKLXsKLSAgICBjb25zdCBmbG9hdCBzY2FsZUZhY3RvciA9IDEuMGYgLyAyNTUuMGY7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAg
IGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzNdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRlc3Rp
bmF0aW9uWzFdID0gc291cmNlWzJdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRlc3RpbmF0aW9u
WzJdID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0g
c291cmNlWzBdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIHNvdXJjZSArPSA0OwotICAgICAgICBk
ZXN0aW5hdGlvbiArPSA0OwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZv
aWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVJHQjgsIHVpbnQ4X3QsIGZs
b2F0Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
cGl4ZWxzUGVyUm93KQotewotICAgIGNvbnN0IGZsb2F0IHNjYWxlRmFjdG9yID0gMS4wZiAvIDI1
NS4wZjsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsK
LSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMV0gKiBzY2FsZUZhY3RvcjsKLSAgICAg
ICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMl0gKiBzY2FsZUZhY3RvcjsKLSAgICAgICAgZGVz
dGluYXRpb25bMl0gPSBzb3VyY2VbM10gKiBzY2FsZUZhY3RvcjsKLSAgICAgICAgZGVzdGluYXRp
b25bM10gPSBzb3VyY2VbMF0gKiBzY2FsZUZhY3RvcjsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0g
ICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19J
TkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0I4LCB1aW50
OF90LCBmbG9hdD4oY29uc3QgdWludDhfdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVu
c2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBjb25zdCBmbG9hdCBzY2FsZUZhY3RvciA9IDEu
MGYgLyAyNTUuMGY7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsg
KytpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7
Ci0gICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7Ci0gICAg
ICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzJdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRl
c3RpbmF0aW9uWzNdID0gMTsKLSAgICAgICAgc291cmNlICs9IDM7Ci0gICAgICAgIGRlc3RpbmF0
aW9uICs9IDQ7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBh
Y2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRCR1I4LCB1aW50OF90LCBmbG9hdD4oY29u
c3QgdWludDhfdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1Bl
clJvdykKLXsKLSAgICBjb25zdCBmbG9hdCBzY2FsZUZhY3RvciA9IDEuMGYgLyAyNTUuMGY7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAg
IGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzJdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRlc3Rp
bmF0aW9uWzFdID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRlc3RpbmF0aW9u
WzJdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0g
MTsKLSAgICAgICAgc291cmNlICs9IDM7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAg
fQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250
ZXh0M0Q6OkRhdGFGb3JtYXRSR0IzMkYsIGZsb2F0LCBmbG9hdD4oY29uc3QgZmxvYXQqIHNvdXJj
ZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBk
ZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3Vy
Y2VbMV07Ci0gICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzJdOwotICAgICAgICBkZXN0
aW5hdGlvblszXSA9IDE7Ci0gICAgICAgIHNvdXJjZSArPSAzOwotICAgICAgICBkZXN0aW5hdGlv
biArPSA0OwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNr
PEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjMyRiwgZmxvYXQsIGZsb2F0Pihjb25zdCBm
bG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykK
LXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7
Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwotICAgICAgICBkZXN0aW5hdGlv
blsxXSA9IHNvdXJjZVswXTsKLSAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMF07Ci0g
ICAgICAgIGRlc3RpbmF0aW9uWzNdID0gMTsKLSAgICAgICAgc291cmNlICs9IDE7Ci0gICAgICAg
IGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUg
dm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTMyRiwgZmxvYXQsIGZs
b2F0Pihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBp
eGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1Bl
clJvdzsgKytpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwotICAgICAg
ICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVswXTsKLSAgICAgICAgZGVzdGluYXRpb25bMl0gPSBz
b3VyY2VbMF07Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNlWzFdOwotICAgICAgICBz
b3VyY2UgKz0gMjsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKLSAgICB9Ci19Ci0KLXRlbXBs
YXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdEEzMkYsIGZsb2F0LCBmbG9hdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBkZXN0aW5hdGlvblswXSA9
IDA7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzFdID0gMDsKLSAgICAgICAgZGVzdGluYXRpb25bMl0g
PSAwOwotICAgICAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVswXTsKLSAgICAgICAgc291cmNl
ICs9IDE7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAgfQotfQotCi0vLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLS8vIFBpeGVsIHBhY2tpbmcgcm91dGluZXMuCi0vLwotCi10ZW1wbGF0ZTxpbnQgZm9y
bWF0LCBpbnQgYWxwaGFPcCwgdHlwZW5hbWUgU291cmNlVHlwZSwgdHlwZW5hbWUgRHN0VHlwZT4K
LUFMV0FZU19JTkxJTkUgdm9pZCBwYWNrKGNvbnN0IFNvdXJjZVR5cGUqLCBEc3RUeXBlKiwgdW5z
aWduZWQpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXRlbXBsYXRlPD4gQUxX
QVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBOCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCB1aW50OF90LCB1aW50OF90Pihjb25zdCB1
aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJS
b3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsr
aSkgewotICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVszXTsKLSAgICAgICAgc291cmNl
ICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDE7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+
IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0Ujgs
IEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywgdWludDhfdCwgdWludDhfdD4oY29u
c3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxz
UGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93
OyArK2kpIHsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07Ci0gICAgICAgIHNv
dXJjZSArPSA0OwotICAgICAgICBkZXN0aW5hdGlvbiArPSAxOwotICAgIH0KLX0KLQotdGVtcGxh
dGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1h
dFI4LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5LCB1aW50OF90LCB1aW50
OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhl
bHNQZXJSb3c7ICsraSkgewotICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSAv
IDI1NS4wZjsKLSAgICAgICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWludDhfdD4o
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIGRl
c3RpbmF0aW9uWzBdID0gc291cmNlUjsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRl
c3RpbmF0aW9uICs9IDE7Ci0gICAgfQotfQotCi0vLyBGSVhNRTogdGhpcyByb3V0aW5lIGlzIGxv
c3N5IGFuZCBtdXN0IGJlIHJlbW92ZWQuCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBw
YWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjgsIEdyYXBoaWNzQ29udGV4dDNEOjpB
bHBoYURvVW5tdWx0aXBseSwgdWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhfdCogc291cmNl
LCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAg
ZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gPyAyNTUuMGYgLyBzb3VyY2VbM10gOiAxLjBm
OwotICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNf
Y2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICAgICAgZGVzdGluYXRp
b25bMF0gPSBzb3VyY2VSOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRp
b24gKz0gMTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8
R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTgsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBo
YURvTm90aGluZywgdWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhfdCogc291cmNlLCB1aW50
OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAgZGVzdGlu
YXRpb25bMF0gPSBzb3VyY2VbMF07Ci0gICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzNd
OwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gMjsKLSAgICB9
Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0
M0Q6OkRhdGFGb3JtYXRSQTgsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvUHJlbXVsdGlwbHks
IHVpbnQ4X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGlu
YXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGZsb2F0IHNjYWxlRmFjdG9y
ID0gc291cmNlWzNdIC8gMjU1LjBmOwotICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNf
Y2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9y
KTsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VSOwotICAgICAgICBkZXN0aW5hdGlv
blsxXSA9IHNvdXJjZVszXTsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0
aW9uICs9IDI7Ci0gICAgfQotfQotCi0vLyBGSVhNRTogdGhpcyByb3V0aW5lIGlzIGxvc3N5IGFu
ZCBtdXN0IGJlIHJlbW92ZWQuCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkE4LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFE
b1VubXVsdGlwbHksIHVpbnQ4X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWlu
dDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGZsb2F0
IHNjYWxlRmFjdG9yID0gc291cmNlWzNdID8gMjU1LjBmIC8gc291cmNlWzNdIDogMS4wZjsKLSAg
ICAgICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBd
ID0gc291cmNlUjsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbM107Ci0gICAgICAg
IHNvdXJjZSArPSA0OwotICAgICAgICBkZXN0aW5hdGlvbiArPSAyOwotICAgIH0KLX0KLQotdGVt
cGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdFJHQjgsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywgdWludDhfdCwgdWlu
dDhfdD4oY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4
ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07Ci0g
ICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFdOwotICAgICAgICBkZXN0aW5hdGlvblsy
XSA9IHNvdXJjZVsyXTsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0aW9u
ICs9IDM7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCOCwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhh
RG9QcmVtdWx0aXBseSwgdWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhfdCogc291cmNlLCB1
aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAgZmxv
YXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gLyAyNTUuMGY7Ci0gICAgICAgIHVpbnQ4X3Qgc291
cmNlUiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMF0p
ICogc2NhbGVGYWN0b3IpOwotICAgICAgICB1aW50OF90IHNvdXJjZUcgPSBzdGF0aWNfY2FzdDx1
aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzFdKSAqIHNjYWxlRmFjdG9yKTsKLSAg
ICAgICAgdWludDhfdCBzb3VyY2VCID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHNvdXJjZVsyXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBd
ID0gc291cmNlUjsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VHOwotICAgICAgICBk
ZXN0aW5hdGlvblsyXSA9IHNvdXJjZUI7Ci0gICAgICAgIHNvdXJjZSArPSA0OwotICAgICAgICBk
ZXN0aW5hdGlvbiArPSAzOwotICAgIH0KLX0KLQotLy8gRklYTUU6IHRoaXMgcm91dGluZSBpcyBs
b3NzeSBhbmQgbXVzdCBiZSByZW1vdmVkLgotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQg
cGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjgsIEdyYXBoaWNzQ29udGV4dDNE
OjpBbHBoYURvVW5tdWx0aXBseSwgdWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhfdCogc291
cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewotICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAg
ICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gPyAyNTUuMGYgLyBzb3VyY2VbM10gOiAx
LjBmOwotICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0
aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICAgICAgdWludDhf
dCBzb3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJj
ZVsxXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIHVpbnQ4X3Qgc291cmNlQiA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMl0pICogc2NhbGVGYWN0b3Ip
OwotICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVI7Ci0gICAgICAgIGRlc3RpbmF0aW9u
WzFdID0gc291cmNlRzsKLSAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VCOwotICAgICAg
ICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gMzsKLSAgICB9Ci19Ci0KLQot
dGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdFJHQkE4LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcsIHVpbnQ4X3Qs
IHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVu
c2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSwg
cGl4ZWxzUGVyUm93ICogNCk7Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBh
Y2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBOCwgR3JhcGhpY3NDb250ZXh0M0Q6
OkFscGhhRG9QcmVtdWx0aXBseSwgdWludDhfdCwgdWludDhfdD4oY29uc3QgdWludDhfdCogc291
cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewotICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAg
ICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gLyAyNTUuMGY7Ci0gICAgICAgIHVpbnQ4
X3Qgc291cmNlUiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3Vy
Y2VbMF0pICogc2NhbGVGYWN0b3IpOwotICAgICAgICB1aW50OF90IHNvdXJjZUcgPSBzdGF0aWNf
Y2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzFdKSAqIHNjYWxlRmFjdG9y
KTsKLSAgICAgICAgdWludDhfdCBzb3VyY2VCID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsyXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIGRlc3RpbmF0
aW9uWzBdID0gc291cmNlUjsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VHOwotICAg
ICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZUI7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0g
c291cmNlWzNdOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0g
NDsKLSAgICB9Ci19Ci0KLS8vIEZJWE1FOiB0aGlzIHJvdXRpbmUgaXMgbG9zc3kgYW5kIG11c3Qg
YmUgcmVtb3ZlZC4KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3ND
b250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBOCwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Vbm11
bHRpcGx5LCB1aW50OF90LCB1aW50OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3Qq
IGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBmbG9hdCBzY2Fs
ZUZhY3RvciA9IHNvdXJjZVszXSA/IDI1NS4wZiAvIHNvdXJjZVszXSA6IDEuMGY7Ci0gICAgICAg
IHVpbnQ4X3Qgc291cmNlUiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0
Pihzb3VyY2VbMF0pICogc2NhbGVGYWN0b3IpOwotICAgICAgICB1aW50OF90IHNvdXJjZUcgPSBz
dGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzFdKSAqIHNjYWxl
RmFjdG9yKTsKLSAgICAgICAgdWludDhfdCBzb3VyY2VCID0gc3RhdGljX2Nhc3Q8dWludDhfdD4o
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsyXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIGRl
c3RpbmF0aW9uWzBdID0gc291cmNlUjsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VH
OwotICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZUI7Ci0gICAgICAgIGRlc3RpbmF0aW9u
WzNdID0gc291cmNlWzNdOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRp
b24gKz0gNDsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8
R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNDQ0NCwgR3JhcGhpY3NDb250ZXh0M0Q6
OkFscGhhRG9Ob3RoaW5nLCB1aW50OF90LCB1aW50MTZfdD4oY29uc3QgdWludDhfdCogc291cmNl
LCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSNpZiBI
QVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0gICAgU0lNRDo6cGFja09uZVJvd09mUkdCQThUb1Vu
c2lnbmVkU2hvcnQ0NDQ0KHNvdXJjZSwgZGVzdGluYXRpb24sIHBpeGVsc1BlclJvdyk7Ci0jZW5k
aWYKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7
Ci0gICAgICAgICpkZXN0aW5hdGlvbiA9ICgoKHNvdXJjZVswXSAmIDB4RjApIDw8IDgpCi0gICAg
ICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNlWzFdICYgMHhGMCkgPDwgNCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHwgKHNvdXJjZVsyXSAmIDB4RjApCi0gICAgICAgICAgICAgICAgICAg
ICAgICB8IChzb3VyY2VbM10gPj4gNCkpOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAg
ZGVzdGluYXRpb24gKz0gMTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2
b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNDQ0NCwgR3JhcGhpY3ND
b250ZXh0M0Q6OkFscGhhRG9QcmVtdWx0aXBseSwgdWludDhfdCwgdWludDE2X3Q+KGNvbnN0IHVp
bnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJS
b3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsr
aSkgewotICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSAvIDI1NS4wZjsKLSAg
ICAgICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIHVpbnQ4X3Qgc291cmNl
RyA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMV0pICog
c2NhbGVGYWN0b3IpOwotICAgICAgICB1aW50OF90IHNvdXJjZUIgPSBzdGF0aWNfY2FzdDx1aW50
OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzJdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICAg
ICAgKmRlc3RpbmF0aW9uID0gKCgoc291cmNlUiAmIDB4RjApIDw8IDgpCi0gICAgICAgICAgICAg
ICAgICAgICAgICB8ICgoc291cmNlRyAmIDB4RjApIDw8IDQpCi0gICAgICAgICAgICAgICAgICAg
ICAgICB8IChzb3VyY2VCICYgMHhGMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNvdXJj
ZVszXSA+PiA0KSk7Ci0gICAgICAgIHNvdXJjZSArPSA0OwotICAgICAgICBkZXN0aW5hdGlvbiAr
PSAxOwotICAgIH0KLX0KLQotLy8gRklYTUU6IHRoaXMgcm91dGluZSBpcyBsb3NzeSBhbmQgbXVz
dCBiZSByZW1vdmVkLgotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGlj
c0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE0NDQ0LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFE
b1VubXVsdGlwbHksIHVpbnQ4X3QsIHVpbnQxNl90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVp
bnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAgZmxv
YXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gPyAyNTUuMGYgLyBzb3VyY2VbM10gOiAxLjBmOwot
ICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2Fz
dDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICAgICAgdWludDhfdCBzb3Vy
Y2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsxXSkg
KiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIHVpbnQ4X3Qgc291cmNlQiA9IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMl0pICogc2NhbGVGYWN0b3IpOwotICAg
ICAgICAqZGVzdGluYXRpb24gPSAoKChzb3VyY2VSICYgMHhGMCkgPDwgOCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHwgKChzb3VyY2VHICYgMHhGMCkgPDwgNCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHwgKHNvdXJjZUIgJiAweEYwKQotICAgICAgICAgICAgICAgICAgICAgICAgfCAoc291
cmNlWzNdID4+IDQpKTsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0aW9u
ICs9IDE7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTU1NTEsIEdyYXBoaWNzQ29udGV4dDNEOjpB
bHBoYURvTm90aGluZywgdWludDhfdCwgdWludDE2X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwg
dWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0jaWYgSEFW
RShBUk1fTkVPTl9JTlRSSU5TSUNTKQotICAgIFNJTUQ6OnBhY2tPbmVSb3dPZlJHQkE4VG9VbnNp
Z25lZFNob3J0NTU1MShzb3VyY2UsIGRlc3RpbmF0aW9uLCBwaXhlbHNQZXJSb3cpOwotI2VuZGlm
Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewot
ICAgICAgICAqZGVzdGluYXRpb24gPSAoKChzb3VyY2VbMF0gJiAweEY4KSA8PCA4KQotICAgICAg
ICAgICAgICAgICAgICAgICAgfCAoKHNvdXJjZVsxXSAmIDB4RjgpIDw8IDMpCi0gICAgICAgICAg
ICAgICAgICAgICAgICB8ICgoc291cmNlWzJdICYgMHhGOCkgPj4gMikKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHwgKHNvdXJjZVszXSA+PiA3KSk7Ci0gICAgICAgIHNvdXJjZSArPSA0OwotICAg
ICAgICBkZXN0aW5hdGlvbiArPSAxOwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNfSU5M
SU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE1NTUxLCBHcmFw
aGljc0NvbnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5LCB1aW50OF90LCB1aW50MTZfdD4oY29u
c3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVs
c1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJv
dzsgKytpKSB7Ci0gICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdIC8gMjU1LjBm
OwotICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNf
Y2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICAgICAgdWludDhfdCBz
b3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsx
XSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIHVpbnQ4X3Qgc291cmNlQiA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMl0pICogc2NhbGVGYWN0b3IpOwot
ICAgICAgICAqZGVzdGluYXRpb24gPSAoKChzb3VyY2VSICYgMHhGOCkgPDwgOCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHwgKChzb3VyY2VHICYgMHhGOCkgPDwgMykKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHwgKChzb3VyY2VCICYgMHhGOCkgPj4gMikKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHwgKHNvdXJjZVszXSA+PiA3KSk7Ci0gICAgICAgIHNvdXJjZSArPSA0OwotICAgICAgICBk
ZXN0aW5hdGlvbiArPSAxOwotICAgIH0KLX0KLQotLy8gRklYTUU6IHRoaXMgcm91dGluZSBpcyBs
b3NzeSBhbmQgbXVzdCBiZSByZW1vdmVkLgotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQg
cGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE1NTUxLCBHcmFwaGljc0NvbnRl
eHQzRDo6QWxwaGFEb1VubXVsdGlwbHksIHVpbnQ4X3QsIHVpbnQxNl90Pihjb25zdCB1aW50OF90
KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQot
ewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsK
LSAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gPyAyNTUuMGYgLyBzb3VyY2Vb
M10gOiAxLjBmOwotICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50OF90
PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICAgICAg
dWludDhfdCBzb3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHNvdXJjZVsxXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIHVpbnQ4X3Qgc291cmNlQiA9IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMl0pICogc2NhbGVG
YWN0b3IpOwotICAgICAgICAqZGVzdGluYXRpb24gPSAoKChzb3VyY2VSICYgMHhGOCkgPDwgOCkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VHICYgMHhGOCkgPDwgMykKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VCICYgMHhGOCkgPj4gMikKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHwgKHNvdXJjZVszXSA+PiA3KSk7Ci0gICAgICAgIHNvdXJjZSArPSA0Owot
ICAgICAgICBkZXN0aW5hdGlvbiArPSAxOwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNf
SU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjU2NSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCB1aW50OF90LCB1aW50MTZfdD4oY29uc3Qg
dWludDhfdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1Bl
clJvdykKLXsKLSNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0gICAgU0lNRDo6cGFja09u
ZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NjUoc291cmNlLCBkZXN0aW5hdGlvbiwgcGl4ZWxz
UGVyUm93KTsKLSNlbmRpZgotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxz
UGVyUm93OyArK2kpIHsKLSAgICAgICAgKmRlc3RpbmF0aW9uID0gKCgoc291cmNlWzBdICYgMHhG
OCkgPDwgOCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VbMV0gJiAweEZDKSA8
PCAzKQotICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHNvdXJjZVsyXSAmIDB4RjgpID4+IDMp
KTsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDE7Ci0gICAg
fQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4
dDNEOjpEYXRhRm9ybWF0UkdCNTY1LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1ByZW11bHRp
cGx5LCB1aW50OF90LCB1aW50MTZfdD4oY29uc3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCog
ZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGZsb2F0IHNjYWxl
RmFjdG9yID0gc291cmNlWzNdIC8gMjU1LjBmOwotICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBz
dGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxl
RmFjdG9yKTsKLSAgICAgICAgdWludDhfdCBzb3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4o
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsxXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIHVp
bnQ4X3Qgc291cmNlQiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihz
b3VyY2VbMl0pICogc2NhbGVGYWN0b3IpOwotICAgICAgICAqZGVzdGluYXRpb24gPSAoKChzb3Vy
Y2VSICYgMHhGOCkgPDwgOCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VHICYg
MHhGQykgPDwgMykKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VCICYgMHhGOCkg
Pj4gMykpOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gMTsK
LSAgICB9Ci19Ci0KLS8vIEZJWE1FOiB0aGlzIHJvdXRpbmUgaXMgbG9zc3kgYW5kIG11c3QgYmUg
cmVtb3ZlZC4KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250
ZXh0M0Q6OkRhdGFGb3JtYXRSR0I1NjUsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvVW5tdWx0
aXBseSwgdWludDhfdCwgdWludDE2X3Q+KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3Qq
IGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBmbG9hdCBzY2Fs
ZUZhY3RvciA9IHNvdXJjZVszXSA/IDI1NS4wZiAvIHNvdXJjZVszXSA6IDEuMGY7Ci0gICAgICAg
IHVpbnQ4X3Qgc291cmNlUiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0
Pihzb3VyY2VbMF0pICogc2NhbGVGYWN0b3IpOwotICAgICAgICB1aW50OF90IHNvdXJjZUcgPSBz
dGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzFdKSAqIHNjYWxl
RmFjdG9yKTsKLSAgICAgICAgdWludDhfdCBzb3VyY2VCID0gc3RhdGljX2Nhc3Q8dWludDhfdD4o
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsyXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgICpk
ZXN0aW5hdGlvbiA9ICgoKHNvdXJjZVIgJiAweEY4KSA8PCA4KQotICAgICAgICAgICAgICAgICAg
ICAgICAgfCAoKHNvdXJjZUcgJiAweEZDKSA8PCAzKQotICAgICAgICAgICAgICAgICAgICAgICAg
fCAoKHNvdXJjZUIgJiAweEY4KSA+PiAzKSk7Ci0gICAgICAgIHNvdXJjZSArPSA0OwotICAgICAg
ICBkZXN0aW5hdGlvbiArPSAxOwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5F
IHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjMyRiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCBmbG9hdCwgZmxvYXQ+KGNvbnN0IGZsb2F0KiBzb3Vy
Y2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAg
ZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07Ci0gICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291
cmNlWzFdOwotICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXTsKLSAgICAgICAgc291
cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDM7Ci0gICAgfQotfQotCi10ZW1wbGF0
ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0
UkdCMzJGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5LCBmbG9hdCwgZmxv
YXQ+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4
ZWxzUGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVy
Um93OyArK2kpIHsKLSAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM107Ci0gICAg
ICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRl
c3RpbmF0aW9uWzFdID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRlc3RpbmF0
aW9uWzJdID0gc291cmNlWzJdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIHNvdXJjZSArPSA0Owot
ICAgICAgICBkZXN0aW5hdGlvbiArPSAzOwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNf
SU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjMyRiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Vbm11bHRpcGx5LCBmbG9hdCwgZmxvYXQ+KGNvbnN0IGZs
b2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQot
ewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsK
LSAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gPyAxLjBmIC8gc291cmNlWzNd
IDogMS4wZjsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF0gKiBzY2FsZUZhY3Rv
cjsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV0gKiBzY2FsZUZhY3RvcjsKLSAg
ICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMl0gKiBzY2FsZUZhY3RvcjsKLSAgICAgICAg
c291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDM7Ci0gICAgfQotfQotCi0vLyBV
c2VkIG9ubHkgZHVyaW5nIFJHQkE4IG9yIEJHUkE4IC0+IGZsb2F0aW5nLXBvaW50IHVwbG9hZHMu
Ci10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UkdCQTMyRiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCBmbG9h
dCwgZmxvYXQ+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgcGl4ZWxzUGVyUm93KQotewotICAgIG1lbWNweShkZXN0aW5hdGlvbiwgc291cmNlLCBwaXhl
bHNQZXJSb3cgKiA0ICogc2l6ZW9mKGZsb2F0KSk7Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lO
TElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMzJGLCBHcmFw
aGljc0NvbnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5LCBmbG9hdCwgZmxvYXQ+KGNvbnN0IGZs
b2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQot
ewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsK
LSAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM107Ci0gICAgICAgIGRlc3RpbmF0
aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzFd
ID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291
cmNlWzJdICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNlWzNd
OwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKLSAgICB9
Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0
M0Q6OkRhdGFGb3JtYXRSR0JBMzJGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1VubXVsdGlw
bHksIGZsb2F0LCBmbG9hdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9u
LCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNv
dXJjZVszXSA/IDEuMGYgLyBzb3VyY2VbM10gOiAxLjBmOwotICAgICAgICBkZXN0aW5hdGlvblsw
XSA9IHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNv
dXJjZVsxXSAqIHNjYWxlRmFjdG9yOwotICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsy
XSAqIHNjYWxlRmFjdG9yOwotICAgICAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVszXTsKLSAg
ICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAgfQotfQot
Ci10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0QTMyRiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCBmbG9hdCwg
ZmxvYXQ+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
cGl4ZWxzUGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxz
UGVyUm93OyArK2kpIHsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbM107Ci0gICAg
ICAgIHNvdXJjZSArPSA0OwotICAgICAgICBkZXN0aW5hdGlvbiArPSAxOwotICAgIH0KLX0KLQot
dGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdFIzMkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywgZmxvYXQsIGZs
b2F0Pihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBp
eGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1Bl
clJvdzsgKytpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwotICAgICAg
ICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gMTsKLSAgICB9Ci19Ci0KLXRl
bXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRSMzJGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5LCBmbG9hdCwg
ZmxvYXQ+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
cGl4ZWxzUGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxz
UGVyUm93OyArK2kpIHsKLSAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM107Ci0g
ICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7Ci0gICAgICAg
IHNvdXJjZSArPSA0OwotICAgICAgICBkZXN0aW5hdGlvbiArPSAxOwotICAgIH0KLX0KLQotdGVt
cGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdFIzMkYsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvVW5tdWx0aXBseSwgZmxvYXQsIGZs
b2F0Pihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBp
eGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1Bl
clJvdzsgKytpKSB7Ci0gICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdID8gMS4w
ZiAvIHNvdXJjZVszXSA6IDEuMGY7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBd
ICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIHNvdXJjZSArPSA0OwotICAgICAgICBkZXN0aW5hdGlv
biArPSAxOwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMzJGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxw
aGFEb05vdGhpbmcsIGZsb2F0LCBmbG9hdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBkZXN0aW5hdGlvblsw
XSA9IHNvdXJjZVswXTsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbM107Ci0gICAg
ICAgIHNvdXJjZSArPSA0OwotICAgICAgICBkZXN0aW5hdGlvbiArPSAyOwotICAgIH0KLX0KLQot
dGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdFJBMzJGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5LCBmbG9h
dCwgZmxvYXQ+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4
ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM107
Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7Ci0gICAg
ICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzNdOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAg
ICAgICAgZGVzdGluYXRpb24gKz0gMjsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lO
TElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTMyRiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkFscGhhRG9Vbm11bHRpcGx5LCBmbG9hdCwgZmxvYXQ+KGNvbnN0IGZsb2F0
KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewot
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAg
ICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gPyAxLjBmIC8gc291cmNlWzNdIDog
MS4wZjsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF0gKiBzY2FsZUZhY3RvcjsK
LSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbM107Ci0gICAgICAgIHNvdXJjZSArPSA0
OwotICAgICAgICBkZXN0aW5hdGlvbiArPSAyOwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdB
WVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkExNkYs
IEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywgZmxvYXQsIHVpbnQxNl90Pihjb25z
dCBmbG9hdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1Bl
clJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kp
IHsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3Vy
Y2VbMF0pOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZsb2F0
KHNvdXJjZVsxXSk7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzJdID0gY29udmVydEZsb2F0VG9IYWxm
RmxvYXQoc291cmNlWzJdKTsKLSAgICAgICAgZGVzdGluYXRpb25bM10gPSBjb252ZXJ0RmxvYXRU
b0hhbGZGbG9hdChzb3VyY2VbM10pOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVz
dGluYXRpb24gKz0gNDsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lk
IHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMTZGLCBHcmFwaGljc0NvbnRl
eHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5LCBmbG9hdCwgdWludDE2X3Q+KGNvbnN0IGZsb2F0KiBz
b3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAg
ICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXTsKLSAgICAgICAgZGVzdGluYXRpb25bMF0g
PSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbMF0gKiBzY2FsZUZhY3Rvcik7Ci0gICAg
ICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydEZsb2F0VG9IYWxmRmxvYXQoc291cmNlWzFdICog
c2NhbGVGYWN0b3IpOwotICAgICAgICBkZXN0aW5hdGlvblsyXSA9IGNvbnZlcnRGbG9hdFRvSGFs
ZkZsb2F0KHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9yKTsKLSAgICAgICAgZGVzdGluYXRpb25bM10g
PSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbM10pOwotICAgICAgICBzb3VyY2UgKz0g
NDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxX
QVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMTZG
LCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1VubXVsdGlwbHksIGZsb2F0LCB1aW50MTZfdD4o
Y29uc3QgZmxvYXQqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhl
bHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsg
KytpKSB7Ci0gICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdID8gMS4wZiAvIHNv
dXJjZVszXSA6IDEuMGY7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydEZsb2F0VG9I
YWxmRmxvYXQoc291cmNlWzBdICogc2NhbGVGYWN0b3IpOwotICAgICAgICBkZXN0aW5hdGlvblsx
XSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVsxXSAqIHNjYWxlRmFjdG9yKTsKLSAg
ICAgICAgZGVzdGluYXRpb25bMl0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbMl0g
KiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0gY29udmVydEZsb2F0VG9I
YWxmRmxvYXQoc291cmNlWzNdKTsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3Rp
bmF0aW9uICs9IDQ7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBw
YWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCMTZGLCBHcmFwaGljc0NvbnRleHQz
RDo6QWxwaGFEb05vdGhpbmcsIGZsb2F0LCB1aW50MTZfdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwg
dWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGRlc3Rp
bmF0aW9uWzBdID0gY29udmVydEZsb2F0VG9IYWxmRmxvYXQoc291cmNlWzBdKTsKLSAgICAgICAg
ZGVzdGluYXRpb25bMV0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbMV0pOwotICAg
ICAgICBkZXN0aW5hdGlvblsyXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVsyXSk7
Ci0gICAgICAgIHNvdXJjZSArPSA0OwotICAgICAgICBkZXN0aW5hdGlvbiArPSAzOwotICAgIH0K
LX0KLQotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdFJHQjE2RiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9QcmVtdWx0aXBs
eSwgZmxvYXQsIHVpbnQxNl90Pihjb25zdCBmbG9hdCogc291cmNlLCB1aW50MTZfdCogZGVzdGlu
YXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBz
b3VyY2VbM107Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydEZsb2F0VG9IYWxmRmxv
YXQoc291cmNlWzBdICogc2NhbGVGYWN0b3IpOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNv
bnZlcnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVsxXSAqIHNjYWxlRmFjdG9yKTsKLSAgICAgICAg
ZGVzdGluYXRpb25bMl0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbMl0gKiBzY2Fs
ZUZhY3Rvcik7Ci0gICAgICAgIHNvdXJjZSArPSA0OwotICAgICAgICBkZXN0aW5hdGlvbiArPSAz
OwotICAgIH0KLX0KLQotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgcGFjazxHcmFwaGlj
c0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjE2RiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9V
bm11bHRpcGx5LCBmbG9hdCwgdWludDE2X3Q+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIHVpbnQxNl90
KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBmbG9hdCBzY2FsZUZh
Y3RvciA9IHNvdXJjZVszXSA/IDEuMGYgLyBzb3VyY2VbM10gOiAxLjBmOwotICAgICAgICBkZXN0
aW5hdGlvblswXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVswXSAqIHNjYWxlRmFj
dG9yKTsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChz
b3VyY2VbMV0gKiBzY2FsZUZhY3Rvcik7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzJdID0gY29udmVy
dEZsb2F0VG9IYWxmRmxvYXQoc291cmNlWzJdICogc2NhbGVGYWN0b3IpOwotICAgICAgICBzb3Vy
Y2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gMzsKLSAgICB9Ci19Ci0KLXRlbXBsYXRl
PD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRS
QTE2RiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCBmbG9hdCwgdWludDE2X3Q+
KGNvbnN0IGZsb2F0KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4
ZWxzUGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7
ICsraSkgewotICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRGbG9hdFRvSGFsZkZsb2F0
KHNvdXJjZVswXSk7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydEZsb2F0VG9IYWxm
RmxvYXQoc291cmNlWzNdKTsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0
aW9uICs9IDI7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNr
PEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkExNkYsIEdyYXBoaWNzQ29udGV4dDNEOjpB
bHBoYURvUHJlbXVsdGlwbHksIGZsb2F0LCB1aW50MTZfdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwg
dWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGZsb2F0
IHNjYWxlRmFjdG9yID0gc291cmNlWzNdOwotICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZl
cnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yKTsKLSAgICAgICAgZGVz
dGluYXRpb25bMV0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbM10pOwotICAgICAg
ICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gMjsKLSAgICB9Ci19Ci0KLXRl
bXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRSQTE2RiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Vbm11bHRpcGx5LCBmbG9hdCwg
dWludDE2X3Q+KGNvbnN0IGZsb2F0KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5z
aWduZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhl
bHNQZXJSb3c7ICsraSkgewotICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSA/
IDEuMGYgLyBzb3VyY2VbM10gOiAxLjBmOwotICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZl
cnRGbG9hdFRvSGFsZkZsb2F0KHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yKTsKLSAgICAgICAgZGVz
dGluYXRpb25bMV0gPSBjb252ZXJ0RmxvYXRUb0hhbGZGbG9hdChzb3VyY2VbM10pOwotICAgICAg
ICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gMjsKLSAgICB9Ci19Ci0KLXRl
bXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRSMTZGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcsIGZsb2F0LCB1aW50
MTZfdD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1Bl
clJvdzsgKytpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydEZsb2F0VG9IYWxm
RmxvYXQoc291cmNlWzBdKTsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0
aW9uICs9IDE7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBwYWNr
PEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjE2RiwgR3JhcGhpY3NDb250ZXh0M0Q6OkFs
cGhhRG9QcmVtdWx0aXBseSwgZmxvYXQsIHVpbnQxNl90Pihjb25zdCBmbG9hdCogc291cmNlLCB1
aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAgZmxvYXQg
c2NhbGVGYWN0b3IgPSBzb3VyY2VbM107Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVy
dEZsb2F0VG9IYWxmRmxvYXQoc291cmNlWzBdICogc2NhbGVGYWN0b3IpOwotICAgICAgICBzb3Vy
Y2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gMTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRl
PD4gQUxXQVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRS
MTZGLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1VubXVsdGlwbHksIGZsb2F0LCB1aW50MTZf
dD4oY29uc3QgZmxvYXQqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBw
aXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJv
dzsgKytpKSB7Ci0gICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdID8gMS4wZiAv
IHNvdXJjZVszXSA6IDEuMGY7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydEZsb2F0
VG9IYWxmRmxvYXQoc291cmNlWzBdICogc2NhbGVGYWN0b3IpOwotICAgICAgICBzb3VyY2UgKz0g
NDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gMTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxX
QVlTX0lOTElORSB2b2lkIHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBMTZGLCBH
cmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcsIGZsb2F0LCB1aW50MTZfdD4oY29uc3Qg
ZmxvYXQqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJS
b3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7
Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydEZsb2F0VG9IYWxmRmxvYXQoc291cmNl
WzNdKTsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDE7Ci0g
ICAgfQotfQotCi1BTFdBWVNfSU5MSU5FIGJvb2wgSGFzQWxwaGEoaW50IGZvcm1hdCkKLXsKLSAg
ICByZXR1cm4gZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QTgKLSAgICAg
ICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QTE2RgotICAgICAg
ICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBMzJGCi0gICAgICAg
IHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBOAotICAgICAgICB8
fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBUjgKLSAgICAgICAgfHwg
Zm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkExNkYKLSAgICAgICAgfHwg
Zm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkEzMkYKLSAgICAgICAgfHwg
Zm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTgKLSAgICAgICAgfHwg
Zm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QkdSQTgKLSAgICAgICAgfHwg
Zm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVJHQjgKLSAgICAgICAgfHwg
Zm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QUJHUjgKLSAgICAgICAgfHwg
Zm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTE2RgotICAgICAgICB8
fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMzJGCi0gICAgICAg
IHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE0NDQ0Ci0gICAg
ICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE1NTUxOwot
fQotCi1BTFdBWVNfSU5MSU5FIGJvb2wgSGFzQ29sb3IoaW50IGZvcm1hdCkKLXsKLSAgICByZXR1
cm4gZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTgKLSAgICAgICAg
fHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTE2RgotICAgICAg
ICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMzJGCi0gICAg
ICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjgKLSAgICAg
ICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCMTZGCi0gICAg
ICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjMyRgotICAg
ICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRCR1I4Ci0gICAg
ICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEJHUkE4Ci0gICAg
ICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSR0I4Ci0gICAg
ICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFCR1I4Ci0gICAg
ICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE1NTUxCi0g
ICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE0NDQ0
Ci0gICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjU2
NQotICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSOAot
ICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSMTZGCi0g
ICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFIzMkYKLSAg
ICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkE4Ci0gICAg
ICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMTZGCi0gICAg
ICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMzJGCi0gICAg
ICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSODsKLX0KLQot
dGVtcGxhdGU8aW50IEZvcm1hdD4KLXN0cnVjdCBJc0Zsb2F0Rm9ybWF0IHsKLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBWYWx1ZSA9Ci0gICAgICAgIEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6
RGF0YUZvcm1hdFJHQkEzMkYKLSAgICAgICAgfHwgRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0UkdCMzJGCi0gICAgICAgIHx8IEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdFJBMzJGCi0gICAgICAgIHx8IEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdFIzMkYKLSAgICAgICAgfHwgRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0QTMyRjsKLX07Ci0KLXRlbXBsYXRlPGludCBGb3JtYXQ+Ci1zdHJ1Y3QgSXNI
YWxmRmxvYXRGb3JtYXQgewotICAgIHN0YXRpYyBjb25zdCBib29sIFZhbHVlID0KLSAgICAgICAg
Rm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTE2RgotICAgICAgICB8
fCBGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0IxNkYKLSAgICAgICAg
fHwgRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkExNkYKLSAgICAgICAg
fHwgRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjE2RgotICAgICAgICB8
fCBGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBMTZGOwotfTsKLQotdGVt
cGxhdGU8aW50IEZvcm1hdD4KLXN0cnVjdCBJczE2YnBwRm9ybWF0IHsKLSAgICBzdGF0aWMgY29u
c3QgYm9vbCBWYWx1ZSA9Ci0gICAgICAgIEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdFJHQkE1NTUxCi0gICAgICAgIHx8IEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6
RGF0YUZvcm1hdFJHQkE0NDQ0Ci0gICAgICAgIHx8IEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdFJHQjU2NTsKLX07Ci0KLXRlbXBsYXRlPGludCBGb3JtYXQsIGJvb2wgSXNG
bG9hdCA9IElzRmxvYXRGb3JtYXQ8Rm9ybWF0Pjo6VmFsdWUsIGJvb2wgSXNIYWxmRmxvYXQgPSBJ
c0hhbGZGbG9hdEZvcm1hdDxGb3JtYXQ+OjpWYWx1ZSwgYm9vbCBJczE2YnBwID0gSXMxNmJwcEZv
cm1hdDxGb3JtYXQ+OjpWYWx1ZT4KLXN0cnVjdCBEYXRhVHlwZUZvckZvcm1hdCB7Ci0gICAgdHlw
ZWRlZiB1aW50OF90IFR5cGU7Ci19OwotCi10ZW1wbGF0ZTxpbnQgRm9ybWF0Pgotc3RydWN0IERh
dGFUeXBlRm9yRm9ybWF0PEZvcm1hdCwgdHJ1ZSwgZmFsc2UsIGZhbHNlPiB7Ci0gICAgdHlwZWRl
ZiBmbG9hdCBUeXBlOwotfTsKLQotdGVtcGxhdGU8aW50IEZvcm1hdD4KLXN0cnVjdCBEYXRhVHlw
ZUZvckZvcm1hdDxGb3JtYXQsIGZhbHNlLCB0cnVlLCBmYWxzZT4gewotICAgIHR5cGVkZWYgdWlu
dDE2X3QgVHlwZTsKLX07Ci0KLXRlbXBsYXRlPGludCBGb3JtYXQ+Ci1zdHJ1Y3QgRGF0YVR5cGVG
b3JGb3JtYXQ8Rm9ybWF0LCBmYWxzZSwgZmFsc2UsIHRydWU+IHsKLSAgICB0eXBlZGVmIHVpbnQx
Nl90IFR5cGU7Ci19OwotCi10ZW1wbGF0ZTxpbnQgRm9ybWF0Pgotc3RydWN0IEludGVybWVkaWF0
ZUZvcm1hdCB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBWYWx1ZSA9IChJc0Zsb2F0Rm9ybWF0PEZv
cm1hdD46OlZhbHVlIHx8IElzSGFsZkZsb2F0Rm9ybWF0PEZvcm1hdD46OlZhbHVlKSA/IEdyYXBo
aWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTMyRiA6IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0UkdCQTg7Ci19OwotCiBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIFRleGVsQnl0ZXNGb3JG
b3JtYXQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgZm9ybWF0KQogewogICAgIHN3aXRj
aCAoZm9ybWF0KSB7CkBAIC0xNDk2LDE5MSArMzM1LDYgQEAgQUxXQVlTX0lOTElORSB1bnNpZ25l
ZCBUZXhlbEJ5dGVzRm9yRm9ybQogICAgIH0KIH0KIAotLyogRU5EIENPREUgU0hBUkVEIFdJVEgg
TU9aSUxMQSBGSVJFRk9YICovCi0KLWNsYXNzIEZvcm1hdENvbnZlcnRlciB7Ci1wdWJsaWM6Ci0g
ICAgRm9ybWF0Q29udmVydGVyKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsCi0gICAg
ICAgIGNvbnN0IHZvaWQqIHNyY1N0YXJ0LCB2b2lkKiBkc3RTdGFydCwgaW50IHNyY1N0cmlkZSwg
aW50IGRzdFN0cmlkZSkKLSAgICAgICAgOiBtX3dpZHRoKHdpZHRoKSwgbV9oZWlnaHQoaGVpZ2h0
KSwgbV9zcmNTdGFydChzcmNTdGFydCksIG1fZHN0U3RhcnQoZHN0U3RhcnQpLCBtX3NyY1N0cmlk
ZShzcmNTdHJpZGUpLCBtX2RzdFN0cmlkZShkc3RTdHJpZGUpLCBtX3N1Y2Nlc3MoZmFsc2UpCi0g
ICAgewotICAgICAgICBjb25zdCB1bnNpZ25lZCBNYXhOdW1iZXJPZkNvbXBvbmVudHMgPSA0Owot
ICAgICAgICBjb25zdCB1bnNpZ25lZCBNYXhCeXRlc1BlckNvbXBvbmVudCAgPSA0OwotICAgICAg
ICBtX3VucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDhf
dFtdPihtX3dpZHRoICogTWF4TnVtYmVyT2ZDb21wb25lbnRzICogTWF4Qnl0ZXNQZXJDb21wb25l
bnQpOwotCi0gICAgICAgIEFTU0VSVChtX3VucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YS5nZXQo
KSk7Ci0gICAgfQotCi0gICAgdm9pZCBjb252ZXJ0KEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9y
bWF0IHNyY0Zvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgZHN0Rm9ybWF0LCBH
cmFwaGljc0NvbnRleHQzRDo6QWxwaGFPcCk7Ci0gICAgYm9vbCBTdWNjZXNzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdWNjZXNzOyB9Ci0KLXByaXZhdGU6Ci0gICAgdGVtcGxhdGU8R3JhcGhpY3NDb250
ZXh0M0Q6OkRhdGFGb3JtYXQgU3JjRm9ybWF0PgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjb252
ZXJ0KEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IGRzdEZvcm1hdCwgR3JhcGhpY3NDb250
ZXh0M0Q6OkFscGhhT3ApOwotCi0gICAgdGVtcGxhdGU8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXQgU3JjRm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBEc3RGb3JtYXQ+
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGNvbnZlcnQoR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhh
T3ApOwotCi0gICAgdGVtcGxhdGU8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgU3JjRm9y
bWF0LCBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBEc3RGb3JtYXQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpBbHBoYU9wIGFscGhhT3A+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGNvbnZlcnQo
KTsKLQotICAgIGNvbnN0IHVuc2lnbmVkIG1fd2lkdGgsIG1faGVpZ2h0OwotICAgIGNvbnN0IHZv
aWQqIGNvbnN0IG1fc3JjU3RhcnQ7Ci0gICAgdm9pZCogY29uc3QgbV9kc3RTdGFydDsKLSAgICBj
b25zdCBpbnQgbV9zcmNTdHJpZGUsIG1fZHN0U3RyaWRlOwotICAgIGJvb2wgbV9zdWNjZXNzOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNE
YXRhOwotfTsKLQotdm9pZCBGb3JtYXRDb252ZXJ0ZXI6OmNvbnZlcnQoR3JhcGhpY3NDb250ZXh0
M0Q6OkRhdGFGb3JtYXQgc3JjRm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBk
c3RGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYU9wIGFscGhhT3ApCi17Ci0jZGVmaW5l
IEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVChTcmNGb3JtYXQpIFwKLSAgICBjYXNlIFNy
Y0Zvcm1hdDogXAotICAgICAgICByZXR1cm4gY29udmVydDxTcmNGb3JtYXQ+KGRzdEZvcm1hdCwg
YWxwaGFPcCk7Ci0KLSAgICAgICAgc3dpdGNoIChzcmNGb3JtYXQpIHsKLSAgICAgICAgICAgIEZP
Uk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1h
dFI4KQotICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdyYXBoaWNz
Q29udGV4dDNEOjpEYXRhRm9ybWF0QTgpCi0gICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FT
RV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSMzJGKQotICAgICAgICAg
ICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0QTMyRikKLSAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVChH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBOCkKLSAgICAgICAgICAgIEZPUk1BVENPTlZF
UlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMzJGKQot
ICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdyYXBoaWNzQ29udGV4
dDNEOjpEYXRhRm9ybWF0UkdCOCkKLSAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NS
Q0ZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEJHUjgpCi0gICAgICAgICAgICBG
T1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSR0I1NjUpCi0gICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQoR3Jh
cGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0IzMkYpCi0gICAgICAgICAgICBGT1JNQVRDT05W
RVJURVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBOCkK
LSAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdEFSR0I4KQotICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0Vf
U1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QUJHUjgpCi0gICAgICAgICAg
ICBGT1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRBUjgpCi0gICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQoR3Jh
cGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRCR1JBOCkKLSAgICAgICAgICAgIEZPUk1BVENPTlZF
UlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE1NTUx
KQotICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0UkdCQTQ0NDQpCi0gICAgICAgICAgICBGT1JNQVRDT05WRVJURVJf
Q0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMzJGKQotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IH0KLSN1bmRlZiBGT1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQKLX0KLQotdGVtcGxhdGU8
R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgU3JjRm9ybWF0PgotQUxXQVlTX0lOTElORSB2
b2lkIEZvcm1hdENvbnZlcnRlcjo6Y29udmVydChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1h
dCBkc3RGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYU9wIGFscGhhT3ApCi17Ci0jZGVm
aW5lIEZPUk1BVENPTlZFUlRFUl9DQVNFX0RTVEZPUk1BVChEc3RGb3JtYXQpIFwKLSAgICBjYXNl
IERzdEZvcm1hdDogXAotICAgICAgICByZXR1cm4gY29udmVydDxTcmNGb3JtYXQsIERzdEZvcm1h
dD4oYWxwaGFPcCk7Ci0KLSAgICAgICAgc3dpdGNoIChkc3RGb3JtYXQpIHsKLSAgICAgICAgICAg
IEZPUk1BVENPTlZFUlRFUl9DQVNFX0RTVEZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdFI4KQotICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfRFNURk9STUFUKEdyYXBo
aWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjE2RikKLSAgICAgICAgICAgIEZPUk1BVENPTlZFUlRF
Ul9DQVNFX0RTVEZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFIzMkYpCi0gICAg
ICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9EU1RGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXRBOCkKLSAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX0RTVEZPUk1B
VChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEExNkYpCi0gICAgICAgICAgICBGT1JNQVRD
T05WRVJURVJfQ0FTRV9EU1RGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBMzJG
KQotICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfRFNURk9STUFUKEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0UkE4KQotICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0Vf
RFNURk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkExNkYpCi0gICAgICAgICAg
ICBGT1JNQVRDT05WRVJURVJfQ0FTRV9EU1RGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRSQTMyRikKLSAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX0RTVEZPUk1BVChH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjgpCi0gICAgICAgICAgICBGT1JNQVRDT05W
RVJURVJfQ0FTRV9EU1RGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0I1NjUp
Ci0gICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9EU1RGT1JNQVQoR3JhcGhpY3NDb250
ZXh0M0Q6OkRhdGFGb3JtYXRSR0IxNkYpCi0gICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FT
RV9EU1RGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0IzMkYpCi0gICAgICAg
ICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9EU1RGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRSR0JBOCkKLSAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX0RTVEZPUk1B
VChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE1NTUxKQotICAgICAgICAgICAgRk9S
TUFUQ09OVkVSVEVSX0NBU0VfRFNURk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0
UkdCQTQ0NDQpCi0gICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9EU1RGT1JNQVQoR3Jh
cGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMTZGKQotICAgICAgICAgICAgRk9STUFUQ09O
VkVSVEVSX0NBU0VfRFNURk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTMy
RikKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICB9Ci0KLSN1bmRlZiBGT1JNQVRDT05WRVJURVJfQ0FTRV9EU1RGT1JNQVQKLX0KLQot
dGVtcGxhdGU8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgU3JjRm9ybWF0LCBHcmFwaGlj
c0NvbnRleHQzRDo6RGF0YUZvcm1hdCBEc3RGb3JtYXQ+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgRm9y
bWF0Q29udmVydGVyOjpjb252ZXJ0KEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYU9wIGFscGhhT3Ap
Ci17Ci0jZGVmaW5lIEZPUk1BVENPTlZFUlRFUl9DQVNFX0FMUEhBT1AoYWxwaGFPcCkgXAotICAg
IGNhc2UgYWxwaGFPcDogXAotICAgICAgICByZXR1cm4gY29udmVydDxTcmNGb3JtYXQsIERzdEZv
cm1hdCwgYWxwaGFPcD4oKTsKLQotICAgICAgICBzd2l0Y2ggKGFscGhhT3ApIHsKLSAgICAgICAg
ICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX0FMUEhBT1AoR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhh
RG9Ob3RoaW5nKQotICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfQUxQSEFPUChHcmFw
aGljc0NvbnRleHQzRDo6QWxwaGFEb1ByZW11bHRpcGx5KQotICAgICAgICAgICAgRk9STUFUQ09O
VkVSVEVSX0NBU0VfQUxQSEFPUChHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb1VubXVsdGlwbHkp
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgfQotI3VuZGVmIEZPUk1BVENPTlZFUlRFUl9DQVNFX0FMUEhBT1AKLX0KLQotdGVtcGxh
dGU8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgU3JjRm9ybWF0LCBHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdCBEc3RGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYU9wIGFs
cGhhT3A+Ci1BTFdBWVNfSU5MSU5FX0VYQ0VQVF9NU1ZDIHZvaWQgRm9ybWF0Q29udmVydGVyOjpj
b252ZXJ0KCkKLXsKLSAgICAvLyBNYW55IGluc3RhbnRpYXRpb25zIG9mIHRoaXMgdGVtcGxhdGUg
ZnVuY3Rpb24gd2lsbCBuZXZlciBiZSBlbnRlcmVkLCBzbyB3ZSB0cnkKLSAgICAvLyB0byByZXR1
cm4gaW1tZWRpYXRlbHkgaW4gdGhlc2UgY2FzZXMgdG8gYXZvaWQgdGhlIGNvbXBpbGVyIHRvIGdl
bmVyYXRlIHVzZWxlc3MgY29kZS4KLSAgICBpZiAoU3JjRm9ybWF0ID09IERzdEZvcm1hdCAmJiBh
bHBoYU9wID09IEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZykgewotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIUlz
RmxvYXRGb3JtYXQ8RHN0Rm9ybWF0Pjo6VmFsdWUgJiYgSXNGbG9hdEZvcm1hdDxTcmNGb3JtYXQ+
OjpWYWx1ZSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIC8vIE9ubHkgdGV4dHVyZXMgdXBsb2FkZWQgZnJvbSBET00gZWxlbWVu
dHMgb3IgSW1hZ2VEYXRhIGNhbiBhbGxvdyBEc3RGb3JtYXQgIT0gU3JjRm9ybWF0LgotICAgIGNv
bnN0IGJvb2wgc3JjRm9ybWF0Q29tZXNGcm9tRE9NRWxlbWVudE9ySW1hZ2VEYXRhID0gR3JhcGhp
Y3NDb250ZXh0M0Q6OnNyY0Zvcm1hdENvbWVzRnJvbURPTUVsZW1lbnRPckltYWdlRGF0YShTcmNG
b3JtYXQpOwotICAgIGlmICghc3JjRm9ybWF0Q29tZXNGcm9tRE9NRWxlbWVudE9ySW1hZ2VEYXRh
ICYmIFNyY0Zvcm1hdCAhPSBEc3RGb3JtYXQpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgLy8gTGlrZXdpc2UsIG9ubHkgdGV4dHVy
ZXMgdXBsb2FkZWQgZnJvbSBET00gZWxlbWVudHMgb3IgSW1hZ2VEYXRhIGNhbiBwb3NzaWJseSBo
YXZlIHRvIGJlIHVucHJlbXVsdGlwbGllZC4KLSAgICBpZiAoIXNyY0Zvcm1hdENvbWVzRnJvbURP
TUVsZW1lbnRPckltYWdlRGF0YSAmJiBhbHBoYU9wID09IEdyYXBoaWNzQ29udGV4dDNEOjpBbHBo
YURvVW5tdWx0aXBseSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBpZiAoKCFIYXNBbHBoYShTcmNGb3JtYXQpIHx8ICFIYXNDb2xv
cihTcmNGb3JtYXQpIHx8ICFIYXNDb2xvcihEc3RGb3JtYXQpKSAmJiBhbHBoYU9wICE9IEdyYXBo
aWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZykgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgRGF0
YVR5cGVGb3JGb3JtYXQ8U3JjRm9ybWF0Pjo6VHlwZSBTcmNUeXBlOwotICAgIHR5cGVkZWYgdHlw
ZW5hbWUgRGF0YVR5cGVGb3JGb3JtYXQ8RHN0Rm9ybWF0Pjo6VHlwZSBEc3RUeXBlOwotICAgIGNv
bnN0IGludCBJbnRlcm1lZGlhdGVTcmNGb3JtYXQgPSBJbnRlcm1lZGlhdGVGb3JtYXQ8RHN0Rm9y
bWF0Pjo6VmFsdWU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBEYXRhVHlwZUZvckZvcm1hdDxJbnRl
cm1lZGlhdGVTcmNGb3JtYXQ+OjpUeXBlIEludGVybWVkaWF0ZVNyY1R5cGU7Ci0gICAgY29uc3Qg
cHRyZGlmZl90IHNyY1N0cmlkZUluRWxlbWVudHMgPSBtX3NyY1N0cmlkZSAvIHNpemVvZihTcmNU
eXBlKTsKLSAgICBjb25zdCBwdHJkaWZmX3QgZHN0U3RyaWRlSW5FbGVtZW50cyA9IG1fZHN0U3Ry
aWRlIC8gc2l6ZW9mKERzdFR5cGUpOwotICAgIGNvbnN0IGJvb2wgdHJpdmlhbFVucGFjayA9IChT
cmNGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBOCAmJiAhSXNGbG9h
dEZvcm1hdDxEc3RGb3JtYXQ+OjpWYWx1ZSAmJiAhSXNIYWxmRmxvYXRGb3JtYXQ8RHN0Rm9ybWF0
Pjo6VmFsdWUpIHx8IFNyY0Zvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJH
QkEzMkY7Ci0gICAgY29uc3QgYm9vbCB0cml2aWFsUGFjayA9IChEc3RGb3JtYXQgPT0gR3JhcGhp
Y3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBOCB8fCBEc3RGb3JtYXQgPT0gR3JhcGhpY3NDb250
ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMzJGKSAmJiBhbHBoYU9wID09IEdyYXBoaWNzQ29udGV4dDNE
OjpBbHBoYURvTm90aGluZyAmJiBtX2RzdFN0cmlkZSA+IDA7Ci0gICAgQVNTRVJUKCF0cml2aWFs
VW5wYWNrIHx8ICF0cml2aWFsUGFjayk7Ci0KLSAgICBjb25zdCBTcmNUeXBlICpzcmNSb3dTdGFy
dCA9IHN0YXRpY19jYXN0PGNvbnN0IFNyY1R5cGUqPihtX3NyY1N0YXJ0KTsKLSAgICBEc3RUeXBl
KiBkc3RSb3dTdGFydCA9IHN0YXRpY19jYXN0PERzdFR5cGUqPihtX2RzdFN0YXJ0KTsKLSAgICBp
ZiAoIXRyaXZpYWxVbnBhY2sgJiYgdHJpdmlhbFBhY2spIHsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2hlaWdodDsgKytpKSB7Ci0gICAgICAgICAgICB1bnBhY2s8U3JjRm9ybWF0
PihzcmNSb3dTdGFydCwgZHN0Um93U3RhcnQsIG1fd2lkdGgpOwotICAgICAgICAgICAgc3JjUm93
U3RhcnQgKz0gc3JjU3RyaWRlSW5FbGVtZW50czsKLSAgICAgICAgICAgIGRzdFJvd1N0YXJ0ICs9
IGRzdFN0cmlkZUluRWxlbWVudHM7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKCF0cml2aWFs
VW5wYWNrICYmICF0cml2aWFsUGFjaykgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1faGVpZ2h0OyArK2kpIHsKLSAgICAgICAgICAgIHVucGFjazxTcmNGb3JtYXQ+KHNyY1Jvd1N0
YXJ0LCByZWludGVycHJldF9jYXN0X3B0cjxJbnRlcm1lZGlhdGVTcmNUeXBlKj4obV91bnBhY2tl
ZEludGVybWVkaWF0ZVNyY0RhdGEuZ2V0KCkpLCBtX3dpZHRoKTsKLSAgICAgICAgICAgIHBhY2s8
RHN0Rm9ybWF0LCBhbHBoYU9wPihyZWludGVycHJldF9jYXN0X3B0cjxJbnRlcm1lZGlhdGVTcmNU
eXBlKj4obV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGEuZ2V0KCkpLCBkc3RSb3dTdGFydCwg
bV93aWR0aCk7Ci0gICAgICAgICAgICBzcmNSb3dTdGFydCArPSBzcmNTdHJpZGVJbkVsZW1lbnRz
OwotICAgICAgICAgICAgZHN0Um93U3RhcnQgKz0gZHN0U3RyaWRlSW5FbGVtZW50czsKLSAgICAg
ICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9oZWln
aHQ7ICsraSkgewotICAgICAgICAgICAgcGFjazxEc3RGb3JtYXQsIGFscGhhT3A+KHNyY1Jvd1N0
YXJ0LCBkc3RSb3dTdGFydCwgbV93aWR0aCk7Ci0gICAgICAgICAgICBzcmNSb3dTdGFydCArPSBz
cmNTdHJpZGVJbkVsZW1lbnRzOwotICAgICAgICAgICAgZHN0Um93U3RhcnQgKz0gZHN0U3RyaWRl
SW5FbGVtZW50czsKLSAgICAgICAgfQotICAgIH0KLSAgICBtX3N1Y2Nlc3MgPSB0cnVlOwotICAg
IHJldHVybjsKLX0KLQotfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCi0KIGJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OnBhY2tQaXhlbHMoY29uc3QgdWludDhfdCogc291cmNlRGF0YSwgRGF0YUZvcm1h
dCBzb3VyY2VEYXRhRm9ybWF0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCB1bnNp
Z25lZCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIHVuc2lnbmVkIGRlc3RpbmF0aW9uRm9ybWF0LCB1
bnNpZ25lZCBkZXN0aW5hdGlvblR5cGUsIEFscGhhT3AgYWxwaGFPcCwgdm9pZCogZGVzdGluYXRp
b25EYXRhLCBib29sIGZsaXBZKQogewogICAgIGludCB2YWxpZFNyYyA9IHdpZHRoICogVGV4ZWxC
eXRlc0ZvckZvcm1hdChzb3VyY2VEYXRhRm9ybWF0KTsKQEAgLTE2OTMsNyArMzQ3LDcgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHQzRDo6cGFja1BpeGVscyhjb25zdAogICAgICAgICBkZXN0aW5hdGlv
bkRhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGVzdGluYXRpb25EYXRhKSArIGRzdFN0cmlk
ZSooaGVpZ2h0IC0gMSk7CiAgICAgICAgIGRzdFN0cmlkZSA9IC1kc3RTdHJpZGU7CiAgICAgfQot
ICAgIGlmICghSGFzQWxwaGEoc291cmNlRGF0YUZvcm1hdCkgfHwgIUhhc0NvbG9yKHNvdXJjZURh
dGFGb3JtYXQpIHx8ICFIYXNDb2xvcihkc3REYXRhRm9ybWF0KSkKKyAgICBpZiAoIWhhc0FscGhh
KHNvdXJjZURhdGFGb3JtYXQpIHx8ICFoYXNDb2xvcihzb3VyY2VEYXRhRm9ybWF0KSB8fCAhaGFz
Q29sb3IoZHN0RGF0YUZvcm1hdCkpCiAgICAgICAgIGFscGhhT3AgPSBBbHBoYURvTm90aGluZzsK
IAogICAgIGlmIChzb3VyY2VEYXRhRm9ybWF0ID09IGRzdERhdGFGb3JtYXQgJiYgYWxwaGFPcCA9
PSBBbHBoYURvTm90aGluZykgewpAQCAtMTcxMSw3ICszNjUsNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dDNEOjpwYWNrUGl4ZWxzKGNvbnN0CiAKICAgICBGb3JtYXRDb252ZXJ0ZXIgY29udmVydGVy
KHdpZHRoLCBoZWlnaHQsIHNvdXJjZURhdGEsIGRlc3RpbmF0aW9uRGF0YSwgc3JjU3RyaWRlLCBk
c3RTdHJpZGUpOwogICAgIGNvbnZlcnRlci5jb252ZXJ0KHNvdXJjZURhdGFGb3JtYXQsIGRzdERh
dGFGb3JtYXQsIGFscGhhT3ApOwotICAgIGlmICghY29udmVydGVyLlN1Y2Nlc3MoKSkKKyAgICBp
ZiAoIWNvbnZlcnRlci5zdWNjZXNzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gMTYxNzY5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5
KQpAQCAtNjA2LDYgKzYwNiw0OSBAQCBwdWJsaWM6CiAgICAgICAgIERhdGFGb3JtYXROdW1Gb3Jt
YXRzCiAgICAgfTsKIAorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaGFzQWxwaGEoRGF0
YUZvcm1hdCBmb3JtYXQpCisgICAgeworICAgICAgICByZXR1cm4gZm9ybWF0ID09IEdyYXBoaWNz
Q29udGV4dDNEOjpEYXRhRm9ybWF0QTgKKyAgICAgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGlj
c0NvbnRleHQzRDo6RGF0YUZvcm1hdEExNkYKKyAgICAgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEEzMkYKKyAgICAgICAgICAgIHx8IGZvcm1hdCA9PSBH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBOAorICAgICAgICAgICAgfHwgZm9ybWF0ID09
IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVI4CisgICAgICAgICAgICB8fCBmb3JtYXQg
PT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTE2RgorICAgICAgICAgICAgfHwgZm9y
bWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkEzMkYKKyAgICAgICAgICAgIHx8
IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE4CisgICAgICAgICAg
ICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRCR1JBOAorICAgICAg
ICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVJHQjgKKyAg
ICAgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFCR1I4
CisgICAgICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRS
R0JBMTZGCisgICAgICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRSR0JBMzJGCisgICAgICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXRSR0JBNDQ0NAorICAgICAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0UkdCQTU1NTE7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBz
dGF0aWMgYm9vbCBoYXNDb2xvcihEYXRhRm9ybWF0IGZvcm1hdCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBOAorICAgICAg
ICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTE2Rgor
ICAgICAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdC
QTMyRgorICAgICAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9y
bWF0UkdCOAorICAgICAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0UkdCMTZGCisgICAgICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXRSR0IzMkYKKyAgICAgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdEJHUjgKKyAgICAgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0Nv
bnRleHQzRDo6RGF0YUZvcm1hdEJHUkE4CisgICAgICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhp
Y3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBUkdCOAorICAgICAgICAgICAgfHwgZm9ybWF0ID09IEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QUJHUjgKKyAgICAgICAgICAgIHx8IGZvcm1hdCA9
PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE1NTUxCisgICAgICAgICAgICB8fCBm
b3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNDQ0NAorICAgICAgICAg
ICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCNTY1CisgICAg
ICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSOAorICAg
ICAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjE2Rgor
ICAgICAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjMy
RgorICAgICAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0
UkE4CisgICAgICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRSQTE2RgorICAgICAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0UkEzMkYKKyAgICAgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6
RGF0YUZvcm1hdEFSODsKKyAgICB9CisKICAgICAvLyBDaGVjayBpZiB0aGUgZm9ybWF0IGlzIG9u
ZSBvZiB0aGUgZm9ybWF0cyBmcm9tIHRoZSBJbWFnZURhdGEgb3IgRE9NIGVsZW1lbnRzLgogICAg
IC8vIFRoZSBmb3JtYXRzIGZyb20gSW1hZ2VEYXRhIGlzIGFsd2F5cyBSR0JBOC4KICAgICAvLyBU
aGUgZm9ybWF0cyBmcm9tIERPTSBlbGVtZW50cyB2YXJ5IHdpdGggR3JhcGhpY3MgcG9ydHMuIEl0
IGNhbiBvbmx5IGJlIFJHQkE4IG9yIEJHUkE4IGZvciBub24tQ0cgcG9ydCB3aGlsZSBhIGxpdHRs
ZSBtb3JlIGZvciBDRyBwb3J0Lgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>