<?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>193586</bug_id>
          
          <creation_ts>2019-01-18 12:25:56 -0800</creation_ts>
          <short_desc>Revert r238815, it broke WK1 video fullscreen on Mac</short_desc>
          <delta_ts>2019-01-18 16:22:51 -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>Media</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=192315</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1495975</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-01-18 12:25:56 -0800</bug_when>
    <thetext>Revert r238815, it broke WK1 video fullscreen on Mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495976</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-01-18 12:26:37 -0800</bug_when>
    <thetext>&lt;rdar://problem/47358941&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496016</commentid>
    <comment_count>2</comment_count>
      <attachid>359534</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-01-18 13:49:48 -0800</bug_when>
    <thetext>Created attachment 359534
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496019</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-18 13:51:41 -0800</bug_when>
    <thetext>Attachment 359534 did not pass style-queue:


ERROR: Source/WebKitLegacy/mac/WebView/WebVideoFullscreenHUDWindowController.mm:494:  The parameter name &quot;videoElement&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 11 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>1496025</commentid>
    <comment_count>4</comment_count>
      <attachid>359538</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-01-18 14:09:49 -0800</bug_when>
    <thetext>Created attachment 359538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496027</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-18 14:11:21 -0800</bug_when>
    <thetext>Attachment 359538 did not pass style-queue:


ERROR: Source/WebKitLegacy/mac/WebView/WebVideoFullscreenHUDWindowController.mm:27:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKitLegacy/mac/WebView/WebVideoFullscreenHUDWindowController.mm:493:  The parameter name &quot;videoElement&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKitLegacy/mac/WebView/WebVideoFullscreenController.mm:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 3 in 12 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>1496053</commentid>
    <comment_count>6</comment_count>
      <attachid>359538</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-18 15:10:38 -0800</bug_when>
    <thetext>Comment on attachment 359538
Patch

Rejecting attachment 359538 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 359538, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=359538&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=193586&amp;ctype=xml&amp;excludefield=attachmentdata
Processing 1 patch from 1 bug.
Updating working directory
Processing patch 359538 from bug 193586.
Fetching: https://bugs.webkit.org/attachment.cgi?id=359538
Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Jer Noble&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Parsed 12 diffs from patch file(s).
patching file Source/WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebKitLegacy/ChangeLog
patching file Source/WebKitLegacy/mac/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebCore/PlatformMac.cmake
patching file Source/WebCore/WebCore.xcodeproj/project.pbxproj
Hunk #1 FAILED at 6430.
Hunk #2 succeeded at 17129 with fuzz 2 (offset 92 lines).
Hunk #3 FAILED at 25700.
Hunk #4 succeeded at 32442 (offset 1 line).
2 out of 4 hunks FAILED -- saving rejects to file Source/WebCore/WebCore.xcodeproj/project.pbxproj.rej
patching file Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp
patching file Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj
patching file Source/WebKitLegacy/mac/WebView/WebVideoFullscreenController.h
patching file Source/WebKitLegacy/mac/WebView/WebVideoFullscreenController.mm
patching file Source/WebKitLegacy/mac/WebView/WebVideoFullscreenHUDWindowController.h
patching file Source/WebKitLegacy/mac/WebView/WebVideoFullscreenHUDWindowController.mm
patching file Source/WebKitLegacy/mac/WebView/WebView.mm
Hunk #2 succeeded at 9380 (offset -8 lines).
Hunk #3 succeeded at 9397 (offset -8 lines).

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Jer Noble&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Parsed 12 diffs from patch file(s).
patching file Source/WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebKitLegacy/ChangeLog
patching file Source/WebKitLegacy/mac/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebCore/PlatformMac.cmake
patching file Source/WebCore/WebCore.xcodeproj/project.pbxproj
Hunk #1 FAILED at 6430.
Hunk #2 succeeded at 17129 with fuzz 2 (offset 92 lines).
Hunk #3 FAILED at 25700.
Hunk #4 succeeded at 32442 (offset 1 line).
2 out of 4 hunks FAILED -- saving rejects to file Source/WebCore/WebCore.xcodeproj/project.pbxproj.rej
patching file Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp
patching file Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj
patching file Source/WebKitLegacy/mac/WebView/WebVideoFullscreenController.h
patching file Source/WebKitLegacy/mac/WebView/WebVideoFullscreenController.mm
patching file Source/WebKitLegacy/mac/WebView/WebVideoFullscreenHUDWindowController.h
patching file Source/WebKitLegacy/mac/WebView/WebVideoFullscreenHUDWindowController.mm
patching file Source/WebKitLegacy/mac/WebView/WebView.mm
Hunk #2 succeeded at 9380 (offset -8 lines).
Hunk #3 succeeded at 9397 (offset -8 lines).

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Jer Noble&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit
Updating OpenSource
From https://git.webkit.org/git/WebKit
   c789475f06c..35847c83606  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 240176 = c789475f06cb430583a98f69cc13a9d31270167b
r240177 = ab48d3a26378bbfd9e1bf8de74c60fe677dd337a
r240178 = 65645bd5f618f808f74aec667599066053d37a83
r240179 = c1b35a255f327430a28782c20d81314f6961a24e
r240180 = 35847c836067053837f23b5101da6bcee46f5abd
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.

Full output: https://webkit-queues.webkit.org/results/10802040</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496080</commentid>
    <comment_count>7</comment_count>
      <attachid>359550</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-01-18 15:55:48 -0800</bug_when>
    <thetext>Created attachment 359550
Rabased patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496081</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-18 15:58:01 -0800</bug_when>
    <thetext>Attachment 359550 did not pass style-queue:


ERROR: Source/WebKitLegacy/mac/WebView/WebVideoFullscreenHUDWindowController.mm:27:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKitLegacy/mac/WebView/WebVideoFullscreenHUDWindowController.mm:493:  The parameter name &quot;videoElement&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKitLegacy/mac/WebView/WebVideoFullscreenController.mm:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 3 in 11 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>1496096</commentid>
    <comment_count>9</comment_count>
      <attachid>359550</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-18 16:22:48 -0800</bug_when>
    <thetext>Comment on attachment 359550
Rabased patch for landing

Clearing flags on attachment: 359550

Committed r240190: &lt;https://trac.webkit.org/changeset/240190&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496097</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-18 16:22:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359534</attachid>
            <date>2019-01-18 13:49:48 -0800</date>
            <delta_ts>2019-01-18 14:09:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193586-20190118134944.patch</filename>
            <type>text/plain</type>
            <size>63945</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTJmOGJjNTVhOGE4Y2Y5
YWQ2M2JmZjgzY2JkMDczYjMyZGIwZGJiNi4uZTUwZDg5YjhhNWE2N2IzYTIzNDY2YzdlYzA2OTNi
Mzk0YjEzNDIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTAxLTE4ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmVydCByMjM4
ODE1LCBpdCBicm9rZSBXSzEgdmlkZW8gZnVsbHNjcmVlbiBvbiBNYWMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzU4NgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDczNTg5NDE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9ydHNG
dWxsc2NyZWVuIGNvbnN0KToKKwogMjAxOS0wMS0xNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBTREtfVkFSSUFOVCBidWlsZCBkZXN0aW5hdGlvbnMgc2hvdWxk
IGJlIHNlcGFyYXRlIGZyb20gbm9uLVNES19WQVJJQU5UIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZwppbmRleCAwMjU2YjljZGUzZDlhYjVhMmFlZGRlMjdhMjI0ZGFlNzA5Mzk1YjdmLi4yMzBiY2Zh
MjVhYjBiNGViNmQyNDg3ZWYzM2Q4NGVlZGEyNmM2MjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDE5LTAxLTE4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmVydCByMjM4ODE1LCBpdCBicm9rZSBXSzEgdmlkZW8g
ZnVsbHNjcmVlbiBvbiBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MzU4NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDczNTg5NDE+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRMZWdh
Y3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0xNyAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFN0b3AgdXNpbmcgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBpbiBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKaW5kZXggODUyOWYxODg1YzFmNDQ1ZjQ3ODBlN2ZmNzllN2E0Y2MxMWFl
YzNjZC4uMzg0MDM1ZWMwY2ZlNDlmOWMxMmZiMDdhMTAyYzNhN2NmODM1N2E4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0wMS0xOCAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZlcnQgcjIzODgx
NSwgaXQgYnJva2UgV0sxIHZpZGVvIGZ1bGxzY3JlZW4gb24gTWFjCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM1ODYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ3MzU4OTQxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmg6IEFkZGVk
LgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbTogQWRk
ZWQuCisgICAgICAgIChTT0ZUX0xJTktfQ0xBU1MpOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyIGluaXRdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXIgZnVsbHNjcmVlbldpbmRvd10pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyIHdpbmRvd0RpZExvYWRdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciB2aWRlb0VsZW1lbnRdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciBzZXRWaWRlb0VsZW1lbnQ6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXIgY2xlYXJGYWRlQW5pbWF0aW9uXSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXIgd2luZG93RGlkRXhpdEZ1bGxzY3JlZW5dKToKKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB3aW5kb3dEaWRFbnRlckZ1bGxzY3JlZW5dKToK
KyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB2aWRlb0VsZW1lbnRSZWN0
XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgYXBwbGljYXRpb25E
aWRSZXNpZ25BY3RpdmU6XSk6CisgICAgICAgIChmcmFtZUV4cGFuZGVkVG9SYXRpb09mRnJhbWUp
OgorICAgICAgICAoY3JlYXRlQmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cpOgorICAgICAgICAo
LVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHNldHVwRmFkZUFuaW1hdGlvbklmTmVlZGVk
QW5kRmFkZUluOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGVu
dGVyRnVsbHNjcmVlbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ciBleGl0RnVsbHNjcmVlbl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyIGFwcGxpY2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyczpdKToKKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB1cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxzY3Jl
ZW5dKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBfcmVxdWVzdEV4
aXRdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciByZXF1ZXN0RXhp
dEZ1bGxzY3JlZW5XaXRoQW5pbWF0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyIHJlcXVlc3RFeGl0RnVsbHNjcmVlbl0pOgorICAgICAgICAoLVtXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyIGZhZGVIVURJbl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdl
OmNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgcmF0
ZUNoYW5nZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbldpbmRvdyBpbml0V2l0
aENvbnRlbnRSZWN0OnN0eWxlTWFzazpiYWNraW5nOmRlZmVyOl0pOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5XaW5kb3cgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxz
Y3JlZW5XaW5kb3cgcmVzaWduRmlyc3RSZXNwb25kZXJdKToKKyAgICAgICAgKC1bV2ViVmlkZW9G
dWxsc2NyZWVuV2luZG93IGNhbkJlY29tZUtleVdpbmRvd10pOgorICAgICAgICAoLVtXZWJWaWRl
b0Z1bGxzY3JlZW5XaW5kb3cgbW91c2VEb3duOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxz
Y3JlZW5XaW5kb3cgY2FuY2VsT3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxz
Y3JlZW5XaW5kb3cgYW5pbWF0ZWRSZXNpemVEaWRFbmRdKToKKyAgICAgICAgKC1bV2ViVmlkZW9G
dWxsc2NyZWVuV2luZG93IGFuaW1hdGVGcm9tUmVjdDp0b1JlY3Q6d2l0aFN1YkFuaW1hdGlvbjpj
b250cm9sbGVyQWN0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cg
YW5pbWF0aW9uRGlkRW5kOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cg
bW91c2VNb3ZlZDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdp
bmRvd0NvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93IGluaXRXaXRoQ29udGVudFJlY3Q6c3R5bGVNYXNrOmJhY2tpbmc6
ZGVmZXI6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvdyBjYW5CZWNv
bWVLZXlXaW5kb3ddKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93IGNh
bmNlbE9wZXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93
IGNlbnRlcl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3cga2V5RG93
bjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93IHJlc2lnbkZpcnN0
UmVzcG9uZGVyXSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvdyBwZXJm
b3JtS2V5RXF1aXZhbGVudDpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2lu
ZG93Q29udHJvbGxlciBpbml0XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdp
bmRvd0NvbnRyb2xsZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5I
VURXaW5kb3dDb250cm9sbGVyIHNldEFyZWE6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIga2V5RG93bjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBkZWxlZ2F0ZV0pOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHNldERlbGVnYXRlOl0pOgorICAgICAg
ICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHNjaGVkdWxlVGltZVVw
ZGF0ZV0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVy
IHVuc2NoZWR1bGVUaW1lVXBkYXRlXSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhV
RFdpbmRvd0NvbnRyb2xsZXIgZmFkZVdpbmRvd0luXSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgZmFkZVdpbmRvd091dF0pOgorICAgICAgICAoLVtX
ZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIGNsb3NlV2luZG93XSk6CisgICAg
ICAgIChjcmVhdGVNZWRpYVVJQ29udHJvbCk6CisgICAgICAgIChjcmVhdGVDb250cm9sV2l0aE1l
ZGlhVUlDb250cm9sVHlwZSk6CisgICAgICAgIChjcmVhdGVUaW1lVGV4dEZpZWxkKToKKyAgICAg
ICAgKGNyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldyk6CisgICAgICAgICgtW1dlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgd2luZG93RGlkTG9hZF0pOgorICAgICAgICAoLVtX
ZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHVwZGF0ZVZvbHVtZV0pOgorICAg
ICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHVwZGF0ZVRpbWVd
KToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBlbmRT
Y3J1YmJpbmddKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJv
bGxlciB0aW1lbGluZVBvc2l0aW9uQ2hhbmdlZDpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxs
c2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBjdXJyZW50VGltZV0pOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHNldEN1cnJlbnRUaW1lOl0pOgorICAg
ICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIGR1cmF0aW9uXSk6
CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgbWF4Vm9s
dW1lXSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIg
dm9sdW1lQ2hhbmdlZDpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93
Q29udHJvbGxlciBzZXRWb2x1bWVUb1plcm86XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgc2V0Vm9sdW1lVG9NYXhpbXVtOl0pOgorICAgICAgICAo
LVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIGRlY3JlbWVudFZvbHVtZV0p
OgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIGluY3Jl
bWVudFZvbHVtZV0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250
cm9sbGVyIHZvbHVtZV0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dD
b250cm9sbGVyIHNldFZvbHVtZTpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVE
V2luZG93Q29udHJvbGxlciB1cGRhdGVQbGF5QnV0dG9uXSk6CisgICAgICAgICgtW1dlYlZpZGVv
RnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgdXBkYXRlUmF0ZV0pOgorICAgICAgICAoLVtX
ZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHRvZ2dsZVBsYXlpbmc6XSk6Cisg
ICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgcGxheWluZ10p
OgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHNldFBs
YXlpbmc6XSk6CisgICAgICAgICh0aW1lVG9TdHJpbmcpOgorICAgICAgICAoLVtXZWJWaWRlb0Z1
bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHJlbWFpbmluZ1RpbWVUZXh0XSk6CisgICAgICAg
ICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgZWxhcHNlZFRpbWVUZXh0
XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgbW91
c2VFbnRlcmVkOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250
cm9sbGVyIG1vdXNlRXhpdGVkOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURX
aW5kb3dDb250cm9sbGVyIHJld2luZDpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVu
SFVEV2luZG93Q29udHJvbGxlciBmYXN0Rm9yd2FyZDpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBleGl0RnVsbHNjcmVlbjpdKToKKyAgICAgICAg
KC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciB3aW5kb3dEaWRFeHBvc2U6
XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgd2lu
ZG93RGlkQ2xvc2U6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXZWJWaWV3IF9lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudDptb2RlOl0pOgor
ICAgICAgICAoLVtXZWJWaWV3IF9leGl0VmlkZW9GdWxsc2NyZWVuXSk6CisKIDIwMTktMDEtMTcg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgU0RLX1ZBUklBTlQg
YnVpbGQgZGVzdGluYXRpb25zIHNob3VsZCBiZSBzZXBhcmF0ZSBmcm9tIG5vbi1TREtfVkFSSUFO
VCBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggOGRkOTk5ZTIwODFmOTdiMzM0
MjM2ZjNmMzBkMDg1YmI1ZDA1ZDQ4NC4uODY2ZWE2YTU0YjlhNDJmODc4ZDRlMTliNjUwYTJjM2Mz
YmEyMDlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTM4MSw2ICszODEsOCBAQCBs
aXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tYWMvV2ViQ29yZU9iakNF
eHRyYXMubW0KICAgICBwbGF0Zm9ybS9tYWMvV2ViR0xCbGFja2xpc3QubW0KICAgICBwbGF0Zm9y
bS9tYWMvV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tCisgICAgcGxhdGZvcm0vbWFjL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0KKyAgICBwbGF0Zm9ybS9tYWMvV2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQogICAgIHBsYXRmb3JtL21hYy9XaWRnZXRN
YWMubW0KIAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmNwcAppbmRleCAzMTAzMDczN2JiZmFjY2RjYTY3ZjljNWQ5OGY0NTliOWE4
NmQwZGIzLi4yODk5MjMxNGVjOWM5MGVkZjhjNTMzM2FiMTA2Y2FkYzQ2ZjZhNDU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNw
cApAQCAtNDU4LDExICs0NTgsMTQgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b246OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQogICAgIHJldHVybiB0cnVlOwotI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNlbHNl
CisgICAgLy8gRklYTUU6IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgYXNzdW1lcyBhIFFU
S2l0L1F1aWNrVGltZSBtZWRpYSBlbmdpbmUKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGlmIChEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OmF2S2l0RW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4o
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjIwOTAwNDRmYzQ3OTk0YTViNmQ0MWM3
ZTVhYTdjM2Q3YWMwNWVkZi4uYjNjYTJmODE5NzNmZDQyNjY1ZmFjYmRlNjIxMTVmYTdhZWYxZDVk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYktpdExlZ2FjeS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NzUsNiArNzc1LDggQEAKIAkJQzBDNUIzRUYx
MTc3QTRBMDAwMkIwQUVGIC8qIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQzVCM0VEMTE3N0E0QTAwMDJC
MEFFRiAvKiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0gKi87IH07CiAJCUMxMUVCRjQxMjE0
MTlDQ0UwMEQ2NTlFNyAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzExRUJGM0YyMTQxOUNDRTAwRDY1OUU3
IC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHAgKi87IH07CiAJCUMxMUVCRjQyMjE0MTlDQ0Uw
MEQ2NTlFNyAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMUVCRjQwMjE0MTlDQ0UwMEQ2NTlFNyAvKiBXZWJT
d2l0Y2hpbmdHUFVDbGllbnQuaCAqLzsgfTsKKwkJQzFEODExMjgyMDJDRDgwMDAwRUU3NEY5IC8q
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUQ4MTEyNzIwMkNEODAwMDBFRTc0RjkgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSAqLzsgfTsKKwkJQzFEODExMkIyMDJDRENDNDAwRUU3
NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUQ4MTEyOTIwMkNEQ0MyMDBF
RTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSAqLzsgfTsK
IAkJQzFEODExMkUyMDJDRUQwODAwRUU3NEY5IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxRDgxMTJEMjAyQ0VE
MDcwMEVFNzRGOSAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi87IH07CiAJCUNEOEJGQ0U3MTU1
MzEyMjQwMDVBRkIyNSAvKiBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhCRkNFNTE1NTMxMjI0MDA1QUZC
MjUgLyogV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyLm1tICovOyB9OwogCQlDRDhCRkNFODE1NTMx
MjI0MDA1QUZCMjUgLyogV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhCRkNFNjE1NTMxMjI0MDA1QUZCMjUg
LyogV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyLmggKi87IH07CkBAIC0xNTMwLDYgKzE1MzIsMTAg
QEAKIAkJQzBDNUIzRUQxMTc3QTRBMDAwMkIwQUVGIC8qIFdlYlVzZXJDb250ZW50VVJMUGF0dGVy
bi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlVzZXJDb250
ZW50VVJMUGF0dGVybi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzExRUJGM0Yy
MTQxOUNDRTAwRDY1OUU3IC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMTFFQkY0MDIxNDE5Q0NFMDBENjU5RTcgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlN3aXRjaGluZ0dQVUNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMUQ4MTEyNjIwMkNEN0ZFMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMxRDgxMTI3MjAyQ0Q4MDAwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzFEODEx
MjkyMDJDRENDMjAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xs
ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWRlb0Z1
bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMUQ4MTEyQTIwMkNEQ0MzMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2lu
ZG93Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWRl
b0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMxRDgxMTJDMjAyQ0VEMDYwMEVFNzRGOSAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViV2luZG93QW5pbWF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRDgxMTJEMjAyQ0VEMDcwMEVFNzRGOSAvKiBX
ZWJXaW5kb3dBbmltYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJXaW5kb3dBbmltYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEOEJGQ0U1MTU1MzEyMjQwMDVBRkIyNSAvKiBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJLaXRGdWxsU2NyZWVu
TGlzdGVuZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDc5LDYgKzIwODUs
MTAgQEAKIAkJCQlGODM0QUFENjBFNjRCMUM3MDBFMjczN0MgLyogV2ViVGV4dEl0ZXJhdG9yLm1t
ICovLAogCQkJCTUxNUUyN0NDMDQ1OEM4NjUwMENBMkQzQSAvKiBXZWJVSURlbGVnYXRlLmggKi8s
CiAJCQkJNjVBN0Q0NEEwNTY4QUIyNjAwRTcwRUY2IC8qIFdlYlVJRGVsZWdhdGVQcml2YXRlLmgg
Ki8sCisJCQkJQzFEODExMjYyMDJDRDdGRTAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIuaCAqLywKKwkJCQlDMUQ4MTEyNzIwMkNEODAwMDBFRTc0RjkgLyogV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlci5tbSAqLywKKwkJCQlDMUQ4MTEyQTIwMkNEQ0MzMDBFRTc0Rjkg
LyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oICovLAorCQkJCUMxRDgx
MTI5MjAyQ0RDQzIwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9s
bGVyLm1tICovLAogCQkJCTUxQThCNTc5MDQyODM0RjcwMENBMkQzQSAvKiBXZWJWaWV3LmggKi8s
CiAJCQkJNTFBOEI1N0EwNDI4MzRGNzAwQ0EyRDNBIC8qIFdlYlZpZXcubW0gKi8sCiAJCQkJQkMy
RTQ2NEIwRkQ4QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdEYXRhLmggKi8sCkBAIC0zMjM0LDYgKzMy
NDQsNyBAQAogCQkJCVNwYW5pc2gsCiAJCQkJRHV0Y2gsCiAJCQkJSXRhbGlhbiwKKwkJCQllbiwK
IAkJCSk7CiAJCQltYWluR3JvdXAgPSAwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0
ICovOwogCQkJcHJvZHVjdFJlZkdyb3VwID0gMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFBy
b2R1Y3RzICovOwpAQCAtMzY4Myw2ICszNjk0LDggQEAKIAkJCQk5Mzk4MTBCRTA4MjRCRjAxMDA4
REYwMzggLyogV2ViVVJMc1dpdGhUaXRsZXMubSBpbiBTb3VyY2VzICovLAogCQkJCUMwQzVCM0VG
MTE3N0E0QTAwMDJCMEFFRiAvKiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0gaW4gU291cmNl
cyAqLywKIAkJCQk0NjE4REZGOTFERUY3NjBBMDAzM0MzQUEgLyogV2ViVmFsaWRhdGlvbk1lc3Nh
Z2VDbGllbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQlDMUQ4MTEyODIwMkNEODAwMDBFRTc0Rjkg
LyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUMx
RDgxMTJCMjAyQ0RDQzQwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250
cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODExMDcwODI0QkYwMTAwOERGMDM4IC8q
IFdlYlZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzJFNDY0RTBGRDhBOTY4MDBBOUQ5REUg
LyogV2ViVmlld0RhdGEubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNDMwQzEyQzFCMkM1REY3MDBE
RUEwMUQgLyogV2ViVmlld0dyb3VwLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTc1NzhiZmMwMDI2NGU0ZjQxYjVlZTlmNjg4YTI2YzI4
YWQ0NGEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPKQorCisjaW1wb3J0
IDxBcHBLaXQvTlNXaW5kb3dDb250cm9sbGVyLmg+CisjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7Cit9CisKK0BjbGFz
cyBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyOworQGNsYXNzIFdlYldpbmRv
d0ZhZGVBbmltYXRpb247CisKK0BpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ciA6IE5TV2luZG93Q29udHJvbGxlciB7CisgICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxWaWRlb0Vs
ZW1lbnQ+IF92aWRlb0VsZW1lbnQ7CisKKyAgICBOU1dpbmRvdyAqX2JhY2tncm91bmRGdWxsc2Ny
ZWVuV2luZG93OyAvLyAocmV0YWluKQorICAgIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0Nv
bnRyb2xsZXIgKl9odWRDb250cm9sbGVyOyAvLyAocmV0YWluKQorCisgICAgV2ViV2luZG93RmFk
ZUFuaW1hdGlvbiAqX2ZhZGVBbmltYXRpb247IC8vIChyZXRhaW4pCisKKyAgICBCT09MIF9pc0Vu
ZGluZ0Z1bGxzY3JlZW47CisgICAgQk9PTCBfZm9yY2VEaXNhYmxlQW5pbWF0aW9uOworfQorCist
ICh2b2lkKXNldFZpZGVvRWxlbWVudDooV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCAqKXZpZGVv
RWxlbWVudDsKKy0gKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQgKil2aWRlb0VsZW1lbnQ7CisK
Ky0gKHZvaWQpZW50ZXJGdWxsc2NyZWVuOihOU1NjcmVlbiAqKXNjcmVlbjsKKy0gKHZvaWQpZXhp
dEZ1bGxzY3JlZW47CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTg1ZTY4OGZlNTVlYjExMWQ0ZjcwNzNhOWZmMDVjNGUwY2Y5ZmM5YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbQpAQCAtMCwwICsxLDUxNCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBQTEFURk9S
TShNQUMpCisjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmgiCisKKyNpbXBv
cnQgIldlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldl
YldpbmRvd0FuaW1hdGlvbi5oIgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyLmg+Cisj
aW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJMYXllci5oPgorI2ltcG9ydCA8Q2FyYm9uL0Nh
cmJvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+CisjaW1wb3J0IDxv
YmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHBhbC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5oPgorI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK0FM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisKK1NPRlRfTElOS19GUkFNRVdPUkso
QVZGb3VuZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJMYXll
cikKKworQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgOiBOU1dpbmRvdzxOU0Fu
aW1hdGlvbkRlbGVnYXRlPiB7CisgICAgU0VMIF9jb250cm9sbGVyQWN0aW9uT25BbmltYXRpb25F
bmQ7CisgICAgV2ViV2luZG93U2NhbGVBbmltYXRpb24gKl9mdWxsc2NyZWVuQW5pbWF0aW9uOyAv
LyAocmV0YWluKQorfQorLSAodm9pZClhbmltYXRlRnJvbVJlY3Q6KE5TUmVjdClzdGFydFJlY3Qg
dG9SZWN0OihOU1JlY3QpZW5kUmVjdCB3aXRoU3ViQW5pbWF0aW9uOihOU0FuaW1hdGlvbiAqKXN1
YkFuaW1hdGlvbiBjb250cm9sbGVyQWN0aW9uOihTRUwpY29udHJvbGxlckFjdGlvbjsKK0BlbmQK
KworQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyICgpIDxXZWJWaWRlb0Z1
bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRh
dGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyCisKKy0gKGlkKWluaXQKK3sKKyAgICAv
LyBEbyBub3QgZGVmZXIgd2luZG93IGNyZWF0aW9uLCB0byBtYWtlIHN1cmUgLXdpbmRvd051bWJl
ciBpcyBjcmVhdGVkIChuZWVkZWQgYnkgV2ViV2luZG93U2NhbGVBbmltYXRpb24pLgorICAgIE5T
V2luZG93ICp3aW5kb3cgPSBbW1dlYlZpZGVvRnVsbHNjcmVlbldpbmRvdyBhbGxvY10gaW5pdFdp
dGhDb250ZW50UmVjdDpOU1plcm9SZWN0IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNr
IGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT107CisgICAgc2VsZiA9IFtz
dXBlciBpbml0V2l0aFdpbmRvdzp3aW5kb3ddOworICAgIFt3aW5kb3cgcmVsZWFzZV07CisgICAg
aWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIFtzZWxmIHdpbmRvd0RpZExvYWRd
OworICAgIHJldHVybiBzZWxmOworICAgIAorfQorLSAodm9pZClkZWFsbG9jCit7CisgICAgQVNT
RVJUKCFfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cpOworICAgIEFTU0VSVCghX2ZhZGVBbmlt
YXRpb24pOworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3Zl
T2JzZXJ2ZXI6c2VsZl07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChXZWJWaWRlb0Z1
bGxzY3JlZW5XaW5kb3cgKilmdWxsc2NyZWVuV2luZG93Cit7CisgICAgcmV0dXJuIChXZWJWaWRl
b0Z1bGxzY3JlZW5XaW5kb3cgKilbc3VwZXIgd2luZG93XTsKK30KKworLSAodm9pZCl3aW5kb3dE
aWRMb2FkCit7CisgICAgYXV0byB3aW5kb3cgPSBbc2VsZiBmdWxsc2NyZWVuV2luZG93XTsKKyAg
ICBhdXRvIGNvbnRlbnRWaWV3ID0gW3dpbmRvdyBjb250ZW50Vmlld107CisKKyAgICBbd2luZG93
IHNldEhhc1NoYWRvdzpZRVNdOyAvLyBUaGlzIGlzIG5pY2VyIHdpdGggYSBzaGFkb3cuCisgICAg
W3dpbmRvdyBzZXRMZXZlbDpOU1BvcFVwTWVudVdpbmRvd0xldmVsLTFdOworCisgICAgW2NvbnRl
bnRWaWV3IHNldExheWVyOltDQUxheWVyIGxheWVyXV07CisgICAgW2NvbnRlbnRWaWV3IHNldFdh
bnRzTGF5ZXI6WUVTXTsKKworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRl
cl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRSZXNp
Z25BY3RpdmU6KSBuYW1lOk5TQXBwbGljYXRpb25EaWRSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24g
b2JqZWN0Ok5TQXBwXTsKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJd
IGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkQ2hhbmdl
U2NyZWVuUGFyYW1ldGVyczopIG5hbWU6TlNBcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFt
ZXRlcnNOb3RpZmljYXRpb24gb2JqZWN0Ok5TQXBwXTsKK30KKworLSAoV2ViQ29yZTo6SFRNTFZp
ZGVvRWxlbWVudCAqKXZpZGVvRWxlbWVudAoreworICAgIHJldHVybiBfdmlkZW9FbGVtZW50Lmdl
dCgpOworfQorCisvLyBGSVhNRTogVGhpcyBtZXRob2QgaXMgbm90IHJlYWxseSBhIHNldHRlci4g
VGhlIGNhbGxlciByZWxpZXMgb24gaXRzIHNpZGUgZWZmZWN0cywgYW5kIGl0J3MKKy8vIGNhbGxl
ZCBvbmNlIGVhY2ggdGltZSB3ZSBlbnRlciBmdWxsIHNjcmVlbi4gU28gaXQgc2hvdWxkIGhhdmUg
YSBkaWZmZXJlbnQgbmFtZS4KKy0gKHZvaWQpc2V0VmlkZW9FbGVtZW50OihXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50ICopdmlkZW9FbGVtZW50Cit7CisgICAgQVNTRVJUKHZpZGVvRWxlbWVudCk7
CisgICAgX3ZpZGVvRWxlbWVudCA9IHZpZGVvRWxlbWVudDsKKworICAgIGlmICghW3NlbGYgaXNX
aW5kb3dMb2FkZWRdKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBjb3JlUGxheWVyID0gdmlk
ZW9FbGVtZW50LT5wbGF5ZXIoKTsKKyAgICBpZiAoIWNvcmVQbGF5ZXIpCisgICAgICAgIHJldHVy
bjsKKyAgICBhdXRvIHBsYXllciA9IGNvcmVQbGF5ZXItPm9iakNBVkZvdW5kYXRpb25BVlBsYXll
cigpOworICAgIGlmICghcGxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNvbnRl
bnRWaWV3ID0gW1tzZWxmIGZ1bGxzY3JlZW5XaW5kb3ddIGNvbnRlbnRWaWV3XTsKKworICAgIGF1
dG8gbGF5ZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyTGF5ZXJJbnN0YW5jZSgpIGluaXRdKTsK
KyAgICBbbGF5ZXIgc2V0UGxheWVyOnBsYXllcl07CisKKyAgICBbY29udGVudFZpZXcgc2V0TGF5
ZXI6bGF5ZXIuZ2V0KCldOworCisgICAgLy8gRklYTUU6IFRoZSB3aW5kb3dEaWRMb2FkIG1ldGhv
ZCBhbHJlYWR5IGNhbGxlZCB0aGlzLCBzbyBpdCBzaG91bGQKKyAgICAvLyBub3QgYmUgbmVjZXNz
YXJ5IHRvIGRvIGl0IGFnYWluIGhlcmUuCisgICAgW2NvbnRlbnRWaWV3IHNldFdhbnRzTGF5ZXI6
WUVTXTsKKworICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMs
IGFuZCB3b24ndCBuZWNlc3NhcmlseSBiZQorICAgIC8vIGJhbGFuY2VkIGJ5IGNhbGxzIHRvIHdp
bmRvd0RpZEV4aXRGdWxsc2NyZWVuIGluIHNvbWUgY2FzZXMsIHNvIGl0CisgICAgLy8gd291bGQg
YmUgYmV0dGVyIHRvIGNoYW5nZSB0aGluZ3Mgc28gdGhlIG9ic2VydmVyIGlzIHJlbGlhYmx5IGFk
ZGVkCisgICAgLy8gb25seSBvbmNlIGFuZCBndWFyYW50ZWVkIHJlbW92ZWQgZXZlbiBpbiB1bnVz
dWFsIGVkZ2UgY2FzZXMuCisgICAgW3BsYXllciBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6
QCJyYXRlIiBvcHRpb25zOjAgY29udGV4dDpudWxscHRyXTsKK30KKworLSAoQ0dGbG9hdCljbGVh
ckZhZGVBbmltYXRpb24KK3sKKyAgICBbX2ZhZGVBbmltYXRpb24gc3RvcEFuaW1hdGlvbl07Cisg
ICAgQ0dGbG9hdCBwcmV2aW91c0FscGhhID0gW19mYWRlQW5pbWF0aW9uIGN1cnJlbnRBbHBoYV07
CisgICAgW19mYWRlQW5pbWF0aW9uIHNldFdpbmRvdzpuaWxdOworICAgIFtfZmFkZUFuaW1hdGlv
biByZWxlYXNlXTsKKyAgICBfZmFkZUFuaW1hdGlvbiA9IG5pbDsKKyAgICByZXR1cm4gcHJldmlv
dXNBbHBoYTsKK30KKworLSAodm9pZCl3aW5kb3dEaWRFeGl0RnVsbHNjcmVlbgoreworICAgIENB
TGF5ZXIgKmxheWVyID0gW1tbc2VsZiB3aW5kb3ddIGNvbnRlbnRWaWV3XSBsYXllcl07CisgICAg
aWYgKFtsYXllciBpc0tpbmRPZkNsYXNzOmdldEFWUGxheWVyTGF5ZXJDbGFzcygpXSkKKyAgICAg
ICAgW1soQVZQbGF5ZXJMYXllciAqKWxheWVyIHBsYXllcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBm
b3JLZXlQYXRoOkAicmF0ZSJdOworCisgICAgW3NlbGYgY2xlYXJGYWRlQW5pbWF0aW9uXTsKKyAg
ICBbW3NlbGYgd2luZG93XSBjbG9zZV07CisgICAgW3NlbGYgc2V0V2luZG93Om5pbF07CisgICAg
W3NlbGYgdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsc2NyZWVuXTsgICAKKyAgICBbX2h1ZENvbnRy
b2xsZXIgc2V0RGVsZWdhdGU6bmlsXTsKKyAgICBbX2h1ZENvbnRyb2xsZXIgcmVsZWFzZV07Cisg
ICAgX2h1ZENvbnRyb2xsZXIgPSBuaWw7CisgICAgW19iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRv
dyBjbG9zZV07CisgICAgW19iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyByZWxlYXNlXTsKKyAg
ICBfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cgPSBuaWw7CisgICAgCisgICAgW3NlbGYgYXV0
b3JlbGVhc2VdOyAvLyBBc3NvY2lhdGVkIC1yZXRhaW4gaXMgaW4gLWV4aXRGdWxsc2NyZWVuLgor
ICAgIF9pc0VuZGluZ0Z1bGxzY3JlZW4gPSBOTzsKK30KKworLSAodm9pZCl3aW5kb3dEaWRFbnRl
ckZ1bGxzY3JlZW4KK3sKKyAgICBbc2VsZiBjbGVhckZhZGVBbmltYXRpb25dOworCisgICAgQVNT
RVJUKCFfaHVkQ29udHJvbGxlcik7CisgICAgX2h1ZENvbnRyb2xsZXIgPSBbW1dlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdOworICAgIFtfaHVkQ29udHJv
bGxlciBzZXREZWxlZ2F0ZTpzZWxmXTsKKworICAgIFtzZWxmIHVwZGF0ZU1lbnVBbmREb2NrRm9y
RnVsbHNjcmVlbl07CisgICAgW05TQ3Vyc29yIHNldEhpZGRlblVudGlsTW91c2VNb3ZlczpZRVNd
OworICAgIAorICAgIC8vIEdpdmUgdGhlIEhVRCBrZXlib2FyZCBmb2N1cyBpbml0aWFsbHkKKyAg
ICBbX2h1ZENvbnRyb2xsZXIgZmFkZVdpbmRvd0luXTsKK30KKworLSAoTlNSZWN0KXZpZGVvRWxl
bWVudFJlY3QKK3sKKyAgICByZXR1cm4gX3ZpZGVvRWxlbWVudC0+c2NyZWVuUmVjdCgpOworfQor
CistICh2b2lkKWFwcGxpY2F0aW9uRGlkUmVzaWduQWN0aXZlOihOU05vdGlmaWNhdGlvbiopbm90
aWZpY2F0aW9uCit7ICAgCisgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CisgICAgTlNX
aW5kb3cqIGZ1bGxzY3JlZW5XaW5kb3cgPSBbc2VsZiBmdWxsc2NyZWVuV2luZG93XTsKKworICAg
IC8vIFJlcGxpY2F0ZSB0aGUgUXVpY2tUaW1lIFBsYXllciAoWCkgYmVoYXZpb3Igd2hlbiBsb3Np
bmcgYWN0aXZlIGFwcGxpY2F0aW9uIHN0YXR1czoKKyAgICAvLyBJcyB0aGUgZnVsbHNjcmVlbiBz
Y3JlZW4gdGhlIG1haW4gc2NyZWVuPyAoTm90ZTogdGhpcyBjb3ZlcnMgdGhlIGNhc2Ugd2hlcmUg
b25seSBhIAorICAgIC8vIHNpbmdsZSBzY3JlZW4gaXMgYXZhaWxhYmxlLikgIElzIHRoZSBmdWxs
c2NyZWVuIHNjcmVlbiBvbiB0aGUgY3VycmVudCBzcGFjZT8gSUZGIHNvLCAKKyAgICAvLyB0aGVu
IGV4aXQgZnVsbHNjcmVlbiBtb2RlLiAgICAKKyAgICBpZiAoZnVsbHNjcmVlbldpbmRvdy5zY3Jl
ZW4gPT0gW05TU2NyZWVuIHNjcmVlbnNdWzBdICYmIGZ1bGxzY3JlZW5XaW5kb3cub25BY3RpdmVT
cGFjZSkKKyAgICAgICAgW3NlbGYgcmVxdWVzdEV4aXRGdWxsc2NyZWVuV2l0aEFuaW1hdGlvbjpO
T107Cit9CisKKworLy8gTUFSSzogLQorLy8gTUFSSzogRXhwb3NlZCBJbnRlcmZhY2UKKworc3Rh
dGljIE5TUmVjdCBmcmFtZUV4cGFuZGVkVG9SYXRpb09mRnJhbWUoTlNSZWN0IGZyYW1lVG9FeHBh
bmQsIE5TUmVjdCBmcmFtZSkKK3sKKyAgICAvLyBLZWVwIGEgY29uc3RyYWluZWQgYXNwZWN0IHJh
dGlvIGZvciB0aGUgZGVzdGluYXRpb24gd2luZG93CisgICAgTlNSZWN0IHJlc3VsdCA9IGZyYW1l
VG9FeHBhbmQ7CisgICAgQ0dGbG9hdCBuZXdSYXRpbyA9IGZyYW1lLnNpemUud2lkdGggLyBmcmFt
ZS5zaXplLmhlaWdodDsKKyAgICBDR0Zsb2F0IG9yaWdpbmFsUmF0aW8gPSBmcmFtZVRvRXhwYW5k
LnNpemUud2lkdGggLyBmcmFtZVRvRXhwYW5kLnNpemUuaGVpZ2h0OworICAgIGlmIChuZXdSYXRp
byA+IG9yaWdpbmFsUmF0aW8pIHsKKyAgICAgICAgQ0dGbG9hdCBuZXdXaWR0aCA9IG5ld1JhdGlv
ICogZnJhbWVUb0V4cGFuZC5zaXplLmhlaWdodDsKKyAgICAgICAgQ0dGbG9hdCBkaWZmID0gbmV3
V2lkdGggLSBmcmFtZVRvRXhwYW5kLnNpemUud2lkdGg7CisgICAgICAgIHJlc3VsdC5zaXplLndp
ZHRoID0gbmV3V2lkdGg7CisgICAgICAgIHJlc3VsdC5vcmlnaW4ueCAtPSBkaWZmIC8gMjsKKyAg
ICB9IGVsc2UgeworICAgICAgICBDR0Zsb2F0IG5ld0hlaWdodCA9IGZyYW1lVG9FeHBhbmQuc2l6
ZS53aWR0aCAvIG5ld1JhdGlvOworICAgICAgICBDR0Zsb2F0IGRpZmYgPSBuZXdIZWlnaHQgLSBm
cmFtZVRvRXhwYW5kLnNpemUuaGVpZ2h0OworICAgICAgICByZXN1bHQuc2l6ZS5oZWlnaHQgPSBu
ZXdIZWlnaHQ7CisgICAgICAgIHJlc3VsdC5vcmlnaW4ueSAtPSBkaWZmIC8gMjsKKyAgICB9Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIE5TV2luZG93ICpjcmVhdGVCYWNrZ3JvdW5k
RnVsbHNjcmVlbldpbmRvdyhOU1JlY3QgZnJhbWUsIGludCBsZXZlbCkKK3sKKyAgICBOU1dpbmRv
dyAqd2luZG93ID0gW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpmcmFtZSBz
dHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVm
ZmVyZWQgZGVmZXI6Tk9dOworICAgIFt3aW5kb3cgc2V0T3BhcXVlOllFU107CisgICAgW3dpbmRv
dyBzZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3IgYmxhY2tDb2xvcl1dOworICAgIFt3aW5kb3cg
c2V0TGV2ZWw6bGV2ZWxdOworICAgIFt3aW5kb3cgc2V0UmVsZWFzZWRXaGVuQ2xvc2VkOk5PXTsK
KyAgICByZXR1cm4gd2luZG93OworfQorCistICh2b2lkKXNldHVwRmFkZUFuaW1hdGlvbklmTmVl
ZGVkQW5kRmFkZUluOihCT09MKWZhZGVJbgoreworICAgIENHRmxvYXQgaW5pdGlhbEFscGhhID0g
ZmFkZUluID8gMCA6IDE7CisgICAgaWYgKF9mYWRlQW5pbWF0aW9uKSB7CisgICAgICAgIC8vIE1h
a2Ugc3VyZSB3ZSBzdXBwb3J0IHF1ZXVpbmcgYW5pbWF0aW9uIGlmIHRoZSBwcmV2aW91cyBvbmUg
aXNuJ3Qgb3ZlciB5ZXQKKyAgICAgICAgaW5pdGlhbEFscGhhID0gW3NlbGYgY2xlYXJGYWRlQW5p
bWF0aW9uXTsKKyAgICB9CisgICAgaWYgKCFfZm9yY2VEaXNhYmxlQW5pbWF0aW9uKQorICAgICAg
ICBfZmFkZUFuaW1hdGlvbiA9IFtbV2ViV2luZG93RmFkZUFuaW1hdGlvbiBhbGxvY10gaW5pdFdp
dGhEdXJhdGlvbjowLjIgd2luZG93Ol9iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyBpbml0aWFs
QWxwaGE6aW5pdGlhbEFscGhhIGZpbmFsQWxwaGE6ZmFkZUluID8gMSA6IDBdOworfQorCistICh2
b2lkKWVudGVyRnVsbHNjcmVlbjooTlNTY3JlZW4gKilzY3JlZW4KK3sKKyAgICBpZiAoIXNjcmVl
bikKKyAgICAgICAgc2NyZWVuID0gW05TU2NyZWVuIG1haW5TY3JlZW5dOworCisgICAgTlNSZWN0
IGVuZEZyYW1lID0gW3NjcmVlbiBmcmFtZV07CisgICAgTlNSZWN0IGZyYW1lID0gZnJhbWVFeHBh
bmRlZFRvUmF0aW9PZkZyYW1lKFtzZWxmIHZpZGVvRWxlbWVudFJlY3RdLCBlbmRGcmFtZSk7CisK
KyAgICAvLyBDcmVhdGUgYSBibGFjayB3aW5kb3cgaWYgbmVlZGVkCisgICAgaWYgKCFfYmFja2dy
b3VuZEZ1bGxzY3JlZW5XaW5kb3cpCisgICAgICAgIF9iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRv
dyA9IGNyZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93KFtzY3JlZW4gZnJhbWVdLCBbW3Nl
bGYgd2luZG93XSBsZXZlbF0tMSk7CisgICAgZWxzZQorICAgICAgICBbX2JhY2tncm91bmRGdWxs
c2NyZWVuV2luZG93IHNldEZyYW1lOltzY3JlZW4gZnJhbWVdIGRpc3BsYXk6Tk9dOworCisgICAg
W3NlbGYgc2V0dXBGYWRlQW5pbWF0aW9uSWZOZWVkZWRBbmRGYWRlSW46WUVTXTsKKyAgICBpZiAo
X2ZvcmNlRGlzYWJsZUFuaW1hdGlvbikgeworICAgICAgICAvLyBUaGlzIHdpbGwgZGlzYWJsZSBz
Y2FsZSBhbmltYXRpb24KKyAgICAgICAgZnJhbWUgPSBOU1plcm9SZWN0OworICAgIH0KKyAgICBb
W3NlbGYgZnVsbHNjcmVlbldpbmRvd10gYW5pbWF0ZUZyb21SZWN0OmZyYW1lIHRvUmVjdDplbmRG
cmFtZSB3aXRoU3ViQW5pbWF0aW9uOl9mYWRlQW5pbWF0aW9uIGNvbnRyb2xsZXJBY3Rpb246QHNl
bGVjdG9yKHdpbmRvd0RpZEVudGVyRnVsbHNjcmVlbildOworCisgICAgW19iYWNrZ3JvdW5kRnVs
bHNjcmVlbldpbmRvdyBvcmRlcldpbmRvdzpOU1dpbmRvd0JlbG93IHJlbGF0aXZlVG86W1tzZWxm
IGZ1bGxzY3JlZW5XaW5kb3ddIHdpbmRvd051bWJlcl1dOworfQorCistICh2b2lkKWV4aXRGdWxs
c2NyZWVuCit7CisgICAgaWYgKF9pc0VuZGluZ0Z1bGxzY3JlZW4pCisgICAgICAgIHJldHVybjsK
KyAgICBfaXNFbmRpbmdGdWxsc2NyZWVuID0gWUVTOworICAgIFtfaHVkQ29udHJvbGxlciBjbG9z
ZVdpbmRvd107CisKKyAgICBOU1JlY3QgZW5kRnJhbWUgPSBbc2VsZiB2aWRlb0VsZW1lbnRSZWN0
XTsKKworICAgIFtzZWxmIHNldHVwRmFkZUFuaW1hdGlvbklmTmVlZGVkQW5kRmFkZUluOk5PXTsK
KyAgICBpZiAoX2ZvcmNlRGlzYWJsZUFuaW1hdGlvbikgeworICAgICAgICAvLyBUaGlzIHdpbGwg
ZGlzYWJsZSBzY2FsZSBhbmltYXRpb24KKyAgICAgICAgZW5kRnJhbWUgPSBOU1plcm9SZWN0Owor
ICAgIH0KKyAgICAKKyAgICAvLyBXZSBoYXZlIHRvIHJldGFpbiBvdXJzZWx2ZXMgYmVjYXVzZSB3
ZSB3YW50IHRvIGJlIGFsaXZlIGZvciB0aGUgZW5kIG9mIHRoZSBhbmltYXRpb24uCisgICAgLy8g
SWYgb3VyIG93bmVyIHJlbGVhc2VzIHVzIHdlIGNvdWxkIGNyYXNoIGlmIHRoaXMgaXMgbm90IHRo
ZSBjYXNlLgorICAgIC8vIEJhbGFuY2VkIGluIHdpbmRvd0RpZEV4aXRGdWxsc2NyZWVuCisgICAg
W3NlbGYgcmV0YWluXTsgICAgCisKKyAgICBOU1JlY3Qgc3RhcnRGcmFtZSA9IFtbc2VsZiB3aW5k
b3ddIGZyYW1lXTsKKyAgICBlbmRGcmFtZSA9IGZyYW1lRXhwYW5kZWRUb1JhdGlvT2ZGcmFtZShl
bmRGcmFtZSwgc3RhcnRGcmFtZSk7CisKKyAgICBbW3NlbGYgZnVsbHNjcmVlbldpbmRvd10gYW5p
bWF0ZUZyb21SZWN0OnN0YXJ0RnJhbWUgdG9SZWN0OmVuZEZyYW1lIHdpdGhTdWJBbmltYXRpb246
X2ZhZGVBbmltYXRpb24gY29udHJvbGxlckFjdGlvbjpAc2VsZWN0b3Iod2luZG93RGlkRXhpdEZ1
bGxzY3JlZW4pXTsKK30KKworLSAodm9pZClhcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFt
ZXRlcnM6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KK3sKKyAgICBVTlVTRURfUEFSQU0o
bm90aWZpY2F0aW9uKTsKKyAgICAvLyBUaGUgdXNlciBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBtYWlu
IHNjcmVlbiBieSBtb3ZpbmcgdGhlIG1lbnUgYmFyLCBvciB0aGV5IG1heSBoYXZlIGNoYW5nZWQK
KyAgICAvLyB0aGUgRG9jaydzIHNpemUgb3IgbG9jYXRpb24sIG9yIHRoZXkgbWF5IGhhdmUgY2hh
bmdlZCB0aGUgZnVsbHNjcmVlbiBzY3JlZW4ncyBkaW1lbnNpb25zLiAgCisgICAgLy8gVXBkYXRl
IG91ciBwcmVzZW50YXRpb24gcGFyYW1ldGVycywgYW5kIGVuc3VyZSB0aGF0IHRoZSBmdWxsIHNj
cmVlbiB3aW5kb3cgb2NjdXBpZXMgdGhlIAorICAgIC8vIGVudGlyZSBzY3JlZW46CisgICAgW3Nl
bGYgdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsc2NyZWVuXTsKKyAgICBbW3NlbGYgd2luZG93XSBz
ZXRGcmFtZTpbW1tzZWxmIHdpbmRvd10gc2NyZWVuXSBmcmFtZV0gZGlzcGxheTpZRVNdOworfQor
CistICh2b2lkKXVwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbHNjcmVlbgoreworICAgIC8vIE5TQXBw
bGljYXRpb25QcmVzZW50YXRpb25PcHRpb25zIGlzIGF2YWlsYWJsZSBvbiA+IDEwLjYgb25seToK
KyAgICBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uT3B0aW9ucyBvcHRpb25zID0gTlNBcHBsaWNh
dGlvblByZXNlbnRhdGlvbkRlZmF1bHQ7CisgICAgTlNTY3JlZW4qIGZ1bGxzY3JlZW5TY3JlZW4g
PSBbW3NlbGYgd2luZG93XSBzY3JlZW5dOworCisgICAgaWYgKCFfaXNFbmRpbmdGdWxsc2NyZWVu
KSB7CisgICAgICAgIC8vIEF1dG8taGlkZSB0aGUgbWVudSBiYXIgaWYgdGhlIGZ1bGxzY3JlZW5T
Y3JlZW4gY29udGFpbnMgdGhlIG1lbnUgYmFyOgorICAgICAgICAvLyBOT1RFOiBpZiB0aGUgZnVs
bHNjcmVlblNjcmVlbiBjb250YWlucyB0aGUgbWVudSBiYXIgYnV0IG5vdCB0aGUgZG9jaywgd2Ug
bXVzdCBzdGlsbCAKKyAgICAgICAgLy8gYXV0by1oaWRlIHRoZSBkb2NrLCBvciBhbiBleGNlcHRp
b24gd2lsbCBiZSB0aHJvd24uCisgICAgICAgIGlmIChbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVj
dEF0SW5kZXg6MF0gPT0gZnVsbHNjcmVlblNjcmVlbikKKyAgICAgICAgICAgIG9wdGlvbnMgfD0g
KE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25BdXRvSGlkZU1lbnVCYXIgfCBOU0FwcGxpY2F0aW9u
UHJlc2VudGF0aW9uQXV0b0hpZGVEb2NrKTsKKyAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJl
bnQgc2NyZWVuIGNvbnRhaW5zIHRoZSBkb2NrIGJ5IGNvbXBhcmluZyB0aGUgc2NyZWVuJ3MgZnJh
bWUgdG8gaXRzCisgICAgICAgIC8vIHZpc2libGVGcmFtZTsgaWYgYSBkb2NrIGlzIHByZXNlbnQs
IHRoZSB2aXNpYmxlRnJhbWUgd2lsbCBkaWZmZXIuIElmIHRoZSBjdXJyZW50IHNjcmVlbgorICAg
ICAgICAvLyBjb250YWlucyB0aGUgZG9jaywgaGlkZSBpdC4KKyAgICAgICAgZWxzZSBpZiAoIU5T
RXF1YWxSZWN0cyhbZnVsbHNjcmVlblNjcmVlbiBmcmFtZV0sIFtmdWxsc2NyZWVuU2NyZWVuIHZp
c2libGVGcmFtZV0pKQorICAgICAgICAgICAgb3B0aW9ucyB8PSBOU0FwcGxpY2F0aW9uUHJlc2Vu
dGF0aW9uQXV0b0hpZGVEb2NrOworICAgIH0KKworICAgIE5TQXBwLnByZXNlbnRhdGlvbk9wdGlv
bnMgPSBvcHRpb25zOworfQorCisvLyBNQVJLOiAtCisvLyBNQVJLOiBXaW5kb3cgY2FsbGJhY2sK
KworLSAodm9pZClfcmVxdWVzdEV4aXQKK3sKKyAgICBpZiAoX3ZpZGVvRWxlbWVudCkKKyAgICAg
ICAgX3ZpZGVvRWxlbWVudC0+ZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICBfZm9yY2VEaXNhYmxlQW5p
bWF0aW9uID0gTk87Cit9CisKKy0gKHZvaWQpcmVxdWVzdEV4aXRGdWxsc2NyZWVuV2l0aEFuaW1h
dGlvbjooQk9PTClhbmltYXRpb24KK3sKKyAgICBpZiAoX2lzRW5kaW5nRnVsbHNjcmVlbikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgX2ZvcmNlRGlzYWJsZUFuaW1hdGlvbiA9ICFhbmltYXRpb247
CisgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihfcmVxdWVzdEV4aXQpIHdpdGhP
YmplY3Q6bmlsIGFmdGVyRGVsYXk6MF07CisKK30KKworLSAodm9pZClyZXF1ZXN0RXhpdEZ1bGxz
Y3JlZW4KK3sKKyAgICBbc2VsZiByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5XaXRoQW5pbWF0aW9uOllF
U107Cit9CisKKy0gKHZvaWQpZmFkZUhVREluCit7CisgICAgW19odWRDb250cm9sbGVyIGZhZGVX
aW5kb3dJbl07Cit9CisKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcg
KilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFu
Z2UgY29udGV4dDoodm9pZCAqKWNvbnRleHQKK3sKKyAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsK
KyAgICBVTlVTRURfUEFSQU0oY2hhbmdlKTsKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisK
KyAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvOkAicmF0ZSJdKQorICAgICAgICBbc2VsZiByYXRl
Q2hhbmdlZDpuaWxdOworfQorCistICh2b2lkKXJhdGVDaGFuZ2VkOihOU05vdGlmaWNhdGlvbiAq
KXVudXNlZE5vdGlmaWNhdGlvbgoreworICAgIFVOVVNFRF9QQVJBTSh1bnVzZWROb3RpZmljYXRp
b24pOworICAgIFtfaHVkQ29udHJvbGxlciB1cGRhdGVSYXRlXTsKK30KKworQGVuZAorCitAaW1w
bGVtZW50YXRpb24gV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93CisKKy0gKGlkKWluaXRXaXRoQ29u
dGVudFJlY3Q6KE5TUmVjdCljb250ZW50UmVjdCBzdHlsZU1hc2s6KE5TVUludGVnZXIpYVN0eWxl
IGJhY2tpbmc6KE5TQmFja2luZ1N0b3JlVHlwZSlidWZmZXJpbmdUeXBlIGRlZmVyOihCT09MKWZs
YWcKK3sKKyAgICBVTlVTRURfUEFSQU0oYVN0eWxlKTsKKyAgICBzZWxmID0gW3N1cGVyIGluaXRX
aXRoQ29udGVudFJlY3Q6Y29udGVudFJlY3Qgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01h
c2sgYmFja2luZzpidWZmZXJpbmdUeXBlIGRlZmVyOmZsYWddOworICAgIGlmICghc2VsZikKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICBbc2VsZiBzZXRPcGFxdWU6Tk9dOworICAgIFtzZWxmIHNl
dEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBjbGVhckNvbG9yXV07CisgICAgW3NlbGYgc2V0SWdu
b3Jlc01vdXNlRXZlbnRzOk5PXTsKKyAgICBbc2VsZiBzZXRBY2NlcHRzTW91c2VNb3ZlZEV2ZW50
czpZRVNdOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBB
U1NFUlQoIV9mdWxsc2NyZWVuQW5pbWF0aW9uKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisK
Ky0gKEJPT0wpcmVzaWduRmlyc3RSZXNwb25kZXIKK3sKKyAgICByZXR1cm4gTk87Cit9CisKKy0g
KEJPT0wpY2FuQmVjb21lS2V5V2luZG93Cit7CisgICAgcmV0dXJuIE5POworfQorCistICh2b2lk
KW1vdXNlRG93bjooTlNFdmVudCAqKWV2ZW50Cit7CisgICAgVU5VU0VEX1BBUkFNKGV2ZW50KTsK
K30KKworLSAodm9pZCljYW5jZWxPcGVyYXRpb246KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9Q
QVJBTShzZW5kZXIpOworICAgIFtbc2VsZiB3aW5kb3dDb250cm9sbGVyXSByZXF1ZXN0RXhpdEZ1
bGxzY3JlZW5dOworfQorCistICh2b2lkKWFuaW1hdGVkUmVzaXplRGlkRW5kCit7CisgICAgaWYg
KF9jb250cm9sbGVyQWN0aW9uT25BbmltYXRpb25FbmQpCisgICAgICAgIFtbc2VsZiB3aW5kb3dD
b250cm9sbGVyXSBwZXJmb3JtU2VsZWN0b3I6X2NvbnRyb2xsZXJBY3Rpb25PbkFuaW1hdGlvbkVu
ZF07CisgICAgX2NvbnRyb2xsZXJBY3Rpb25PbkFuaW1hdGlvbkVuZCA9IE5VTEw7Cit9CisKKy8v
CisvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYW5pbWF0ZSBhIGNoYW5nZSBvZiBmcmFtZSByZWN0YW5n
bGUKKy8vIFdlIHN1cHBvcnQgcXVldWluZyBhbmltYXRpb24sIHRoYXQgbWVhbnMgdGhhdCB3ZSds
bCBjb3JyZWN0bHkKKy8vIGludGVycnVwdCB0aGUgcnVubmluZyBhbmltYXRpb24sIGFuZCBxdWV1
ZSB0aGUgbmV4dCBvbmUuCisvLworLSAodm9pZClhbmltYXRlRnJvbVJlY3Q6KE5TUmVjdClzdGFy
dFJlY3QgdG9SZWN0OihOU1JlY3QpZW5kUmVjdCB3aXRoU3ViQW5pbWF0aW9uOihOU0FuaW1hdGlv
biAqKXN1YkFuaW1hdGlvbiBjb250cm9sbGVyQWN0aW9uOihTRUwpY29udHJvbGxlckFjdGlvbgor
eworICAgIF9jb250cm9sbGVyQWN0aW9uT25BbmltYXRpb25FbmQgPSBjb250cm9sbGVyQWN0aW9u
OworCisgICAgQk9PTCB3YXNBbmltYXRpbmcgPSBOTzsKKyAgICBpZiAoX2Z1bGxzY3JlZW5Bbmlt
YXRpb24pIHsKKyAgICAgICAgd2FzQW5pbWF0aW5nID0gWUVTOworCisgICAgICAgIC8vIEludGVy
cnVwdCBhbnkgcnVubmluZyBhbmltYXRpb24uCisgICAgICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlv
biBzdG9wQW5pbWF0aW9uXTsKKworICAgICAgICAvLyBTYXZlIHRoZSBjdXJyZW50IHJlY3QgdG8g
ZW5zdXJlIGEgc21vb3RoIHRyYW5zaXRpb24uCisgICAgICAgIHN0YXJ0UmVjdCA9IFtfZnVsbHNj
cmVlbkFuaW1hdGlvbiBjdXJyZW50RnJhbWVdOworICAgICAgICBbX2Z1bGxzY3JlZW5BbmltYXRp
b24gcmVsZWFzZV07CisgICAgICAgIF9mdWxsc2NyZWVuQW5pbWF0aW9uID0gbmlsOworICAgIH0K
KyAgICAKKyAgICBpZiAoTlNJc0VtcHR5UmVjdChzdGFydFJlY3QpIHx8IE5TSXNFbXB0eVJlY3Qo
ZW5kUmVjdCkpIHsKKyAgICAgICAgLy8gRmFrZWx5IGVuZCB0aGUgc3ViYW5pbWF0aW9uLgorICAg
ICAgICBbc3ViQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczoxXTsKKyAgICAgICAgLy8gQW5k
IHJlbW92ZSB0aGUgd2VhayBsaW5rIHRvIHRoZSB3aW5kb3cuCisgICAgICAgIFtzdWJBbmltYXRp
b24gc3RvcEFuaW1hdGlvbl07CisKKyAgICAgICAgW3NlbGYgc2V0RnJhbWU6ZW5kUmVjdCBkaXNw
bGF5Ok5PXTsKKyAgICAgICAgW3NlbGYgbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07CisgICAg
ICAgIFtzZWxmIGFuaW1hdGVkUmVzaXplRGlkRW5kXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmICghd2FzQW5pbWF0aW5nKSB7CisgICAgICAgIC8vIFdlJ2xsIGRvd25zY2FsZSB0
aGUgd2luZG93IGR1cmluZyB0aGUgYW5pbWF0aW9uIGJhc2VkIG9uIHRoZSBoaWdoZXIgcmVzb2x1
dGlvbiByZWN0CisgICAgICAgIEJPT0wgaGlnaGVyUmVzb2x1dGlvbklzRW5kUmVjdCA9IHN0YXJ0
UmVjdC5zaXplLndpZHRoIDwgZW5kUmVjdC5zaXplLndpZHRoICYmIHN0YXJ0UmVjdC5zaXplLmhl
aWdodCA8IGVuZFJlY3Quc2l6ZS5oZWlnaHQ7CisgICAgICAgIFtzZWxmIHNldEZyYW1lOmhpZ2hl
clJlc29sdXRpb25Jc0VuZFJlY3QgPyBlbmRSZWN0IDogc3RhcnRSZWN0IGRpc3BsYXk6Tk9dOwor
ICAgIH0KKyAgICAKKyAgICBBU1NFUlQoIV9mdWxsc2NyZWVuQW5pbWF0aW9uKTsKKyAgICBfZnVs
bHNjcmVlbkFuaW1hdGlvbiA9IFtbV2ViV2luZG93U2NhbGVBbmltYXRpb24gYWxsb2NdIGluaXRX
aXRoSGludGVkRHVyYXRpb246MC4yIHdpbmRvdzpzZWxmIGluaXRhbEZyYW1lOnN0YXJ0UmVjdCBm
aW5hbEZyYW1lOmVuZFJlY3RdOworICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBzZXRTdWJBbmlt
YXRpb246c3ViQW5pbWF0aW9uXTsKKyAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24gc2V0RGVsZWdh
dGU6c2VsZl07CisgICAgCisgICAgLy8gTWFrZSBzdXJlIHRoZSBhbmltYXRpb24gaGFzIHNjYWxl
ZCB0aGUgd2luZG93IGJlZm9yZSBzaG93aW5nIGl0LgorICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlv
biBzZXRDdXJyZW50UHJvZ3Jlc3M6MF07CisgICAgW3NlbGYgbWFrZUtleUFuZE9yZGVyRnJvbnQ6
c2VsZl07CisKKyAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24gc3RhcnRBbmltYXRpb25dOworfQor
CistICh2b2lkKWFuaW1hdGlvbkRpZEVuZDooTlNBbmltYXRpb24gKilhbmltYXRpb24KK3sKKyAg
ICBpZiAoIVtOU1RocmVhZCBpc01haW5UaHJlYWRdKSB7CisgICAgICAgIFtzZWxmIHBlcmZvcm1T
ZWxlY3Rvck9uTWFpblRocmVhZDpAc2VsZWN0b3IoYW5pbWF0aW9uRGlkRW5kOikgd2l0aE9iamVj
dDphbmltYXRpb24gd2FpdFVudGlsRG9uZTpOT107CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgaWYgKGFuaW1hdGlvbiAhPSBfZnVsbHNjcmVlbkFuaW1hdGlvbikKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gVGhlIGFuaW1hdGlvbiBpcyBub3QgcmVhbGx5IG92ZXIgYW5kIHdhcyBpbnRl
cnJ1cHRlZAorICAgIC8vIERvbid0IHNlbmQgY29tcGxldGlvbiBldmVudHMuCisgICAgaWYgKFth
bmltYXRpb24gY3VycmVudFByb2dyZXNzXSA8IDEuMCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gRW5zdXJlIHRoYXQgYW5pbWF0aW9uIChhbmQgc3ViYW5pbWF0aW9uKSBkb24ndCBrZWVwCisg
ICAgLy8gdGhlIHdlYWsgcmVmZXJlbmNlIHRvIHRoZSB3aW5kb3cgaXZhciB0aGF0IG1heSBiZSBk
ZXN0cm95ZWQgZnJvbQorICAgIC8vIG5vdyBvbi4KKyAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24g
c2V0V2luZG93Om5pbF07CisKKyAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24gYXV0b3JlbGVhc2Vd
OworICAgIF9mdWxsc2NyZWVuQW5pbWF0aW9uID0gbmlsOworCisgICAgW3NlbGYgYW5pbWF0ZWRS
ZXNpemVEaWRFbmRdOworfQorCistICh2b2lkKW1vdXNlTW92ZWQ6KE5TRXZlbnQgKilldmVudAor
eworICAgIFVOVVNFRF9QQVJBTShldmVudCk7CisgICAgW1tzZWxmIHdpbmRvd0NvbnRyb2xsZXJd
IGZhZGVIVURJbl07Cit9CisKK0BlbmQKKworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNjdmZWFlMTM0MmU2YTk3N2M1NmZiMWY1YzUwNDQyMTIwMGRkMjE5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRl
b0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbXBvcnQgPEFwcEtpdC9OU0J1dHRvbi5oPgor
I2ltcG9ydCA8QXBwS2l0L05TQ29udHJvbC5oPgorI2ltcG9ydCA8QXBwS2l0L05TVGV4dEZpZWxk
Lmg+CisjaW1wb3J0IDxBcHBLaXQvTlNUcmFja2luZ0FyZWEuaD4KKyNpbXBvcnQgPEFwcEtpdC9O
U1dpbmRvdy5oPgorI2ltcG9ydCA8QXBwS2l0L05TV2luZG93Q29udHJvbGxlci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBIVE1MVmlkZW9FbGVtZW50OworfQorCitAcHJvdG9jb2wg
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlOworCitAaW50ZXJm
YWNlIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgOiBOU1dpbmRvd0NvbnRy
b2xsZXIgeworICAgIGlkIDxXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVs
ZWdhdGU+IF9kZWxlZ2F0ZTsKKyAgICBOU1RpbWVyICpfdGltZWxpbmVVcGRhdGVUaW1lcjsKKyAg
ICBOU1RyYWNraW5nQXJlYSAqX2FyZWE7CisgICAgQk9PTCBfbW91c2VJc0luSFVEOworICAgIEJP
T0wgX2lzRW5kaW5nRnVsbHNjcmVlbjsKKyAgICBCT09MIF9pc1NjcnViYmluZzsKKworICAgIE5T
Q29udHJvbCAqX3RpbWVsaW5lOworICAgIE5TVGV4dEZpZWxkICpfcmVtYWluaW5nVGltZVRleHQ7
CisgICAgTlNUZXh0RmllbGQgKl9lbGFwc2VkVGltZVRleHQ7CisgICAgTlNDb250cm9sICpfdm9s
dW1lU2xpZGVyOworICAgIE5TQnV0dG9uICpfcGxheUJ1dHRvbjsKK30KKworLSAoaWQgPFdlYlZp
ZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGU7CistICh2
b2lkKXNldERlbGVnYXRlOihpZCA8V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxl
ckRlbGVnYXRlPilkZWxlZ2F0ZTsKKy0gKHZvaWQpZmFkZVdpbmRvd0luOworLSAodm9pZClmYWRl
V2luZG93T3V0OworLSAodm9pZCljbG9zZVdpbmRvdzsKKy0gKHZvaWQpdXBkYXRlUmF0ZTsKKwor
QGVuZAorCitAcHJvdG9jb2wgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRl
bGVnYXRlIDxOU09iamVjdD4KKy0gKHZvaWQpcmVxdWVzdEV4aXRGdWxsc2NyZWVuOworLSAoV2Vi
Q29yZTo6SFRNTFZpZGVvRWxlbWVudCopdmlkZW9FbGVtZW50OworQGVuZAorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2Ny
ZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MTczNjZhYzcyM2VjNzMxNTM0M2Y4MDhkMzJjNmExMDllOGYzYWZmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURX
aW5kb3dDb250cm9sbGVyLm1tCkBAIC0wLDAgKzEsNzMxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFTykgJiYgUExBVEZPUk0oTUFDKQorI2lt
cG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oIgorCisjaW1wb3J0
IDxXZWJDb3JlL0Zsb2F0Q29udmVyc2lvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlkZW9F
bGVtZW50Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorI2ltcG9y
dCA8cGFsL3NwaS9tYWMvUVRLaXRTUEkuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgor
CitTT0ZUX0xJTktfRlJBTUVXT1JLKFFUS2l0KQorCitTT0ZUX0xJTktfQ0xBU1MoUVRLaXQsIFFU
SFVEQmFja2dyb3VuZFZpZXcpCitTT0ZUX0xJTktfQ0xBU1MoUVRLaXQsIFFUSFVEQnV0dG9uKQor
U09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVEhVRFNsaWRlcikKK1NPRlRfTElOS19DTEFTUyhRVEtp
dCwgUVRIVURUaW1lbGluZSkKKworI2RlZmluZSBRVEhVREJhY2tncm91bmRWaWV3IGdldFFUSFVE
QmFja2dyb3VuZFZpZXdDbGFzcygpCisjZGVmaW5lIFFUSFVEQnV0dG9uIGdldFFUSFVEQnV0dG9u
Q2xhc3MoKQorI2RlZmluZSBRVEhVRFNsaWRlciBnZXRRVEhVRFNsaWRlckNsYXNzKCkKKyNkZWZp
bmUgUVRIVURUaW1lbGluZSBnZXRRVEhVRFRpbWVsaW5lQ2xhc3MoKQorCitlbnVtIGNsYXNzIE1l
ZGlhVUlDb250cm9sIHsKKyAgICBUaW1lbGluZSwKKyAgICBTbGlkZXIsCisgICAgUGxheVBhdXNl
QnV0dG9uLAorICAgIEV4aXRGdWxsc2NyZWVuQnV0dG9uLAorICAgIFJld2luZEJ1dHRvbiwKKyAg
ICBGYXN0Rm9yd2FyZEJ1dHRvbiwKKyAgICBWb2x1bWVVcEJ1dHRvbiwKKyAgICBWb2x1bWVEb3du
QnV0dG9uLAorfTsKKwordXNpbmcgV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDsKK3VzaW5nIFdl
YkNvcmU6Om5hcnJvd1ByZWNpc2lvblRvRmxvYXQ7CisKK0BpbnRlcmZhY2UgV2ViVmlkZW9GdWxs
c2NyZWVuSFVEV2luZG93Q29udHJvbGxlciAoUHJpdmF0ZSkgPE5TV2luZG93RGVsZWdhdGU+CisK
Ky0gKHZvaWQpdXBkYXRlVGltZTsKKy0gKHZvaWQpdGltZWxpbmVQb3NpdGlvbkNoYW5nZWQ6KGlk
KXNlbmRlcjsKKy0gKGZsb2F0KWN1cnJlbnRUaW1lOworLSAodm9pZClzZXRDdXJyZW50VGltZToo
ZmxvYXQpY3VycmVudFRpbWU7CistIChkb3VibGUpZHVyYXRpb247CisKKy0gKHZvaWQpdm9sdW1l
Q2hhbmdlZDooaWQpc2VuZGVyOworLSAoZmxvYXQpbWF4Vm9sdW1lOworLSAoZmxvYXQpdm9sdW1l
OworLSAodm9pZClzZXRWb2x1bWU6KGZsb2F0KXZvbHVtZTsKKy0gKHZvaWQpZGVjcmVtZW50Vm9s
dW1lOworLSAodm9pZClpbmNyZW1lbnRWb2x1bWU7CisKKy0gKHZvaWQpdXBkYXRlUGxheUJ1dHRv
bjsKKy0gKHZvaWQpdG9nZ2xlUGxheWluZzooaWQpc2VuZGVyOworLSAoQk9PTClwbGF5aW5nOwor
LSAodm9pZClzZXRQbGF5aW5nOihCT09MKXBsYXlpbmc7CisKKy0gKHZvaWQpcmV3aW5kOihpZClz
ZW5kZXI7CistICh2b2lkKWZhc3RGb3J3YXJkOihpZClzZW5kZXI7CisKKy0gKE5TU3RyaW5nICop
cmVtYWluaW5nVGltZVRleHQ7CistIChOU1N0cmluZyAqKWVsYXBzZWRUaW1lVGV4dDsKKworLSAo
dm9pZClleGl0RnVsbHNjcmVlbjooaWQpc2VuZGVyOworQGVuZAorCitAaW50ZXJmYWNlIFdlYlZp
ZGVvRnVsbHNjcmVlbkhVRFdpbmRvdyA6IE5TV2luZG93CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3cKKworLSAoaWQpaW5pdFdpdGhDb250ZW50UmVj
dDooTlNSZWN0KWNvbnRlbnRSZWN0IHN0eWxlTWFzazooTlNVSW50ZWdlcilhU3R5bGUgYmFja2lu
ZzooTlNCYWNraW5nU3RvcmVUeXBlKWJ1ZmZlcmluZ1R5cGUgZGVmZXI6KEJPT0wpZmxhZworewor
ICAgIFVOVVNFRF9QQVJBTShhU3R5bGUpOworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhDb250
ZW50UmVjdDpjb250ZW50UmVjdCBzdHlsZU1hc2s6TlNXaW5kb3dTdHlsZU1hc2tCb3JkZXJsZXNz
IGJhY2tpbmc6YnVmZmVyaW5nVHlwZSBkZWZlcjpmbGFnXTsKKyAgICBpZiAoIXNlbGYpCisgICAg
ICAgIHJldHVybiBuaWw7CisKKyAgICBbc2VsZiBzZXRPcGFxdWU6Tk9dOworICAgIFtzZWxmIHNl
dEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBjbGVhckNvbG9yXV07CisgICAgW3NlbGYgc2V0TGV2
ZWw6TlNQb3BVcE1lbnVXaW5kb3dMZXZlbF07CisgICAgW3NlbGYgc2V0QWNjZXB0c01vdXNlTW92
ZWRFdmVudHM6WUVTXTsKKyAgICBbc2VsZiBzZXRJZ25vcmVzTW91c2VFdmVudHM6Tk9dOworICAg
IFtzZWxmIHNldE1vdmFibGVCeVdpbmRvd0JhY2tncm91bmQ6WUVTXTsKKworICAgIHJldHVybiBz
ZWxmOworfQorCistIChCT09MKWNhbkJlY29tZUtleVdpbmRvdworeworICAgIHJldHVybiBZRVM7
Cit9CisKKy0gKHZvaWQpY2FuY2VsT3BlcmF0aW9uOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURf
UEFSQU0oc2VuZGVyKTsKKyAgICBbW3NlbGYgd2luZG93Q29udHJvbGxlcl0gZXhpdEZ1bGxzY3Jl
ZW46c2VsZl07Cit9CisKKy0gKHZvaWQpY2VudGVyCit7CisgICAgTlNSZWN0IGh1ZEZyYW1lID0g
W3NlbGYgZnJhbWVdOworICAgIE5TUmVjdCBzY3JlZW5GcmFtZSA9IFtbTlNTY3JlZW4gbWFpblNj
cmVlbl0gZnJhbWVdOworICAgIFtzZWxmIHNldEZyYW1lVG9wTGVmdFBvaW50Ok5TTWFrZVBvaW50
KHNjcmVlbkZyYW1lLm9yaWdpbi54ICsgKHNjcmVlbkZyYW1lLnNpemUud2lkdGggLSBodWRGcmFt
ZS5zaXplLndpZHRoKSAvIDIsIHNjcmVlbkZyYW1lLm9yaWdpbi55ICsgKHNjcmVlbkZyYW1lLnNp
emUuaGVpZ2h0IC0gaHVkRnJhbWUuc2l6ZS5oZWlnaHQpIC8gNildOworfQorCistICh2b2lkKWtl
eURvd246KE5TRXZlbnQgKilldmVudAoreworICAgIFtzdXBlciBrZXlEb3duOmV2ZW50XTsKKyAg
ICBbW3NlbGYgd2luZG93Q29udHJvbGxlcl0gZmFkZVdpbmRvd0luXTsKK30KKworLSAoQk9PTCly
ZXNpZ25GaXJzdFJlc3BvbmRlcgoreworICAgIHJldHVybiBOTzsKK30KKworLSAoQk9PTClwZXJm
b3JtS2V5RXF1aXZhbGVudDooTlNFdmVudCAqKWV2ZW50Cit7CisgICAgLy8gQmxvY2sgYWxsIGNv
bW1hbmQga2V5IGV2ZW50cyB3aGlsZSB0aGUgZnVsbHNjcmVlbiB3aW5kb3cgaXMgdXAuCisgICAg
aWYgKFtldmVudCB0eXBlXSAhPSBOU0V2ZW50VHlwZUtleURvd24pCisgICAgICAgIHJldHVybiBO
TzsKKyAgICAKKyAgICBpZiAoIShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0V2ZW50TW9kaWZp
ZXJGbGFnQ29tbWFuZCkpCisgICAgICAgIHJldHVybiBOTzsKKyAgICByZXR1cm4gWUVTOworfQor
CitAZW5kCisKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IHdpbmRvd0hlaWdodCA9IDU5Oworc3RhdGlj
IGNvbnN0IENHRmxvYXQgd2luZG93V2lkdGggPSA0Mzg7CisKK3N0YXRpYyBjb25zdCBOU1RpbWVJ
bnRlcnZhbCBIVURXaW5kb3dGYWRlT3V0RGVsYXkgPSAzOworCitAaW1wbGVtZW50YXRpb24gV2Vi
VmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlcgorCistIChpZClpbml0Cit7CisgICAg
TlNXaW5kb3cgKndpbmRvdyA9IFtbV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93IGFsbG9jXSBp
bml0V2l0aENvbnRlbnRSZWN0Ok5TTWFrZVJlY3QoMCwgMCwgd2luZG93V2lkdGgsIHdpbmRvd0hl
aWdodCkgc3R5bGVNYXNrOk5TV2luZG93U3R5bGVNYXNrQm9yZGVybGVzcyBiYWNraW5nOk5TQmFj
a2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dOworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhX
aW5kb3c6d2luZG93XTsKKyAgICBbd2luZG93IHNldERlbGVnYXRlOnNlbGZdOworICAgIFt3aW5k
b3cgcmVsZWFzZV07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIFtz
ZWxmIHdpbmRvd0RpZExvYWRdOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxs
b2MKK3sKKyAgICBBU1NFUlQoIV90aW1lbGluZVVwZGF0ZVRpbWVyKTsKKyAgICBBU1NFUlQoIV9h
cmVhKTsKKyAgICBBU1NFUlQoIV9pc1NjcnViYmluZyk7CisgICAgW190aW1lbGluZSByZWxlYXNl
XTsKKyAgICBbX3JlbWFpbmluZ1RpbWVUZXh0IHJlbGVhc2VdOworICAgIFtfZWxhcHNlZFRpbWVU
ZXh0IHJlbGVhc2VdOworICAgIFtfdm9sdW1lU2xpZGVyIHJlbGVhc2VdOworICAgIFtfcGxheUJ1
dHRvbiByZWxlYXNlXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpc2V0QXJl
YTooTlNUcmFja2luZ0FyZWEgKilhcmVhCit7CisgICAgaWYgKGFyZWEgPT0gX2FyZWEpCisgICAg
ICAgIHJldHVybjsKKyAgICBbX2FyZWEgcmVsZWFzZV07CisgICAgX2FyZWEgPSBbYXJlYSByZXRh
aW5dOworfQorCistICh2b2lkKWtleURvd246KE5TRXZlbnQgKilldmVudAoreworICAgIE5TU3Ry
aW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBbZXZlbnQgY2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzXTsKKyAgICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBsZW5n
dGhdID09IDEpIHsKKyAgICAgICAgc3dpdGNoIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
IGNoYXJhY3RlckF0SW5kZXg6MF0pIHsKKyAgICAgICAgY2FzZSAnICc6CisgICAgICAgICAgICBb
c2VsZiB0b2dnbGVQbGF5aW5nOm5pbF07CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNh
c2UgTlNVcEFycm93RnVuY3Rpb25LZXk6CisgICAgICAgICAgICBpZiAoW2V2ZW50IG1vZGlmaWVy
RmxhZ3NdICYgTlNFdmVudE1vZGlmaWVyRmxhZ09wdGlvbikKKyAgICAgICAgICAgICAgICBbc2Vs
ZiBzZXRWb2x1bWU6W3NlbGYgbWF4Vm9sdW1lXV07CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgW3NlbGYgaW5jcmVtZW50Vm9sdW1lXTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgY2FzZSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OgorICAgICAgICAgICAgaWYgKFtldmVu
dCBtb2RpZmllckZsYWdzXSAmIE5TRXZlbnRNb2RpZmllckZsYWdPcHRpb24pCisgICAgICAgICAg
ICAgICAgW3NlbGYgc2V0Vm9sdW1lOjBdOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIFtzZWxmIGRlY3JlbWVudFZvbHVtZV07CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIFtz
dXBlciBrZXlEb3duOmV2ZW50XTsKK30KKworLSAoaWQgPFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdp
bmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICByZXR1cm4gX2RlbGVnYXRl
OworfQorCistICh2b2lkKXNldERlbGVnYXRlOihpZCA8V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2lu
ZG93Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZQoreworICAgIF9kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworfQorCistICh2b2lkKXNjaGVkdWxlVGltZVVwZGF0ZQoreworICAgIFtOU09iamVjdCBj
YW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2Vs
ZWN0b3IodW5zY2hlZHVsZVRpbWVVcGRhdGUpIG9iamVjdDpzZWxmXTsKKworICAgIC8vIEZpcnN0
LCB1cGRhdGUgcmlnaHQgYXdheSwgdGhlbiBzY2hlZHVsZSBmdXR1cmUgdXBkYXRlCisgICAgW3Nl
bGYgdXBkYXRlVGltZV07CisgICAgW3NlbGYgdXBkYXRlUGxheUJ1dHRvbl07CisKKyAgICBbX3Rp
bWVsaW5lVXBkYXRlVGltZXIgaW52YWxpZGF0ZV07CisgICAgW190aW1lbGluZVVwZGF0ZVRpbWVy
IHJlbGVhc2VdOworCisgICAgLy8gTm90ZSB0aGF0IHRoaXMgY3JlYXRlcyBhIHJldGFpbiBjeWNs
ZSBiZXR3ZWVuIHRoZSB3aW5kb3cgYW5kIHVzLgorICAgIF90aW1lbGluZVVwZGF0ZVRpbWVyID0g
W1tOU1RpbWVyIHRpbWVyV2l0aFRpbWVJbnRlcnZhbDowLjI1IHRhcmdldDpzZWxmIHNlbGVjdG9y
OkBzZWxlY3Rvcih1cGRhdGVUaW1lKSB1c2VySW5mbzpuaWwgcmVwZWF0czpZRVNdIHJldGFpbl07
CisgICAgW1tOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIGFkZFRpbWVyOl90aW1lbGluZVVwZGF0
ZVRpbWVyIGZvck1vZGU6TlNSdW5Mb29wQ29tbW9uTW9kZXNdOworfQorCistICh2b2lkKXVuc2No
ZWR1bGVUaW1lVXBkYXRlCit7CisgICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9ybVJl
cXVlc3RzV2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih1bnNjaGVkdWxlVGltZVVw
ZGF0ZSkgb2JqZWN0Om5pbF07CisKKyAgICBbX3RpbWVsaW5lVXBkYXRlVGltZXIgaW52YWxpZGF0
ZV07CisgICAgW190aW1lbGluZVVwZGF0ZVRpbWVyIHJlbGVhc2VdOworICAgIF90aW1lbGluZVVw
ZGF0ZVRpbWVyID0gbmlsOworfQorCistICh2b2lkKWZhZGVXaW5kb3dJbgoreworICAgIE5TV2lu
ZG93ICp3aW5kb3cgPSBbc2VsZiB3aW5kb3ddOworICAgIGlmICghW3dpbmRvdyBpc1Zpc2libGVd
KQorICAgICAgICBbd2luZG93IHNldEFscGhhVmFsdWU6MF07CisKKyAgICBbd2luZG93IG1ha2VL
ZXlBbmRPcmRlckZyb250OnNlbGZdOworICAgIFtbd2luZG93IGFuaW1hdG9yXSBzZXRBbHBoYVZh
bHVlOjFdOworICAgIFtzZWxmIHNjaGVkdWxlVGltZVVwZGF0ZV07CisKKyAgICBbTlNPYmplY3Qg
Y2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNl
bGVjdG9yKGZhZGVXaW5kb3dPdXQpIG9iamVjdDpuaWxdOworICAgIGlmICghX21vdXNlSXNJbkhV
RCAmJiBbc2VsZiBwbGF5aW5nXSkgLy8gRG9uJ3QgZmFkZSBvdXQgd2hlbiBwYXVzZWQuCisgICAg
ICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoZmFkZVdpbmRvd091dCkgd2l0aE9i
amVjdDpuaWwgYWZ0ZXJEZWxheTpIVURXaW5kb3dGYWRlT3V0RGVsYXldOworfQorCistICh2b2lk
KWZhZGVXaW5kb3dPdXQKK3sKKyAgICBbTlNDdXJzb3Igc2V0SGlkZGVuVW50aWxNb3VzZU1vdmVz
OllFU107CisgICAgW1tbc2VsZiB3aW5kb3ddIGFuaW1hdG9yXSBzZXRBbHBoYVZhbHVlOjBdOwor
ICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IodW5zY2hlZHVsZVRpbWVVcGRhdGUp
IHdpdGhPYmplY3Q6bmlsIGFmdGVyRGVsYXk6MV07Cit9CisKKy0gKHZvaWQpY2xvc2VXaW5kb3cK
K3sKKyAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0
OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGZhZGVXaW5kb3dPdXQpIG9iamVjdDpuaWxdOworICAg
IFtzZWxmIHVuc2NoZWR1bGVUaW1lVXBkYXRlXTsKKyAgICBOU1dpbmRvdyAqd2luZG93ID0gW3Nl
bGYgd2luZG93XTsKKyAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gcmVtb3ZlVHJhY2tpbmdBcmVh
Ol9hcmVhXTsKKyAgICBbc2VsZiBzZXRBcmVhOm5pbF07CisgICAgW3dpbmRvdyBjbG9zZV07Cisg
ICAgW3dpbmRvdyBzZXREZWxlZ2F0ZTpuaWxdOworICAgIFtzZWxmIHNldFdpbmRvdzpuaWxdOwor
fQorCitzdGF0aWMgTlNDb250cm9sICpjcmVhdGVNZWRpYVVJQ29udHJvbChNZWRpYVVJQ29udHJv
bCBjb250cm9sVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGNvbnRyb2xUeXBlKSB7CisgICAgY2FzZSBN
ZWRpYVVJQ29udHJvbDo6VGltZWxpbmU6IHsKKyAgICAgICAgTlNTbGlkZXIgKnNsaWRlciA9IFtb
UVRIVURUaW1lbGluZSBhbGxvY10gaW5pdF07CisgICAgICAgIFtbc2xpZGVyIGNlbGxdIHNldENv
bnRpbnVvdXM6WUVTXTsKKyAgICAgICAgcmV0dXJuIHNsaWRlcjsKKyAgICB9CisgICAgY2FzZSBN
ZWRpYVVJQ29udHJvbDo6U2xpZGVyOiB7CisgICAgICAgIE5TQnV0dG9uICpzbGlkZXIgPSBbW1FU
SFVEU2xpZGVyIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW1tzbGlkZXIgY2VsbF0gc2V0Q29udGlu
dW91czpZRVNdOworICAgICAgICByZXR1cm4gc2xpZGVyOworICAgIH0KKyAgICBjYXNlIE1lZGlh
VUlDb250cm9sOjpQbGF5UGF1c2VCdXR0b246IHsKKyAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9
IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0dG9uIHNldEltYWdlOltO
U0ltYWdlIGltYWdlTmFtZWQ6QCJOU1BsYXlUZW1wbGF0ZSJdXTsKKyAgICAgICAgW2J1dHRvbiBz
ZXRBbHRlcm5hdGVJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNQYXVzZVFUUHJpdmF0ZVRl
bXBsYXRlIl1dOworCisgICAgICAgIFtbYnV0dG9uIGNlbGxdIHNldFNob3dzU3RhdGVCeTpOU0Nv
bnRlbnRzQ2VsbE1hc2tdOworICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAgICAg
ICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6RXhpdEZ1
bGxzY3JlZW5CdXR0b246IHsKKyAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0
b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdl
TmFtZWQ6QCJOU0V4aXRGdWxsU2NyZWVuVGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0b24gc2V0
Qm9yZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1l
ZGlhVUlDb250cm9sOjpSZXdpbmRCdXR0b246IHsKKyAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9
IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0dG9uIHNldEltYWdlOltO
U0ltYWdlIGltYWdlTmFtZWQ6QCJOU1Jld2luZFRlbXBsYXRlIl1dOworICAgICAgICBbYnV0dG9u
IHNldEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9CisgICAgY2Fz
ZSBNZWRpYVVJQ29udHJvbDo6RmFzdEZvcndhcmRCdXR0b246IHsKKyAgICAgICAgTlNCdXR0b24g
KmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0dG9uIHNl
dEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU0Zhc3RGb3J3YXJkVGVtcGxhdGUiXV07Cisg
ICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOwor
ICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpWb2x1bWVVcEJ1dHRvbjogeworICAgICAg
ICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07CisgICAgICAg
IFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TQXVkaW9PdXRwdXRWb2x1
bWVIaWdoVGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAg
ICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpWb2x1
bWVEb3duQnV0dG9uOiB7CisgICAgICAgIE5TQnV0dG9uICpidXR0b24gPSBbW1FUSFVEQnV0dG9u
IGFsbG9jXSBpbml0XTsKKyAgICAgICAgW2J1dHRvbiBzZXRJbWFnZTpbTlNJbWFnZSBpbWFnZU5h
bWVkOkAiTlNBdWRpb091dHB1dFZvbHVtZUxvd1RlbXBsYXRlIl1dOworICAgICAgICBbYnV0dG9u
IHNldEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9CisgICAgfQor
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG5pbDsKK30KKworc3RhdGlj
IE5TQ29udHJvbCAqY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNv
bnRyb2wgY29udHJvbFR5cGUsIE5TUmVjdCBmcmFtZSkKK3sKKyAgICBOU0NvbnRyb2wgKmNvbnRy
b2wgPSBjcmVhdGVNZWRpYVVJQ29udHJvbChjb250cm9sVHlwZSk7CisgICAgY29udHJvbC5mcmFt
ZSA9IGZyYW1lOworICAgIHJldHVybiBjb250cm9sOworfQorCitzdGF0aWMgTlNUZXh0RmllbGQg
KmNyZWF0ZVRpbWVUZXh0RmllbGQoTlNSZWN0IGZyYW1lKQoreworICAgIE5TVGV4dEZpZWxkICp0
ZXh0RmllbGQgPSBbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1lXTsKKyAg
ICBbdGV4dEZpZWxkIHNldFRleHRDb2xvcjpbTlNDb2xvciB3aGl0ZUNvbG9yXV07CisgICAgW3Rl
eHRGaWVsZCBzZXRCb3JkZXJlZDpOT107CisgICAgW3RleHRGaWVsZCBzZXRGb250OltOU0ZvbnQg
Ym9sZFN5c3RlbUZvbnRPZlNpemU6MTBdXTsKKyAgICBbdGV4dEZpZWxkIHNldERyYXdzQmFja2dy
b3VuZDpOT107CisgICAgW3RleHRGaWVsZCBzZXRCZXplbGVkOk5PXTsKKyAgICBbdGV4dEZpZWxk
IHNldEVkaXRhYmxlOk5PXTsKKyAgICBbdGV4dEZpZWxkIHNldFNlbGVjdGFibGU6Tk9dOworICAg
IHJldHVybiB0ZXh0RmllbGQ7Cit9CisKK3N0YXRpYyBOU1ZpZXcgKmNyZWF0ZU1lZGlhVUlCYWNr
Z3JvdW5kVmlldygpCit7CisgICAgaWQgdmlldyA9IFtbUVRIVURCYWNrZ3JvdW5kVmlldyBhbGxv
Y10gaW5pdF07CisKKyAgICBjb25zdCBDR0Zsb2F0IHF1aWNrVGltZVBsYXllckhVREhlaWdodCA9
IDU5OworICAgIGNvbnN0IENHRmxvYXQgcXVpY2tUaW1lUGxheWVySFVEQ29udGVudEJvcmRlclBv
c2l0aW9uID0gMzg7CisKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgor
ICAgIFt2aWV3IHNldENvbnRlbnRCb3JkZXJQb3NpdGlvbjpxdWlja1RpbWVQbGF5ZXJIVURDb250
ZW50Qm9yZGVyUG9zaXRpb24gLyBxdWlja1RpbWVQbGF5ZXJIVURIZWlnaHRdOworICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorCisgICAgcmV0dXJuIHZpZXc7Cit9CisKKy0g
KHZvaWQpd2luZG93RGlkTG9hZAoreworICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IGhvcml6b250
YWxNYXJnaW4gPSAxMDsKKyAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBwbGF5QnV0dG9uV2lkdGgg
PSA0MTsKKyAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBwbGF5QnV0dG9uSGVpZ2h0ID0gMzU7Cisg
ICAgc3RhdGljIGNvbnN0IENHRmxvYXQgcGxheUJ1dHRvblRvcE1hcmdpbiA9IDQ7CisgICAgc3Rh
dGljIGNvbnN0IENHRmxvYXQgdm9sdW1lU2xpZGVyV2lkdGggPSA1MDsKKyAgICBzdGF0aWMgY29u
c3QgQ0dGbG9hdCB2b2x1bWVTbGlkZXJIZWlnaHQgPSAxMzsKKyAgICBzdGF0aWMgY29uc3QgQ0dG
bG9hdCB2b2x1bWVCdXR0b25XaWR0aCA9IDE4OworICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHZv
bHVtZUJ1dHRvbkhlaWdodCA9IDE2OworICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHZvbHVtZVVw
QnV0dG9uTGVmdE1hcmdpbiA9IDQ7CisgICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdm9sdW1lQ29u
dHJvbHNUb3BNYXJnaW4gPSAxMzsKKyAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBleGl0RnVsbHNj
cmVlbkJ1dHRvbldpZHRoID0gMjU7CisgICAgc3RhdGljIGNvbnN0IENHRmxvYXQgZXhpdEZ1bGxz
Y3JlZW5CdXR0b25IZWlnaHQgPSAyMTsKKyAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBleGl0RnVs
bHNjcmVlbkJ1dHRvblRvcE1hcmdpbiA9IDExOworICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHRp
bWVsaW5lV2lkdGggPSAzMTU7CisgICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdGltZWxpbmVIZWln
aHQgPSAxNDsKKyAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB0aW1lbGluZUJvdHRvbU1hcmdpbiA9
IDc7CisgICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdGltZVRleHRGaWVsZFdpZHRoID0gNTQ7Cisg
ICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdGltZVRleHRGaWVsZEhlaWdodCA9IDEzOworICAgIHN0
YXRpYyBjb25zdCBDR0Zsb2F0IHRpbWVUZXh0RmllbGRIb3Jpem9udGFsTWFyZ2luID0gNzsKKwor
ICAgIE5TV2luZG93ICp3aW5kb3cgPSBbc2VsZiB3aW5kb3ddOworICAgIEFTU0VSVCh3aW5kb3cp
OworCisgICAgTlNWaWV3ICpiYWNrZ3JvdW5kID0gY3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3
KCk7CisKKyAgICBbd2luZG93IHNldENvbnRlbnRWaWV3OmJhY2tncm91bmRdOworICAgIF9hcmVh
ID0gW1tOU1RyYWNraW5nQXJlYSBhbGxvY10gaW5pdFdpdGhSZWN0OltiYWNrZ3JvdW5kIGJvdW5k
c10gb3B0aW9uczpOU1RyYWNraW5nTW91c2VFbnRlcmVkQW5kRXhpdGVkIHwgTlNUcmFja2luZ0Fj
dGl2ZUFsd2F5cyBvd25lcjpzZWxmIHVzZXJJbmZvOm5pbF07CisgICAgW2JhY2tncm91bmQgYWRk
VHJhY2tpbmdBcmVhOl9hcmVhXTsKKyAgICBbYmFja2dyb3VuZCByZWxlYXNlXTsgICAgCisKKyAg
ICBOU1ZpZXcgKmNvbnRlbnRWaWV3ID0gW3dpbmRvdyBjb250ZW50Vmlld107CisKKyAgICBDR0Zs
b2F0IGNlbnRlciA9IENHRmxvb3IoKHdpbmRvd1dpZHRoIC0gcGxheUJ1dHRvbldpZHRoKSAvIDIp
OworICAgIF9wbGF5QnV0dG9uID0gKE5TQnV0dG9uICopY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJ
Q29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OlBsYXlQYXVzZUJ1dHRvbiwgTlNNYWtlUmVjdChj
ZW50ZXIsIHdpbmRvd0hlaWdodCAtIHBsYXlCdXR0b25Ub3BNYXJnaW4gLSBwbGF5QnV0dG9uSGVp
Z2h0LCBwbGF5QnV0dG9uV2lkdGgsIHBsYXlCdXR0b25IZWlnaHQpKTsKKyAgICBBU1NFUlQoW19w
bGF5QnV0dG9uIGlzS2luZE9mQ2xhc3M6W05TQnV0dG9uIGNsYXNzXV0pOworICAgIFtfcGxheUJ1
dHRvbiBzZXRUYXJnZXQ6c2VsZl07CisgICAgW19wbGF5QnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0
b3IodG9nZ2xlUGxheWluZzopXTsKKyAgICBbY29udGVudFZpZXcgYWRkU3VidmlldzpfcGxheUJ1
dHRvbl07CisKKyAgICBDR0Zsb2F0IGNsb3NlVG9SaWdodCA9IHdpbmRvd1dpZHRoIC0gaG9yaXpv
bnRhbE1hcmdpbiAtIGV4aXRGdWxsc2NyZWVuQnV0dG9uV2lkdGg7CisgICAgTlNDb250cm9sICpl
eGl0RnVsbHNjcmVlbkJ1dHRvbiA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBl
KE1lZGlhVUlDb250cm9sOjpFeGl0RnVsbHNjcmVlbkJ1dHRvbiwgTlNNYWtlUmVjdChjbG9zZVRv
UmlnaHQsIHdpbmRvd0hlaWdodCAtIGV4aXRGdWxsc2NyZWVuQnV0dG9uVG9wTWFyZ2luIC0gZXhp
dEZ1bGxzY3JlZW5CdXR0b25IZWlnaHQsIGV4aXRGdWxsc2NyZWVuQnV0dG9uV2lkdGgsIGV4aXRG
dWxsc2NyZWVuQnV0dG9uSGVpZ2h0KSk7CisgICAgW2V4aXRGdWxsc2NyZWVuQnV0dG9uIHNldEFj
dGlvbjpAc2VsZWN0b3IoZXhpdEZ1bGxzY3JlZW46KV07CisgICAgW2V4aXRGdWxsc2NyZWVuQnV0
dG9uIHNldFRhcmdldDpzZWxmXTsKKyAgICBbY29udGVudFZpZXcgYWRkU3VidmlldzpleGl0RnVs
bHNjcmVlbkJ1dHRvbl07CisgICAgW2V4aXRGdWxsc2NyZWVuQnV0dG9uIHJlbGVhc2VdOworICAg
IAorICAgIENHRmxvYXQgdm9sdW1lQ29udHJvbHNCb3R0b20gPSB3aW5kb3dIZWlnaHQgLSB2b2x1
bWVDb250cm9sc1RvcE1hcmdpbiAtIHZvbHVtZUJ1dHRvbkhlaWdodDsKKyAgICBDR0Zsb2F0IGxl
ZnQgPSBob3Jpem9udGFsTWFyZ2luOworICAgIE5TQ29udHJvbCAqdm9sdW1lRG93bkJ1dHRvbiA9
IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpWb2x1
bWVEb3duQnV0dG9uLCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tLCB2b2x1
bWVCdXR0b25XaWR0aCwgdm9sdW1lQnV0dG9uSGVpZ2h0KSk7CisgICAgW2NvbnRlbnRWaWV3IGFk
ZFN1YnZpZXc6dm9sdW1lRG93bkJ1dHRvbl07CisgICAgW3ZvbHVtZURvd25CdXR0b24gc2V0VGFy
Z2V0OnNlbGZdOworICAgIFt2b2x1bWVEb3duQnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3Ioc2V0
Vm9sdW1lVG9aZXJvOildOworICAgIFt2b2x1bWVEb3duQnV0dG9uIHJlbGVhc2VdOworCisgICAg
bGVmdCArPSB2b2x1bWVCdXR0b25XaWR0aDsKKyAgICBfdm9sdW1lU2xpZGVyID0gY3JlYXRlQ29u
dHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OlNsaWRlciwgTlNNYWtl
UmVjdChsZWZ0LCB2b2x1bWVDb250cm9sc0JvdHRvbSArIENHRmxvb3IoKHZvbHVtZUJ1dHRvbkhl
aWdodCAtIHZvbHVtZVNsaWRlckhlaWdodCkgLyAyKSwgdm9sdW1lU2xpZGVyV2lkdGgsIHZvbHVt
ZVNsaWRlckhlaWdodCkpOworICAgIFtfdm9sdW1lU2xpZGVyIHNldFZhbHVlOltOU051bWJlciBu
dW1iZXJXaXRoRG91YmxlOltzZWxmIG1heFZvbHVtZV1dIGZvcktleTpAIm1heFZhbHVlIl07Cisg
ICAgW192b2x1bWVTbGlkZXIgc2V0VGFyZ2V0OnNlbGZdOworICAgIFtfdm9sdW1lU2xpZGVyIHNl
dEFjdGlvbjpAc2VsZWN0b3Iodm9sdW1lQ2hhbmdlZDopXTsKKyAgICBbY29udGVudFZpZXcgYWRk
U3Vidmlldzpfdm9sdW1lU2xpZGVyXTsKKworICAgIGxlZnQgKz0gdm9sdW1lU2xpZGVyV2lkdGgg
KyB2b2x1bWVVcEJ1dHRvbkxlZnRNYXJnaW47CisgICAgTlNDb250cm9sICp2b2x1bWVVcEJ1dHRv
biA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpW
b2x1bWVVcEJ1dHRvbiwgTlNNYWtlUmVjdChsZWZ0LCB2b2x1bWVDb250cm9sc0JvdHRvbSwgdm9s
dW1lQnV0dG9uV2lkdGgsIHZvbHVtZUJ1dHRvbkhlaWdodCkpOworICAgIFt2b2x1bWVVcEJ1dHRv
biBzZXRUYXJnZXQ6c2VsZl07CisgICAgW3ZvbHVtZVVwQnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0
b3Ioc2V0Vm9sdW1lVG9NYXhpbXVtOildOworICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3OnZv
bHVtZVVwQnV0dG9uXTsKKyAgICBbdm9sdW1lVXBCdXR0b24gcmVsZWFzZV07CisKKyAgICBfdGlt
ZWxpbmUgPSBjcmVhdGVNZWRpYVVJQ29udHJvbChNZWRpYVVJQ29udHJvbDo6VGltZWxpbmUpOwor
CisgICAgW190aW1lbGluZSBzZXRUYXJnZXQ6c2VsZl07CisgICAgW190aW1lbGluZSBzZXRBY3Rp
b246QHNlbGVjdG9yKHRpbWVsaW5lUG9zaXRpb25DaGFuZ2VkOildOworICAgIFtfdGltZWxpbmUg
c2V0RnJhbWU6TlNNYWtlUmVjdChDR0Zsb29yKCh3aW5kb3dXaWR0aCAtIHRpbWVsaW5lV2lkdGgp
IC8gMiksIHRpbWVsaW5lQm90dG9tTWFyZ2luLCB0aW1lbGluZVdpZHRoLCB0aW1lbGluZUhlaWdo
dCldOworICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3Ol90aW1lbGluZV07CisKKyAgICBfZWxh
cHNlZFRpbWVUZXh0ID0gY3JlYXRlVGltZVRleHRGaWVsZChOU01ha2VSZWN0KHRpbWVUZXh0Rmll
bGRIb3Jpem9udGFsTWFyZ2luLCB0aW1lbGluZUJvdHRvbU1hcmdpbiwgdGltZVRleHRGaWVsZFdp
ZHRoLCB0aW1lVGV4dEZpZWxkSGVpZ2h0KSk7CisgICAgW19lbGFwc2VkVGltZVRleHQgc2V0QWxp
Z25tZW50Ok5TVGV4dEFsaWdubWVudExlZnRdOworICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3
Ol9lbGFwc2VkVGltZVRleHRdOworCisgICAgX3JlbWFpbmluZ1RpbWVUZXh0ID0gY3JlYXRlVGlt
ZVRleHRGaWVsZChOU01ha2VSZWN0KHdpbmRvd1dpZHRoIC0gdGltZVRleHRGaWVsZEhvcml6b250
YWxNYXJnaW4gLSB0aW1lVGV4dEZpZWxkV2lkdGgsIHRpbWVsaW5lQm90dG9tTWFyZ2luLCB0aW1l
VGV4dEZpZWxkV2lkdGgsIHRpbWVUZXh0RmllbGRIZWlnaHQpKTsKKyAgICBbX3JlbWFpbmluZ1Rp
bWVUZXh0IHNldEFsaWdubWVudDpOU1RleHRBbGlnbm1lbnRSaWdodF07CisgICAgW2NvbnRlbnRW
aWV3IGFkZFN1YnZpZXc6X3JlbWFpbmluZ1RpbWVUZXh0XTsKKworICAgIFt3aW5kb3cgcmVjYWxj
dWxhdGVLZXlWaWV3TG9vcF07CisgICAgW3dpbmRvdyBzZXRJbml0aWFsRmlyc3RSZXNwb25kZXI6
X3BsYXlCdXR0b25dOworICAgIFt3aW5kb3cgY2VudGVyXTsKK30KKworLSAodm9pZCl1cGRhdGVW
b2x1bWUKK3sKKyAgICBbX3ZvbHVtZVNsaWRlciBzZXRGbG9hdFZhbHVlOltzZWxmIHZvbHVtZV1d
OworfQorCistICh2b2lkKXVwZGF0ZVRpbWUKK3sKKyAgICBbc2VsZiB1cGRhdGVWb2x1bWVdOwor
CisgICAgW190aW1lbGluZSBzZXRGbG9hdFZhbHVlOltzZWxmIGN1cnJlbnRUaW1lXV07CisgICAg
W190aW1lbGluZSBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTpbc2VsZiBkdXJh
dGlvbl1dIGZvcktleTpAIm1heFZhbHVlIl07CisKKyAgICBbX3JlbWFpbmluZ1RpbWVUZXh0IHNl
dFN0cmluZ1ZhbHVlOltzZWxmIHJlbWFpbmluZ1RpbWVUZXh0XV07CisgICAgW19lbGFwc2VkVGlt
ZVRleHQgc2V0U3RyaW5nVmFsdWU6W3NlbGYgZWxhcHNlZFRpbWVUZXh0XV07Cit9CisKKy0gKHZv
aWQpZW5kU2NydWJiaW5nCit7CisgICAgQVNTRVJUKF9pc1NjcnViYmluZyk7CisgICAgX2lzU2Ny
dWJiaW5nID0gTk87CisgICAgaWYgKEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCA9IFtf
ZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkKKyAgICAgICAgdmlkZW9FbGVtZW50LT5lbmRTY3J1YmJp
bmcoKTsKK30KKworLSAodm9pZCl0aW1lbGluZVBvc2l0aW9uQ2hhbmdlZDooaWQpc2VuZGVyCit7
CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgW3NlbGYgc2V0Q3VycmVudFRpbWU6W190
aW1lbGluZSBmbG9hdFZhbHVlXV07CisgICAgaWYgKCFfaXNTY3J1YmJpbmcpIHsKKyAgICAgICAg
X2lzU2NydWJiaW5nID0gWUVTOworICAgICAgICBpZiAoSFRNTFZpZGVvRWxlbWVudCogdmlkZW9F
bGVtZW50ID0gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQorICAgICAgICAgICAgdmlkZW9FbGVt
ZW50LT5iZWdpblNjcnViYmluZygpOworICAgICAgICBzdGF0aWMgTlNBcnJheSAqZW5kU2NydWJi
aW5nTW9kZXMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpOU0RlZmF1bHRSdW5M
b29wTW9kZSwgTlNNb2RhbFBhbmVsUnVuTG9vcE1vZGUsIG5pbF07CisgICAgICAgIC8vIFNjaGVk
dWxlIC1lbmRTY3J1YmJpbmcgZm9yIHdoZW4gbGVhdmluZyBtb3VzZSB0cmFja2luZyBtb2RlLgor
ICAgICAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gcGVyZm9ybVNlbGVjdG9yOkBzZWxl
Y3RvcihlbmRTY3J1YmJpbmcpIHRhcmdldDpzZWxmIGFyZ3VtZW50Om5pbCBvcmRlcjowIG1vZGVz
OmVuZFNjcnViYmluZ01vZGVzXTsKKyAgICB9Cit9CisKKy0gKGZsb2F0KWN1cnJlbnRUaW1lCit7
CisgICAgcmV0dXJuIFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSA/IFtfZGVsZWdhdGUgdmlkZW9F
bGVtZW50XS0+Y3VycmVudFRpbWUoKSA6IDA7Cit9CisKKy0gKHZvaWQpc2V0Q3VycmVudFRpbWU6
KGZsb2F0KWN1cnJlbnRUaW1lCit7CisgICAgaWYgKCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0p
CisgICAgICAgIHJldHVybjsKKyAgICBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPnNldEN1cnJl
bnRUaW1lKGN1cnJlbnRUaW1lKTsKKyAgICBbc2VsZiB1cGRhdGVUaW1lXTsKK30KKworLSAoZG91
YmxlKWR1cmF0aW9uCit7CisgICAgcmV0dXJuIFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSA/IFtf
ZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+ZHVyYXRpb24oKSA6IDA7Cit9CisKKy0gKGZsb2F0KW1h
eFZvbHVtZQoreworICAgIC8vIFNldCB0aGUgdm9sdW1lIHNsaWRlciByZXNvbHV0aW9uCisgICAg
cmV0dXJuIDEwMDsKK30KKworLSAodm9pZCl2b2x1bWVDaGFuZ2VkOihpZClzZW5kZXIKK3sKKyAg
ICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKKyAgICBbc2VsZiBzZXRWb2x1bWU6W192b2x1bWVTbGlk
ZXIgZmxvYXRWYWx1ZV1dOworfQorCistICh2b2lkKXNldFZvbHVtZVRvWmVybzooaWQpc2VuZGVy
Cit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgW3NlbGYgc2V0Vm9sdW1lOjBdOwor
fQorCistICh2b2lkKXNldFZvbHVtZVRvTWF4aW11bTooaWQpc2VuZGVyCit7CisgICAgVU5VU0VE
X1BBUkFNKHNlbmRlcik7CisgICAgW3NlbGYgc2V0Vm9sdW1lOltzZWxmIG1heFZvbHVtZV1dOwor
fQorCistICh2b2lkKWRlY3JlbWVudFZvbHVtZQoreworICAgIGlmICghW19kZWxlZ2F0ZSB2aWRl
b0VsZW1lbnRdKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCB2b2x1bWUgPSBbc2VsZiB2
b2x1bWVdIC0gMTA7CisgICAgW3NlbGYgc2V0Vm9sdW1lOnN0ZDo6bWF4KHZvbHVtZSwgMC4wZild
OworfQorCistICh2b2lkKWluY3JlbWVudFZvbHVtZQoreworICAgIGlmICghW19kZWxlZ2F0ZSB2
aWRlb0VsZW1lbnRdKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCB2b2x1bWUgPSBbc2Vs
ZiB2b2x1bWVdICsgMTA7CisgICAgW3NlbGYgc2V0Vm9sdW1lOnN0ZDo6bWluKHZvbHVtZSwgW3Nl
bGYgbWF4Vm9sdW1lXSldOworfQorCistIChmbG9hdCl2b2x1bWUKK3sKKyAgICByZXR1cm4gW19k
ZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdID8gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdLT52b2x1bWUo
KSAqIFtzZWxmIG1heFZvbHVtZV0gOiAwOworfQorCistICh2b2lkKXNldFZvbHVtZTooZmxvYXQp
dm9sdW1lCit7CisgICAgaWYgKCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0pCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAoW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdLT5tdXRlZCgpKQorICAgICAg
ICBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPnNldE11dGVkKGZhbHNlKTsKKyAgICBbX2RlbGVn
YXRlIHZpZGVvRWxlbWVudF0tPnNldFZvbHVtZSh2b2x1bWUgLyBbc2VsZiBtYXhWb2x1bWVdKTsK
KyAgICBbc2VsZiB1cGRhdGVWb2x1bWVdOworfQorCistICh2b2lkKXVwZGF0ZVBsYXlCdXR0b24K
K3sKKyAgICBbX3BsYXlCdXR0b24gc2V0SW50VmFsdWU6W3NlbGYgcGxheWluZ11dOworfQorCist
ICh2b2lkKXVwZGF0ZVJhdGUKK3sKKyAgICBCT09MIHBsYXlpbmcgPSBbc2VsZiBwbGF5aW5nXTsK
KworICAgIC8vIEtlZXAgdGhlIEhVRCB2aXNpYmxlIHdoZW4gcGF1c2VkLgorICAgIGlmICghcGxh
eWluZykKKyAgICAgICAgW3NlbGYgZmFkZVdpbmRvd0luXTsKKyAgICBlbHNlIGlmICghX21vdXNl
SXNJbkhVRCkgeworICAgICAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVz
dHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGZhZGVXaW5kb3dPdXQpIG9iamVj
dDpuaWxdOworICAgICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGZhZGVXaW5k
b3dPdXQpIHdpdGhPYmplY3Q6bmlsIGFmdGVyRGVsYXk6SFVEV2luZG93RmFkZU91dERlbGF5XTsK
KyAgICB9CisgICAgW3NlbGYgdXBkYXRlUGxheUJ1dHRvbl07Cit9CisKKy0gKHZvaWQpdG9nZ2xl
UGxheWluZzooaWQpc2VuZGVyCit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgW3Nl
bGYgc2V0UGxheWluZzohW3NlbGYgcGxheWluZ11dOworfQorCistIChCT09MKXBsYXlpbmcKK3sK
KyAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBbX2RlbGVnYXRlIHZpZGVvRWxl
bWVudF07CisgICAgaWYgKCF2aWRlb0VsZW1lbnQpCisgICAgICAgIHJldHVybiBOTzsKKworICAg
IHJldHVybiAhdmlkZW9FbGVtZW50LT5jYW5QbGF5KCk7Cit9CisKKy0gKHZvaWQpc2V0UGxheWlu
ZzooQk9PTClwbGF5aW5nCit7CisgICAgSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50ID0g
W19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdOworCisgICAgaWYgKCF2aWRlb0VsZW1lbnQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChwbGF5aW5nKQorICAgICAgICB2aWRlb0VsZW1lbnQtPnBs
YXkoKTsKKyAgICBlbHNlCisgICAgICAgIHZpZGVvRWxlbWVudC0+cGF1c2UoKTsKK30KKworc3Rh
dGljIE5TU3RyaW5nICp0aW1lVG9TdHJpbmcoZG91YmxlIHRpbWUpCit7CisgICAgQVNTRVJUX0FS
Ryh0aW1lLCB0aW1lID49IDApOworCisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRpbWUpKQorICAg
ICAgICB0aW1lID0gMDsKKworICAgIGludCBzZWNvbmRzID0gbmFycm93UHJlY2lzaW9uVG9GbG9h
dChzdGQ6OmFicyh0aW1lKSk7CisgICAgaW50IGhvdXJzID0gc2Vjb25kcyAvICg2MCAqIDYwKTsK
KyAgICBpbnQgbWludXRlcyA9IChzZWNvbmRzIC8gNjApICUgNjA7CisgICAgc2Vjb25kcyAlPSA2
MDsKKworICAgIGlmIChob3VycykKKyAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiJWQ6JTAyZDolMDJkIiwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHNdOworCisgICAg
cmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJTAyZDolMDJkIiwgbWludXRlcywg
c2Vjb25kc107ICAgIAorfQorCistIChOU1N0cmluZyAqKXJlbWFpbmluZ1RpbWVUZXh0Cit7Cisg
ICAgSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50ID0gW19kZWxlZ2F0ZSB2aWRlb0VsZW1l
bnRdOworICAgIGlmICghdmlkZW9FbGVtZW50KQorICAgICAgICByZXR1cm4gQCIiOworCisgICAg
ZG91YmxlIHJlbWFpbmluZ1RpbWUgPSAwOworCisgICAgaWYgKHN0ZDo6aXNmaW5pdGUodmlkZW9F
bGVtZW50LT5kdXJhdGlvbigpKSAmJiBzdGQ6OmlzZmluaXRlKHZpZGVvRWxlbWVudC0+Y3VycmVu
dFRpbWUoKSkpCisgICAgICAgIHJlbWFpbmluZ1RpbWUgPSB2aWRlb0VsZW1lbnQtPmR1cmF0aW9u
KCkgLSB2aWRlb0VsZW1lbnQtPmN1cnJlbnRUaW1lKCk7CisKKyAgICByZXR1cm4gW0AiLSIgc3Ry
aW5nQnlBcHBlbmRpbmdTdHJpbmc6dGltZVRvU3RyaW5nKHJlbWFpbmluZ1RpbWUpXTsKK30KKwor
LSAoTlNTdHJpbmcgKillbGFwc2VkVGltZVRleHQKK3sKKyAgICBpZiAoIVtfZGVsZWdhdGUgdmlk
ZW9FbGVtZW50XSkKKyAgICAgICAgcmV0dXJuIEAiIjsKKworICAgIHJldHVybiB0aW1lVG9TdHJp
bmcoW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdLT5jdXJyZW50VGltZSgpKTsKK30KKworLy8gTUFS
SzogTlNSZXNwb25kZXIKKworLSAodm9pZCltb3VzZUVudGVyZWQ6KE5TRXZlbnQgKil0aGVFdmVu
dAoreworICAgIFVOVVNFRF9QQVJBTSh0aGVFdmVudCk7CisgICAgLy8gTWFrZSBzdXJlIHRoZSBI
VUQgd29uJ3QgYmUgaGlkZGVuIGZyb20gbm93CisgICAgX21vdXNlSXNJbkhVRCA9IFlFUzsKKyAg
ICBbc2VsZiBmYWRlV2luZG93SW5dOworfQorCistICh2b2lkKW1vdXNlRXhpdGVkOihOU0V2ZW50
ICopdGhlRXZlbnQKK3sKKyAgICBVTlVTRURfUEFSQU0odGhlRXZlbnQpOworICAgIF9tb3VzZUlz
SW5IVUQgPSBOTzsKKyAgICBbc2VsZiBmYWRlV2luZG93SW5dOworfQorCistICh2b2lkKXJld2lu
ZDooaWQpc2VuZGVyCit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgaWYgKCFbX2Rl
bGVnYXRlIHZpZGVvRWxlbWVudF0pCisgICAgICAgIHJldHVybjsKKyAgICBbX2RlbGVnYXRlIHZp
ZGVvRWxlbWVudF0tPnJld2luZCgzMCk7Cit9CisKKy0gKHZvaWQpZmFzdEZvcndhcmQ6KGlkKXNl
bmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOworICAgIGlmICghW19kZWxlZ2F0ZSB2
aWRlb0VsZW1lbnRdKQorICAgICAgICByZXR1cm47Cit9CisKKy0gKHZvaWQpZXhpdEZ1bGxzY3Jl
ZW46KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOworICAgIGlmIChfaXNF
bmRpbmdGdWxsc2NyZWVuKQorICAgICAgICByZXR1cm47CisgICAgX2lzRW5kaW5nRnVsbHNjcmVl
biA9IFlFUzsKKyAgICBbX2RlbGVnYXRlIHJlcXVlc3RFeGl0RnVsbHNjcmVlbl07IAorfQorCisv
LyBNQVJLOiBOU1dpbmRvd0RlbGVnYXRlCisKKy0gKHZvaWQpd2luZG93RGlkRXhwb3NlOihOU05v
dGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRp
b24pOworICAgIFtzZWxmIHNjaGVkdWxlVGltZVVwZGF0ZV07Cit9CisKKy0gKHZvaWQpd2luZG93
RGlkQ2xvc2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7CisgICAgVU5VU0VEX1BB
UkFNKG5vdGlmaWNhdGlvbik7CisgICAgW3NlbGYgdW5zY2hlZHVsZVRpbWVVcGRhdGVdOworfQor
CitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCmluZGV4IDg1ZWFiNDg1OTY3OWRiMWZlMGU5MzhhYjM5NThiNWJiMTNhYTE5NTQuLjJkYmRk
MmNjZDUxZGJhOWQ3YjQyMmEyOGM2MzEyNDAyODg5NzRmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTI1NSw2ICsyNTUsNyBAQAogI2ltcG9ydCAi
V2ViTlNQcmludE9wZXJhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCAiV2ViUERGVmlldy5oIgogI2lt
cG9ydCAiV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmgiCisjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGV4dEluZGljYXRvcldpbmRvdy5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9BVktpdFNQSS5oPgpAQCAtOTM4Nyw3ICs5Mzg4LDYgQEAgYm9vbCBMYXllckZsdXNoQ29udHJv
bGxlcjo6Zmx1c2hMYXllcnMoKQogI2lmIEVOQUJMRShWSURFTykKIC0gKHZvaWQpX2VudGVyVmlk
ZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50OihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Kil2
aWRlb0VsZW1lbnQgbW9kZTooV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlKW1vZGUKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChf
cHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIpIHsKICAgICAgICAgaWYgKFtfcHJpdmF0ZS0+
ZnVsbHNjcmVlbkNvbnRyb2xsZXIgdmlkZW9FbGVtZW50XSA9PSB2aWRlb0VsZW1lbnQpIHsKICAg
ICAgICAgICAgIC8vIFRoZSBiYWNrZW5kIG1heSBqdXN0IHdhcm4gdXMgdGhhdCB0aGUgdW5kZXJs
YXlpbmcgcGxhZnRvcm1Nb3ZpZSgpCkBAIC05NDA1LDIyICs5NDA1LDIzIEBAIGJvb2wgTGF5ZXJG
bHVzaENvbnRyb2xsZXI6OmZsdXNoTGF5ZXJzKCkKICAgICBpZiAoIV9wcml2YXRlLT5mdWxsc2Ny
ZWVuQ29udHJvbGxlcikgewogICAgICAgICBfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIg
PSBbW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRdOwogICAgICAgICBb
X3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyIHNldFZpZGVvRWxlbWVudDp2aWRlb0VsZW1l
bnRdOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFtfcHJpdmF0ZS0+ZnVsbHNj
cmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVuOihVSVZpZXcgKilbW1tzZWxmIHdpbmRvd10g
aG9zdExheWVyXSBkZWxlZ2F0ZV0gbW9kZTptb2RlXTsKKyNlbHNlCisgICAgICAgIFtfcHJpdmF0
ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVuOltbc2VsZiB3aW5kb3ddIHNj
cmVlbl1dOworI2VuZGlmCiAgICAgfQogICAgIGVsc2UKICAgICAgICAgW19wcml2YXRlLT5mdWxs
c2NyZWVuQ29udHJvbGxlciBzZXRWaWRlb0VsZW1lbnQ6dmlkZW9FbGVtZW50XTsKLSNlbmRpZgog
fQogCiAtICh2b2lkKV9leGl0VmlkZW9GdWxsc2NyZWVuCiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBpZiAoIV9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlcikKICAgICAgICAg
cmV0dXJuOwogICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgZXhpdEZ1bGxzY3Jl
ZW5dOwogICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgcmVsZWFzZV07CiAgICAg
X3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyID0gbmlsOwotI2VuZGlmCiB9CiAKICNpZiBQ
TEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359538</attachid>
            <date>2019-01-18 14:09:49 -0800</date>
            <delta_ts>2019-01-18 15:55:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193586-20190118140944.patch</filename>
            <type>text/plain</type>
            <size>79461</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTJmOGJjNTVhOGE4Y2Y5
YWQ2M2JmZjgzY2JkMDczYjMyZGIwZGJiNi4uZTUwZDg5YjhhNWE2N2IzYTIzNDY2YzdlYzA2OTNi
Mzk0YjEzNDIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTAxLTE4ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmVydCByMjM4
ODE1LCBpdCBicm9rZSBXSzEgdmlkZW8gZnVsbHNjcmVlbiBvbiBNYWMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzU4NgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDczNTg5NDE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9ydHNG
dWxsc2NyZWVuIGNvbnN0KToKKwogMjAxOS0wMS0xNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBTREtfVkFSSUFOVCBidWlsZCBkZXN0aW5hdGlvbnMgc2hvdWxk
IGJlIHNlcGFyYXRlIGZyb20gbm9uLVNES19WQVJJQU5UIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZwppbmRleCAwMjU2YjljZGUzZDlhYjVhMmFlZGRlMjdhMjI0ZGFlNzA5Mzk1YjdmLi4yMzBiY2Zh
MjVhYjBiNGViNmQyNDg3ZWYzM2Q4NGVlZGEyNmM2MjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDE5LTAxLTE4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmVydCByMjM4ODE1LCBpdCBicm9rZSBXSzEgdmlkZW8g
ZnVsbHNjcmVlbiBvbiBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MzU4NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDczNTg5NDE+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRMZWdh
Y3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0xNyAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFN0b3AgdXNpbmcgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBpbiBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKaW5kZXggODUyOWYxODg1YzFmNDQ1ZjQ3ODBlN2ZmNzllN2E0Y2MxMWFl
YzNjZC4uMzg0MDM1ZWMwY2ZlNDlmOWMxMmZiMDdhMTAyYzNhN2NmODM1N2E4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0wMS0xOCAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZlcnQgcjIzODgx
NSwgaXQgYnJva2UgV0sxIHZpZGVvIGZ1bGxzY3JlZW4gb24gTWFjCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM1ODYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ3MzU4OTQxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmg6IEFkZGVk
LgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbTogQWRk
ZWQuCisgICAgICAgIChTT0ZUX0xJTktfQ0xBU1MpOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyIGluaXRdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXIgZnVsbHNjcmVlbldpbmRvd10pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyIHdpbmRvd0RpZExvYWRdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciB2aWRlb0VsZW1lbnRdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciBzZXRWaWRlb0VsZW1lbnQ6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXIgY2xlYXJGYWRlQW5pbWF0aW9uXSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXIgd2luZG93RGlkRXhpdEZ1bGxzY3JlZW5dKToKKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB3aW5kb3dEaWRFbnRlckZ1bGxzY3JlZW5dKToK
KyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB2aWRlb0VsZW1lbnRSZWN0
XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgYXBwbGljYXRpb25E
aWRSZXNpZ25BY3RpdmU6XSk6CisgICAgICAgIChmcmFtZUV4cGFuZGVkVG9SYXRpb09mRnJhbWUp
OgorICAgICAgICAoY3JlYXRlQmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cpOgorICAgICAgICAo
LVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHNldHVwRmFkZUFuaW1hdGlvbklmTmVlZGVk
QW5kRmFkZUluOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGVu
dGVyRnVsbHNjcmVlbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ciBleGl0RnVsbHNjcmVlbl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyIGFwcGxpY2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyczpdKToKKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB1cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxzY3Jl
ZW5dKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBfcmVxdWVzdEV4
aXRdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciByZXF1ZXN0RXhp
dEZ1bGxzY3JlZW5XaXRoQW5pbWF0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyIHJlcXVlc3RFeGl0RnVsbHNjcmVlbl0pOgorICAgICAgICAoLVtXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyIGZhZGVIVURJbl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdl
OmNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgcmF0
ZUNoYW5nZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbldpbmRvdyBpbml0V2l0
aENvbnRlbnRSZWN0OnN0eWxlTWFzazpiYWNraW5nOmRlZmVyOl0pOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5XaW5kb3cgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxz
Y3JlZW5XaW5kb3cgcmVzaWduRmlyc3RSZXNwb25kZXJdKToKKyAgICAgICAgKC1bV2ViVmlkZW9G
dWxsc2NyZWVuV2luZG93IGNhbkJlY29tZUtleVdpbmRvd10pOgorICAgICAgICAoLVtXZWJWaWRl
b0Z1bGxzY3JlZW5XaW5kb3cgbW91c2VEb3duOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxz
Y3JlZW5XaW5kb3cgY2FuY2VsT3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxz
Y3JlZW5XaW5kb3cgYW5pbWF0ZWRSZXNpemVEaWRFbmRdKToKKyAgICAgICAgKC1bV2ViVmlkZW9G
dWxsc2NyZWVuV2luZG93IGFuaW1hdGVGcm9tUmVjdDp0b1JlY3Q6d2l0aFN1YkFuaW1hdGlvbjpj
b250cm9sbGVyQWN0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cg
YW5pbWF0aW9uRGlkRW5kOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cg
bW91c2VNb3ZlZDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdp
bmRvd0NvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93IGluaXRXaXRoQ29udGVudFJlY3Q6c3R5bGVNYXNrOmJhY2tpbmc6
ZGVmZXI6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvdyBjYW5CZWNv
bWVLZXlXaW5kb3ddKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93IGNh
bmNlbE9wZXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93
IGNlbnRlcl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3cga2V5RG93
bjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93IHJlc2lnbkZpcnN0
UmVzcG9uZGVyXSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvdyBwZXJm
b3JtS2V5RXF1aXZhbGVudDpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2lu
ZG93Q29udHJvbGxlciBpbml0XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdp
bmRvd0NvbnRyb2xsZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5I
VURXaW5kb3dDb250cm9sbGVyIHNldEFyZWE6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIga2V5RG93bjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBkZWxlZ2F0ZV0pOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHNldERlbGVnYXRlOl0pOgorICAgICAg
ICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHNjaGVkdWxlVGltZVVw
ZGF0ZV0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVy
IHVuc2NoZWR1bGVUaW1lVXBkYXRlXSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhV
RFdpbmRvd0NvbnRyb2xsZXIgZmFkZVdpbmRvd0luXSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgZmFkZVdpbmRvd091dF0pOgorICAgICAgICAoLVtX
ZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIGNsb3NlV2luZG93XSk6CisgICAg
ICAgIChjcmVhdGVNZWRpYVVJQ29udHJvbCk6CisgICAgICAgIChjcmVhdGVDb250cm9sV2l0aE1l
ZGlhVUlDb250cm9sVHlwZSk6CisgICAgICAgIChjcmVhdGVUaW1lVGV4dEZpZWxkKToKKyAgICAg
ICAgKGNyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldyk6CisgICAgICAgICgtW1dlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgd2luZG93RGlkTG9hZF0pOgorICAgICAgICAoLVtX
ZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHVwZGF0ZVZvbHVtZV0pOgorICAg
ICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHVwZGF0ZVRpbWVd
KToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBlbmRT
Y3J1YmJpbmddKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJv
bGxlciB0aW1lbGluZVBvc2l0aW9uQ2hhbmdlZDpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxs
c2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBjdXJyZW50VGltZV0pOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHNldEN1cnJlbnRUaW1lOl0pOgorICAg
ICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIGR1cmF0aW9uXSk6
CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgbWF4Vm9s
dW1lXSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIg
dm9sdW1lQ2hhbmdlZDpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93
Q29udHJvbGxlciBzZXRWb2x1bWVUb1plcm86XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgc2V0Vm9sdW1lVG9NYXhpbXVtOl0pOgorICAgICAgICAo
LVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIGRlY3JlbWVudFZvbHVtZV0p
OgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIGluY3Jl
bWVudFZvbHVtZV0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250
cm9sbGVyIHZvbHVtZV0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dD
b250cm9sbGVyIHNldFZvbHVtZTpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVE
V2luZG93Q29udHJvbGxlciB1cGRhdGVQbGF5QnV0dG9uXSk6CisgICAgICAgICgtW1dlYlZpZGVv
RnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgdXBkYXRlUmF0ZV0pOgorICAgICAgICAoLVtX
ZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHRvZ2dsZVBsYXlpbmc6XSk6Cisg
ICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgcGxheWluZ10p
OgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHNldFBs
YXlpbmc6XSk6CisgICAgICAgICh0aW1lVG9TdHJpbmcpOgorICAgICAgICAoLVtXZWJWaWRlb0Z1
bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHJlbWFpbmluZ1RpbWVUZXh0XSk6CisgICAgICAg
ICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgZWxhcHNlZFRpbWVUZXh0
XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgbW91
c2VFbnRlcmVkOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250
cm9sbGVyIG1vdXNlRXhpdGVkOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURX
aW5kb3dDb250cm9sbGVyIHJld2luZDpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVu
SFVEV2luZG93Q29udHJvbGxlciBmYXN0Rm9yd2FyZDpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBleGl0RnVsbHNjcmVlbjpdKToKKyAgICAgICAg
KC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciB3aW5kb3dEaWRFeHBvc2U6
XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgd2lu
ZG93RGlkQ2xvc2U6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXZWJWaWV3IF9lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudDptb2RlOl0pOgor
ICAgICAgICAoLVtXZWJWaWV3IF9leGl0VmlkZW9GdWxsc2NyZWVuXSk6CisKIDIwMTktMDEtMTcg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgU0RLX1ZBUklBTlQg
YnVpbGQgZGVzdGluYXRpb25zIHNob3VsZCBiZSBzZXBhcmF0ZSBmcm9tIG5vbi1TREtfVkFSSUFO
VCBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggOGRkOTk5ZTIwODFmOTdiMzM0
MjM2ZjNmMzBkMDg1YmI1ZDA1ZDQ4NC4uODY2ZWE2YTU0YjlhNDJmODc4ZDRlMTliNjUwYTJjM2Mz
YmEyMDlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTM4MSw2ICszODEsOCBAQCBs
aXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tYWMvV2ViQ29yZU9iakNF
eHRyYXMubW0KICAgICBwbGF0Zm9ybS9tYWMvV2ViR0xCbGFja2xpc3QubW0KICAgICBwbGF0Zm9y
bS9tYWMvV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tCisgICAgcGxhdGZvcm0vbWFjL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0KKyAgICBwbGF0Zm9ybS9tYWMvV2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQogICAgIHBsYXRmb3JtL21hYy9XaWRnZXRN
YWMubW0KIAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDVlYTA5YjBiYzdiMWNlMTE1ODRmMmQ2ODk4MzRkYjI3NTQ4NjRiYTQu
LmZhMjNjMWY3NDNiMzQwNTQzZTIzMDNmZGY5NzdkODAwZWNiMmZlNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY0MzAsMTcg
KzY0MzAsMTYgQEAKIAkJMUM4NDBCOUEyMUVDNDAwOTAwRDA1MDBEIC8qIFdITFNMR2F0aGVyRW50
cnlQb2ludEl0ZW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODQwQjlCMjFFQzQwMDkwMEQwNTAw
RCAvKiBXSExTTENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xDaGVja2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5MDRERjkwQkE5RDJDODAwODFFOUQw
IC8qIFZlcnNpb24ueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gVmVy
c2lvbi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNBMEMyRTQyMUVF
RDEyQTAwQTExODYwIC8qIFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFDQTBDMkU1MjFFRUQxMkEwMEExMTg2MCAvKiBXSExTTEZ1bmN0aW9uU3Rh
Z2VDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM5QUU1Q0EyMUVEOURGNTAwNjlENUYyIC8q
IFdITFNMSGlnaFpvbWJpZUZpbmRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEhpZ2ha
b21iaWVGaW5kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzlBRTVDQjIx
RUQ5REY1MDA2OUQ1RjIgLyogV0hMU0xIaWdoWm9tYmllRmluZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMSGlnaFpvbWJpZUZpbmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
Q0EwQzJERTIxRUVCNUY0MDBBMTE4NjAgLyogV0hMU0xSZWN1cnNpb25DaGVja2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMUmVjdXJzaW9uQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQ0EwQzJFMDIxRUVCNUY1MDBBMTE4NjAgLyogV0hMU0xSZWN1cnNpb25DaGVja2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQTBDMkU0MjFFRUQxMkEwMEExMTg2MCAvKiBXSExT
TEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMRnVuY3Rp
b25TdGFnZUNoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0EwQzJF
NTIxRUVEMTJBMDBBMTE4NjAgLyogV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDQTBDMkVBMjFFRUQ2RjUwMEExMTg2MCAvKiBXSExTTExpdGVyYWxUeXBlQ2hl
Y2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTExpdGVyYWxUeXBlQ2hlY2tlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0EwQzJFQzIxRUVENkY2MDBBMTE4NjAgLyogV0hMU0xM
aXRlcmFsVHlwZUNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xMaXRlcmFsVHlw
ZUNoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzlBRTVDQTIxRUQ5
REY1MDA2OUQ1RjIgLyogV0hMU0xIaWdoWm9tYmllRmluZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdITFNMSGlnaFpvbWJpZUZpbmRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTFDOUFFNUNCMjFFRDlERjUwMDY5RDVGMiAvKiBXSExTTEhpZ2hab21iaWVGaW5kZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xIaWdoWm9tYmllRmluZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDQTBDMkY0MjFFRURBRDAwMEExMTg2MCAvKiBXSExTTExvb3BDaGVja2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMTG9vcENoZWNrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQ0EwQzJGNTIxRUVEQUQxMDBBMTE4NjAgLyogV0hMU0xMb29w
Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTExvb3BDaGVja2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTFDQTBDMkY2MjFFRURBRDIwMEExMTg2MCAvKiBBU1QgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGgg
PSBBU1Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQTE5RTAzMERDMjU1OTUwMDY1
QTk5NCAvKiBFdmVudExvb3BNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBFdmVudExvb3BNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
QTE5RTE1MERDMjU1Q0EwMDY1QTk5NCAvKiBFdmVudExvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRXZlbnRMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDQUYzNDdFMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2NyaXB0T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNzAzOCw2ICsxNzAzNywxMDAgQEAKIAkJCXRhYldpZHRoID0gODsK
IAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJMUNBMEMyRjYyMUVFREFEMjAwQTExODYwIC8qIEFT
VCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUM4NDBC
OTAyMUVDMzBGOTAwRDA1MDBEIC8qIFdITFNMQWRkcmVzc1NwYWNlLmggKi8sCisJCQkJQzIxQkY3
MjUyMUNEODlFMjAwMjI3OTc5IC8qIFdITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmggKi8sCisJCQkJ
QzIxQkY3MDkyMUNEODlDQTAwMjI3OTc5IC8qIFdITFNMQXJyYXlUeXBlLmggKi8sCisJCQkJQzIx
QkY3MzAyMUNEODlFRDAwMjI3OTc5IC8qIFdITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaCAqLywK
KwkJCQlDMjFCRjcwQTIxQ0Q4OUNCMDAyMjc5NzkgLyogV0hMU0xCYXNlRnVuY3Rpb25BdHRyaWJ1
dGUuaCAqLywKKwkJCQlDMjFCRjZGQTIxQ0Q4OUJFMDAyMjc5NzkgLyogV0hMU0xCYXNlU2VtYW50
aWMuaCAqLywKKwkJCQlDMjFCRjcxRTIxQ0Q4OURDMDAyMjc5NzkgLyogV0hMU0xCbG9jay5oICov
LAorCQkJCUMyMUJGNkY2MjFDRDg5QjcwMDIyNzk3OSAvKiBXSExTTEJvb2xlYW5MaXRlcmFsLmgg
Ki8sCisJCQkJQzIxQkY3MUEyMUNEODlEODAwMjI3OTc5IC8qIFdITFNMQnJlYWsuaCAqLywKKwkJ
CQlDMjEzOEExMzIxRERFQ0QzMDBGNTE2QkEgLyogV0hMU0xCdWlsdEluU2VtYW50aWMuY3BwICov
LAorCQkJCUMyMUJGNzIyMjFDRDg5REYwMDIyNzk3OSAvKiBXSExTTEJ1aWx0SW5TZW1hbnRpYy5o
ICovLAorCQkJCUMyMUJGNzE2MjFDRDg5RDUwMDIyNzk3OSAvKiBXSExTTENhbGxFeHByZXNzaW9u
LmggKi8sCisJCQkJQzIxQkY3MDYyMUNEODlDNzAwMjI3OTc5IC8qIFdITFNMQ29tbWFFeHByZXNz
aW9uLmggKi8sCisJCQkJQzIxQkY3MzMyMUNEODlGMDAwMjI3OTc5IC8qIFdITFNMQ29uc3RhbnRF
eHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY2RjUyMUNEODlCNTAwMjI3OTc5IC8qIFdITFNMQ29u
dGludWUuaCAqLywKKwkJCQlDMjFCRjcwMTIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xEZXJlZmVy
ZW5jZUV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjcxODIxQ0Q4OUQ3MDAyMjc5NzkgLyogV0hM
U0xEb3RFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY2RkIyMUNEODlCRTAwMjI3OTc5IC8qIFdI
TFNMRG9XaGlsZUxvb3AuaCAqLywKKwkJCQlDMjFCRjcyODIxQ0Q4OUU1MDAyMjc5NzkgLyogV0hM
U0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmggKi8sCisJCQkJMUM4NDBCN0QyMUVCRTBC
ODAwRDA1MDBEIC8qIFdITFNMRW50cnlQb2ludFR5cGUuaCAqLywKKwkJCQlDMjFCRjcyMDIxQ0Q4
OUREMDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCAqLywKKwkJCQlDMjFC
RjcyNjIxQ0Q4OUUzMDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oICovLAorCQkJ
CUMyMUJGNzAyMjFDRDg5QzQwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bC5oICovLAorCQkJCUMyMUJGNzBDMjFDRDg5Q0MwMDIyNzk3OSAvKiBXSExTTEV4cHJlc3Npb24u
aCAqLywKKwkJCQlDMjFCRjcwMDIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xGYWxsdGhyb3VnaC5o
ICovLAorCQkJCUMyMUJGNzM1MjFDRDg5RjIwMDIyNzk3OSAvKiBXSExTTEZsb2F0TGl0ZXJhbC5o
ICovLAorCQkJCTFDQjY5QjM4MjFERjAzRTEwMDZFODQ2QSAvKiBXSExTTEZsb2F0TGl0ZXJhbFR5
cGUuY3BwICovLAorCQkJCTFDQjY5QjM0MjFERUQ2M0EwMDZFODQ2QSAvKiBXSExTTEZsb2F0TGl0
ZXJhbFR5cGUuaCAqLywKKwkJCQlDMjFCRjczNDIxQ0Q4OUYxMDAyMjc5NzkgLyogV0hMU0xGb3JM
b29wLmggKi8sCisJCQkJQzIxQkY3MDUyMUNEODlDNzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25B
dHRyaWJ1dGUuaCAqLywKKwkJCQlDMjFCRjZGRDIxQ0Q4OUMwMDAyMjc5NzkgLyogV0hMU0xGdW5j
dGlvbkRlY2xhcmF0aW9uLmggKi8sCisJCQkJQzIxQkY2RjQyMUNEODlCMzAwMjI3OTc5IC8qIFdI
TFNMRnVuY3Rpb25EZWZpbml0aW9uLmggKi8sCisJCQkJQzIxQkY2RkYyMUNEODlDMjAwMjI3OTc5
IC8qIFdITFNMSWZTdGF0ZW1lbnQuaCAqLywKKwkJCQlDMjFCRjZGNzIxQ0Q4OUI5MDAyMjc5Nzkg
LyogV0hMU0xJbmRleEV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjBGNEY2NjIxREZGMjM2MDA3MEM0
NUEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5jcHAgKi8sCisJCQkJQzIxQkY2RjgyMUNEODlCQjAw
MjI3OTc5IC8qIFdITFNMSW50ZWdlckxpdGVyYWwuaCAqLywKKwkJCQkxQ0I2OUIzOTIxREYwM0Yz
MDA2RTg0NkEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwICovLAorCQkJCTFDQjY5QjM1
MjFERUQ2NDkwMDZFODQ2QSAvKiBXSExTTEludGVnZXJMaXRlcmFsVHlwZS5oICovLAorCQkJCUMy
MUJGNzMyMjFDRDg5RUYwMDIyNzk3OSAvKiBXSExTTExvZ2ljYWxFeHByZXNzaW9uLmggKi8sCisJ
CQkJQzIxQkY3MTUyMUNEODlENDAwMjI3OTc5IC8qIFdITFNMTG9naWNhbE5vdEV4cHJlc3Npb24u
aCAqLywKKwkJCQlDMjFCRjcyRDIxQ0Q4OUU5MDAyMjc5NzkgLyogV0hMU0xNYWtlQXJyYXlSZWZl
cmVuY2VFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY3MkMyMUNEODlFOTAwMjI3OTc5IC8qIFdI
TFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmggKi8sCisJCQkJMUMzMzI3NzEyMUNGMEJFMTAwMERD
OUYyIC8qIFdITFNMTmFtZWRUeXBlLmggKi8sCisJCQkJQzIxQkY3MjMyMUNEODlFMTAwMjI3OTc5
IC8qIFdITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oICovLAorCQkJCUMyMUJGNzJBMjFD
RDg5RTcwMDIyNzk3OSAvKiBXSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oICovLAorCQkJCUMy
MUJGNzI0MjFDRDg5RTEwMDIyNzk3OSAvKiBXSExTTE5vZGUuaCAqLywKKwkJCQlDMjFCRjcwNzIx
Q0Q4OUM4MDAyMjc5NzkgLyogV0hMU0xOdWxsTGl0ZXJhbC5oICovLAorCQkJCTFDQjY5QjNBMjFE
RjA0MDMwMDZFODQ2QSAvKiBXSExTTE51bGxMaXRlcmFsVHlwZS5jcHAgKi8sCisJCQkJMUNCNjlC
MzYyMURFRDY1NzAwNkU4NDZBIC8qIFdITFNMTnVsbExpdGVyYWxUeXBlLmggKi8sCisJCQkJQzIx
QkY3MjEyMUNEODlERTAwMjI3OTc5IC8qIFdITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRl
LmggKi8sCisJCQkJQzIxQkY3MkYyMUNEODlFQzAwMjI3OTc5IC8qIFdITFNMUG9pbnRlclR5cGUu
aCAqLywKKwkJCQlDMjFCRjcyRTIxQ0Q4OUVBMDAyMjc5NzkgLyogV0hMU0xQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjcwQjIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xR
dWFsaWZpZXIuaCAqLywKKwkJCQlDMjFCRjcxQjIxQ0Q4OUQ5MDAyMjc5NzkgLyogV0hMU0xSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY3MEQyMUNEODlDRDAwMjI3OTc5
IC8qIFdITFNMUmVmZXJlbmNlVHlwZS5oICovLAorCQkJCTFDQjY5QjMyMjFERUQ0MEIwMDZFODQ2
QSAvKiBXSExTTFJlc29sdmFibGVUeXBlLmggKi8sCisJCQkJQzIxMzhBMTUyMURERUNFOTAwRjUx
NkJBIC8qIFdITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAgKi8sCisJCQkJQzIxQkY3MDgyMUNEODlD
OTAwMjI3OTc5IC8qIFdITFNMUmVzb3VyY2VTZW1hbnRpYy5oICovLAorCQkJCUMyMUJGNzAzMjFD
RDg5QzUwMDIyNzk3OSAvKiBXSExTTFJldHVybi5oICovLAorCQkJCUMyMUJGNkY5MjFDRDg5QkQw
MDIyNzk3OSAvKiBXSExTTFNlbWFudGljLmggKi8sCisJCQkJQzIxMzhBMTYyMURERUNGQjAwRjUx
NkJBIC8qIFdITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmNwcCAqLywKKwkJCQlD
MjFCRjczNjIxQ0Q4OUYzMDAyMjc5NzkgLyogV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2Vt
YW50aWMuaCAqLywKKwkJCQlDMjEzOEExNzIxRERFRDBEMDBGNTE2QkEgLyogV0hMU0xTdGFnZUlu
T3V0U2VtYW50aWMuY3BwICovLAorCQkJCUMyMUJGNzBFMjFDRDg5Q0UwMDIyNzk3OSAvKiBXSExT
TFN0YWdlSW5PdXRTZW1hbnRpYy5oICovLAorCQkJCUMyMUJGNzEyMjFDRDg5RDEwMDIyNzk3OSAv
KiBXSExTTFN0YXRlbWVudC5oICovLAorCQkJCUMyMUJGNzI3MjFDRDg5RTQwMDIyNzk3OSAvKiBX
SExTTFN0cnVjdHVyZURlZmluaXRpb24uaCAqLywKKwkJCQlDMjFCRjZGRTIxQ0Q4OUMxMDAyMjc5
NzkgLyogV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmggKi8sCisJCQkJQzIxQkY3MTkyMUNEODlENzAw
MjI3OTc5IC8qIFdITFNMU3dpdGNoQ2FzZS5oICovLAorCQkJCUMyMUJGNzMxMjFDRDg5RUUwMDIy
Nzk3OSAvKiBXSExTTFN3aXRjaFN0YXRlbWVudC5oICovLAorCQkJCUMyMUJGNzFDMjFDRDg5REEw
MDIyNzk3OSAvKiBXSExTTFRlcm5hcnlFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY2RjMyMUNE
ODlBRDAwMjI3OTc5IC8qIFdITFNMVHJhcC5oICovLAorCQkJCUMyMUJGNzFEMjFDRDg5REIwMDIy
Nzk3OSAvKiBXSExTTFR5cGUuaCAqLywKKwkJCQlDMjg4QzcyRDIxQzk5MURBMDAyREY1Q0EgLyog
V0hMU0xUeXBlQXJndW1lbnQuY3BwICovLAorCQkJCUMyMUJGNzExMjFDRDg5RDEwMDIyNzk3OSAv
KiBXSExTTFR5cGVBcmd1bWVudC5oICovLAorCQkJCUMyMUJGNzI5MjFDRDg5RTYwMDIyNzk3OSAv
KiBXSExTTFR5cGVEZWZpbml0aW9uLmggKi8sCisJCQkJQzIwRjRGNjQyMURGQkU1QzAwNzBDNDVB
IC8qIFdITFNMVHlwZVJlZmVyZW5jZS5jcHAgKi8sCisJCQkJQzIxQkY3MUYyMUNEODlEQzAwMjI3
OTc5IC8qIFdITFNMVHlwZVJlZmVyZW5jZS5oICovLAorCQkJCTFDMzMyNzcyMjFDRjBEMkUwMDBE
QzlGMiAvKiBXSExTTFVubmFtZWRUeXBlLmggKi8sCisJCQkJQzIwRjRGNjcyMURGRjNBNzAwNzBD
NDVBIC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHAgKi8sCisJCQkJQzIxQkY3MkIy
MUNEODlFODAwMjI3OTc5IC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oICovLAorCQkJ
CTFDQjY5QjNCMjFERjA0MUUwMDZFODQ2QSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlLmNwcCAqLywKKwkJCQkxQ0I2OUIzNzIxREVENjZCMDA2RTg0NkEgLyogV0hMU0xVbnNpZ25l
ZEludGVnZXJMaXRlcmFsVHlwZS5oICovLAorCQkJCUMyMUJGNkZDMjFDRDg5QkYwMDIyNzk3OSAv
KiBXSExTTFZhbHVlLmggKi8sCisJCQkJQzIxQkY3MTAyMUNEODlEMDAwMjI3OTc5IC8qIFdITFNM
VmFyaWFibGVEZWNsYXJhdGlvbi5oICovLAorCQkJCUMyMUJGNzE0MjFDRDg5RDMwMDIyNzk3OSAv
KiBXSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmggKi8sCisJCQkJQzIxQkY3MTMy
MUNEODlEMjAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVSZWZlcmVuY2UuaCAqLywKKwkJCQlDMjFC
RjcwNDIxQ0Q4OUM2MDAyMjc5NzkgLyogV0hMU0xXaGlsZUxvb3AuaCAqLywKKwkJCSk7CisJCQlw
YXRoID0gQVNUOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMUNERDQ0NjYw
QkE5QzgwMDAwRjkwMTQ3IC8qIENvbmZpZ3VyYXRpb25zICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI1NTE1LDEwMCArMjU2MDgsNiBAQAogCQkJcGF0aCA9
IFdITFNMOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJMUNBMEMyRjYyMUVF
REFEMjAwQTExODYwIC8qIEFTVCAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJMUM4NDBCOTAyMUVDMzBGOTAwRDA1MDBEIC8qIFdITFNMQWRkcmVzc1NwYWNl
LmggKi8sCi0JCQkJQzIxQkY3MjUyMUNEODlFMjAwMjI3OTc5IC8qIFdITFNMQXJyYXlSZWZlcmVu
Y2VUeXBlLmggKi8sCi0JCQkJQzIxQkY3MDkyMUNEODlDQTAwMjI3OTc5IC8qIFdITFNMQXJyYXlU
eXBlLmggKi8sCi0JCQkJQzIxQkY3MzAyMUNEODlFRDAwMjI3OTc5IC8qIFdITFNMQXNzaWdubWVu
dEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcwQTIxQ0Q4OUNCMDAyMjc5NzkgLyogV0hMU0xC
YXNlRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLywKLQkJCQlDMjFCRjZGQTIxQ0Q4OUJFMDAyMjc5Nzkg
LyogV0hMU0xCYXNlU2VtYW50aWMuaCAqLywKLQkJCQlDMjFCRjcxRTIxQ0Q4OURDMDAyMjc5Nzkg
LyogV0hMU0xCbG9jay5oICovLAotCQkJCUMyMUJGNkY2MjFDRDg5QjcwMDIyNzk3OSAvKiBXSExT
TEJvb2xlYW5MaXRlcmFsLmggKi8sCi0JCQkJQzIxQkY3MUEyMUNEODlEODAwMjI3OTc5IC8qIFdI
TFNMQnJlYWsuaCAqLywKLQkJCQlDMjEzOEExMzIxRERFQ0QzMDBGNTE2QkEgLyogV0hMU0xCdWls
dEluU2VtYW50aWMuY3BwICovLAotCQkJCUMyMUJGNzIyMjFDRDg5REYwMDIyNzk3OSAvKiBXSExT
TEJ1aWx0SW5TZW1hbnRpYy5oICovLAotCQkJCUMyMUJGNzE2MjFDRDg5RDUwMDIyNzk3OSAvKiBX
SExTTENhbGxFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MDYyMUNEODlDNzAwMjI3OTc5IC8q
IFdITFNMQ29tbWFFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MzMyMUNEODlGMDAwMjI3OTc5
IC8qIFdITFNMQ29uc3RhbnRFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY2RjUyMUNEODlCNTAw
MjI3OTc5IC8qIFdITFNMQ29udGludWUuaCAqLywKLQkJCQlDMjFCRjcwMTIxQ0Q4OUM0MDAyMjc5
NzkgLyogV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcxODIxQ0Q4
OUQ3MDAyMjc5NzkgLyogV0hMU0xEb3RFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY2RkIyMUNE
ODlCRTAwMjI3OTc5IC8qIFdITFNMRG9XaGlsZUxvb3AuaCAqLywKLQkJCQlDMjFCRjcyODIxQ0Q4
OUU1MDAyMjc5NzkgLyogV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmggKi8sCi0J
CQkJMUM4NDBCN0QyMUVCRTBCODAwRDA1MDBEIC8qIFdITFNMRW50cnlQb2ludFR5cGUuaCAqLywK
LQkJCQlDMjFCRjcyMDIxQ0Q4OUREMDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRp
b24uaCAqLywKLQkJCQlDMjFCRjcyNjIxQ0Q4OUUzMDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlv
bk1lbWJlci5oICovLAotCQkJCUMyMUJGNzAyMjFDRDg5QzQwMDIyNzk3OSAvKiBXSExTTEVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbC5oICovLAotCQkJCUMyMUJGNzBDMjFDRDg5Q0MwMDIyNzk3OSAv
KiBXSExTTEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcwMDIxQ0Q4OUMyMDAyMjc5NzkgLyog
V0hMU0xGYWxsdGhyb3VnaC5oICovLAotCQkJCUMyMUJGNzM1MjFDRDg5RjIwMDIyNzk3OSAvKiBX
SExTTEZsb2F0TGl0ZXJhbC5oICovLAotCQkJCTFDQjY5QjM4MjFERjAzRTEwMDZFODQ2QSAvKiBX
SExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwICovLAotCQkJCTFDQjY5QjM0MjFERUQ2M0EwMDZFODQ2
QSAvKiBXSExTTEZsb2F0TGl0ZXJhbFR5cGUuaCAqLywKLQkJCQlDMjFCRjczNDIxQ0Q4OUYxMDAy
Mjc5NzkgLyogV0hMU0xGb3JMb29wLmggKi8sCi0JCQkJQzIxQkY3MDUyMUNEODlDNzAwMjI3OTc5
IC8qIFdITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLywKLQkJCQlDMjFCRjZGRDIxQ0Q4OUMwMDAy
Mjc5NzkgLyogV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmggKi8sCi0JCQkJQzIxQkY2RjQyMUNE
ODlCMzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25EZWZpbml0aW9uLmggKi8sCi0JCQkJQzIxQkY2
RkYyMUNEODlDMjAwMjI3OTc5IC8qIFdITFNMSWZTdGF0ZW1lbnQuaCAqLywKLQkJCQlDMjFCRjZG
NzIxQ0Q4OUI5MDAyMjc5NzkgLyogV0hMU0xJbmRleEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjBG
NEY2NjIxREZGMjM2MDA3MEM0NUEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5jcHAgKi8sCi0JCQkJ
QzIxQkY2RjgyMUNEODlCQjAwMjI3OTc5IC8qIFdITFNMSW50ZWdlckxpdGVyYWwuaCAqLywKLQkJ
CQkxQ0I2OUIzOTIxREYwM0YzMDA2RTg0NkEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3Bw
ICovLAotCQkJCTFDQjY5QjM1MjFERUQ2NDkwMDZFODQ2QSAvKiBXSExTTEludGVnZXJMaXRlcmFs
VHlwZS5oICovLAotCQkJCUMyMUJGNzMyMjFDRDg5RUYwMDIyNzk3OSAvKiBXSExTTExvZ2ljYWxF
eHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MTUyMUNEODlENDAwMjI3OTc5IC8qIFdITFNMTG9n
aWNhbE5vdEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcyRDIxQ0Q4OUU5MDAyMjc5NzkgLyog
V0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MkMyMUNE
ODlFOTAwMjI3OTc5IC8qIFdITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmggKi8sCi0JCQkJMUMz
MzI3NzEyMUNGMEJFMTAwMERDOUYyIC8qIFdITFNMTmFtZWRUeXBlLmggKi8sCi0JCQkJQzIxQkY3
MjMyMUNEODlFMTAwMjI3OTc5IC8qIFdITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oICov
LAotCQkJCUMyMUJGNzJBMjFDRDg5RTcwMDIyNzk3OSAvKiBXSExTTE5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5oICovLAotCQkJCUMyMUJGNzI0MjFDRDg5RTEwMDIyNzk3OSAvKiBXSExTTE5vZGUuaCAq
LywKLQkJCQlDMjFCRjcwNzIxQ0Q4OUM4MDAyMjc5NzkgLyogV0hMU0xOdWxsTGl0ZXJhbC5oICov
LAotCQkJCTFDQjY5QjNBMjFERjA0MDMwMDZFODQ2QSAvKiBXSExTTE51bGxMaXRlcmFsVHlwZS5j
cHAgKi8sCi0JCQkJMUNCNjlCMzYyMURFRDY1NzAwNkU4NDZBIC8qIFdITFNMTnVsbExpdGVyYWxU
eXBlLmggKi8sCi0JCQkJQzIxQkY3MjEyMUNEODlERTAwMjI3OTc5IC8qIFdITFNMTnVtVGhyZWFk
c0Z1bmN0aW9uQXR0cmlidXRlLmggKi8sCi0JCQkJQzIxQkY3MkYyMUNEODlFQzAwMjI3OTc5IC8q
IFdITFNMUG9pbnRlclR5cGUuaCAqLywKLQkJCQlDMjFCRjcyRTIxQ0Q4OUVBMDAyMjc5NzkgLyog
V0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcwQjIxQ0Q4OUND
MDAyMjc5NzkgLyogV0hMU0xRdWFsaWZpZXIuaCAqLywKLQkJCQlDMjFCRjcxQjIxQ0Q4OUQ5MDAy
Mjc5NzkgLyogV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3
MEQyMUNEODlDRDAwMjI3OTc5IC8qIFdITFNMUmVmZXJlbmNlVHlwZS5oICovLAotCQkJCTFDQjY5
QjMyMjFERUQ0MEIwMDZFODQ2QSAvKiBXSExTTFJlc29sdmFibGVUeXBlLmggKi8sCi0JCQkJQzIx
MzhBMTUyMURERUNFOTAwRjUxNkJBIC8qIFdITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAgKi8sCi0J
CQkJQzIxQkY3MDgyMUNEODlDOTAwMjI3OTc5IC8qIFdITFNMUmVzb3VyY2VTZW1hbnRpYy5oICov
LAotCQkJCUMyMUJGNzAzMjFDRDg5QzUwMDIyNzk3OSAvKiBXSExTTFJldHVybi5oICovLAotCQkJ
CUMyMUJGNkY5MjFDRDg5QkQwMDIyNzk3OSAvKiBXSExTTFNlbWFudGljLmggKi8sCi0JCQkJQzIx
MzhBMTYyMURERUNGQjAwRjUxNkJBIC8qIFdITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFu
dGljLmNwcCAqLywKLQkJCQlDMjFCRjczNjIxQ0Q4OUYzMDAyMjc5NzkgLyogV0hMU0xTcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMuaCAqLywKLQkJCQlDMjEzOEExNzIxRERFRDBEMDBGNTE2
QkEgLyogV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwICovLAotCQkJCUMyMUJGNzBFMjFDRDg5
Q0UwMDIyNzk3OSAvKiBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oICovLAotCQkJCUMyMUJGNzEy
MjFDRDg5RDEwMDIyNzk3OSAvKiBXSExTTFN0YXRlbWVudC5oICovLAotCQkJCUMyMUJGNzI3MjFD
RDg5RTQwMDIyNzk3OSAvKiBXSExTTFN0cnVjdHVyZURlZmluaXRpb24uaCAqLywKLQkJCQlDMjFC
RjZGRTIxQ0Q4OUMxMDAyMjc5NzkgLyogV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmggKi8sCi0JCQkJ
QzIxQkY3MTkyMUNEODlENzAwMjI3OTc5IC8qIFdITFNMU3dpdGNoQ2FzZS5oICovLAotCQkJCUMy
MUJGNzMxMjFDRDg5RUUwMDIyNzk3OSAvKiBXSExTTFN3aXRjaFN0YXRlbWVudC5oICovLAotCQkJ
CUMyMUJGNzFDMjFDRDg5REEwMDIyNzk3OSAvKiBXSExTTFRlcm5hcnlFeHByZXNzaW9uLmggKi8s
Ci0JCQkJQzIxQkY2RjMyMUNEODlBRDAwMjI3OTc5IC8qIFdITFNMVHJhcC5oICovLAotCQkJCUMy
MUJGNzFEMjFDRDg5REIwMDIyNzk3OSAvKiBXSExTTFR5cGUuaCAqLywKLQkJCQlDMjg4QzcyRDIx
Qzk5MURBMDAyREY1Q0EgLyogV0hMU0xUeXBlQXJndW1lbnQuY3BwICovLAotCQkJCUMyMUJGNzEx
MjFDRDg5RDEwMDIyNzk3OSAvKiBXSExTTFR5cGVBcmd1bWVudC5oICovLAotCQkJCUMyMUJGNzI5
MjFDRDg5RTYwMDIyNzk3OSAvKiBXSExTTFR5cGVEZWZpbml0aW9uLmggKi8sCi0JCQkJQzIwRjRG
NjQyMURGQkU1QzAwNzBDNDVBIC8qIFdITFNMVHlwZVJlZmVyZW5jZS5jcHAgKi8sCi0JCQkJQzIx
QkY3MUYyMUNEODlEQzAwMjI3OTc5IC8qIFdITFNMVHlwZVJlZmVyZW5jZS5oICovLAotCQkJCTFD
MzMyNzcyMjFDRjBEMkUwMDBEQzlGMiAvKiBXSExTTFVubmFtZWRUeXBlLmggKi8sCi0JCQkJQzIw
RjRGNjcyMURGRjNBNzAwNzBDNDVBIC8qIFdITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5jcHAg
Ki8sCi0JCQkJQzIxQkY3MkIyMUNEODlFODAwMjI3OTc5IC8qIFdITFNMVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbC5oICovLAotCQkJCTFDQjY5QjNCMjFERjA0MUUwMDZFODQ2QSAvKiBXSExTTFVuc2ln
bmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcCAqLywKLQkJCQkxQ0I2OUIzNzIxREVENjZCMDA2RTg0
NkEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oICovLAotCQkJCUMyMUJGNkZD
MjFDRDg5QkYwMDIyNzk3OSAvKiBXSExTTFZhbHVlLmggKi8sCi0JCQkJQzIxQkY3MTAyMUNEODlE
MDAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oICovLAotCQkJCUMyMUJGNzE0
MjFDRDg5RDMwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Lmgg
Ki8sCi0JCQkJQzIxQkY3MTMyMUNEODlEMjAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVSZWZlcmVu
Y2UuaCAqLywKLQkJCQlDMjFCRjcwNDIxQ0Q4OUM2MDAyMjc5NzkgLyogV0hMU0xXaGlsZUxvb3Au
aCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gQVNUOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
LQkJfTsKIAkJQzk2RjVFQkYxQjU4NzIyNjAwOTFFQTlEIC8qIG1lZGlhc2Vzc2lvbiAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0zMjQ0Miw2ICszMjQ0MSw3
IEBACiAJCQkJU3BhbmlzaCwKIAkJCQlEdXRjaCwKIAkJCQlJdGFsaWFuLAorCQkJCWVuLAogCQkJ
KTsKIAkJCW1haW5Hcm91cCA9IDA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJDb3JlICov
OwogCQkJcHJvZHVjdFJlZkdyb3VwID0gMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1
Y3RzICovOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcAppbmRleCAzMTAzMDczN2JiZmFjY2RjYTY3ZjljNWQ5OGY0NTliOWE4NmQw
ZGIzLi4yODk5MjMxNGVjOWM5MGVkZjhjNTMzM2FiMTA2Y2FkYzQ2ZjZhNDU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApA
QCAtNDU4LDExICs0NTgsMTQgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246
OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQogICAgIHJldHVybiB0cnVlOwotI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNlbHNlCisg
ICAgLy8gRklYTUU6IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgYXNzdW1lcyBhIFFUS2l0
L1F1aWNrVGltZSBtZWRpYSBlbmdpbmUKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlm
IChEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OmF2S2l0RW5hYmxlZCgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjIwOTAwNDRmYzQ3OTk0YTViNmQ0MWM3ZTVh
YTdjM2Q3YWMwNWVkZi4uYjNjYTJmODE5NzNmZDQyNjY1ZmFjYmRlNjIxMTVmYTdhZWYxZDVkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYktpdExlZ2FjeS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NzUsNiArNzc1LDggQEAKIAkJQzBDNUIzRUYxMTc3
QTRBMDAwMkIwQUVGIC8qIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQzVCM0VEMTE3N0E0QTAwMDJCMEFF
RiAvKiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0gKi87IH07CiAJCUMxMUVCRjQxMjE0MTlD
Q0UwMEQ2NTlFNyAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzExRUJGM0YyMTQxOUNDRTAwRDY1OUU3IC8q
IFdlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHAgKi87IH07CiAJCUMxMUVCRjQyMjE0MTlDQ0UwMEQ2
NTlFNyAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMUVCRjQwMjE0MTlDQ0UwMEQ2NTlFNyAvKiBXZWJTd2l0
Y2hpbmdHUFVDbGllbnQuaCAqLzsgfTsKKwkJQzFEODExMjgyMDJDRDgwMDAwRUU3NEY5IC8qIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMUQ4MTEyNzIwMkNEODAwMDBFRTc0RjkgLyogV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlci5tbSAqLzsgfTsKKwkJQzFEODExMkIyMDJDRENDNDAwRUU3NEY5
IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUQ4MTEyOTIwMkNEQ0MyMDBFRTc0
RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSAqLzsgfTsKIAkJ
QzFEODExMkUyMDJDRUQwODAwRUU3NEY5IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxRDgxMTJEMjAyQ0VEMDcw
MEVFNzRGOSAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi87IH07CiAJCUNEOEJGQ0U3MTU1MzEy
MjQwMDVBRkIyNSAvKiBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhCRkNFNTE1NTMxMjI0MDA1QUZCMjUg
LyogV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyLm1tICovOyB9OwogCQlDRDhCRkNFODE1NTMxMjI0
MDA1QUZCMjUgLyogV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhCRkNFNjE1NTMxMjI0MDA1QUZCMjUgLyog
V2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyLmggKi87IH07CkBAIC0xNTMwLDYgKzE1MzIsMTAgQEAK
IAkJQzBDNUIzRUQxMTc3QTRBMDAwMkIwQUVGIC8qIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybi5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50
VVJMUGF0dGVybi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzExRUJGM0YyMTQx
OUNDRTAwRDY1OUU3IC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMTFFQkY0MDIxNDE5Q0NFMDBENjU5RTcgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlN3aXRjaGluZ0dQVUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMUQ4MTEyNjIwMkNEN0ZFMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMx
RDgxMTI3MjAyQ0Q4MDAwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzFEODExMjky
MDJDRENDMjAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMUQ4MTEyQTIwMkNEQ0MzMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93
Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWRlb0Z1
bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMxRDgxMTJDMjAyQ0VEMDYwMEVFNzRGOSAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViV2luZG93QW5pbWF0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRDgxMTJEMjAyQ0VEMDcwMEVFNzRGOSAvKiBXZWJX
aW5kb3dBbmltYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJXaW5kb3dBbmltYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
OEJGQ0U1MTU1MzEyMjQwMDVBRkIyNSAvKiBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJLaXRGdWxsU2NyZWVuTGlz
dGVuZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDc5LDYgKzIwODUsMTAg
QEAKIAkJCQlGODM0QUFENjBFNjRCMUM3MDBFMjczN0MgLyogV2ViVGV4dEl0ZXJhdG9yLm1tICov
LAogCQkJCTUxNUUyN0NDMDQ1OEM4NjUwMENBMkQzQSAvKiBXZWJVSURlbGVnYXRlLmggKi8sCiAJ
CQkJNjVBN0Q0NEEwNTY4QUIyNjAwRTcwRUY2IC8qIFdlYlVJRGVsZWdhdGVQcml2YXRlLmggKi8s
CisJCQkJQzFEODExMjYyMDJDRDdGRTAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIuaCAqLywKKwkJCQlDMUQ4MTEyNzIwMkNEODAwMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlci5tbSAqLywKKwkJCQlDMUQ4MTEyQTIwMkNEQ0MzMDBFRTc0RjkgLyog
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oICovLAorCQkJCUMxRDgxMTI5
MjAyQ0RDQzIwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVy
Lm1tICovLAogCQkJCTUxQThCNTc5MDQyODM0RjcwMENBMkQzQSAvKiBXZWJWaWV3LmggKi8sCiAJ
CQkJNTFBOEI1N0EwNDI4MzRGNzAwQ0EyRDNBIC8qIFdlYlZpZXcubW0gKi8sCiAJCQkJQkMyRTQ2
NEIwRkQ4QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdEYXRhLmggKi8sCkBAIC0zMjM0LDYgKzMyNDQs
NyBAQAogCQkJCVNwYW5pc2gsCiAJCQkJRHV0Y2gsCiAJCQkJSXRhbGlhbiwKKwkJCQllbiwKIAkJ
CSk7CiAJCQltYWluR3JvdXAgPSAwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0ICov
OwogCQkJcHJvZHVjdFJlZkdyb3VwID0gMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1
Y3RzICovOwpAQCAtMzY4Myw2ICszNjk0LDggQEAKIAkJCQk5Mzk4MTBCRTA4MjRCRjAxMDA4REYw
MzggLyogV2ViVVJMc1dpdGhUaXRsZXMubSBpbiBTb3VyY2VzICovLAogCQkJCUMwQzVCM0VGMTE3
N0E0QTAwMDJCMEFFRiAvKiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0gaW4gU291cmNlcyAq
LywKIAkJCQk0NjE4REZGOTFERUY3NjBBMDAzM0MzQUEgLyogV2ViVmFsaWRhdGlvbk1lc3NhZ2VD
bGllbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQlDMUQ4MTEyODIwMkNEODAwMDBFRTc0RjkgLyog
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUMxRDgx
MTJCMjAyQ0RDQzQwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9s
bGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODExMDcwODI0QkYwMTAwOERGMDM4IC8qIFdl
YlZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzJFNDY0RTBGRDhBOTY4MDBBOUQ5REUgLyog
V2ViVmlld0RhdGEubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNDMwQzEyQzFCMkM1REY3MDBERUEw
MUQgLyogV2ViVmlld0dyb3VwLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNTc1NzhiZmMwMDI2NGU0ZjQxYjVlZTlmNjg4YTI2YzI4YWQ0
NGEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPKQorCisjaW1wb3J0IDxB
cHBLaXQvTlNXaW5kb3dDb250cm9sbGVyLmg+CisjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7Cit9CisKK0BjbGFzcyBX
ZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyOworQGNsYXNzIFdlYldpbmRvd0Zh
ZGVBbmltYXRpb247CisKK0BpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciA6
IE5TV2luZG93Q29udHJvbGxlciB7CisgICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1l
bnQ+IF92aWRlb0VsZW1lbnQ7CisKKyAgICBOU1dpbmRvdyAqX2JhY2tncm91bmRGdWxsc2NyZWVu
V2luZG93OyAvLyAocmV0YWluKQorICAgIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRy
b2xsZXIgKl9odWRDb250cm9sbGVyOyAvLyAocmV0YWluKQorCisgICAgV2ViV2luZG93RmFkZUFu
aW1hdGlvbiAqX2ZhZGVBbmltYXRpb247IC8vIChyZXRhaW4pCisKKyAgICBCT09MIF9pc0VuZGlu
Z0Z1bGxzY3JlZW47CisgICAgQk9PTCBfZm9yY2VEaXNhYmxlQW5pbWF0aW9uOworfQorCistICh2
b2lkKXNldFZpZGVvRWxlbWVudDooV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCAqKXZpZGVvRWxl
bWVudDsKKy0gKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQgKil2aWRlb0VsZW1lbnQ7CisKKy0g
KHZvaWQpZW50ZXJGdWxsc2NyZWVuOihOU1NjcmVlbiAqKXNjcmVlbjsKKy0gKHZvaWQpZXhpdEZ1
bGxzY3JlZW47CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzZlMDcxNjRjYWYwNWNhNDgxOWUzMGE3ODZkY2M4YWQ4M2Q2MDUzMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlci5tbQpAQCAtMCwwICsxLDUxMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oIgorCisjaWYgRU5BQkxF
KFZJREVPKSAmJiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbkhV
RFdpbmRvd0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldlYldpbmRvd0FuaW1hdGlvbi5oIgorI2lt
cG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyLmg+CisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQ
bGF5ZXJMYXllci5oPgorI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MVmlkZW9FbGVtZW50Lmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQg
PHBhbC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgor
I2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCisKK1NPRlRfTElOS19GUkFNRVdPUksoQVZGb3VuZGF0aW9uKQorU09GVF9MSU5L
X0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJMYXllcikKKworQGludGVyZmFjZSBXZWJWaWRl
b0Z1bGxzY3JlZW5XaW5kb3cgOiBOU1dpbmRvdzxOU0FuaW1hdGlvbkRlbGVnYXRlPiB7CisgICAg
U0VMIF9jb250cm9sbGVyQWN0aW9uT25BbmltYXRpb25FbmQ7CisgICAgV2ViV2luZG93U2NhbGVB
bmltYXRpb24gKl9mdWxsc2NyZWVuQW5pbWF0aW9uOyAvLyAocmV0YWluKQorfQorLSAodm9pZClh
bmltYXRlRnJvbVJlY3Q6KE5TUmVjdClzdGFydFJlY3QgdG9SZWN0OihOU1JlY3QpZW5kUmVjdCB3
aXRoU3ViQW5pbWF0aW9uOihOU0FuaW1hdGlvbiAqKXN1YkFuaW1hdGlvbiBjb250cm9sbGVyQWN0
aW9uOihTRUwpY29udHJvbGxlckFjdGlvbjsKK0BlbmQKKworQGludGVyZmFjZSBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyICgpIDxXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9s
bGVyRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyCisKKy0gKGlkKWluaXQKK3sKKyAgICAvLyBEbyBub3QgZGVmZXIgd2luZG93IGNy
ZWF0aW9uLCB0byBtYWtlIHN1cmUgLXdpbmRvd051bWJlciBpcyBjcmVhdGVkIChuZWVkZWQgYnkg
V2ViV2luZG93U2NhbGVBbmltYXRpb24pLgorICAgIE5TV2luZG93ICp3aW5kb3cgPSBbW1dlYlZp
ZGVvRnVsbHNjcmVlbldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU1plcm9SZWN0
IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVC
dWZmZXJlZCBkZWZlcjpOT107CisgICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aFdpbmRvdzp3aW5k
b3ddOworICAgIFt3aW5kb3cgcmVsZWFzZV07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1
cm4gbmlsOworICAgIFtzZWxmIHdpbmRvd0RpZExvYWRdOworICAgIHJldHVybiBzZWxmOworICAg
IAorfQorLSAodm9pZClkZWFsbG9jCit7CisgICAgQVNTRVJUKCFfYmFja2dyb3VuZEZ1bGxzY3Jl
ZW5XaW5kb3cpOworICAgIEFTU0VSVCghX2ZhZGVBbmltYXRpb24pOworICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CisgICAgW3N1
cGVyIGRlYWxsb2NdOworfQorCistIChXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgKilmdWxsc2Ny
ZWVuV2luZG93Cit7CisgICAgcmV0dXJuIChXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgKilbc3Vw
ZXIgd2luZG93XTsKK30KKworLSAodm9pZCl3aW5kb3dEaWRMb2FkCit7CisgICAgYXV0byB3aW5k
b3cgPSBbc2VsZiBmdWxsc2NyZWVuV2luZG93XTsKKyAgICBhdXRvIGNvbnRlbnRWaWV3ID0gW3dp
bmRvdyBjb250ZW50Vmlld107CisKKyAgICBbd2luZG93IHNldEhhc1NoYWRvdzpZRVNdOyAvLyBU
aGlzIGlzIG5pY2VyIHdpdGggYSBzaGFkb3cuCisgICAgW3dpbmRvdyBzZXRMZXZlbDpOU1BvcFVw
TWVudVdpbmRvd0xldmVsLTFdOworCisgICAgW2NvbnRlbnRWaWV3IHNldExheWVyOltDQUxheWVy
IGxheWVyXV07CisgICAgW2NvbnRlbnRWaWV3IHNldFdhbnRzTGF5ZXI6WUVTXTsKKworICAgIFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxl
Y3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRSZXNpZ25BY3RpdmU6KSBuYW1lOk5TQXBwbGlj
YXRpb25EaWRSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Ok5TQXBwXTsKKyAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0
b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyczopIG5hbWU6
TlNBcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnNOb3RpZmljYXRpb24gb2JqZWN0
Ok5TQXBwXTsKK30KKworLSAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCAqKXZpZGVvRWxlbWVu
dAoreworICAgIHJldHVybiBfdmlkZW9FbGVtZW50LmdldCgpOworfQorCisvLyBGSVhNRTogVGhp
cyBtZXRob2QgaXMgbm90IHJlYWxseSBhIHNldHRlci4gVGhlIGNhbGxlciByZWxpZXMgb24gaXRz
IHNpZGUgZWZmZWN0cywgYW5kIGl0J3MKKy8vIGNhbGxlZCBvbmNlIGVhY2ggdGltZSB3ZSBlbnRl
ciBmdWxsIHNjcmVlbi4gU28gaXQgc2hvdWxkIGhhdmUgYSBkaWZmZXJlbnQgbmFtZS4KKy0gKHZv
aWQpc2V0VmlkZW9FbGVtZW50OihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50ICopdmlkZW9FbGVt
ZW50Cit7CisgICAgQVNTRVJUKHZpZGVvRWxlbWVudCk7CisgICAgX3ZpZGVvRWxlbWVudCA9IHZp
ZGVvRWxlbWVudDsKKworICAgIGlmICghW3NlbGYgaXNXaW5kb3dMb2FkZWRdKQorICAgICAgICBy
ZXR1cm47CisgICAgYXV0byBjb3JlUGxheWVyID0gdmlkZW9FbGVtZW50LT5wbGF5ZXIoKTsKKyAg
ICBpZiAoIWNvcmVQbGF5ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHBsYXllciA9IGNv
cmVQbGF5ZXItPm9iakNBVkZvdW5kYXRpb25BVlBsYXllcigpOworICAgIGlmICghcGxheWVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNvbnRlbnRWaWV3ID0gW1tzZWxmIGZ1bGxzY3Jl
ZW5XaW5kb3ddIGNvbnRlbnRWaWV3XTsKKworICAgIGF1dG8gbGF5ZXIgPSBhZG9wdE5TKFthbGxv
Y0FWUGxheWVyTGF5ZXJJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBbbGF5ZXIgc2V0UGxheWVyOnBs
YXllcl07CisKKyAgICBbY29udGVudFZpZXcgc2V0TGF5ZXI6bGF5ZXIuZ2V0KCldOworCisgICAg
Ly8gRklYTUU6IFRoZSB3aW5kb3dEaWRMb2FkIG1ldGhvZCBhbHJlYWR5IGNhbGxlZCB0aGlzLCBz
byBpdCBzaG91bGQKKyAgICAvLyBub3QgYmUgbmVjZXNzYXJ5IHRvIGRvIGl0IGFnYWluIGhlcmUu
CisgICAgW2NvbnRlbnRWaWV3IHNldFdhbnRzTGF5ZXI6WUVTXTsKKworICAgIC8vIEZJWE1FOiBU
aGlzIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIGFuZCB3b24ndCBuZWNlc3NhcmlseSBi
ZQorICAgIC8vIGJhbGFuY2VkIGJ5IGNhbGxzIHRvIHdpbmRvd0RpZEV4aXRGdWxsc2NyZWVuIGlu
IHNvbWUgY2FzZXMsIHNvIGl0CisgICAgLy8gd291bGQgYmUgYmV0dGVyIHRvIGNoYW5nZSB0aGlu
Z3Mgc28gdGhlIG9ic2VydmVyIGlzIHJlbGlhYmx5IGFkZGVkCisgICAgLy8gb25seSBvbmNlIGFu
ZCBndWFyYW50ZWVkIHJlbW92ZWQgZXZlbiBpbiB1bnVzdWFsIGVkZ2UgY2FzZXMuCisgICAgW3Bs
YXllciBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJyYXRlIiBvcHRpb25zOjAgY29udGV4
dDpudWxscHRyXTsKK30KKworLSAoQ0dGbG9hdCljbGVhckZhZGVBbmltYXRpb24KK3sKKyAgICBb
X2ZhZGVBbmltYXRpb24gc3RvcEFuaW1hdGlvbl07CisgICAgQ0dGbG9hdCBwcmV2aW91c0FscGhh
ID0gW19mYWRlQW5pbWF0aW9uIGN1cnJlbnRBbHBoYV07CisgICAgW19mYWRlQW5pbWF0aW9uIHNl
dFdpbmRvdzpuaWxdOworICAgIFtfZmFkZUFuaW1hdGlvbiByZWxlYXNlXTsKKyAgICBfZmFkZUFu
aW1hdGlvbiA9IG5pbDsKKyAgICByZXR1cm4gcHJldmlvdXNBbHBoYTsKK30KKworLSAodm9pZCl3
aW5kb3dEaWRFeGl0RnVsbHNjcmVlbgoreworICAgIENBTGF5ZXIgKmxheWVyID0gW1tbc2VsZiB3
aW5kb3ddIGNvbnRlbnRWaWV3XSBsYXllcl07CisgICAgaWYgKFtsYXllciBpc0tpbmRPZkNsYXNz
OmdldEFWUGxheWVyTGF5ZXJDbGFzcygpXSkKKyAgICAgICAgW1soQVZQbGF5ZXJMYXllciAqKWxh
eWVyIHBsYXllcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAicmF0ZSJdOworCisg
ICAgW3NlbGYgY2xlYXJGYWRlQW5pbWF0aW9uXTsKKyAgICBbW3NlbGYgd2luZG93XSBjbG9zZV07
CisgICAgW3NlbGYgc2V0V2luZG93Om5pbF07CisgICAgW3NlbGYgdXBkYXRlTWVudUFuZERvY2tG
b3JGdWxsc2NyZWVuXTsgICAKKyAgICBbX2h1ZENvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bmlsXTsK
KyAgICBbX2h1ZENvbnRyb2xsZXIgcmVsZWFzZV07CisgICAgX2h1ZENvbnRyb2xsZXIgPSBuaWw7
CisgICAgW19iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyBjbG9zZV07CisgICAgW19iYWNrZ3Jv
dW5kRnVsbHNjcmVlbldpbmRvdyByZWxlYXNlXTsKKyAgICBfYmFja2dyb3VuZEZ1bGxzY3JlZW5X
aW5kb3cgPSBuaWw7CisgICAgCisgICAgW3NlbGYgYXV0b3JlbGVhc2VdOyAvLyBBc3NvY2lhdGVk
IC1yZXRhaW4gaXMgaW4gLWV4aXRGdWxsc2NyZWVuLgorICAgIF9pc0VuZGluZ0Z1bGxzY3JlZW4g
PSBOTzsKK30KKworLSAodm9pZCl3aW5kb3dEaWRFbnRlckZ1bGxzY3JlZW4KK3sKKyAgICBbc2Vs
ZiBjbGVhckZhZGVBbmltYXRpb25dOworCisgICAgQVNTRVJUKCFfaHVkQ29udHJvbGxlcik7Cisg
ICAgX2h1ZENvbnRyb2xsZXIgPSBbW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xs
ZXIgYWxsb2NdIGluaXRdOworICAgIFtfaHVkQ29udHJvbGxlciBzZXREZWxlZ2F0ZTpzZWxmXTsK
KworICAgIFtzZWxmIHVwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbHNjcmVlbl07CisgICAgW05TQ3Vy
c29yIHNldEhpZGRlblVudGlsTW91c2VNb3ZlczpZRVNdOworICAgIAorICAgIC8vIEdpdmUgdGhl
IEhVRCBrZXlib2FyZCBmb2N1cyBpbml0aWFsbHkKKyAgICBbX2h1ZENvbnRyb2xsZXIgZmFkZVdp
bmRvd0luXTsKK30KKworLSAoTlNSZWN0KXZpZGVvRWxlbWVudFJlY3QKK3sKKyAgICByZXR1cm4g
X3ZpZGVvRWxlbWVudC0+c2NyZWVuUmVjdCgpOworfQorCistICh2b2lkKWFwcGxpY2F0aW9uRGlk
UmVzaWduQWN0aXZlOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uCit7ICAgCisgICAgVU5V
U0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CisgICAgTlNXaW5kb3cqIGZ1bGxzY3JlZW5XaW5kb3cg
PSBbc2VsZiBmdWxsc2NyZWVuV2luZG93XTsKKworICAgIC8vIFJlcGxpY2F0ZSB0aGUgUXVpY2tU
aW1lIFBsYXllciAoWCkgYmVoYXZpb3Igd2hlbiBsb3NpbmcgYWN0aXZlIGFwcGxpY2F0aW9uIHN0
YXR1czoKKyAgICAvLyBJcyB0aGUgZnVsbHNjcmVlbiBzY3JlZW4gdGhlIG1haW4gc2NyZWVuPyAo
Tm90ZTogdGhpcyBjb3ZlcnMgdGhlIGNhc2Ugd2hlcmUgb25seSBhIAorICAgIC8vIHNpbmdsZSBz
Y3JlZW4gaXMgYXZhaWxhYmxlLikgIElzIHRoZSBmdWxsc2NyZWVuIHNjcmVlbiBvbiB0aGUgY3Vy
cmVudCBzcGFjZT8gSUZGIHNvLCAKKyAgICAvLyB0aGVuIGV4aXQgZnVsbHNjcmVlbiBtb2RlLiAg
ICAKKyAgICBpZiAoZnVsbHNjcmVlbldpbmRvdy5zY3JlZW4gPT0gW05TU2NyZWVuIHNjcmVlbnNd
WzBdICYmIGZ1bGxzY3JlZW5XaW5kb3cub25BY3RpdmVTcGFjZSkKKyAgICAgICAgW3NlbGYgcmVx
dWVzdEV4aXRGdWxsc2NyZWVuV2l0aEFuaW1hdGlvbjpOT107Cit9CisKKworLy8gTUFSSzogLQor
Ly8gTUFSSzogRXhwb3NlZCBJbnRlcmZhY2UKKworc3RhdGljIE5TUmVjdCBmcmFtZUV4cGFuZGVk
VG9SYXRpb09mRnJhbWUoTlNSZWN0IGZyYW1lVG9FeHBhbmQsIE5TUmVjdCBmcmFtZSkKK3sKKyAg
ICAvLyBLZWVwIGEgY29uc3RyYWluZWQgYXNwZWN0IHJhdGlvIGZvciB0aGUgZGVzdGluYXRpb24g
d2luZG93CisgICAgTlNSZWN0IHJlc3VsdCA9IGZyYW1lVG9FeHBhbmQ7CisgICAgQ0dGbG9hdCBu
ZXdSYXRpbyA9IGZyYW1lLnNpemUud2lkdGggLyBmcmFtZS5zaXplLmhlaWdodDsKKyAgICBDR0Zs
b2F0IG9yaWdpbmFsUmF0aW8gPSBmcmFtZVRvRXhwYW5kLnNpemUud2lkdGggLyBmcmFtZVRvRXhw
YW5kLnNpemUuaGVpZ2h0OworICAgIGlmIChuZXdSYXRpbyA+IG9yaWdpbmFsUmF0aW8pIHsKKyAg
ICAgICAgQ0dGbG9hdCBuZXdXaWR0aCA9IG5ld1JhdGlvICogZnJhbWVUb0V4cGFuZC5zaXplLmhl
aWdodDsKKyAgICAgICAgQ0dGbG9hdCBkaWZmID0gbmV3V2lkdGggLSBmcmFtZVRvRXhwYW5kLnNp
emUud2lkdGg7CisgICAgICAgIHJlc3VsdC5zaXplLndpZHRoID0gbmV3V2lkdGg7CisgICAgICAg
IHJlc3VsdC5vcmlnaW4ueCAtPSBkaWZmIC8gMjsKKyAgICB9IGVsc2UgeworICAgICAgICBDR0Zs
b2F0IG5ld0hlaWdodCA9IGZyYW1lVG9FeHBhbmQuc2l6ZS53aWR0aCAvIG5ld1JhdGlvOworICAg
ICAgICBDR0Zsb2F0IGRpZmYgPSBuZXdIZWlnaHQgLSBmcmFtZVRvRXhwYW5kLnNpemUuaGVpZ2h0
OworICAgICAgICByZXN1bHQuc2l6ZS5oZWlnaHQgPSBuZXdIZWlnaHQ7CisgICAgICAgIHJlc3Vs
dC5vcmlnaW4ueSAtPSBkaWZmIC8gMjsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
c3RhdGljIE5TV2luZG93ICpjcmVhdGVCYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyhOU1JlY3Qg
ZnJhbWUsIGludCBsZXZlbCkKK3sKKyAgICBOU1dpbmRvdyAqd2luZG93ID0gW1tOU1dpbmRvdyBh
bGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpmcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2lu
ZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dOworICAgIFt3
aW5kb3cgc2V0T3BhcXVlOllFU107CisgICAgW3dpbmRvdyBzZXRCYWNrZ3JvdW5kQ29sb3I6W05T
Q29sb3IgYmxhY2tDb2xvcl1dOworICAgIFt3aW5kb3cgc2V0TGV2ZWw6bGV2ZWxdOworICAgIFt3
aW5kb3cgc2V0UmVsZWFzZWRXaGVuQ2xvc2VkOk5PXTsKKyAgICByZXR1cm4gd2luZG93OworfQor
CistICh2b2lkKXNldHVwRmFkZUFuaW1hdGlvbklmTmVlZGVkQW5kRmFkZUluOihCT09MKWZhZGVJ
bgoreworICAgIENHRmxvYXQgaW5pdGlhbEFscGhhID0gZmFkZUluID8gMCA6IDE7CisgICAgaWYg
KF9mYWRlQW5pbWF0aW9uKSB7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBzdXBwb3J0IHF1ZXVp
bmcgYW5pbWF0aW9uIGlmIHRoZSBwcmV2aW91cyBvbmUgaXNuJ3Qgb3ZlciB5ZXQKKyAgICAgICAg
aW5pdGlhbEFscGhhID0gW3NlbGYgY2xlYXJGYWRlQW5pbWF0aW9uXTsKKyAgICB9CisgICAgaWYg
KCFfZm9yY2VEaXNhYmxlQW5pbWF0aW9uKQorICAgICAgICBfZmFkZUFuaW1hdGlvbiA9IFtbV2Vi
V2luZG93RmFkZUFuaW1hdGlvbiBhbGxvY10gaW5pdFdpdGhEdXJhdGlvbjowLjIgd2luZG93Ol9i
YWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyBpbml0aWFsQWxwaGE6aW5pdGlhbEFscGhhIGZpbmFs
QWxwaGE6ZmFkZUluID8gMSA6IDBdOworfQorCistICh2b2lkKWVudGVyRnVsbHNjcmVlbjooTlNT
Y3JlZW4gKilzY3JlZW4KK3sKKyAgICBpZiAoIXNjcmVlbikKKyAgICAgICAgc2NyZWVuID0gW05T
U2NyZWVuIG1haW5TY3JlZW5dOworCisgICAgTlNSZWN0IGVuZEZyYW1lID0gW3NjcmVlbiBmcmFt
ZV07CisgICAgTlNSZWN0IGZyYW1lID0gZnJhbWVFeHBhbmRlZFRvUmF0aW9PZkZyYW1lKFtzZWxm
IHZpZGVvRWxlbWVudFJlY3RdLCBlbmRGcmFtZSk7CisKKyAgICAvLyBDcmVhdGUgYSBibGFjayB3
aW5kb3cgaWYgbmVlZGVkCisgICAgaWYgKCFfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cpCisg
ICAgICAgIF9iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyA9IGNyZWF0ZUJhY2tncm91bmRGdWxs
c2NyZWVuV2luZG93KFtzY3JlZW4gZnJhbWVdLCBbW3NlbGYgd2luZG93XSBsZXZlbF0tMSk7Cisg
ICAgZWxzZQorICAgICAgICBbX2JhY2tncm91bmRGdWxsc2NyZWVuV2luZG93IHNldEZyYW1lOltz
Y3JlZW4gZnJhbWVdIGRpc3BsYXk6Tk9dOworCisgICAgW3NlbGYgc2V0dXBGYWRlQW5pbWF0aW9u
SWZOZWVkZWRBbmRGYWRlSW46WUVTXTsKKyAgICBpZiAoX2ZvcmNlRGlzYWJsZUFuaW1hdGlvbikg
eworICAgICAgICAvLyBUaGlzIHdpbGwgZGlzYWJsZSBzY2FsZSBhbmltYXRpb24KKyAgICAgICAg
ZnJhbWUgPSBOU1plcm9SZWN0OworICAgIH0KKyAgICBbW3NlbGYgZnVsbHNjcmVlbldpbmRvd10g
YW5pbWF0ZUZyb21SZWN0OmZyYW1lIHRvUmVjdDplbmRGcmFtZSB3aXRoU3ViQW5pbWF0aW9uOl9m
YWRlQW5pbWF0aW9uIGNvbnRyb2xsZXJBY3Rpb246QHNlbGVjdG9yKHdpbmRvd0RpZEVudGVyRnVs
bHNjcmVlbildOworCisgICAgW19iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyBvcmRlcldpbmRv
dzpOU1dpbmRvd0JlbG93IHJlbGF0aXZlVG86W1tzZWxmIGZ1bGxzY3JlZW5XaW5kb3ddIHdpbmRv
d051bWJlcl1dOworfQorCistICh2b2lkKWV4aXRGdWxsc2NyZWVuCit7CisgICAgaWYgKF9pc0Vu
ZGluZ0Z1bGxzY3JlZW4pCisgICAgICAgIHJldHVybjsKKyAgICBfaXNFbmRpbmdGdWxsc2NyZWVu
ID0gWUVTOworICAgIFtfaHVkQ29udHJvbGxlciBjbG9zZVdpbmRvd107CisKKyAgICBOU1JlY3Qg
ZW5kRnJhbWUgPSBbc2VsZiB2aWRlb0VsZW1lbnRSZWN0XTsKKworICAgIFtzZWxmIHNldHVwRmFk
ZUFuaW1hdGlvbklmTmVlZGVkQW5kRmFkZUluOk5PXTsKKyAgICBpZiAoX2ZvcmNlRGlzYWJsZUFu
aW1hdGlvbikgeworICAgICAgICAvLyBUaGlzIHdpbGwgZGlzYWJsZSBzY2FsZSBhbmltYXRpb24K
KyAgICAgICAgZW5kRnJhbWUgPSBOU1plcm9SZWN0OworICAgIH0KKyAgICAKKyAgICAvLyBXZSBo
YXZlIHRvIHJldGFpbiBvdXJzZWx2ZXMgYmVjYXVzZSB3ZSB3YW50IHRvIGJlIGFsaXZlIGZvciB0
aGUgZW5kIG9mIHRoZSBhbmltYXRpb24uCisgICAgLy8gSWYgb3VyIG93bmVyIHJlbGVhc2VzIHVz
IHdlIGNvdWxkIGNyYXNoIGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLgorICAgIC8vIEJhbGFuY2Vk
IGluIHdpbmRvd0RpZEV4aXRGdWxsc2NyZWVuCisgICAgW3NlbGYgcmV0YWluXTsgICAgCisKKyAg
ICBOU1JlY3Qgc3RhcnRGcmFtZSA9IFtbc2VsZiB3aW5kb3ddIGZyYW1lXTsKKyAgICBlbmRGcmFt
ZSA9IGZyYW1lRXhwYW5kZWRUb1JhdGlvT2ZGcmFtZShlbmRGcmFtZSwgc3RhcnRGcmFtZSk7CisK
KyAgICBbW3NlbGYgZnVsbHNjcmVlbldpbmRvd10gYW5pbWF0ZUZyb21SZWN0OnN0YXJ0RnJhbWUg
dG9SZWN0OmVuZEZyYW1lIHdpdGhTdWJBbmltYXRpb246X2ZhZGVBbmltYXRpb24gY29udHJvbGxl
ckFjdGlvbjpAc2VsZWN0b3Iod2luZG93RGlkRXhpdEZ1bGxzY3JlZW4pXTsKK30KKworLSAodm9p
ZClhcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6KE5TTm90aWZpY2F0aW9uKilu
b3RpZmljYXRpb24KK3sKKyAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKKyAgICAvLyBU
aGUgdXNlciBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBtYWluIHNjcmVlbiBieSBtb3ZpbmcgdGhlIG1l
bnUgYmFyLCBvciB0aGV5IG1heSBoYXZlIGNoYW5nZWQKKyAgICAvLyB0aGUgRG9jaydzIHNpemUg
b3IgbG9jYXRpb24sIG9yIHRoZXkgbWF5IGhhdmUgY2hhbmdlZCB0aGUgZnVsbHNjcmVlbiBzY3Jl
ZW4ncyBkaW1lbnNpb25zLiAgCisgICAgLy8gVXBkYXRlIG91ciBwcmVzZW50YXRpb24gcGFyYW1l
dGVycywgYW5kIGVuc3VyZSB0aGF0IHRoZSBmdWxsIHNjcmVlbiB3aW5kb3cgb2NjdXBpZXMgdGhl
IAorICAgIC8vIGVudGlyZSBzY3JlZW46CisgICAgW3NlbGYgdXBkYXRlTWVudUFuZERvY2tGb3JG
dWxsc2NyZWVuXTsKKyAgICBbW3NlbGYgd2luZG93XSBzZXRGcmFtZTpbW1tzZWxmIHdpbmRvd10g
c2NyZWVuXSBmcmFtZV0gZGlzcGxheTpZRVNdOworfQorCistICh2b2lkKXVwZGF0ZU1lbnVBbmRE
b2NrRm9yRnVsbHNjcmVlbgoreworICAgIC8vIE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25PcHRp
b25zIGlzIGF2YWlsYWJsZSBvbiA+IDEwLjYgb25seToKKyAgICBOU0FwcGxpY2F0aW9uUHJlc2Vu
dGF0aW9uT3B0aW9ucyBvcHRpb25zID0gTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbkRlZmF1bHQ7
CisgICAgTlNTY3JlZW4qIGZ1bGxzY3JlZW5TY3JlZW4gPSBbW3NlbGYgd2luZG93XSBzY3JlZW5d
OworCisgICAgaWYgKCFfaXNFbmRpbmdGdWxsc2NyZWVuKSB7CisgICAgICAgIC8vIEF1dG8taGlk
ZSB0aGUgbWVudSBiYXIgaWYgdGhlIGZ1bGxzY3JlZW5TY3JlZW4gY29udGFpbnMgdGhlIG1lbnUg
YmFyOgorICAgICAgICAvLyBOT1RFOiBpZiB0aGUgZnVsbHNjcmVlblNjcmVlbiBjb250YWlucyB0
aGUgbWVudSBiYXIgYnV0IG5vdCB0aGUgZG9jaywgd2UgbXVzdCBzdGlsbCAKKyAgICAgICAgLy8g
YXV0by1oaWRlIHRoZSBkb2NrLCBvciBhbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24uCisgICAg
ICAgIGlmIChbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gPT0gZnVsbHNjcmVl
blNjcmVlbikKKyAgICAgICAgICAgIG9wdGlvbnMgfD0gKE5TQXBwbGljYXRpb25QcmVzZW50YXRp
b25BdXRvSGlkZU1lbnVCYXIgfCBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uQXV0b0hpZGVEb2Nr
KTsKKyAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgc2NyZWVuIGNvbnRhaW5zIHRoZSBk
b2NrIGJ5IGNvbXBhcmluZyB0aGUgc2NyZWVuJ3MgZnJhbWUgdG8gaXRzCisgICAgICAgIC8vIHZp
c2libGVGcmFtZTsgaWYgYSBkb2NrIGlzIHByZXNlbnQsIHRoZSB2aXNpYmxlRnJhbWUgd2lsbCBk
aWZmZXIuIElmIHRoZSBjdXJyZW50IHNjcmVlbgorICAgICAgICAvLyBjb250YWlucyB0aGUgZG9j
aywgaGlkZSBpdC4KKyAgICAgICAgZWxzZSBpZiAoIU5TRXF1YWxSZWN0cyhbZnVsbHNjcmVlblNj
cmVlbiBmcmFtZV0sIFtmdWxsc2NyZWVuU2NyZWVuIHZpc2libGVGcmFtZV0pKQorICAgICAgICAg
ICAgb3B0aW9ucyB8PSBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uQXV0b0hpZGVEb2NrOworICAg
IH0KKworICAgIE5TQXBwLnByZXNlbnRhdGlvbk9wdGlvbnMgPSBvcHRpb25zOworfQorCisvLyBN
QVJLOiAtCisvLyBNQVJLOiBXaW5kb3cgY2FsbGJhY2sKKworLSAodm9pZClfcmVxdWVzdEV4aXQK
K3sKKyAgICBpZiAoX3ZpZGVvRWxlbWVudCkKKyAgICAgICAgX3ZpZGVvRWxlbWVudC0+ZXhpdEZ1
bGxzY3JlZW4oKTsKKyAgICBfZm9yY2VEaXNhYmxlQW5pbWF0aW9uID0gTk87Cit9CisKKy0gKHZv
aWQpcmVxdWVzdEV4aXRGdWxsc2NyZWVuV2l0aEFuaW1hdGlvbjooQk9PTClhbmltYXRpb24KK3sK
KyAgICBpZiAoX2lzRW5kaW5nRnVsbHNjcmVlbikKKyAgICAgICAgcmV0dXJuOworCisgICAgX2Zv
cmNlRGlzYWJsZUFuaW1hdGlvbiA9ICFhbmltYXRpb247CisgICAgW3NlbGYgcGVyZm9ybVNlbGVj
dG9yOkBzZWxlY3RvcihfcmVxdWVzdEV4aXQpIHdpdGhPYmplY3Q6bmlsIGFmdGVyRGVsYXk6MF07
CisKK30KKworLSAodm9pZClyZXF1ZXN0RXhpdEZ1bGxzY3JlZW4KK3sKKyAgICBbc2VsZiByZXF1
ZXN0RXhpdEZ1bGxzY3JlZW5XaXRoQW5pbWF0aW9uOllFU107Cit9CisKKy0gKHZvaWQpZmFkZUhV
REluCit7CisgICAgW19odWRDb250cm9sbGVyIGZhZGVXaW5kb3dJbl07Cit9CisKKy0gKHZvaWQp
b2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClv
YmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNvbnRl
eHQKK3sKKyAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0oY2hhbmdl
KTsKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisKKyAgICBpZiAoW2tleVBhdGggaXNFcXVh
bFRvOkAicmF0ZSJdKQorICAgICAgICBbc2VsZiByYXRlQ2hhbmdlZDpuaWxdOworfQorCistICh2
b2lkKXJhdGVDaGFuZ2VkOihOU05vdGlmaWNhdGlvbiAqKXVudXNlZE5vdGlmaWNhdGlvbgorewor
ICAgIFVOVVNFRF9QQVJBTSh1bnVzZWROb3RpZmljYXRpb24pOworICAgIFtfaHVkQ29udHJvbGxl
ciB1cGRhdGVSYXRlXTsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViVmlkZW9GdWxs
c2NyZWVuV2luZG93CisKKy0gKGlkKWluaXRXaXRoQ29udGVudFJlY3Q6KE5TUmVjdCljb250ZW50
UmVjdCBzdHlsZU1hc2s6KE5TVUludGVnZXIpYVN0eWxlIGJhY2tpbmc6KE5TQmFja2luZ1N0b3Jl
VHlwZSlidWZmZXJpbmdUeXBlIGRlZmVyOihCT09MKWZsYWcKK3sKKyAgICBVTlVTRURfUEFSQU0o
YVN0eWxlKTsKKyAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoQ29udGVudFJlY3Q6Y29udGVudFJl
Y3Qgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpidWZmZXJpbmdUeXBl
IGRlZmVyOmZsYWddOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBb
c2VsZiBzZXRPcGFxdWU6Tk9dOworICAgIFtzZWxmIHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xv
ciBjbGVhckNvbG9yXV07CisgICAgW3NlbGYgc2V0SWdub3Jlc01vdXNlRXZlbnRzOk5PXTsKKyAg
ICBbc2VsZiBzZXRBY2NlcHRzTW91c2VNb3ZlZEV2ZW50czpZRVNdOworICAgIHJldHVybiBzZWxm
OworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBBU1NFUlQoIV9mdWxsc2NyZWVuQW5pbWF0
aW9uKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKEJPT0wpcmVzaWduRmlyc3RSZXNw
b25kZXIKK3sKKyAgICByZXR1cm4gTk87Cit9CisKKy0gKEJPT0wpY2FuQmVjb21lS2V5V2luZG93
Cit7CisgICAgcmV0dXJuIE5POworfQorCistICh2b2lkKW1vdXNlRG93bjooTlNFdmVudCAqKWV2
ZW50Cit7CisgICAgVU5VU0VEX1BBUkFNKGV2ZW50KTsKK30KKworLSAodm9pZCljYW5jZWxPcGVy
YXRpb246KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOworICAgIFtbc2Vs
ZiB3aW5kb3dDb250cm9sbGVyXSByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5dOworfQorCistICh2b2lk
KWFuaW1hdGVkUmVzaXplRGlkRW5kCit7CisgICAgaWYgKF9jb250cm9sbGVyQWN0aW9uT25Bbmlt
YXRpb25FbmQpCisgICAgICAgIFtbc2VsZiB3aW5kb3dDb250cm9sbGVyXSBwZXJmb3JtU2VsZWN0
b3I6X2NvbnRyb2xsZXJBY3Rpb25PbkFuaW1hdGlvbkVuZF07CisgICAgX2NvbnRyb2xsZXJBY3Rp
b25PbkFuaW1hdGlvbkVuZCA9IE5VTEw7Cit9CisKKy8vCisvLyBUaGlzIGZ1bmN0aW9uIHdpbGwg
YW5pbWF0ZSBhIGNoYW5nZSBvZiBmcmFtZSByZWN0YW5nbGUKKy8vIFdlIHN1cHBvcnQgcXVldWlu
ZyBhbmltYXRpb24sIHRoYXQgbWVhbnMgdGhhdCB3ZSdsbCBjb3JyZWN0bHkKKy8vIGludGVycnVw
dCB0aGUgcnVubmluZyBhbmltYXRpb24sIGFuZCBxdWV1ZSB0aGUgbmV4dCBvbmUuCisvLworLSAo
dm9pZClhbmltYXRlRnJvbVJlY3Q6KE5TUmVjdClzdGFydFJlY3QgdG9SZWN0OihOU1JlY3QpZW5k
UmVjdCB3aXRoU3ViQW5pbWF0aW9uOihOU0FuaW1hdGlvbiAqKXN1YkFuaW1hdGlvbiBjb250cm9s
bGVyQWN0aW9uOihTRUwpY29udHJvbGxlckFjdGlvbgoreworICAgIF9jb250cm9sbGVyQWN0aW9u
T25BbmltYXRpb25FbmQgPSBjb250cm9sbGVyQWN0aW9uOworCisgICAgQk9PTCB3YXNBbmltYXRp
bmcgPSBOTzsKKyAgICBpZiAoX2Z1bGxzY3JlZW5BbmltYXRpb24pIHsKKyAgICAgICAgd2FzQW5p
bWF0aW5nID0gWUVTOworCisgICAgICAgIC8vIEludGVycnVwdCBhbnkgcnVubmluZyBhbmltYXRp
b24uCisgICAgICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBzdG9wQW5pbWF0aW9uXTsKKworICAg
ICAgICAvLyBTYXZlIHRoZSBjdXJyZW50IHJlY3QgdG8gZW5zdXJlIGEgc21vb3RoIHRyYW5zaXRp
b24uCisgICAgICAgIHN0YXJ0UmVjdCA9IFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBjdXJyZW50RnJh
bWVdOworICAgICAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24gcmVsZWFzZV07CisgICAgICAgIF9m
dWxsc2NyZWVuQW5pbWF0aW9uID0gbmlsOworICAgIH0KKyAgICAKKyAgICBpZiAoTlNJc0VtcHR5
UmVjdChzdGFydFJlY3QpIHx8IE5TSXNFbXB0eVJlY3QoZW5kUmVjdCkpIHsKKyAgICAgICAgLy8g
RmFrZWx5IGVuZCB0aGUgc3ViYW5pbWF0aW9uLgorICAgICAgICBbc3ViQW5pbWF0aW9uIHNldEN1
cnJlbnRQcm9ncmVzczoxXTsKKyAgICAgICAgLy8gQW5kIHJlbW92ZSB0aGUgd2VhayBsaW5rIHRv
IHRoZSB3aW5kb3cuCisgICAgICAgIFtzdWJBbmltYXRpb24gc3RvcEFuaW1hdGlvbl07CisKKyAg
ICAgICAgW3NlbGYgc2V0RnJhbWU6ZW5kUmVjdCBkaXNwbGF5Ok5PXTsKKyAgICAgICAgW3NlbGYg
bWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07CisgICAgICAgIFtzZWxmIGFuaW1hdGVkUmVzaXpl
RGlkRW5kXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghd2FzQW5pbWF0aW5n
KSB7CisgICAgICAgIC8vIFdlJ2xsIGRvd25zY2FsZSB0aGUgd2luZG93IGR1cmluZyB0aGUgYW5p
bWF0aW9uIGJhc2VkIG9uIHRoZSBoaWdoZXIgcmVzb2x1dGlvbiByZWN0CisgICAgICAgIEJPT0wg
aGlnaGVyUmVzb2x1dGlvbklzRW5kUmVjdCA9IHN0YXJ0UmVjdC5zaXplLndpZHRoIDwgZW5kUmVj
dC5zaXplLndpZHRoICYmIHN0YXJ0UmVjdC5zaXplLmhlaWdodCA8IGVuZFJlY3Quc2l6ZS5oZWln
aHQ7CisgICAgICAgIFtzZWxmIHNldEZyYW1lOmhpZ2hlclJlc29sdXRpb25Jc0VuZFJlY3QgPyBl
bmRSZWN0IDogc3RhcnRSZWN0IGRpc3BsYXk6Tk9dOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQo
IV9mdWxsc2NyZWVuQW5pbWF0aW9uKTsKKyAgICBfZnVsbHNjcmVlbkFuaW1hdGlvbiA9IFtbV2Vi
V2luZG93U2NhbGVBbmltYXRpb24gYWxsb2NdIGluaXRXaXRoSGludGVkRHVyYXRpb246MC4yIHdp
bmRvdzpzZWxmIGluaXRhbEZyYW1lOnN0YXJ0UmVjdCBmaW5hbEZyYW1lOmVuZFJlY3RdOworICAg
IFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBzZXRTdWJBbmltYXRpb246c3ViQW5pbWF0aW9uXTsKKyAg
ICBbX2Z1bGxzY3JlZW5BbmltYXRpb24gc2V0RGVsZWdhdGU6c2VsZl07CisgICAgCisgICAgLy8g
TWFrZSBzdXJlIHRoZSBhbmltYXRpb24gaGFzIHNjYWxlZCB0aGUgd2luZG93IGJlZm9yZSBzaG93
aW5nIGl0LgorICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBzZXRDdXJyZW50UHJvZ3Jlc3M6MF07
CisgICAgW3NlbGYgbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07CisKKyAgICBbX2Z1bGxzY3Jl
ZW5BbmltYXRpb24gc3RhcnRBbmltYXRpb25dOworfQorCistICh2b2lkKWFuaW1hdGlvbkRpZEVu
ZDooTlNBbmltYXRpb24gKilhbmltYXRpb24KK3sKKyAgICBpZiAoIVtOU1RocmVhZCBpc01haW5U
aHJlYWRdKSB7CisgICAgICAgIFtzZWxmIHBlcmZvcm1TZWxlY3Rvck9uTWFpblRocmVhZDpAc2Vs
ZWN0b3IoYW5pbWF0aW9uRGlkRW5kOikgd2l0aE9iamVjdDphbmltYXRpb24gd2FpdFVudGlsRG9u
ZTpOT107CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGFuaW1hdGlvbiAhPSBfZnVs
bHNjcmVlbkFuaW1hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhlIGFuaW1hdGlv
biBpcyBub3QgcmVhbGx5IG92ZXIgYW5kIHdhcyBpbnRlcnJ1cHRlZAorICAgIC8vIERvbid0IHNl
bmQgY29tcGxldGlvbiBldmVudHMuCisgICAgaWYgKFthbmltYXRpb24gY3VycmVudFByb2dyZXNz
XSA8IDEuMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRW5zdXJlIHRoYXQgYW5pbWF0aW9u
IChhbmQgc3ViYW5pbWF0aW9uKSBkb24ndCBrZWVwCisgICAgLy8gdGhlIHdlYWsgcmVmZXJlbmNl
IHRvIHRoZSB3aW5kb3cgaXZhciB0aGF0IG1heSBiZSBkZXN0cm95ZWQgZnJvbQorICAgIC8vIG5v
dyBvbi4KKyAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24gc2V0V2luZG93Om5pbF07CisKKyAgICBb
X2Z1bGxzY3JlZW5BbmltYXRpb24gYXV0b3JlbGVhc2VdOworICAgIF9mdWxsc2NyZWVuQW5pbWF0
aW9uID0gbmlsOworCisgICAgW3NlbGYgYW5pbWF0ZWRSZXNpemVEaWRFbmRdOworfQorCistICh2
b2lkKW1vdXNlTW92ZWQ6KE5TRXZlbnQgKilldmVudAoreworICAgIFVOVVNFRF9QQVJBTShldmVu
dCk7CisgICAgW1tzZWxmIHdpbmRvd0NvbnRyb2xsZXJdIGZhZGVIVURJbl07Cit9CisKK0BlbmQK
KworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURX
aW5kb3dDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjdmZWFlMTM0
MmU2YTk3N2M1NmZiMWY1YzUwNDQyMTIwMGRkMjE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250
cm9sbGVyLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoVklERU8p
CisKKyNpbXBvcnQgPEFwcEtpdC9OU0J1dHRvbi5oPgorI2ltcG9ydCA8QXBwS2l0L05TQ29udHJv
bC5oPgorI2ltcG9ydCA8QXBwS2l0L05TVGV4dEZpZWxkLmg+CisjaW1wb3J0IDxBcHBLaXQvTlNU
cmFja2luZ0FyZWEuaD4KKyNpbXBvcnQgPEFwcEtpdC9OU1dpbmRvdy5oPgorI2ltcG9ydCA8QXBw
S2l0L05TV2luZG93Q29udHJvbGxlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBI
VE1MVmlkZW9FbGVtZW50OworfQorCitAcHJvdG9jb2wgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2lu
ZG93Q29udHJvbGxlckRlbGVnYXRlOworCitAaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNjcmVlbkhV
RFdpbmRvd0NvbnRyb2xsZXIgOiBOU1dpbmRvd0NvbnRyb2xsZXIgeworICAgIGlkIDxXZWJWaWRl
b0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVsZWdhdGU+IF9kZWxlZ2F0ZTsKKyAgICBO
U1RpbWVyICpfdGltZWxpbmVVcGRhdGVUaW1lcjsKKyAgICBOU1RyYWNraW5nQXJlYSAqX2FyZWE7
CisgICAgQk9PTCBfbW91c2VJc0luSFVEOworICAgIEJPT0wgX2lzRW5kaW5nRnVsbHNjcmVlbjsK
KyAgICBCT09MIF9pc1NjcnViYmluZzsKKworICAgIE5TQ29udHJvbCAqX3RpbWVsaW5lOworICAg
IE5TVGV4dEZpZWxkICpfcmVtYWluaW5nVGltZVRleHQ7CisgICAgTlNUZXh0RmllbGQgKl9lbGFw
c2VkVGltZVRleHQ7CisgICAgTlNDb250cm9sICpfdm9sdW1lU2xpZGVyOworICAgIE5TQnV0dG9u
ICpfcGxheUJ1dHRvbjsKK30KKworLSAoaWQgPFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0Nv
bnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGU7CistICh2b2lkKXNldERlbGVnYXRlOihpZCA8V2Vi
VmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZTsKKy0g
KHZvaWQpZmFkZVdpbmRvd0luOworLSAodm9pZClmYWRlV2luZG93T3V0OworLSAodm9pZCljbG9z
ZVdpbmRvdzsKKy0gKHZvaWQpdXBkYXRlUmF0ZTsKKworQGVuZAorCitAcHJvdG9jb2wgV2ViVmlk
ZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlIDxOU09iamVjdD4KKy0gKHZv
aWQpcmVxdWVzdEV4aXRGdWxsc2NyZWVuOworLSAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCop
dmlkZW9FbGVtZW50OworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuSFVE
V2luZG93Q29udHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzNmNTA2ZTA2ZDk3YmZkZThlYTRjYjA5
NTYwYThjNzBiMTIzZjEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tCkBAIC0w
LDAgKzEsNzMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoVklERU8pICYmIFBMQVRGT1JN
KE1BQykKKworI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5o
IgorCisjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0Q29udmVyc2lvbi5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MVmlkZW9FbGVtZW50Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQ
SS5oPgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvUVRLaXRTUEkuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKFFUS2l0KQorCitTT0ZUX0xJTktfQ0xB
U1MoUVRLaXQsIFFUSFVEQmFja2dyb3VuZFZpZXcpCitTT0ZUX0xJTktfQ0xBU1MoUVRLaXQsIFFU
SFVEQnV0dG9uKQorU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBRVEhVRFNsaWRlcikKK1NPRlRfTElO
S19DTEFTUyhRVEtpdCwgUVRIVURUaW1lbGluZSkKKworI2RlZmluZSBRVEhVREJhY2tncm91bmRW
aWV3IGdldFFUSFVEQmFja2dyb3VuZFZpZXdDbGFzcygpCisjZGVmaW5lIFFUSFVEQnV0dG9uIGdl
dFFUSFVEQnV0dG9uQ2xhc3MoKQorI2RlZmluZSBRVEhVRFNsaWRlciBnZXRRVEhVRFNsaWRlckNs
YXNzKCkKKyNkZWZpbmUgUVRIVURUaW1lbGluZSBnZXRRVEhVRFRpbWVsaW5lQ2xhc3MoKQorCitl
bnVtIGNsYXNzIE1lZGlhVUlDb250cm9sIHsKKyAgICBUaW1lbGluZSwKKyAgICBTbGlkZXIsCisg
ICAgUGxheVBhdXNlQnV0dG9uLAorICAgIEV4aXRGdWxsc2NyZWVuQnV0dG9uLAorICAgIFJld2lu
ZEJ1dHRvbiwKKyAgICBGYXN0Rm9yd2FyZEJ1dHRvbiwKKyAgICBWb2x1bWVVcEJ1dHRvbiwKKyAg
ICBWb2x1bWVEb3duQnV0dG9uLAorfTsKKwordXNpbmcgV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVu
dDsKK3VzaW5nIFdlYkNvcmU6Om5hcnJvd1ByZWNpc2lvblRvRmxvYXQ7CisKK0BpbnRlcmZhY2Ug
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciAoUHJpdmF0ZSkgPE5TV2luZG93
RGVsZWdhdGU+CisKKy0gKHZvaWQpdXBkYXRlVGltZTsKKy0gKHZvaWQpdGltZWxpbmVQb3NpdGlv
bkNoYW5nZWQ6KGlkKXNlbmRlcjsKKy0gKGZsb2F0KWN1cnJlbnRUaW1lOworLSAodm9pZClzZXRD
dXJyZW50VGltZTooZmxvYXQpY3VycmVudFRpbWU7CistIChkb3VibGUpZHVyYXRpb247CisKKy0g
KHZvaWQpdm9sdW1lQ2hhbmdlZDooaWQpc2VuZGVyOworLSAoZmxvYXQpbWF4Vm9sdW1lOworLSAo
ZmxvYXQpdm9sdW1lOworLSAodm9pZClzZXRWb2x1bWU6KGZsb2F0KXZvbHVtZTsKKy0gKHZvaWQp
ZGVjcmVtZW50Vm9sdW1lOworLSAodm9pZClpbmNyZW1lbnRWb2x1bWU7CisKKy0gKHZvaWQpdXBk
YXRlUGxheUJ1dHRvbjsKKy0gKHZvaWQpdG9nZ2xlUGxheWluZzooaWQpc2VuZGVyOworLSAoQk9P
TClwbGF5aW5nOworLSAodm9pZClzZXRQbGF5aW5nOihCT09MKXBsYXlpbmc7CisKKy0gKHZvaWQp
cmV3aW5kOihpZClzZW5kZXI7CistICh2b2lkKWZhc3RGb3J3YXJkOihpZClzZW5kZXI7CisKKy0g
KE5TU3RyaW5nICopcmVtYWluaW5nVGltZVRleHQ7CistIChOU1N0cmluZyAqKWVsYXBzZWRUaW1l
VGV4dDsKKworLSAodm9pZClleGl0RnVsbHNjcmVlbjooaWQpc2VuZGVyOworQGVuZAorCitAaW50
ZXJmYWNlIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvdyA6IE5TV2luZG93CitAZW5kCisKK0Bp
bXBsZW1lbnRhdGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3cKKworLSAoaWQpaW5pdFdp
dGhDb250ZW50UmVjdDooTlNSZWN0KWNvbnRlbnRSZWN0IHN0eWxlTWFzazooTlNVSW50ZWdlcilh
U3R5bGUgYmFja2luZzooTlNCYWNraW5nU3RvcmVUeXBlKWJ1ZmZlcmluZ1R5cGUgZGVmZXI6KEJP
T0wpZmxhZworeworICAgIFVOVVNFRF9QQVJBTShhU3R5bGUpOworICAgIHNlbGYgPSBbc3VwZXIg
aW5pdFdpdGhDb250ZW50UmVjdDpjb250ZW50UmVjdCBzdHlsZU1hc2s6TlNXaW5kb3dTdHlsZU1h
c2tCb3JkZXJsZXNzIGJhY2tpbmc6YnVmZmVyaW5nVHlwZSBkZWZlcjpmbGFnXTsKKyAgICBpZiAo
IXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBbc2VsZiBzZXRPcGFxdWU6Tk9dOwor
ICAgIFtzZWxmIHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBjbGVhckNvbG9yXV07CisgICAg
W3NlbGYgc2V0TGV2ZWw6TlNQb3BVcE1lbnVXaW5kb3dMZXZlbF07CisgICAgW3NlbGYgc2V0QWNj
ZXB0c01vdXNlTW92ZWRFdmVudHM6WUVTXTsKKyAgICBbc2VsZiBzZXRJZ25vcmVzTW91c2VFdmVu
dHM6Tk9dOworICAgIFtzZWxmIHNldE1vdmFibGVCeVdpbmRvd0JhY2tncm91bmQ6WUVTXTsKKwor
ICAgIHJldHVybiBzZWxmOworfQorCistIChCT09MKWNhbkJlY29tZUtleVdpbmRvdworeworICAg
IHJldHVybiBZRVM7Cit9CisKKy0gKHZvaWQpY2FuY2VsT3BlcmF0aW9uOihpZClzZW5kZXIKK3sK
KyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKKyAgICBbW3NlbGYgd2luZG93Q29udHJvbGxlcl0g
ZXhpdEZ1bGxzY3JlZW46c2VsZl07Cit9CisKKy0gKHZvaWQpY2VudGVyCit7CisgICAgTlNSZWN0
IGh1ZEZyYW1lID0gW3NlbGYgZnJhbWVdOworICAgIE5TUmVjdCBzY3JlZW5GcmFtZSA9IFtbTlNT
Y3JlZW4gbWFpblNjcmVlbl0gZnJhbWVdOworICAgIFtzZWxmIHNldEZyYW1lVG9wTGVmdFBvaW50
Ok5TTWFrZVBvaW50KHNjcmVlbkZyYW1lLm9yaWdpbi54ICsgKHNjcmVlbkZyYW1lLnNpemUud2lk
dGggLSBodWRGcmFtZS5zaXplLndpZHRoKSAvIDIsIHNjcmVlbkZyYW1lLm9yaWdpbi55ICsgKHNj
cmVlbkZyYW1lLnNpemUuaGVpZ2h0IC0gaHVkRnJhbWUuc2l6ZS5oZWlnaHQpIC8gNildOworfQor
CistICh2b2lkKWtleURvd246KE5TRXZlbnQgKilldmVudAoreworICAgIFtzdXBlciBrZXlEb3du
OmV2ZW50XTsKKyAgICBbW3NlbGYgd2luZG93Q29udHJvbGxlcl0gZmFkZVdpbmRvd0luXTsKK30K
KworLSAoQk9PTClyZXNpZ25GaXJzdFJlc3BvbmRlcgoreworICAgIHJldHVybiBOTzsKK30KKwor
LSAoQk9PTClwZXJmb3JtS2V5RXF1aXZhbGVudDooTlNFdmVudCAqKWV2ZW50Cit7CisgICAgLy8g
QmxvY2sgYWxsIGNvbW1hbmQga2V5IGV2ZW50cyB3aGlsZSB0aGUgZnVsbHNjcmVlbiB3aW5kb3cg
aXMgdXAuCisgICAgaWYgKFtldmVudCB0eXBlXSAhPSBOU0V2ZW50VHlwZUtleURvd24pCisgICAg
ICAgIHJldHVybiBOTzsKKyAgICAKKyAgICBpZiAoIShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBO
U0V2ZW50TW9kaWZpZXJGbGFnQ29tbWFuZCkpCisgICAgICAgIHJldHVybiBOTzsKKyAgICByZXR1
cm4gWUVTOworfQorCitAZW5kCisKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IHdpbmRvd0hlaWdodCA9
IDU5Oworc3RhdGljIGNvbnN0IENHRmxvYXQgd2luZG93V2lkdGggPSA0Mzg7CisKK3N0YXRpYyBj
b25zdCBOU1RpbWVJbnRlcnZhbCBIVURXaW5kb3dGYWRlT3V0RGVsYXkgPSAzOworCitAaW1wbGVt
ZW50YXRpb24gV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlcgorCistIChpZClp
bml0Cit7CisgICAgTlNXaW5kb3cgKndpbmRvdyA9IFtbV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2lu
ZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5TTWFrZVJlY3QoMCwgMCwgd2luZG93V2lk
dGgsIHdpbmRvd0hlaWdodCkgc3R5bGVNYXNrOk5TV2luZG93U3R5bGVNYXNrQm9yZGVybGVzcyBi
YWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dOworICAgIHNlbGYgPSBbc3Vw
ZXIgaW5pdFdpdGhXaW5kb3c6d2luZG93XTsKKyAgICBbd2luZG93IHNldERlbGVnYXRlOnNlbGZd
OworICAgIFt3aW5kb3cgcmVsZWFzZV07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4g
bmlsOworICAgIFtzZWxmIHdpbmRvd0RpZExvYWRdOworICAgIHJldHVybiBzZWxmOworfQorCist
ICh2b2lkKWRlYWxsb2MKK3sKKyAgICBBU1NFUlQoIV90aW1lbGluZVVwZGF0ZVRpbWVyKTsKKyAg
ICBBU1NFUlQoIV9hcmVhKTsKKyAgICBBU1NFUlQoIV9pc1NjcnViYmluZyk7CisgICAgW190aW1l
bGluZSByZWxlYXNlXTsKKyAgICBbX3JlbWFpbmluZ1RpbWVUZXh0IHJlbGVhc2VdOworICAgIFtf
ZWxhcHNlZFRpbWVUZXh0IHJlbGVhc2VdOworICAgIFtfdm9sdW1lU2xpZGVyIHJlbGVhc2VdOwor
ICAgIFtfcGxheUJ1dHRvbiByZWxlYXNlXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0g
KHZvaWQpc2V0QXJlYTooTlNUcmFja2luZ0FyZWEgKilhcmVhCit7CisgICAgaWYgKGFyZWEgPT0g
X2FyZWEpCisgICAgICAgIHJldHVybjsKKyAgICBbX2FyZWEgcmVsZWFzZV07CisgICAgX2FyZWEg
PSBbYXJlYSByZXRhaW5dOworfQorCistICh2b2lkKWtleURvd246KE5TRXZlbnQgKilldmVudAor
eworICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBbZXZlbnQgY2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXTsKKyAgICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVycyBsZW5ndGhdID09IDEpIHsKKyAgICAgICAgc3dpdGNoIChbY2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzIGNoYXJhY3RlckF0SW5kZXg6MF0pIHsKKyAgICAgICAgY2FzZSAnICc6Cisg
ICAgICAgICAgICBbc2VsZiB0b2dnbGVQbGF5aW5nOm5pbF07CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGNhc2UgTlNVcEFycm93RnVuY3Rpb25LZXk6CisgICAgICAgICAgICBpZiAoW2V2
ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNFdmVudE1vZGlmaWVyRmxhZ09wdGlvbikKKyAgICAgICAg
ICAgICAgICBbc2VsZiBzZXRWb2x1bWU6W3NlbGYgbWF4Vm9sdW1lXV07CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgW3NlbGYgaW5jcmVtZW50Vm9sdW1lXTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgY2FzZSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OgorICAgICAgICAg
ICAgaWYgKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TRXZlbnRNb2RpZmllckZsYWdPcHRpb24p
CisgICAgICAgICAgICAgICAgW3NlbGYgc2V0Vm9sdW1lOjBdOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIFtzZWxmIGRlY3JlbWVudFZvbHVtZV07CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKworICAgIFtzdXBlciBrZXlEb3duOmV2ZW50XTsKK30KKworLSAoaWQgPFdlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICByZXR1
cm4gX2RlbGVnYXRlOworfQorCistICh2b2lkKXNldERlbGVnYXRlOihpZCA8V2ViVmlkZW9GdWxs
c2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZQoreworICAgIF9kZWxl
Z2F0ZSA9IGRlbGVnYXRlOworfQorCistICh2b2lkKXNjaGVkdWxlVGltZVVwZGF0ZQoreworICAg
IFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBz
ZWxlY3RvcjpAc2VsZWN0b3IodW5zY2hlZHVsZVRpbWVVcGRhdGUpIG9iamVjdDpzZWxmXTsKKwor
ICAgIC8vIEZpcnN0LCB1cGRhdGUgcmlnaHQgYXdheSwgdGhlbiBzY2hlZHVsZSBmdXR1cmUgdXBk
YXRlCisgICAgW3NlbGYgdXBkYXRlVGltZV07CisgICAgW3NlbGYgdXBkYXRlUGxheUJ1dHRvbl07
CisKKyAgICBbX3RpbWVsaW5lVXBkYXRlVGltZXIgaW52YWxpZGF0ZV07CisgICAgW190aW1lbGlu
ZVVwZGF0ZVRpbWVyIHJlbGVhc2VdOworCisgICAgLy8gTm90ZSB0aGF0IHRoaXMgY3JlYXRlcyBh
IHJldGFpbiBjeWNsZSBiZXR3ZWVuIHRoZSB3aW5kb3cgYW5kIHVzLgorICAgIF90aW1lbGluZVVw
ZGF0ZVRpbWVyID0gW1tOU1RpbWVyIHRpbWVyV2l0aFRpbWVJbnRlcnZhbDowLjI1IHRhcmdldDpz
ZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih1cGRhdGVUaW1lKSB1c2VySW5mbzpuaWwgcmVwZWF0czpZ
RVNdIHJldGFpbl07CisgICAgW1tOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIGFkZFRpbWVyOl90
aW1lbGluZVVwZGF0ZVRpbWVyIGZvck1vZGU6TlNSdW5Mb29wQ29tbW9uTW9kZXNdOworfQorCist
ICh2b2lkKXVuc2NoZWR1bGVUaW1lVXBkYXRlCit7CisgICAgW05TT2JqZWN0IGNhbmNlbFByZXZp
b3VzUGVyZm9ybVJlcXVlc3RzV2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih1bnNj
aGVkdWxlVGltZVVwZGF0ZSkgb2JqZWN0Om5pbF07CisKKyAgICBbX3RpbWVsaW5lVXBkYXRlVGlt
ZXIgaW52YWxpZGF0ZV07CisgICAgW190aW1lbGluZVVwZGF0ZVRpbWVyIHJlbGVhc2VdOworICAg
IF90aW1lbGluZVVwZGF0ZVRpbWVyID0gbmlsOworfQorCistICh2b2lkKWZhZGVXaW5kb3dJbgor
eworICAgIE5TV2luZG93ICp3aW5kb3cgPSBbc2VsZiB3aW5kb3ddOworICAgIGlmICghW3dpbmRv
dyBpc1Zpc2libGVdKQorICAgICAgICBbd2luZG93IHNldEFscGhhVmFsdWU6MF07CisKKyAgICBb
d2luZG93IG1ha2VLZXlBbmRPcmRlckZyb250OnNlbGZdOworICAgIFtbd2luZG93IGFuaW1hdG9y
XSBzZXRBbHBoYVZhbHVlOjFdOworICAgIFtzZWxmIHNjaGVkdWxlVGltZVVwZGF0ZV07CisKKyAg
ICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYg
c2VsZWN0b3I6QHNlbGVjdG9yKGZhZGVXaW5kb3dPdXQpIG9iamVjdDpuaWxdOworICAgIGlmICgh
X21vdXNlSXNJbkhVRCAmJiBbc2VsZiBwbGF5aW5nXSkgLy8gRG9uJ3QgZmFkZSBvdXQgd2hlbiBw
YXVzZWQuCisgICAgICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoZmFkZVdpbmRv
d091dCkgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTpIVURXaW5kb3dGYWRlT3V0RGVsYXldOwor
fQorCistICh2b2lkKWZhZGVXaW5kb3dPdXQKK3sKKyAgICBbTlNDdXJzb3Igc2V0SGlkZGVuVW50
aWxNb3VzZU1vdmVzOllFU107CisgICAgW1tbc2VsZiB3aW5kb3ddIGFuaW1hdG9yXSBzZXRBbHBo
YVZhbHVlOjBdOworICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IodW5zY2hlZHVs
ZVRpbWVVcGRhdGUpIHdpdGhPYmplY3Q6bmlsIGFmdGVyRGVsYXk6MV07Cit9CisKKy0gKHZvaWQp
Y2xvc2VXaW5kb3cKK3sKKyAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVz
dHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGZhZGVXaW5kb3dPdXQpIG9iamVj
dDpuaWxdOworICAgIFtzZWxmIHVuc2NoZWR1bGVUaW1lVXBkYXRlXTsKKyAgICBOU1dpbmRvdyAq
d2luZG93ID0gW3NlbGYgd2luZG93XTsKKyAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gcmVtb3Zl
VHJhY2tpbmdBcmVhOl9hcmVhXTsKKyAgICBbc2VsZiBzZXRBcmVhOm5pbF07CisgICAgW3dpbmRv
dyBjbG9zZV07CisgICAgW3dpbmRvdyBzZXREZWxlZ2F0ZTpuaWxdOworICAgIFtzZWxmIHNldFdp
bmRvdzpuaWxdOworfQorCitzdGF0aWMgTlNDb250cm9sICpjcmVhdGVNZWRpYVVJQ29udHJvbChN
ZWRpYVVJQ29udHJvbCBjb250cm9sVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGNvbnRyb2xUeXBlKSB7
CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6VGltZWxpbmU6IHsKKyAgICAgICAgTlNTbGlkZXIg
KnNsaWRlciA9IFtbUVRIVURUaW1lbGluZSBhbGxvY10gaW5pdF07CisgICAgICAgIFtbc2xpZGVy
IGNlbGxdIHNldENvbnRpbnVvdXM6WUVTXTsKKyAgICAgICAgcmV0dXJuIHNsaWRlcjsKKyAgICB9
CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6U2xpZGVyOiB7CisgICAgICAgIE5TQnV0dG9uICpz
bGlkZXIgPSBbW1FUSFVEU2xpZGVyIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW1tzbGlkZXIgY2Vs
bF0gc2V0Q29udGludW91czpZRVNdOworICAgICAgICByZXR1cm4gc2xpZGVyOworICAgIH0KKyAg
ICBjYXNlIE1lZGlhVUlDb250cm9sOjpQbGF5UGF1c2VCdXR0b246IHsKKyAgICAgICAgTlNCdXR0
b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0dG9u
IHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1BsYXlUZW1wbGF0ZSJdXTsKKyAgICAg
ICAgW2J1dHRvbiBzZXRBbHRlcm5hdGVJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNQYXVz
ZVFUUHJpdmF0ZVRlbXBsYXRlIl1dOworCisgICAgICAgIFtbYnV0dG9uIGNlbGxdIHNldFNob3dz
U3RhdGVCeTpOU0NvbnRlbnRzQ2VsbE1hc2tdOworICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVk
Ok5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9CisgICAgY2FzZSBNZWRpYVVJQ29u
dHJvbDo6RXhpdEZ1bGxzY3JlZW5CdXR0b246IHsKKyAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9
IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0dG9uIHNldEltYWdlOltO
U0ltYWdlIGltYWdlTmFtZWQ6QCJOU0V4aXRGdWxsU2NyZWVuVGVtcGxhdGUiXV07CisgICAgICAg
IFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOworICAgIH0K
KyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpSZXdpbmRCdXR0b246IHsKKyAgICAgICAgTlNCdXR0
b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAgICBbYnV0dG9u
IHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1Jld2luZFRlbXBsYXRlIl1dOworICAg
ICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAg
ICB9CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6RmFzdEZvcndhcmRCdXR0b246IHsKKyAgICAg
ICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAg
ICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU0Zhc3RGb3J3YXJkVGVt
cGxhdGUiXV07CisgICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAgICByZXR1
cm4gYnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpWb2x1bWVVcEJ1dHRv
bjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5p
dF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TQXVk
aW9PdXRwdXRWb2x1bWVIaWdoVGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0b24gc2V0Qm9yZGVy
ZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlD
b250cm9sOjpWb2x1bWVEb3duQnV0dG9uOiB7CisgICAgICAgIE5TQnV0dG9uICpidXR0b24gPSBb
W1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW2J1dHRvbiBzZXRJbWFnZTpbTlNJ
bWFnZSBpbWFnZU5hbWVkOkAiTlNBdWRpb091dHB1dFZvbHVtZUxvd1RlbXBsYXRlIl1dOworICAg
ICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAg
ICB9CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG5pbDsK
K30KKworc3RhdGljIE5TQ29udHJvbCAqY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5
cGUoTWVkaWFVSUNvbnRyb2wgY29udHJvbFR5cGUsIE5TUmVjdCBmcmFtZSkKK3sKKyAgICBOU0Nv
bnRyb2wgKmNvbnRyb2wgPSBjcmVhdGVNZWRpYVVJQ29udHJvbChjb250cm9sVHlwZSk7CisgICAg
Y29udHJvbC5mcmFtZSA9IGZyYW1lOworICAgIHJldHVybiBjb250cm9sOworfQorCitzdGF0aWMg
TlNUZXh0RmllbGQgKmNyZWF0ZVRpbWVUZXh0RmllbGQoTlNSZWN0IGZyYW1lKQoreworICAgIE5T
VGV4dEZpZWxkICp0ZXh0RmllbGQgPSBbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1l
OmZyYW1lXTsKKyAgICBbdGV4dEZpZWxkIHNldFRleHRDb2xvcjpbTlNDb2xvciB3aGl0ZUNvbG9y
XV07CisgICAgW3RleHRGaWVsZCBzZXRCb3JkZXJlZDpOT107CisgICAgW3RleHRGaWVsZCBzZXRG
b250OltOU0ZvbnQgYm9sZFN5c3RlbUZvbnRPZlNpemU6MTBdXTsKKyAgICBbdGV4dEZpZWxkIHNl
dERyYXdzQmFja2dyb3VuZDpOT107CisgICAgW3RleHRGaWVsZCBzZXRCZXplbGVkOk5PXTsKKyAg
ICBbdGV4dEZpZWxkIHNldEVkaXRhYmxlOk5PXTsKKyAgICBbdGV4dEZpZWxkIHNldFNlbGVjdGFi
bGU6Tk9dOworICAgIHJldHVybiB0ZXh0RmllbGQ7Cit9CisKK3N0YXRpYyBOU1ZpZXcgKmNyZWF0
ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldygpCit7CisgICAgaWQgdmlldyA9IFtbUVRIVURCYWNrZ3Jv
dW5kVmlldyBhbGxvY10gaW5pdF07CisKKyAgICBjb25zdCBDR0Zsb2F0IHF1aWNrVGltZVBsYXll
ckhVREhlaWdodCA9IDU5OworICAgIGNvbnN0IENHRmxvYXQgcXVpY2tUaW1lUGxheWVySFVEQ29u
dGVudEJvcmRlclBvc2l0aW9uID0gMzg7CisKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgorICAgIFt2aWV3IHNldENvbnRlbnRCb3JkZXJQb3NpdGlvbjpxdWlja1RpbWVQ
bGF5ZXJIVURDb250ZW50Qm9yZGVyUG9zaXRpb24gLyBxdWlja1RpbWVQbGF5ZXJIVURIZWlnaHRd
OworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorCisgICAgcmV0dXJuIHZp
ZXc7Cit9CisKKy0gKHZvaWQpd2luZG93RGlkTG9hZAoreworICAgIHN0YXRpYyBjb25zdCBDR0Zs
b2F0IGhvcml6b250YWxNYXJnaW4gPSAxMDsKKyAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBwbGF5
QnV0dG9uV2lkdGggPSA0MTsKKyAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBwbGF5QnV0dG9uSGVp
Z2h0ID0gMzU7CisgICAgc3RhdGljIGNvbnN0IENHRmxvYXQgcGxheUJ1dHRvblRvcE1hcmdpbiA9
IDQ7CisgICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdm9sdW1lU2xpZGVyV2lkdGggPSA1MDsKKyAg
ICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB2b2x1bWVTbGlkZXJIZWlnaHQgPSAxMzsKKyAgICBzdGF0
aWMgY29uc3QgQ0dGbG9hdCB2b2x1bWVCdXR0b25XaWR0aCA9IDE4OworICAgIHN0YXRpYyBjb25z
dCBDR0Zsb2F0IHZvbHVtZUJ1dHRvbkhlaWdodCA9IDE2OworICAgIHN0YXRpYyBjb25zdCBDR0Zs
b2F0IHZvbHVtZVVwQnV0dG9uTGVmdE1hcmdpbiA9IDQ7CisgICAgc3RhdGljIGNvbnN0IENHRmxv
YXQgdm9sdW1lQ29udHJvbHNUb3BNYXJnaW4gPSAxMzsKKyAgICBzdGF0aWMgY29uc3QgQ0dGbG9h
dCBleGl0RnVsbHNjcmVlbkJ1dHRvbldpZHRoID0gMjU7CisgICAgc3RhdGljIGNvbnN0IENHRmxv
YXQgZXhpdEZ1bGxzY3JlZW5CdXR0b25IZWlnaHQgPSAyMTsKKyAgICBzdGF0aWMgY29uc3QgQ0dG
bG9hdCBleGl0RnVsbHNjcmVlbkJ1dHRvblRvcE1hcmdpbiA9IDExOworICAgIHN0YXRpYyBjb25z
dCBDR0Zsb2F0IHRpbWVsaW5lV2lkdGggPSAzMTU7CisgICAgc3RhdGljIGNvbnN0IENHRmxvYXQg
dGltZWxpbmVIZWlnaHQgPSAxNDsKKyAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB0aW1lbGluZUJv
dHRvbU1hcmdpbiA9IDc7CisgICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdGltZVRleHRGaWVsZFdp
ZHRoID0gNTQ7CisgICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdGltZVRleHRGaWVsZEhlaWdodCA9
IDEzOworICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHRpbWVUZXh0RmllbGRIb3Jpem9udGFsTWFy
Z2luID0gNzsKKworICAgIE5TV2luZG93ICp3aW5kb3cgPSBbc2VsZiB3aW5kb3ddOworICAgIEFT
U0VSVCh3aW5kb3cpOworCisgICAgTlNWaWV3ICpiYWNrZ3JvdW5kID0gY3JlYXRlTWVkaWFVSUJh
Y2tncm91bmRWaWV3KCk7CisKKyAgICBbd2luZG93IHNldENvbnRlbnRWaWV3OmJhY2tncm91bmRd
OworICAgIF9hcmVhID0gW1tOU1RyYWNraW5nQXJlYSBhbGxvY10gaW5pdFdpdGhSZWN0OltiYWNr
Z3JvdW5kIGJvdW5kc10gb3B0aW9uczpOU1RyYWNraW5nTW91c2VFbnRlcmVkQW5kRXhpdGVkIHwg
TlNUcmFja2luZ0FjdGl2ZUFsd2F5cyBvd25lcjpzZWxmIHVzZXJJbmZvOm5pbF07CisgICAgW2Jh
Y2tncm91bmQgYWRkVHJhY2tpbmdBcmVhOl9hcmVhXTsKKyAgICBbYmFja2dyb3VuZCByZWxlYXNl
XTsgICAgCisKKyAgICBOU1ZpZXcgKmNvbnRlbnRWaWV3ID0gW3dpbmRvdyBjb250ZW50Vmlld107
CisKKyAgICBDR0Zsb2F0IGNlbnRlciA9IENHRmxvb3IoKHdpbmRvd1dpZHRoIC0gcGxheUJ1dHRv
bldpZHRoKSAvIDIpOworICAgIF9wbGF5QnV0dG9uID0gKE5TQnV0dG9uICopY3JlYXRlQ29udHJv
bFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OlBsYXlQYXVzZUJ1dHRvbiwg
TlNNYWtlUmVjdChjZW50ZXIsIHdpbmRvd0hlaWdodCAtIHBsYXlCdXR0b25Ub3BNYXJnaW4gLSBw
bGF5QnV0dG9uSGVpZ2h0LCBwbGF5QnV0dG9uV2lkdGgsIHBsYXlCdXR0b25IZWlnaHQpKTsKKyAg
ICBBU1NFUlQoW19wbGF5QnV0dG9uIGlzS2luZE9mQ2xhc3M6W05TQnV0dG9uIGNsYXNzXV0pOwor
ICAgIFtfcGxheUJ1dHRvbiBzZXRUYXJnZXQ6c2VsZl07CisgICAgW19wbGF5QnV0dG9uIHNldEFj
dGlvbjpAc2VsZWN0b3IodG9nZ2xlUGxheWluZzopXTsKKyAgICBbY29udGVudFZpZXcgYWRkU3Vi
dmlldzpfcGxheUJ1dHRvbl07CisKKyAgICBDR0Zsb2F0IGNsb3NlVG9SaWdodCA9IHdpbmRvd1dp
ZHRoIC0gaG9yaXpvbnRhbE1hcmdpbiAtIGV4aXRGdWxsc2NyZWVuQnV0dG9uV2lkdGg7CisgICAg
TlNDb250cm9sICpleGl0RnVsbHNjcmVlbkJ1dHRvbiA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFV
SUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpFeGl0RnVsbHNjcmVlbkJ1dHRvbiwgTlNNYWtl
UmVjdChjbG9zZVRvUmlnaHQsIHdpbmRvd0hlaWdodCAtIGV4aXRGdWxsc2NyZWVuQnV0dG9uVG9w
TWFyZ2luIC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25IZWlnaHQsIGV4aXRGdWxsc2NyZWVuQnV0dG9u
V2lkdGgsIGV4aXRGdWxsc2NyZWVuQnV0dG9uSGVpZ2h0KSk7CisgICAgW2V4aXRGdWxsc2NyZWVu
QnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3IoZXhpdEZ1bGxzY3JlZW46KV07CisgICAgW2V4aXRG
dWxsc2NyZWVuQnV0dG9uIHNldFRhcmdldDpzZWxmXTsKKyAgICBbY29udGVudFZpZXcgYWRkU3Vi
dmlldzpleGl0RnVsbHNjcmVlbkJ1dHRvbl07CisgICAgW2V4aXRGdWxsc2NyZWVuQnV0dG9uIHJl
bGVhc2VdOworICAgIAorICAgIENHRmxvYXQgdm9sdW1lQ29udHJvbHNCb3R0b20gPSB3aW5kb3dI
ZWlnaHQgLSB2b2x1bWVDb250cm9sc1RvcE1hcmdpbiAtIHZvbHVtZUJ1dHRvbkhlaWdodDsKKyAg
ICBDR0Zsb2F0IGxlZnQgPSBob3Jpem9udGFsTWFyZ2luOworICAgIE5TQ29udHJvbCAqdm9sdW1l
RG93bkJ1dHRvbiA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlD
b250cm9sOjpWb2x1bWVEb3duQnV0dG9uLCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xz
Qm90dG9tLCB2b2x1bWVCdXR0b25XaWR0aCwgdm9sdW1lQnV0dG9uSGVpZ2h0KSk7CisgICAgW2Nv
bnRlbnRWaWV3IGFkZFN1YnZpZXc6dm9sdW1lRG93bkJ1dHRvbl07CisgICAgW3ZvbHVtZURvd25C
dXR0b24gc2V0VGFyZ2V0OnNlbGZdOworICAgIFt2b2x1bWVEb3duQnV0dG9uIHNldEFjdGlvbjpA
c2VsZWN0b3Ioc2V0Vm9sdW1lVG9aZXJvOildOworICAgIFt2b2x1bWVEb3duQnV0dG9uIHJlbGVh
c2VdOworCisgICAgbGVmdCArPSB2b2x1bWVCdXR0b25XaWR0aDsKKyAgICBfdm9sdW1lU2xpZGVy
ID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OlNs
aWRlciwgTlNNYWtlUmVjdChsZWZ0LCB2b2x1bWVDb250cm9sc0JvdHRvbSArIENHRmxvb3IoKHZv
bHVtZUJ1dHRvbkhlaWdodCAtIHZvbHVtZVNsaWRlckhlaWdodCkgLyAyKSwgdm9sdW1lU2xpZGVy
V2lkdGgsIHZvbHVtZVNsaWRlckhlaWdodCkpOworICAgIFtfdm9sdW1lU2xpZGVyIHNldFZhbHVl
OltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOltzZWxmIG1heFZvbHVtZV1dIGZvcktleTpAIm1h
eFZhbHVlIl07CisgICAgW192b2x1bWVTbGlkZXIgc2V0VGFyZ2V0OnNlbGZdOworICAgIFtfdm9s
dW1lU2xpZGVyIHNldEFjdGlvbjpAc2VsZWN0b3Iodm9sdW1lQ2hhbmdlZDopXTsKKyAgICBbY29u
dGVudFZpZXcgYWRkU3Vidmlldzpfdm9sdW1lU2xpZGVyXTsKKworICAgIGxlZnQgKz0gdm9sdW1l
U2xpZGVyV2lkdGggKyB2b2x1bWVVcEJ1dHRvbkxlZnRNYXJnaW47CisgICAgTlNDb250cm9sICp2
b2x1bWVVcEJ1dHRvbiA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlh
VUlDb250cm9sOjpWb2x1bWVVcEJ1dHRvbiwgTlNNYWtlUmVjdChsZWZ0LCB2b2x1bWVDb250cm9s
c0JvdHRvbSwgdm9sdW1lQnV0dG9uV2lkdGgsIHZvbHVtZUJ1dHRvbkhlaWdodCkpOworICAgIFt2
b2x1bWVVcEJ1dHRvbiBzZXRUYXJnZXQ6c2VsZl07CisgICAgW3ZvbHVtZVVwQnV0dG9uIHNldEFj
dGlvbjpAc2VsZWN0b3Ioc2V0Vm9sdW1lVG9NYXhpbXVtOildOworICAgIFtjb250ZW50VmlldyBh
ZGRTdWJ2aWV3OnZvbHVtZVVwQnV0dG9uXTsKKyAgICBbdm9sdW1lVXBCdXR0b24gcmVsZWFzZV07
CisKKyAgICBfdGltZWxpbmUgPSBjcmVhdGVNZWRpYVVJQ29udHJvbChNZWRpYVVJQ29udHJvbDo6
VGltZWxpbmUpOworCisgICAgW190aW1lbGluZSBzZXRUYXJnZXQ6c2VsZl07CisgICAgW190aW1l
bGluZSBzZXRBY3Rpb246QHNlbGVjdG9yKHRpbWVsaW5lUG9zaXRpb25DaGFuZ2VkOildOworICAg
IFtfdGltZWxpbmUgc2V0RnJhbWU6TlNNYWtlUmVjdChDR0Zsb29yKCh3aW5kb3dXaWR0aCAtIHRp
bWVsaW5lV2lkdGgpIC8gMiksIHRpbWVsaW5lQm90dG9tTWFyZ2luLCB0aW1lbGluZVdpZHRoLCB0
aW1lbGluZUhlaWdodCldOworICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3Ol90aW1lbGluZV07
CisKKyAgICBfZWxhcHNlZFRpbWVUZXh0ID0gY3JlYXRlVGltZVRleHRGaWVsZChOU01ha2VSZWN0
KHRpbWVUZXh0RmllbGRIb3Jpem9udGFsTWFyZ2luLCB0aW1lbGluZUJvdHRvbU1hcmdpbiwgdGlt
ZVRleHRGaWVsZFdpZHRoLCB0aW1lVGV4dEZpZWxkSGVpZ2h0KSk7CisgICAgW19lbGFwc2VkVGlt
ZVRleHQgc2V0QWxpZ25tZW50Ok5TVGV4dEFsaWdubWVudExlZnRdOworICAgIFtjb250ZW50Vmll
dyBhZGRTdWJ2aWV3Ol9lbGFwc2VkVGltZVRleHRdOworCisgICAgX3JlbWFpbmluZ1RpbWVUZXh0
ID0gY3JlYXRlVGltZVRleHRGaWVsZChOU01ha2VSZWN0KHdpbmRvd1dpZHRoIC0gdGltZVRleHRG
aWVsZEhvcml6b250YWxNYXJnaW4gLSB0aW1lVGV4dEZpZWxkV2lkdGgsIHRpbWVsaW5lQm90dG9t
TWFyZ2luLCB0aW1lVGV4dEZpZWxkV2lkdGgsIHRpbWVUZXh0RmllbGRIZWlnaHQpKTsKKyAgICBb
X3JlbWFpbmluZ1RpbWVUZXh0IHNldEFsaWdubWVudDpOU1RleHRBbGlnbm1lbnRSaWdodF07Cisg
ICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X3JlbWFpbmluZ1RpbWVUZXh0XTsKKworICAgIFt3
aW5kb3cgcmVjYWxjdWxhdGVLZXlWaWV3TG9vcF07CisgICAgW3dpbmRvdyBzZXRJbml0aWFsRmly
c3RSZXNwb25kZXI6X3BsYXlCdXR0b25dOworICAgIFt3aW5kb3cgY2VudGVyXTsKK30KKworLSAo
dm9pZCl1cGRhdGVWb2x1bWUKK3sKKyAgICBbX3ZvbHVtZVNsaWRlciBzZXRGbG9hdFZhbHVlOltz
ZWxmIHZvbHVtZV1dOworfQorCistICh2b2lkKXVwZGF0ZVRpbWUKK3sKKyAgICBbc2VsZiB1cGRh
dGVWb2x1bWVdOworCisgICAgW190aW1lbGluZSBzZXRGbG9hdFZhbHVlOltzZWxmIGN1cnJlbnRU
aW1lXV07CisgICAgW190aW1lbGluZSBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTpbc2VsZiBkdXJhdGlvbl1dIGZvcktleTpAIm1heFZhbHVlIl07CisKKyAgICBbX3JlbWFpbmlu
Z1RpbWVUZXh0IHNldFN0cmluZ1ZhbHVlOltzZWxmIHJlbWFpbmluZ1RpbWVUZXh0XV07CisgICAg
W19lbGFwc2VkVGltZVRleHQgc2V0U3RyaW5nVmFsdWU6W3NlbGYgZWxhcHNlZFRpbWVUZXh0XV07
Cit9CisKKy0gKHZvaWQpZW5kU2NydWJiaW5nCit7CisgICAgQVNTRVJUKF9pc1NjcnViYmluZyk7
CisgICAgX2lzU2NydWJiaW5nID0gTk87CisgICAgaWYgKEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVv
RWxlbWVudCA9IFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkKKyAgICAgICAgdmlkZW9FbGVtZW50
LT5lbmRTY3J1YmJpbmcoKTsKK30KKworLSAodm9pZCl0aW1lbGluZVBvc2l0aW9uQ2hhbmdlZDoo
aWQpc2VuZGVyCit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgW3NlbGYgc2V0Q3Vy
cmVudFRpbWU6W190aW1lbGluZSBmbG9hdFZhbHVlXV07CisgICAgaWYgKCFfaXNTY3J1YmJpbmcp
IHsKKyAgICAgICAgX2lzU2NydWJiaW5nID0gWUVTOworICAgICAgICBpZiAoSFRNTFZpZGVvRWxl
bWVudCogdmlkZW9FbGVtZW50ID0gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQorICAgICAgICAg
ICAgdmlkZW9FbGVtZW50LT5iZWdpblNjcnViYmluZygpOworICAgICAgICBzdGF0aWMgTlNBcnJh
eSAqZW5kU2NydWJiaW5nTW9kZXMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpO
U0RlZmF1bHRSdW5Mb29wTW9kZSwgTlNNb2RhbFBhbmVsUnVuTG9vcE1vZGUsIG5pbF07CisgICAg
ICAgIC8vIFNjaGVkdWxlIC1lbmRTY3J1YmJpbmcgZm9yIHdoZW4gbGVhdmluZyBtb3VzZSB0cmFj
a2luZyBtb2RlLgorICAgICAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gcGVyZm9ybVNl
bGVjdG9yOkBzZWxlY3RvcihlbmRTY3J1YmJpbmcpIHRhcmdldDpzZWxmIGFyZ3VtZW50Om5pbCBv
cmRlcjowIG1vZGVzOmVuZFNjcnViYmluZ01vZGVzXTsKKyAgICB9Cit9CisKKy0gKGZsb2F0KWN1
cnJlbnRUaW1lCit7CisgICAgcmV0dXJuIFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSA/IFtfZGVs
ZWdhdGUgdmlkZW9FbGVtZW50XS0+Y3VycmVudFRpbWUoKSA6IDA7Cit9CisKKy0gKHZvaWQpc2V0
Q3VycmVudFRpbWU6KGZsb2F0KWN1cnJlbnRUaW1lCit7CisgICAgaWYgKCFbX2RlbGVnYXRlIHZp
ZGVvRWxlbWVudF0pCisgICAgICAgIHJldHVybjsKKyAgICBbX2RlbGVnYXRlIHZpZGVvRWxlbWVu
dF0tPnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lKTsKKyAgICBbc2VsZiB1cGRhdGVUaW1lXTsK
K30KKworLSAoZG91YmxlKWR1cmF0aW9uCit7CisgICAgcmV0dXJuIFtfZGVsZWdhdGUgdmlkZW9F
bGVtZW50XSA/IFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+ZHVyYXRpb24oKSA6IDA7Cit9CisK
Ky0gKGZsb2F0KW1heFZvbHVtZQoreworICAgIC8vIFNldCB0aGUgdm9sdW1lIHNsaWRlciByZXNv
bHV0aW9uCisgICAgcmV0dXJuIDEwMDsKK30KKworLSAodm9pZCl2b2x1bWVDaGFuZ2VkOihpZClz
ZW5kZXIKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKKyAgICBbc2VsZiBzZXRWb2x1bWU6
W192b2x1bWVTbGlkZXIgZmxvYXRWYWx1ZV1dOworfQorCistICh2b2lkKXNldFZvbHVtZVRvWmVy
bzooaWQpc2VuZGVyCit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgW3NlbGYgc2V0
Vm9sdW1lOjBdOworfQorCistICh2b2lkKXNldFZvbHVtZVRvTWF4aW11bTooaWQpc2VuZGVyCit7
CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgW3NlbGYgc2V0Vm9sdW1lOltzZWxmIG1h
eFZvbHVtZV1dOworfQorCistICh2b2lkKWRlY3JlbWVudFZvbHVtZQoreworICAgIGlmICghW19k
ZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCB2b2x1
bWUgPSBbc2VsZiB2b2x1bWVdIC0gMTA7CisgICAgW3NlbGYgc2V0Vm9sdW1lOnN0ZDo6bWF4KHZv
bHVtZSwgMC4wZildOworfQorCistICh2b2lkKWluY3JlbWVudFZvbHVtZQoreworICAgIGlmICgh
W19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCB2
b2x1bWUgPSBbc2VsZiB2b2x1bWVdICsgMTA7CisgICAgW3NlbGYgc2V0Vm9sdW1lOnN0ZDo6bWlu
KHZvbHVtZSwgW3NlbGYgbWF4Vm9sdW1lXSldOworfQorCistIChmbG9hdCl2b2x1bWUKK3sKKyAg
ICByZXR1cm4gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdID8gW19kZWxlZ2F0ZSB2aWRlb0VsZW1l
bnRdLT52b2x1bWUoKSAqIFtzZWxmIG1heFZvbHVtZV0gOiAwOworfQorCistICh2b2lkKXNldFZv
bHVtZTooZmxvYXQpdm9sdW1lCit7CisgICAgaWYgKCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0p
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdLT5tdXRl
ZCgpKQorICAgICAgICBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPnNldE11dGVkKGZhbHNlKTsK
KyAgICBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPnNldFZvbHVtZSh2b2x1bWUgLyBbc2VsZiBt
YXhWb2x1bWVdKTsKKyAgICBbc2VsZiB1cGRhdGVWb2x1bWVdOworfQorCistICh2b2lkKXVwZGF0
ZVBsYXlCdXR0b24KK3sKKyAgICBbX3BsYXlCdXR0b24gc2V0SW50VmFsdWU6W3NlbGYgcGxheWlu
Z11dOworfQorCistICh2b2lkKXVwZGF0ZVJhdGUKK3sKKyAgICBCT09MIHBsYXlpbmcgPSBbc2Vs
ZiBwbGF5aW5nXTsKKworICAgIC8vIEtlZXAgdGhlIEhVRCB2aXNpYmxlIHdoZW4gcGF1c2VkLgor
ICAgIGlmICghcGxheWluZykKKyAgICAgICAgW3NlbGYgZmFkZVdpbmRvd0luXTsKKyAgICBlbHNl
IGlmICghX21vdXNlSXNJbkhVRCkgeworICAgICAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQ
ZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGZhZGVXaW5k
b3dPdXQpIG9iamVjdDpuaWxdOworICAgICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNlbGVj
dG9yKGZhZGVXaW5kb3dPdXQpIHdpdGhPYmplY3Q6bmlsIGFmdGVyRGVsYXk6SFVEV2luZG93RmFk
ZU91dERlbGF5XTsKKyAgICB9CisgICAgW3NlbGYgdXBkYXRlUGxheUJ1dHRvbl07Cit9CisKKy0g
KHZvaWQpdG9nZ2xlUGxheWluZzooaWQpc2VuZGVyCit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRl
cik7CisgICAgW3NlbGYgc2V0UGxheWluZzohW3NlbGYgcGxheWluZ11dOworfQorCistIChCT09M
KXBsYXlpbmcKK3sKKyAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBbX2RlbGVn
YXRlIHZpZGVvRWxlbWVudF07CisgICAgaWYgKCF2aWRlb0VsZW1lbnQpCisgICAgICAgIHJldHVy
biBOTzsKKworICAgIHJldHVybiAhdmlkZW9FbGVtZW50LT5jYW5QbGF5KCk7Cit9CisKKy0gKHZv
aWQpc2V0UGxheWluZzooQk9PTClwbGF5aW5nCit7CisgICAgSFRNTFZpZGVvRWxlbWVudCogdmlk
ZW9FbGVtZW50ID0gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdOworCisgICAgaWYgKCF2aWRlb0Vs
ZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChwbGF5aW5nKQorICAgICAgICB2aWRl
b0VsZW1lbnQtPnBsYXkoKTsKKyAgICBlbHNlCisgICAgICAgIHZpZGVvRWxlbWVudC0+cGF1c2Uo
KTsKK30KKworc3RhdGljIE5TU3RyaW5nICp0aW1lVG9TdHJpbmcoZG91YmxlIHRpbWUpCit7Cisg
ICAgQVNTRVJUX0FSRyh0aW1lLCB0aW1lID49IDApOworCisgICAgaWYgKCFzdGQ6OmlzZmluaXRl
KHRpbWUpKQorICAgICAgICB0aW1lID0gMDsKKworICAgIGludCBzZWNvbmRzID0gbmFycm93UHJl
Y2lzaW9uVG9GbG9hdChzdGQ6OmFicyh0aW1lKSk7CisgICAgaW50IGhvdXJzID0gc2Vjb25kcyAv
ICg2MCAqIDYwKTsKKyAgICBpbnQgbWludXRlcyA9IChzZWNvbmRzIC8gNjApICUgNjA7CisgICAg
c2Vjb25kcyAlPSA2MDsKKworICAgIGlmIChob3VycykKKyAgICAgICAgcmV0dXJuIFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiJWQ6JTAyZDolMDJkIiwgaG91cnMsIG1pbnV0ZXMsIHNlY29u
ZHNdOworCisgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJTAyZDolMDJk
IiwgbWludXRlcywgc2Vjb25kc107ICAgIAorfQorCistIChOU1N0cmluZyAqKXJlbWFpbmluZ1Rp
bWVUZXh0Cit7CisgICAgSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50ID0gW19kZWxlZ2F0
ZSB2aWRlb0VsZW1lbnRdOworICAgIGlmICghdmlkZW9FbGVtZW50KQorICAgICAgICByZXR1cm4g
QCIiOworCisgICAgZG91YmxlIHJlbWFpbmluZ1RpbWUgPSAwOworCisgICAgaWYgKHN0ZDo6aXNm
aW5pdGUodmlkZW9FbGVtZW50LT5kdXJhdGlvbigpKSAmJiBzdGQ6OmlzZmluaXRlKHZpZGVvRWxl
bWVudC0+Y3VycmVudFRpbWUoKSkpCisgICAgICAgIHJlbWFpbmluZ1RpbWUgPSB2aWRlb0VsZW1l
bnQtPmR1cmF0aW9uKCkgLSB2aWRlb0VsZW1lbnQtPmN1cnJlbnRUaW1lKCk7CisKKyAgICByZXR1
cm4gW0AiLSIgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6dGltZVRvU3RyaW5nKHJlbWFpbmluZ1Rp
bWUpXTsKK30KKworLSAoTlNTdHJpbmcgKillbGFwc2VkVGltZVRleHQKK3sKKyAgICBpZiAoIVtf
ZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkKKyAgICAgICAgcmV0dXJuIEAiIjsKKworICAgIHJldHVy
biB0aW1lVG9TdHJpbmcoW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdLT5jdXJyZW50VGltZSgpKTsK
K30KKworLy8gTUFSSzogTlNSZXNwb25kZXIKKworLSAodm9pZCltb3VzZUVudGVyZWQ6KE5TRXZl
bnQgKil0aGVFdmVudAoreworICAgIFVOVVNFRF9QQVJBTSh0aGVFdmVudCk7CisgICAgLy8gTWFr
ZSBzdXJlIHRoZSBIVUQgd29uJ3QgYmUgaGlkZGVuIGZyb20gbm93CisgICAgX21vdXNlSXNJbkhV
RCA9IFlFUzsKKyAgICBbc2VsZiBmYWRlV2luZG93SW5dOworfQorCistICh2b2lkKW1vdXNlRXhp
dGVkOihOU0V2ZW50ICopdGhlRXZlbnQKK3sKKyAgICBVTlVTRURfUEFSQU0odGhlRXZlbnQpOwor
ICAgIF9tb3VzZUlzSW5IVUQgPSBOTzsKKyAgICBbc2VsZiBmYWRlV2luZG93SW5dOworfQorCist
ICh2b2lkKXJld2luZDooaWQpc2VuZGVyCit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Cisg
ICAgaWYgKCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0pCisgICAgICAgIHJldHVybjsKKyAgICBb
X2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPnJld2luZCgzMCk7Cit9CisKKy0gKHZvaWQpZmFzdEZv
cndhcmQ6KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOworICAgIGlmICgh
W19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQorICAgICAgICByZXR1cm47Cit9CisKKy0gKHZvaWQp
ZXhpdEZ1bGxzY3JlZW46KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwor
ICAgIGlmIChfaXNFbmRpbmdGdWxsc2NyZWVuKQorICAgICAgICByZXR1cm47CisgICAgX2lzRW5k
aW5nRnVsbHNjcmVlbiA9IFlFUzsKKyAgICBbX2RlbGVnYXRlIHJlcXVlc3RFeGl0RnVsbHNjcmVl
bl07IAorfQorCisvLyBNQVJLOiBOU1dpbmRvd0RlbGVnYXRlCisKKy0gKHZvaWQpd2luZG93RGlk
RXhwb3NlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIFVOVVNFRF9QQVJB
TShub3RpZmljYXRpb24pOworICAgIFtzZWxmIHNjaGVkdWxlVGltZVVwZGF0ZV07Cit9CisKKy0g
KHZvaWQpd2luZG93RGlkQ2xvc2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7Cisg
ICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CisgICAgW3NlbGYgdW5zY2hlZHVsZVRpbWVV
cGRhdGVdOworfQorCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCmluZGV4IDg1ZWFiNDg1OTY3OWRiMWZlMGU5MzhhYjM5NThiNWJiMTNh
YTE5NTQuLjJkYmRkMmNjZDUxZGJhOWQ3YjQyMmEyOGM2MzEyNDAyODg5NzRmZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTI1NSw2ICsyNTUsNyBA
QAogI2ltcG9ydCAiV2ViTlNQcmludE9wZXJhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCAiV2ViUERG
Vmlldy5oIgogI2ltcG9ydCAiV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmgiCisjaW1wb3J0ICJXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0
b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvcldpbmRvdy5oPgogI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oPgpAQCAtOTM4Nyw3ICs5Mzg4LDYgQEAgYm9vbCBMYXll
ckZsdXNoQ29udHJvbGxlcjo6Zmx1c2hMYXllcnMoKQogI2lmIEVOQUJMRShWSURFTykKIC0gKHZv
aWQpX2VudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50OihXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50Kil2aWRlb0VsZW1lbnQgbW9kZTooV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKW1vZGUKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIGlmIChfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIpIHsKICAgICAgICAgaWYg
KFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgdmlkZW9FbGVtZW50XSA9PSB2aWRlb0Vs
ZW1lbnQpIHsKICAgICAgICAgICAgIC8vIFRoZSBiYWNrZW5kIG1heSBqdXN0IHdhcm4gdXMgdGhh
dCB0aGUgdW5kZXJsYXlpbmcgcGxhZnRvcm1Nb3ZpZSgpCkBAIC05NDA1LDIyICs5NDA1LDIzIEBA
IGJvb2wgTGF5ZXJGbHVzaENvbnRyb2xsZXI6OmZsdXNoTGF5ZXJzKCkKICAgICBpZiAoIV9wcml2
YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlcikgewogICAgICAgICBfcHJpdmF0ZS0+ZnVsbHNjcmVl
bkNvbnRyb2xsZXIgPSBbW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRd
OwogICAgICAgICBbX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyIHNldFZpZGVvRWxlbWVu
dDp2aWRlb0VsZW1lbnRdOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFtfcHJp
dmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVuOihVSVZpZXcgKilbW1tz
ZWxmIHdpbmRvd10gaG9zdExheWVyXSBkZWxlZ2F0ZV0gbW9kZTptb2RlXTsKKyNlbHNlCisgICAg
ICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVuOltbc2Vs
ZiB3aW5kb3ddIHNjcmVlbl1dOworI2VuZGlmCiAgICAgfQogICAgIGVsc2UKICAgICAgICAgW19w
cml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciBzZXRWaWRlb0VsZW1lbnQ6dmlkZW9FbGVtZW50
XTsKLSNlbmRpZgogfQogCiAtICh2b2lkKV9leGl0VmlkZW9GdWxsc2NyZWVuCiB7Ci0jaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIV9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxl
cikKICAgICAgICAgcmV0dXJuOwogICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIg
ZXhpdEZ1bGxzY3JlZW5dOwogICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgcmVs
ZWFzZV07CiAgICAgX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250cm9sbGVyID0gbmlsOwotI2VuZGlm
CiB9CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9E
RSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359550</attachid>
            <date>2019-01-18 15:55:48 -0800</date>
            <delta_ts>2019-01-18 16:22:48 -0800</delta_ts>
            <desc>Rabased patch for landing</desc>
            <filename>bug-193586-20190118155544.patch</filename>
            <type>text/plain</type>
            <size>63864</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzNhOTI4YzdiNzk1OWMz
ZjIxYTBlYmZlNGNhMzlkNWJmODZkYmNkMC4uNDZmMGZjNzliY2QxOTZlZGYwODE5OTRmNTllN2Zh
ZmFkNGQwNjBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTAxLTE4ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmVydCByMjM4
ODE1LCBpdCBicm9rZSBXSzEgdmlkZW8gZnVsbHNjcmVlbiBvbiBNYWMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzU4NgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDczNTg5NDE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisg
ICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnN1cHBvcnRzRnVsbHNj
cmVlbiBjb25zdCk6CisKIDIwMTktMDEtMTggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFub3RoZXIgYXR0ZW1wdCB0byBmaXggdGhlIGlPUyBidWlsZCBmb2xs
b3dpbmcgPGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDAxNzQ+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nCmluZGV4IDAyNTZiOWNkZTNkOWFiNWEyYWVkZGUyN2EyMjRkYWU3MDkzOTViN2Yu
LjFiNGJiZjc1ODYzYzM2MDdhMDIzNGU4ZTRmZWMwZmExMWM5NGFjZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDEtMTggIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2ZXJ0IHIyMzg4MTUsIGl0IGJyb2tlIFdL
MSB2aWRlbyBmdWxsc2NyZWVuIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNTg2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzM1ODk0
MT4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgKiBXZWJLaXRM
ZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0xNyAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFN0b3AgdXNpbmcg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBpbiBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMjgyMjYxY2I4ODU4MzYwYTM0YTZmZjJmZmMzMWRmNGIw
MWM0NTJiOS4uMWUwNjRmZWM3YmNiMGRhYjA3NDNjM2Q1MmNhYmYxZmUzYzkyM2I0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0wMS0xOCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZlcnQgcjIz
ODgxNSwgaXQgYnJva2UgV0sxIHZpZGVvIGZ1bGxzY3JlZW4gb24gTWFjCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM1ODYKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzQ3MzU4OTQxPgorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKwor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW06IEFkZGVk
LgorICAgICAgICAoU09GVF9MSU5LX0NMQVNTKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlciBpbml0XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
IGZ1bGxzY3JlZW5XaW5kb3ddKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlciB3aW5kb3dEaWRMb2FkXSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIgdmlkZW9FbGVtZW50XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIgc2V0VmlkZW9FbGVtZW50Ol0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyIGNsZWFyRmFkZUFuaW1hdGlvbl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyIHdpbmRvd0RpZEV4aXRGdWxsc2NyZWVuXSk6CisgICAgICAgICgtW1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgd2luZG93RGlkRW50ZXJGdWxsc2NyZWVuXSk6Cisg
ICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgdmlkZW9FbGVtZW50UmVjdF0p
OgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGFwcGxpY2F0aW9uRGlk
UmVzaWduQWN0aXZlOl0pOgorICAgICAgICAoZnJhbWVFeHBhbmRlZFRvUmF0aW9PZkZyYW1lKToK
KyAgICAgICAgKGNyZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93KToKKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBzZXR1cEZhZGVBbmltYXRpb25JZk5lZWRlZEFu
ZEZhZGVJbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBlbnRl
ckZ1bGxzY3JlZW46XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIg
ZXhpdEZ1bGxzY3JlZW5dKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ciBhcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6XSk6CisgICAgICAgICgtW1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsc2NyZWVu
XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgX3JlcXVlc3RFeGl0
XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgcmVxdWVzdEV4aXRG
dWxsc2NyZWVuV2l0aEFuaW1hdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlciByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5dKToKKyAgICAgICAgKC1bV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlciBmYWRlSFVESW5dKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpj
b250ZXh0Ol0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHJhdGVD
aGFuZ2VkOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgaW5pdFdpdGhD
b250ZW50UmVjdDpzdHlsZU1hc2s6YmFja2luZzpkZWZlcjpdKToKKyAgICAgICAgKC1bV2ViVmlk
ZW9GdWxsc2NyZWVuV2luZG93IGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2Ny
ZWVuV2luZG93IHJlc2lnbkZpcnN0UmVzcG9uZGVyXSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVs
bHNjcmVlbldpbmRvdyBjYW5CZWNvbWVLZXlXaW5kb3ddKToKKyAgICAgICAgKC1bV2ViVmlkZW9G
dWxsc2NyZWVuV2luZG93IG1vdXNlRG93bjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2Ny
ZWVuV2luZG93IGNhbmNlbE9wZXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2Ny
ZWVuV2luZG93IGFuaW1hdGVkUmVzaXplRGlkRW5kXSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVs
bHNjcmVlbldpbmRvdyBhbmltYXRlRnJvbVJlY3Q6dG9SZWN0OndpdGhTdWJBbmltYXRpb246Y29u
dHJvbGxlckFjdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGFu
aW1hdGlvbkRpZEVuZDpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IG1v
dXNlTW92ZWQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlkZW9GdWxsc2Ny
ZWVuSFVEV2luZG93Q29udHJvbGxlci5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvdyBpbml0V2l0aENvbnRlbnRSZWN0OnN0eWxlTWFzazpiYWNraW5nOmRl
ZmVyOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3cgY2FuQmVjb21l
S2V5V2luZG93XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvdyBjYW5j
ZWxPcGVyYXRpb246XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvdyBj
ZW50ZXJdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93IGtleURvd246
XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvdyByZXNpZ25GaXJzdFJl
c3BvbmRlcl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3cgcGVyZm9y
bUtleUVxdWl2YWxlbnQ6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRv
d0NvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVE
V2luZG93Q29udHJvbGxlciBzZXRBcmVhOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyIGtleURvd246XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV2ViVmlk
ZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBzZXREZWxlZ2F0ZTpdKToKKyAgICAgICAg
KC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBzY2hlZHVsZVRpbWVVcGRh
dGVdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciB1
bnNjaGVkdWxlVGltZVVwZGF0ZV0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURX
aW5kb3dDb250cm9sbGVyIGZhZGVXaW5kb3dJbl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyIGZhZGVXaW5kb3dPdXRdKToKKyAgICAgICAgKC1bV2Vi
VmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBjbG9zZVdpbmRvd10pOgorICAgICAg
ICAoY3JlYXRlTWVkaWFVSUNvbnRyb2wpOgorICAgICAgICAoY3JlYXRlQ29udHJvbFdpdGhNZWRp
YVVJQ29udHJvbFR5cGUpOgorICAgICAgICAoY3JlYXRlVGltZVRleHRGaWVsZCk6CisgICAgICAg
IChjcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHdpbmRvd0RpZExvYWRdKToKKyAgICAgICAgKC1bV2Vi
VmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciB1cGRhdGVWb2x1bWVdKToKKyAgICAg
ICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciB1cGRhdGVUaW1lXSk6
CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgZW5kU2Ny
dWJiaW5nXSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xs
ZXIgdGltZWxpbmVQb3NpdGlvbkNoYW5nZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgY3VycmVudFRpbWVdKToKKyAgICAgICAgKC1bV2ViVmlk
ZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBzZXRDdXJyZW50VGltZTpdKToKKyAgICAg
ICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBkdXJhdGlvbl0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIG1heFZvbHVt
ZV0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHZv
bHVtZUNoYW5nZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0Nv
bnRyb2xsZXIgc2V0Vm9sdW1lVG9aZXJvOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyIHNldFZvbHVtZVRvTWF4aW11bTpdKToKKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBkZWNyZW1lbnRWb2x1bWVdKToK
KyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBpbmNyZW1l
bnRWb2x1bWVdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJv
bGxlciB2b2x1bWVdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29u
dHJvbGxlciBzZXRWb2x1bWU6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdp
bmRvd0NvbnRyb2xsZXIgdXBkYXRlUGxheUJ1dHRvbl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1
bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHVwZGF0ZVJhdGVdKToKKyAgICAgICAgKC1bV2Vi
VmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciB0b2dnbGVQbGF5aW5nOl0pOgorICAg
ICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHBsYXlpbmddKToK
KyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBzZXRQbGF5
aW5nOl0pOgorICAgICAgICAodGltZVRvU3RyaW5nKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxs
c2NyZWVuSFVEV2luZG93Q29udHJvbGxlciByZW1haW5pbmdUaW1lVGV4dF0pOgorICAgICAgICAo
LVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIGVsYXBzZWRUaW1lVGV4dF0p
OgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIG1vdXNl
RW50ZXJlZDpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJv
bGxlciBtb3VzZUV4aXRlZDpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2lu
ZG93Q29udHJvbGxlciByZXdpbmQ6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkhV
RFdpbmRvd0NvbnRyb2xsZXIgZmFzdEZvcndhcmQ6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgZXhpdEZ1bGxzY3JlZW46XSk6CisgICAgICAgICgt
W1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgd2luZG93RGlkRXhwb3NlOl0p
OgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHdpbmRv
d0RpZENsb3NlOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V2ViVmlldyBfZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQ6bW9kZTpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBfZXhpdFZpZGVvRnVsbHNjcmVlbl0pOgorCiAyMDE5LTAxLTE4ICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEdldCByaWQg
b2YgQURWQU5DRURfU1BFTExfQ0hFQ0tJTkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXgg
OGRkOTk5ZTIwODFmOTdiMzM0MjM2ZjNmMzBkMDg1YmI1ZDA1ZDQ4NC4uODY2ZWE2YTU0YjlhNDJm
ODc4ZDRlMTliNjUwYTJjM2MzYmEyMDlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAg
LTM4MSw2ICszODEsOCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9tYWMvV2ViQ29yZU9iakNFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9tYWMvV2ViR0xCbGFja2xp
c3QubW0KICAgICBwbGF0Zm9ybS9tYWMvV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tCisg
ICAgcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0KKyAgICBwbGF0
Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQogICAgIHBs
YXRmb3JtL21hYy9XaWRnZXRNYWMubW0KIAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCAzMTAzMDczN2JiZmFjY2Rj
YTY3ZjljNWQ5OGY0NTliOWE4NmQwZGIzLi4yODk5MjMxNGVjOWM5MGVkZjhjNTMzM2FiMTA2Y2Fk
YzQ2ZjZhNDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtNDU4LDExICs0NTgsMTQgQEAgYm9vbCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0CiB7CiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIHJldHVybiB0cnVlOwotI2VsaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyNlbHNlCisgICAgLy8gRklYTUU6IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIgYXNzdW1lcyBhIFFUS2l0L1F1aWNrVGltZSBtZWRpYSBlbmdpbmUKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmIChEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OmF2S2l0RW5h
YmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6aGFzU2lu
Z2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjIwOTAw
NDRmYzQ3OTk0YTViNmQ0MWM3ZTVhYTdjM2Q3YWMwNWVkZi4uYjNjYTJmODE5NzNmZDQyNjY1ZmFj
YmRlNjIxMTVmYTdhZWYxZDVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJL
aXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYktpdExlZ2FjeS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NzUsNiArNzc1
LDggQEAKIAkJQzBDNUIzRUYxMTc3QTRBMDAwMkIwQUVGIC8qIFdlYlVzZXJDb250ZW50VVJMUGF0
dGVybi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMw
QzVCM0VEMTE3N0E0QTAwMDJCMEFFRiAvKiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0gKi87
IH07CiAJCUMxMUVCRjQxMjE0MTlDQ0UwMEQ2NTlFNyAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzExRUJG
M0YyMTQxOUNDRTAwRDY1OUU3IC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHAgKi87IH07CiAJ
CUMxMUVCRjQyMjE0MTlDQ0UwMEQ2NTlFNyAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMUVCRjQwMjE0MTlD
Q0UwMEQ2NTlFNyAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCAqLzsgfTsKKwkJQzFEODExMjgy
MDJDRDgwMDAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUQ4MTEyNzIwMkNEODAw
MDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSAqLzsgfTsKKwkJQzFE
ODExMkIyMDJDRENDNDAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRy
b2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MUQ4MTEyOTIwMkNEQ0MyMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29u
dHJvbGxlci5tbSAqLzsgfTsKIAkJQzFEODExMkUyMDJDRUQwODAwRUU3NEY5IC8qIFdlYldpbmRv
d0FuaW1hdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMxRDgxMTJEMjAyQ0VEMDcwMEVFNzRGOSAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi87
IH07CiAJCUNEOEJGQ0U3MTU1MzEyMjQwMDVBRkIyNSAvKiBXZWJLaXRGdWxsU2NyZWVuTGlzdGVu
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhC
RkNFNTE1NTMxMjI0MDA1QUZCMjUgLyogV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyLm1tICovOyB9
OwogCQlDRDhCRkNFODE1NTMxMjI0MDA1QUZCMjUgLyogV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhCRkNF
NjE1NTMxMjI0MDA1QUZCMjUgLyogV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyLmggKi87IH07CkBA
IC0xNTMwLDYgKzE1MzIsMTAgQEAKIAkJQzBDNUIzRUQxMTc3QTRBMDAwMkIwQUVGIC8qIFdlYlVz
ZXJDb250ZW50VVJMUGF0dGVybi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzExRUJGM0YyMTQxOUNDRTAwRDY1OUU3IC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTFFQkY0MDIxNDE5Q0NFMDBENjU5RTcgLyogV2Vi
U3dpdGNoaW5nR1BVQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlN3aXRjaGluZ0dQVUNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMUQ4MTEyNjIwMkNEN0ZFMDBFRTc0
RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMxRDgxMTI3MjAyQ0Q4MDAwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzFEODExMjkyMDJDRENDMjAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVl
bkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMUQ4MTEyQTIwMkNEQ0MzMDBFRTc0RjkgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRDgxMTJDMjAyQ0VEMDYwMEVFNzRGOSAvKiBXZWJX
aW5kb3dBbmltYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViV2lu
ZG93QW5pbWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRDgxMTJEMjAy
Q0VEMDcwMEVFNzRGOSAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJXaW5kb3dBbmltYXRpb24ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEOEJGQ0U1MTU1MzEyMjQwMDVBRkIyNSAvKiBXZWJLaXRGdWxs
U2NyZWVuTGlzdGVuZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMDc5LDYgKzIwODUsMTAgQEAKIAkJCQlGODM0QUFENjBFNjRCMUM3MDBFMjczN0MgLyog
V2ViVGV4dEl0ZXJhdG9yLm1tICovLAogCQkJCTUxNUUyN0NDMDQ1OEM4NjUwMENBMkQzQSAvKiBX
ZWJVSURlbGVnYXRlLmggKi8sCiAJCQkJNjVBN0Q0NEEwNTY4QUIyNjAwRTcwRUY2IC8qIFdlYlVJ
RGVsZWdhdGVQcml2YXRlLmggKi8sCisJCQkJQzFEODExMjYyMDJDRDdGRTAwRUU3NEY5IC8qIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCAqLywKKwkJCQlDMUQ4MTEyNzIwMkNEODAwMDBF
RTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSAqLywKKwkJCQlDMUQ4MTEy
QTIwMkNEQ0MzMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxl
ci5oICovLAorCQkJCUMxRDgxMTI5MjAyQ0RDQzIwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLm1tICovLAogCQkJCTUxQThCNTc5MDQyODM0RjcwMENBMkQz
QSAvKiBXZWJWaWV3LmggKi8sCiAJCQkJNTFBOEI1N0EwNDI4MzRGNzAwQ0EyRDNBIC8qIFdlYlZp
ZXcubW0gKi8sCiAJCQkJQkMyRTQ2NEIwRkQ4QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdEYXRhLmgg
Ki8sCkBAIC0zMjM0LDYgKzMyNDQsNyBAQAogCQkJCVNwYW5pc2gsCiAJCQkJRHV0Y2gsCiAJCQkJ
SXRhbGlhbiwKKwkJCQllbiwKIAkJCSk7CiAJCQltYWluR3JvdXAgPSAwODY3RDY5MUZFODQwMjhG
QzAyQUFDMDcgLyogV2ViS2l0ICovOwogCQkJcHJvZHVjdFJlZkdyb3VwID0gMDM0NzY4REZGRjM4
QTUwNDExREI5QzhCIC8qIFByb2R1Y3RzICovOwpAQCAtMzY4Myw2ICszNjk0LDggQEAKIAkJCQk5
Mzk4MTBCRTA4MjRCRjAxMDA4REYwMzggLyogV2ViVVJMc1dpdGhUaXRsZXMubSBpbiBTb3VyY2Vz
ICovLAogCQkJCUMwQzVCM0VGMTE3N0E0QTAwMDJCMEFFRiAvKiBXZWJVc2VyQ29udGVudFVSTFBh
dHRlcm4ubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NjE4REZGOTFERUY3NjBBMDAzM0MzQUEgLyog
V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQlDMUQ4MTEy
ODIwMkNEODAwMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSBpbiBT
b3VyY2VzICovLAorCQkJCUMxRDgxMTJCMjAyQ0RDQzQwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODExMDcw
ODI0QkYwMTAwOERGMDM4IC8qIFdlYlZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzJFNDY0
RTBGRDhBOTY4MDBBOUQ5REUgLyogV2ViVmlld0RhdGEubW0gaW4gU291cmNlcyAqLywKIAkJCQkx
NDMwQzEyQzFCMkM1REY3MDBERUEwMUQgLyogV2ViVmlld0dyb3VwLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTc1NzhiZmMwMDI2NGU0
ZjQxYjVlZTlmNjg4YTI2YzI4YWQ0NGEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmgKQEAgLTAs
MCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFZJREVPKQorCisjaW1wb3J0IDxBcHBLaXQvTlNXaW5kb3dDb250cm9sbGVyLmg+CisjaW1wb3J0
IDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEhUTUxWaWRlb0Vs
ZW1lbnQ7Cit9CisKK0BjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVy
OworQGNsYXNzIFdlYldpbmRvd0ZhZGVBbmltYXRpb247CisKK0BpbnRlcmZhY2UgV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlciA6IE5TV2luZG93Q29udHJvbGxlciB7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ+IF92aWRlb0VsZW1lbnQ7CisKKyAgICBOU1dpbmRvdyAq
X2JhY2tncm91bmRGdWxsc2NyZWVuV2luZG93OyAvLyAocmV0YWluKQorICAgIFdlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgKl9odWRDb250cm9sbGVyOyAvLyAocmV0YWluKQor
CisgICAgV2ViV2luZG93RmFkZUFuaW1hdGlvbiAqX2ZhZGVBbmltYXRpb247IC8vIChyZXRhaW4p
CisKKyAgICBCT09MIF9pc0VuZGluZ0Z1bGxzY3JlZW47CisgICAgQk9PTCBfZm9yY2VEaXNhYmxl
QW5pbWF0aW9uOworfQorCistICh2b2lkKXNldFZpZGVvRWxlbWVudDooV2ViQ29yZTo6SFRNTFZp
ZGVvRWxlbWVudCAqKXZpZGVvRWxlbWVudDsKKy0gKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQg
Kil2aWRlb0VsZW1lbnQ7CisKKy0gKHZvaWQpZW50ZXJGdWxsc2NyZWVuOihOU1NjcmVlbiAqKXNj
cmVlbjsKKy0gKHZvaWQpZXhpdEZ1bGxzY3JlZW47CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzZlMDcxNjRjYWYwNWNhNDgxOWUzMGE3
ODZkY2M4YWQ4M2Q2MDUzMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbQpAQCAtMCwwICsxLDUx
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlci5oIgorCisjaWYgRU5BQkxFKFZJREVPKSAmJiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQg
IldlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldlYldp
bmRvd0FuaW1hdGlvbi5oIgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyLmg+CisjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJMYXllci5oPgorI2ltcG9ydCA8Q2FyYm9uL0NhcmJv
bi5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+CisjaW1wb3J0IDxvYmpj
L3J1bnRpbWUuaD4KKyNpbXBvcnQgPHBhbC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5oPgorI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK0FMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisKK1NPRlRfTElOS19GUkFNRVdPUksoQVZG
b3VuZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJMYXllcikK
KworQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgOiBOU1dpbmRvdzxOU0FuaW1h
dGlvbkRlbGVnYXRlPiB7CisgICAgU0VMIF9jb250cm9sbGVyQWN0aW9uT25BbmltYXRpb25FbmQ7
CisgICAgV2ViV2luZG93U2NhbGVBbmltYXRpb24gKl9mdWxsc2NyZWVuQW5pbWF0aW9uOyAvLyAo
cmV0YWluKQorfQorLSAodm9pZClhbmltYXRlRnJvbVJlY3Q6KE5TUmVjdClzdGFydFJlY3QgdG9S
ZWN0OihOU1JlY3QpZW5kUmVjdCB3aXRoU3ViQW5pbWF0aW9uOihOU0FuaW1hdGlvbiAqKXN1YkFu
aW1hdGlvbiBjb250cm9sbGVyQWN0aW9uOihTRUwpY29udHJvbGxlckFjdGlvbjsKK0BlbmQKKwor
QGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyICgpIDxXZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyCisKKy0gKGlkKWluaXQKK3sKKyAgICAvLyBE
byBub3QgZGVmZXIgd2luZG93IGNyZWF0aW9uLCB0byBtYWtlIHN1cmUgLXdpbmRvd051bWJlciBp
cyBjcmVhdGVkIChuZWVkZWQgYnkgV2ViV2luZG93U2NhbGVBbmltYXRpb24pLgorICAgIE5TV2lu
ZG93ICp3aW5kb3cgPSBbW1dlYlZpZGVvRnVsbHNjcmVlbldpbmRvdyBhbGxvY10gaW5pdFdpdGhD
b250ZW50UmVjdDpOU1plcm9SZWN0IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJh
Y2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT107CisgICAgc2VsZiA9IFtzdXBl
ciBpbml0V2l0aFdpbmRvdzp3aW5kb3ddOworICAgIFt3aW5kb3cgcmVsZWFzZV07CisgICAgaWYg
KCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIFtzZWxmIHdpbmRvd0RpZExvYWRdOwor
ICAgIHJldHVybiBzZWxmOworICAgIAorfQorLSAodm9pZClkZWFsbG9jCit7CisgICAgQVNTRVJU
KCFfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cpOworICAgIEFTU0VSVCghX2ZhZGVBbmltYXRp
b24pOworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2Jz
ZXJ2ZXI6c2VsZl07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChXZWJWaWRlb0Z1bGxz
Y3JlZW5XaW5kb3cgKilmdWxsc2NyZWVuV2luZG93Cit7CisgICAgcmV0dXJuIChXZWJWaWRlb0Z1
bGxzY3JlZW5XaW5kb3cgKilbc3VwZXIgd2luZG93XTsKK30KKworLSAodm9pZCl3aW5kb3dEaWRM
b2FkCit7CisgICAgYXV0byB3aW5kb3cgPSBbc2VsZiBmdWxsc2NyZWVuV2luZG93XTsKKyAgICBh
dXRvIGNvbnRlbnRWaWV3ID0gW3dpbmRvdyBjb250ZW50Vmlld107CisKKyAgICBbd2luZG93IHNl
dEhhc1NoYWRvdzpZRVNdOyAvLyBUaGlzIGlzIG5pY2VyIHdpdGggYSBzaGFkb3cuCisgICAgW3dp
bmRvdyBzZXRMZXZlbDpOU1BvcFVwTWVudVdpbmRvd0xldmVsLTFdOworCisgICAgW2NvbnRlbnRW
aWV3IHNldExheWVyOltDQUxheWVyIGxheWVyXV07CisgICAgW2NvbnRlbnRWaWV3IHNldFdhbnRz
TGF5ZXI6WUVTXTsKKworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0g
YWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRSZXNpZ25B
Y3RpdmU6KSBuYW1lOk5TQXBwbGljYXRpb25EaWRSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2Jq
ZWN0Ok5TQXBwXTsKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFk
ZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkQ2hhbmdlU2Ny
ZWVuUGFyYW1ldGVyczopIG5hbWU6TlNBcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRl
cnNOb3RpZmljYXRpb24gb2JqZWN0Ok5TQXBwXTsKK30KKworLSAoV2ViQ29yZTo6SFRNTFZpZGVv
RWxlbWVudCAqKXZpZGVvRWxlbWVudAoreworICAgIHJldHVybiBfdmlkZW9FbGVtZW50LmdldCgp
OworfQorCisvLyBGSVhNRTogVGhpcyBtZXRob2QgaXMgbm90IHJlYWxseSBhIHNldHRlci4gVGhl
IGNhbGxlciByZWxpZXMgb24gaXRzIHNpZGUgZWZmZWN0cywgYW5kIGl0J3MKKy8vIGNhbGxlZCBv
bmNlIGVhY2ggdGltZSB3ZSBlbnRlciBmdWxsIHNjcmVlbi4gU28gaXQgc2hvdWxkIGhhdmUgYSBk
aWZmZXJlbnQgbmFtZS4KKy0gKHZvaWQpc2V0VmlkZW9FbGVtZW50OihXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50ICopdmlkZW9FbGVtZW50Cit7CisgICAgQVNTRVJUKHZpZGVvRWxlbWVudCk7Cisg
ICAgX3ZpZGVvRWxlbWVudCA9IHZpZGVvRWxlbWVudDsKKworICAgIGlmICghW3NlbGYgaXNXaW5k
b3dMb2FkZWRdKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBjb3JlUGxheWVyID0gdmlkZW9F
bGVtZW50LT5wbGF5ZXIoKTsKKyAgICBpZiAoIWNvcmVQbGF5ZXIpCisgICAgICAgIHJldHVybjsK
KyAgICBhdXRvIHBsYXllciA9IGNvcmVQbGF5ZXItPm9iakNBVkZvdW5kYXRpb25BVlBsYXllcigp
OworICAgIGlmICghcGxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNvbnRlbnRW
aWV3ID0gW1tzZWxmIGZ1bGxzY3JlZW5XaW5kb3ddIGNvbnRlbnRWaWV3XTsKKworICAgIGF1dG8g
bGF5ZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyTGF5ZXJJbnN0YW5jZSgpIGluaXRdKTsKKyAg
ICBbbGF5ZXIgc2V0UGxheWVyOnBsYXllcl07CisKKyAgICBbY29udGVudFZpZXcgc2V0TGF5ZXI6
bGF5ZXIuZ2V0KCldOworCisgICAgLy8gRklYTUU6IFRoZSB3aW5kb3dEaWRMb2FkIG1ldGhvZCBh
bHJlYWR5IGNhbGxlZCB0aGlzLCBzbyBpdCBzaG91bGQKKyAgICAvLyBub3QgYmUgbmVjZXNzYXJ5
IHRvIGRvIGl0IGFnYWluIGhlcmUuCisgICAgW2NvbnRlbnRWaWV3IHNldFdhbnRzTGF5ZXI6WUVT
XTsKKworICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIGFu
ZCB3b24ndCBuZWNlc3NhcmlseSBiZQorICAgIC8vIGJhbGFuY2VkIGJ5IGNhbGxzIHRvIHdpbmRv
d0RpZEV4aXRGdWxsc2NyZWVuIGluIHNvbWUgY2FzZXMsIHNvIGl0CisgICAgLy8gd291bGQgYmUg
YmV0dGVyIHRvIGNoYW5nZSB0aGluZ3Mgc28gdGhlIG9ic2VydmVyIGlzIHJlbGlhYmx5IGFkZGVk
CisgICAgLy8gb25seSBvbmNlIGFuZCBndWFyYW50ZWVkIHJlbW92ZWQgZXZlbiBpbiB1bnVzdWFs
IGVkZ2UgY2FzZXMuCisgICAgW3BsYXllciBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJy
YXRlIiBvcHRpb25zOjAgY29udGV4dDpudWxscHRyXTsKK30KKworLSAoQ0dGbG9hdCljbGVhckZh
ZGVBbmltYXRpb24KK3sKKyAgICBbX2ZhZGVBbmltYXRpb24gc3RvcEFuaW1hdGlvbl07CisgICAg
Q0dGbG9hdCBwcmV2aW91c0FscGhhID0gW19mYWRlQW5pbWF0aW9uIGN1cnJlbnRBbHBoYV07Cisg
ICAgW19mYWRlQW5pbWF0aW9uIHNldFdpbmRvdzpuaWxdOworICAgIFtfZmFkZUFuaW1hdGlvbiBy
ZWxlYXNlXTsKKyAgICBfZmFkZUFuaW1hdGlvbiA9IG5pbDsKKyAgICByZXR1cm4gcHJldmlvdXNB
bHBoYTsKK30KKworLSAodm9pZCl3aW5kb3dEaWRFeGl0RnVsbHNjcmVlbgoreworICAgIENBTGF5
ZXIgKmxheWVyID0gW1tbc2VsZiB3aW5kb3ddIGNvbnRlbnRWaWV3XSBsYXllcl07CisgICAgaWYg
KFtsYXllciBpc0tpbmRPZkNsYXNzOmdldEFWUGxheWVyTGF5ZXJDbGFzcygpXSkKKyAgICAgICAg
W1soQVZQbGF5ZXJMYXllciAqKWxheWVyIHBsYXllcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JL
ZXlQYXRoOkAicmF0ZSJdOworCisgICAgW3NlbGYgY2xlYXJGYWRlQW5pbWF0aW9uXTsKKyAgICBb
W3NlbGYgd2luZG93XSBjbG9zZV07CisgICAgW3NlbGYgc2V0V2luZG93Om5pbF07CisgICAgW3Nl
bGYgdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsc2NyZWVuXTsgICAKKyAgICBbX2h1ZENvbnRyb2xs
ZXIgc2V0RGVsZWdhdGU6bmlsXTsKKyAgICBbX2h1ZENvbnRyb2xsZXIgcmVsZWFzZV07CisgICAg
X2h1ZENvbnRyb2xsZXIgPSBuaWw7CisgICAgW19iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyBj
bG9zZV07CisgICAgW19iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyByZWxlYXNlXTsKKyAgICBf
YmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cgPSBuaWw7CisgICAgCisgICAgW3NlbGYgYXV0b3Jl
bGVhc2VdOyAvLyBBc3NvY2lhdGVkIC1yZXRhaW4gaXMgaW4gLWV4aXRGdWxsc2NyZWVuLgorICAg
IF9pc0VuZGluZ0Z1bGxzY3JlZW4gPSBOTzsKK30KKworLSAodm9pZCl3aW5kb3dEaWRFbnRlckZ1
bGxzY3JlZW4KK3sKKyAgICBbc2VsZiBjbGVhckZhZGVBbmltYXRpb25dOworCisgICAgQVNTRVJU
KCFfaHVkQ29udHJvbGxlcik7CisgICAgX2h1ZENvbnRyb2xsZXIgPSBbW1dlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdOworICAgIFtfaHVkQ29udHJvbGxl
ciBzZXREZWxlZ2F0ZTpzZWxmXTsKKworICAgIFtzZWxmIHVwZGF0ZU1lbnVBbmREb2NrRm9yRnVs
bHNjcmVlbl07CisgICAgW05TQ3Vyc29yIHNldEhpZGRlblVudGlsTW91c2VNb3ZlczpZRVNdOwor
ICAgIAorICAgIC8vIEdpdmUgdGhlIEhVRCBrZXlib2FyZCBmb2N1cyBpbml0aWFsbHkKKyAgICBb
X2h1ZENvbnRyb2xsZXIgZmFkZVdpbmRvd0luXTsKK30KKworLSAoTlNSZWN0KXZpZGVvRWxlbWVu
dFJlY3QKK3sKKyAgICByZXR1cm4gX3ZpZGVvRWxlbWVudC0+c2NyZWVuUmVjdCgpOworfQorCist
ICh2b2lkKWFwcGxpY2F0aW9uRGlkUmVzaWduQWN0aXZlOihOU05vdGlmaWNhdGlvbiopbm90aWZp
Y2F0aW9uCit7ICAgCisgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CisgICAgTlNXaW5k
b3cqIGZ1bGxzY3JlZW5XaW5kb3cgPSBbc2VsZiBmdWxsc2NyZWVuV2luZG93XTsKKworICAgIC8v
IFJlcGxpY2F0ZSB0aGUgUXVpY2tUaW1lIFBsYXllciAoWCkgYmVoYXZpb3Igd2hlbiBsb3Npbmcg
YWN0aXZlIGFwcGxpY2F0aW9uIHN0YXR1czoKKyAgICAvLyBJcyB0aGUgZnVsbHNjcmVlbiBzY3Jl
ZW4gdGhlIG1haW4gc2NyZWVuPyAoTm90ZTogdGhpcyBjb3ZlcnMgdGhlIGNhc2Ugd2hlcmUgb25s
eSBhIAorICAgIC8vIHNpbmdsZSBzY3JlZW4gaXMgYXZhaWxhYmxlLikgIElzIHRoZSBmdWxsc2Ny
ZWVuIHNjcmVlbiBvbiB0aGUgY3VycmVudCBzcGFjZT8gSUZGIHNvLCAKKyAgICAvLyB0aGVuIGV4
aXQgZnVsbHNjcmVlbiBtb2RlLiAgICAKKyAgICBpZiAoZnVsbHNjcmVlbldpbmRvdy5zY3JlZW4g
PT0gW05TU2NyZWVuIHNjcmVlbnNdWzBdICYmIGZ1bGxzY3JlZW5XaW5kb3cub25BY3RpdmVTcGFj
ZSkKKyAgICAgICAgW3NlbGYgcmVxdWVzdEV4aXRGdWxsc2NyZWVuV2l0aEFuaW1hdGlvbjpOT107
Cit9CisKKworLy8gTUFSSzogLQorLy8gTUFSSzogRXhwb3NlZCBJbnRlcmZhY2UKKworc3RhdGlj
IE5TUmVjdCBmcmFtZUV4cGFuZGVkVG9SYXRpb09mRnJhbWUoTlNSZWN0IGZyYW1lVG9FeHBhbmQs
IE5TUmVjdCBmcmFtZSkKK3sKKyAgICAvLyBLZWVwIGEgY29uc3RyYWluZWQgYXNwZWN0IHJhdGlv
IGZvciB0aGUgZGVzdGluYXRpb24gd2luZG93CisgICAgTlNSZWN0IHJlc3VsdCA9IGZyYW1lVG9F
eHBhbmQ7CisgICAgQ0dGbG9hdCBuZXdSYXRpbyA9IGZyYW1lLnNpemUud2lkdGggLyBmcmFtZS5z
aXplLmhlaWdodDsKKyAgICBDR0Zsb2F0IG9yaWdpbmFsUmF0aW8gPSBmcmFtZVRvRXhwYW5kLnNp
emUud2lkdGggLyBmcmFtZVRvRXhwYW5kLnNpemUuaGVpZ2h0OworICAgIGlmIChuZXdSYXRpbyA+
IG9yaWdpbmFsUmF0aW8pIHsKKyAgICAgICAgQ0dGbG9hdCBuZXdXaWR0aCA9IG5ld1JhdGlvICog
ZnJhbWVUb0V4cGFuZC5zaXplLmhlaWdodDsKKyAgICAgICAgQ0dGbG9hdCBkaWZmID0gbmV3V2lk
dGggLSBmcmFtZVRvRXhwYW5kLnNpemUud2lkdGg7CisgICAgICAgIHJlc3VsdC5zaXplLndpZHRo
ID0gbmV3V2lkdGg7CisgICAgICAgIHJlc3VsdC5vcmlnaW4ueCAtPSBkaWZmIC8gMjsKKyAgICB9
IGVsc2UgeworICAgICAgICBDR0Zsb2F0IG5ld0hlaWdodCA9IGZyYW1lVG9FeHBhbmQuc2l6ZS53
aWR0aCAvIG5ld1JhdGlvOworICAgICAgICBDR0Zsb2F0IGRpZmYgPSBuZXdIZWlnaHQgLSBmcmFt
ZVRvRXhwYW5kLnNpemUuaGVpZ2h0OworICAgICAgICByZXN1bHQuc2l6ZS5oZWlnaHQgPSBuZXdI
ZWlnaHQ7CisgICAgICAgIHJlc3VsdC5vcmlnaW4ueSAtPSBkaWZmIC8gMjsKKyAgICB9CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIE5TV2luZG93ICpjcmVhdGVCYWNrZ3JvdW5kRnVs
bHNjcmVlbldpbmRvdyhOU1JlY3QgZnJhbWUsIGludCBsZXZlbCkKK3sKKyAgICBOU1dpbmRvdyAq
d2luZG93ID0gW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpmcmFtZSBzdHls
ZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVy
ZWQgZGVmZXI6Tk9dOworICAgIFt3aW5kb3cgc2V0T3BhcXVlOllFU107CisgICAgW3dpbmRvdyBz
ZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3IgYmxhY2tDb2xvcl1dOworICAgIFt3aW5kb3cgc2V0
TGV2ZWw6bGV2ZWxdOworICAgIFt3aW5kb3cgc2V0UmVsZWFzZWRXaGVuQ2xvc2VkOk5PXTsKKyAg
ICByZXR1cm4gd2luZG93OworfQorCistICh2b2lkKXNldHVwRmFkZUFuaW1hdGlvbklmTmVlZGVk
QW5kRmFkZUluOihCT09MKWZhZGVJbgoreworICAgIENHRmxvYXQgaW5pdGlhbEFscGhhID0gZmFk
ZUluID8gMCA6IDE7CisgICAgaWYgKF9mYWRlQW5pbWF0aW9uKSB7CisgICAgICAgIC8vIE1ha2Ug
c3VyZSB3ZSBzdXBwb3J0IHF1ZXVpbmcgYW5pbWF0aW9uIGlmIHRoZSBwcmV2aW91cyBvbmUgaXNu
J3Qgb3ZlciB5ZXQKKyAgICAgICAgaW5pdGlhbEFscGhhID0gW3NlbGYgY2xlYXJGYWRlQW5pbWF0
aW9uXTsKKyAgICB9CisgICAgaWYgKCFfZm9yY2VEaXNhYmxlQW5pbWF0aW9uKQorICAgICAgICBf
ZmFkZUFuaW1hdGlvbiA9IFtbV2ViV2luZG93RmFkZUFuaW1hdGlvbiBhbGxvY10gaW5pdFdpdGhE
dXJhdGlvbjowLjIgd2luZG93Ol9iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyBpbml0aWFsQWxw
aGE6aW5pdGlhbEFscGhhIGZpbmFsQWxwaGE6ZmFkZUluID8gMSA6IDBdOworfQorCistICh2b2lk
KWVudGVyRnVsbHNjcmVlbjooTlNTY3JlZW4gKilzY3JlZW4KK3sKKyAgICBpZiAoIXNjcmVlbikK
KyAgICAgICAgc2NyZWVuID0gW05TU2NyZWVuIG1haW5TY3JlZW5dOworCisgICAgTlNSZWN0IGVu
ZEZyYW1lID0gW3NjcmVlbiBmcmFtZV07CisgICAgTlNSZWN0IGZyYW1lID0gZnJhbWVFeHBhbmRl
ZFRvUmF0aW9PZkZyYW1lKFtzZWxmIHZpZGVvRWxlbWVudFJlY3RdLCBlbmRGcmFtZSk7CisKKyAg
ICAvLyBDcmVhdGUgYSBibGFjayB3aW5kb3cgaWYgbmVlZGVkCisgICAgaWYgKCFfYmFja2dyb3Vu
ZEZ1bGxzY3JlZW5XaW5kb3cpCisgICAgICAgIF9iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyA9
IGNyZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93KFtzY3JlZW4gZnJhbWVdLCBbW3NlbGYg
d2luZG93XSBsZXZlbF0tMSk7CisgICAgZWxzZQorICAgICAgICBbX2JhY2tncm91bmRGdWxsc2Ny
ZWVuV2luZG93IHNldEZyYW1lOltzY3JlZW4gZnJhbWVdIGRpc3BsYXk6Tk9dOworCisgICAgW3Nl
bGYgc2V0dXBGYWRlQW5pbWF0aW9uSWZOZWVkZWRBbmRGYWRlSW46WUVTXTsKKyAgICBpZiAoX2Zv
cmNlRGlzYWJsZUFuaW1hdGlvbikgeworICAgICAgICAvLyBUaGlzIHdpbGwgZGlzYWJsZSBzY2Fs
ZSBhbmltYXRpb24KKyAgICAgICAgZnJhbWUgPSBOU1plcm9SZWN0OworICAgIH0KKyAgICBbW3Nl
bGYgZnVsbHNjcmVlbldpbmRvd10gYW5pbWF0ZUZyb21SZWN0OmZyYW1lIHRvUmVjdDplbmRGcmFt
ZSB3aXRoU3ViQW5pbWF0aW9uOl9mYWRlQW5pbWF0aW9uIGNvbnRyb2xsZXJBY3Rpb246QHNlbGVj
dG9yKHdpbmRvd0RpZEVudGVyRnVsbHNjcmVlbildOworCisgICAgW19iYWNrZ3JvdW5kRnVsbHNj
cmVlbldpbmRvdyBvcmRlcldpbmRvdzpOU1dpbmRvd0JlbG93IHJlbGF0aXZlVG86W1tzZWxmIGZ1
bGxzY3JlZW5XaW5kb3ddIHdpbmRvd051bWJlcl1dOworfQorCistICh2b2lkKWV4aXRGdWxsc2Ny
ZWVuCit7CisgICAgaWYgKF9pc0VuZGluZ0Z1bGxzY3JlZW4pCisgICAgICAgIHJldHVybjsKKyAg
ICBfaXNFbmRpbmdGdWxsc2NyZWVuID0gWUVTOworICAgIFtfaHVkQ29udHJvbGxlciBjbG9zZVdp
bmRvd107CisKKyAgICBOU1JlY3QgZW5kRnJhbWUgPSBbc2VsZiB2aWRlb0VsZW1lbnRSZWN0XTsK
KworICAgIFtzZWxmIHNldHVwRmFkZUFuaW1hdGlvbklmTmVlZGVkQW5kRmFkZUluOk5PXTsKKyAg
ICBpZiAoX2ZvcmNlRGlzYWJsZUFuaW1hdGlvbikgeworICAgICAgICAvLyBUaGlzIHdpbGwgZGlz
YWJsZSBzY2FsZSBhbmltYXRpb24KKyAgICAgICAgZW5kRnJhbWUgPSBOU1plcm9SZWN0OworICAg
IH0KKyAgICAKKyAgICAvLyBXZSBoYXZlIHRvIHJldGFpbiBvdXJzZWx2ZXMgYmVjYXVzZSB3ZSB3
YW50IHRvIGJlIGFsaXZlIGZvciB0aGUgZW5kIG9mIHRoZSBhbmltYXRpb24uCisgICAgLy8gSWYg
b3VyIG93bmVyIHJlbGVhc2VzIHVzIHdlIGNvdWxkIGNyYXNoIGlmIHRoaXMgaXMgbm90IHRoZSBj
YXNlLgorICAgIC8vIEJhbGFuY2VkIGluIHdpbmRvd0RpZEV4aXRGdWxsc2NyZWVuCisgICAgW3Nl
bGYgcmV0YWluXTsgICAgCisKKyAgICBOU1JlY3Qgc3RhcnRGcmFtZSA9IFtbc2VsZiB3aW5kb3dd
IGZyYW1lXTsKKyAgICBlbmRGcmFtZSA9IGZyYW1lRXhwYW5kZWRUb1JhdGlvT2ZGcmFtZShlbmRG
cmFtZSwgc3RhcnRGcmFtZSk7CisKKyAgICBbW3NlbGYgZnVsbHNjcmVlbldpbmRvd10gYW5pbWF0
ZUZyb21SZWN0OnN0YXJ0RnJhbWUgdG9SZWN0OmVuZEZyYW1lIHdpdGhTdWJBbmltYXRpb246X2Zh
ZGVBbmltYXRpb24gY29udHJvbGxlckFjdGlvbjpAc2VsZWN0b3Iod2luZG93RGlkRXhpdEZ1bGxz
Y3JlZW4pXTsKK30KKworLSAodm9pZClhcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRl
cnM6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KK3sKKyAgICBVTlVTRURfUEFSQU0obm90
aWZpY2F0aW9uKTsKKyAgICAvLyBUaGUgdXNlciBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBtYWluIHNj
cmVlbiBieSBtb3ZpbmcgdGhlIG1lbnUgYmFyLCBvciB0aGV5IG1heSBoYXZlIGNoYW5nZWQKKyAg
ICAvLyB0aGUgRG9jaydzIHNpemUgb3IgbG9jYXRpb24sIG9yIHRoZXkgbWF5IGhhdmUgY2hhbmdl
ZCB0aGUgZnVsbHNjcmVlbiBzY3JlZW4ncyBkaW1lbnNpb25zLiAgCisgICAgLy8gVXBkYXRlIG91
ciBwcmVzZW50YXRpb24gcGFyYW1ldGVycywgYW5kIGVuc3VyZSB0aGF0IHRoZSBmdWxsIHNjcmVl
biB3aW5kb3cgb2NjdXBpZXMgdGhlIAorICAgIC8vIGVudGlyZSBzY3JlZW46CisgICAgW3NlbGYg
dXBkYXRlTWVudUFuZERvY2tGb3JGdWxsc2NyZWVuXTsKKyAgICBbW3NlbGYgd2luZG93XSBzZXRG
cmFtZTpbW1tzZWxmIHdpbmRvd10gc2NyZWVuXSBmcmFtZV0gZGlzcGxheTpZRVNdOworfQorCist
ICh2b2lkKXVwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbHNjcmVlbgoreworICAgIC8vIE5TQXBwbGlj
YXRpb25QcmVzZW50YXRpb25PcHRpb25zIGlzIGF2YWlsYWJsZSBvbiA+IDEwLjYgb25seToKKyAg
ICBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uT3B0aW9ucyBvcHRpb25zID0gTlNBcHBsaWNhdGlv
blByZXNlbnRhdGlvbkRlZmF1bHQ7CisgICAgTlNTY3JlZW4qIGZ1bGxzY3JlZW5TY3JlZW4gPSBb
W3NlbGYgd2luZG93XSBzY3JlZW5dOworCisgICAgaWYgKCFfaXNFbmRpbmdGdWxsc2NyZWVuKSB7
CisgICAgICAgIC8vIEF1dG8taGlkZSB0aGUgbWVudSBiYXIgaWYgdGhlIGZ1bGxzY3JlZW5TY3Jl
ZW4gY29udGFpbnMgdGhlIG1lbnUgYmFyOgorICAgICAgICAvLyBOT1RFOiBpZiB0aGUgZnVsbHNj
cmVlblNjcmVlbiBjb250YWlucyB0aGUgbWVudSBiYXIgYnV0IG5vdCB0aGUgZG9jaywgd2UgbXVz
dCBzdGlsbCAKKyAgICAgICAgLy8gYXV0by1oaWRlIHRoZSBkb2NrLCBvciBhbiBleGNlcHRpb24g
d2lsbCBiZSB0aHJvd24uCisgICAgICAgIGlmIChbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0
SW5kZXg6MF0gPT0gZnVsbHNjcmVlblNjcmVlbikKKyAgICAgICAgICAgIG9wdGlvbnMgfD0gKE5T
QXBwbGljYXRpb25QcmVzZW50YXRpb25BdXRvSGlkZU1lbnVCYXIgfCBOU0FwcGxpY2F0aW9uUHJl
c2VudGF0aW9uQXV0b0hpZGVEb2NrKTsKKyAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQg
c2NyZWVuIGNvbnRhaW5zIHRoZSBkb2NrIGJ5IGNvbXBhcmluZyB0aGUgc2NyZWVuJ3MgZnJhbWUg
dG8gaXRzCisgICAgICAgIC8vIHZpc2libGVGcmFtZTsgaWYgYSBkb2NrIGlzIHByZXNlbnQsIHRo
ZSB2aXNpYmxlRnJhbWUgd2lsbCBkaWZmZXIuIElmIHRoZSBjdXJyZW50IHNjcmVlbgorICAgICAg
ICAvLyBjb250YWlucyB0aGUgZG9jaywgaGlkZSBpdC4KKyAgICAgICAgZWxzZSBpZiAoIU5TRXF1
YWxSZWN0cyhbZnVsbHNjcmVlblNjcmVlbiBmcmFtZV0sIFtmdWxsc2NyZWVuU2NyZWVuIHZpc2li
bGVGcmFtZV0pKQorICAgICAgICAgICAgb3B0aW9ucyB8PSBOU0FwcGxpY2F0aW9uUHJlc2VudGF0
aW9uQXV0b0hpZGVEb2NrOworICAgIH0KKworICAgIE5TQXBwLnByZXNlbnRhdGlvbk9wdGlvbnMg
PSBvcHRpb25zOworfQorCisvLyBNQVJLOiAtCisvLyBNQVJLOiBXaW5kb3cgY2FsbGJhY2sKKwor
LSAodm9pZClfcmVxdWVzdEV4aXQKK3sKKyAgICBpZiAoX3ZpZGVvRWxlbWVudCkKKyAgICAgICAg
X3ZpZGVvRWxlbWVudC0+ZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICBfZm9yY2VEaXNhYmxlQW5pbWF0
aW9uID0gTk87Cit9CisKKy0gKHZvaWQpcmVxdWVzdEV4aXRGdWxsc2NyZWVuV2l0aEFuaW1hdGlv
bjooQk9PTClhbmltYXRpb24KK3sKKyAgICBpZiAoX2lzRW5kaW5nRnVsbHNjcmVlbikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgX2ZvcmNlRGlzYWJsZUFuaW1hdGlvbiA9ICFhbmltYXRpb247Cisg
ICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihfcmVxdWVzdEV4aXQpIHdpdGhPYmpl
Y3Q6bmlsIGFmdGVyRGVsYXk6MF07CisKK30KKworLSAodm9pZClyZXF1ZXN0RXhpdEZ1bGxzY3Jl
ZW4KK3sKKyAgICBbc2VsZiByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5XaXRoQW5pbWF0aW9uOllFU107
Cit9CisKKy0gKHZvaWQpZmFkZUhVREluCit7CisgICAgW19odWRDb250cm9sbGVyIGZhZGVXaW5k
b3dJbl07Cit9CisKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilr
ZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2Ug
Y29udGV4dDoodm9pZCAqKWNvbnRleHQKK3sKKyAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKKyAg
ICBVTlVTRURfUEFSQU0oY2hhbmdlKTsKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisKKyAg
ICBpZiAoW2tleVBhdGggaXNFcXVhbFRvOkAicmF0ZSJdKQorICAgICAgICBbc2VsZiByYXRlQ2hh
bmdlZDpuaWxdOworfQorCistICh2b2lkKXJhdGVDaGFuZ2VkOihOU05vdGlmaWNhdGlvbiAqKXVu
dXNlZE5vdGlmaWNhdGlvbgoreworICAgIFVOVVNFRF9QQVJBTSh1bnVzZWROb3RpZmljYXRpb24p
OworICAgIFtfaHVkQ29udHJvbGxlciB1cGRhdGVSYXRlXTsKK30KKworQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93CisKKy0gKGlkKWluaXRXaXRoQ29udGVu
dFJlY3Q6KE5TUmVjdCljb250ZW50UmVjdCBzdHlsZU1hc2s6KE5TVUludGVnZXIpYVN0eWxlIGJh
Y2tpbmc6KE5TQmFja2luZ1N0b3JlVHlwZSlidWZmZXJpbmdUeXBlIGRlZmVyOihCT09MKWZsYWcK
K3sKKyAgICBVTlVTRURfUEFSQU0oYVN0eWxlKTsKKyAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRo
Q29udGVudFJlY3Q6Y29udGVudFJlY3Qgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sg
YmFja2luZzpidWZmZXJpbmdUeXBlIGRlZmVyOmZsYWddOworICAgIGlmICghc2VsZikKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICBbc2VsZiBzZXRPcGFxdWU6Tk9dOworICAgIFtzZWxmIHNldEJh
Y2tncm91bmRDb2xvcjpbTlNDb2xvciBjbGVhckNvbG9yXV07CisgICAgW3NlbGYgc2V0SWdub3Jl
c01vdXNlRXZlbnRzOk5PXTsKKyAgICBbc2VsZiBzZXRBY2NlcHRzTW91c2VNb3ZlZEV2ZW50czpZ
RVNdOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBBU1NF
UlQoIV9mdWxsc2NyZWVuQW5pbWF0aW9uKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0g
KEJPT0wpcmVzaWduRmlyc3RSZXNwb25kZXIKK3sKKyAgICByZXR1cm4gTk87Cit9CisKKy0gKEJP
T0wpY2FuQmVjb21lS2V5V2luZG93Cit7CisgICAgcmV0dXJuIE5POworfQorCistICh2b2lkKW1v
dXNlRG93bjooTlNFdmVudCAqKWV2ZW50Cit7CisgICAgVU5VU0VEX1BBUkFNKGV2ZW50KTsKK30K
KworLSAodm9pZCljYW5jZWxPcGVyYXRpb246KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJB
TShzZW5kZXIpOworICAgIFtbc2VsZiB3aW5kb3dDb250cm9sbGVyXSByZXF1ZXN0RXhpdEZ1bGxz
Y3JlZW5dOworfQorCistICh2b2lkKWFuaW1hdGVkUmVzaXplRGlkRW5kCit7CisgICAgaWYgKF9j
b250cm9sbGVyQWN0aW9uT25BbmltYXRpb25FbmQpCisgICAgICAgIFtbc2VsZiB3aW5kb3dDb250
cm9sbGVyXSBwZXJmb3JtU2VsZWN0b3I6X2NvbnRyb2xsZXJBY3Rpb25PbkFuaW1hdGlvbkVuZF07
CisgICAgX2NvbnRyb2xsZXJBY3Rpb25PbkFuaW1hdGlvbkVuZCA9IE5VTEw7Cit9CisKKy8vCisv
LyBUaGlzIGZ1bmN0aW9uIHdpbGwgYW5pbWF0ZSBhIGNoYW5nZSBvZiBmcmFtZSByZWN0YW5nbGUK
Ky8vIFdlIHN1cHBvcnQgcXVldWluZyBhbmltYXRpb24sIHRoYXQgbWVhbnMgdGhhdCB3ZSdsbCBj
b3JyZWN0bHkKKy8vIGludGVycnVwdCB0aGUgcnVubmluZyBhbmltYXRpb24sIGFuZCBxdWV1ZSB0
aGUgbmV4dCBvbmUuCisvLworLSAodm9pZClhbmltYXRlRnJvbVJlY3Q6KE5TUmVjdClzdGFydFJl
Y3QgdG9SZWN0OihOU1JlY3QpZW5kUmVjdCB3aXRoU3ViQW5pbWF0aW9uOihOU0FuaW1hdGlvbiAq
KXN1YkFuaW1hdGlvbiBjb250cm9sbGVyQWN0aW9uOihTRUwpY29udHJvbGxlckFjdGlvbgorewor
ICAgIF9jb250cm9sbGVyQWN0aW9uT25BbmltYXRpb25FbmQgPSBjb250cm9sbGVyQWN0aW9uOwor
CisgICAgQk9PTCB3YXNBbmltYXRpbmcgPSBOTzsKKyAgICBpZiAoX2Z1bGxzY3JlZW5BbmltYXRp
b24pIHsKKyAgICAgICAgd2FzQW5pbWF0aW5nID0gWUVTOworCisgICAgICAgIC8vIEludGVycnVw
dCBhbnkgcnVubmluZyBhbmltYXRpb24uCisgICAgICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBz
dG9wQW5pbWF0aW9uXTsKKworICAgICAgICAvLyBTYXZlIHRoZSBjdXJyZW50IHJlY3QgdG8gZW5z
dXJlIGEgc21vb3RoIHRyYW5zaXRpb24uCisgICAgICAgIHN0YXJ0UmVjdCA9IFtfZnVsbHNjcmVl
bkFuaW1hdGlvbiBjdXJyZW50RnJhbWVdOworICAgICAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24g
cmVsZWFzZV07CisgICAgICAgIF9mdWxsc2NyZWVuQW5pbWF0aW9uID0gbmlsOworICAgIH0KKyAg
ICAKKyAgICBpZiAoTlNJc0VtcHR5UmVjdChzdGFydFJlY3QpIHx8IE5TSXNFbXB0eVJlY3QoZW5k
UmVjdCkpIHsKKyAgICAgICAgLy8gRmFrZWx5IGVuZCB0aGUgc3ViYW5pbWF0aW9uLgorICAgICAg
ICBbc3ViQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczoxXTsKKyAgICAgICAgLy8gQW5kIHJl
bW92ZSB0aGUgd2VhayBsaW5rIHRvIHRoZSB3aW5kb3cuCisgICAgICAgIFtzdWJBbmltYXRpb24g
c3RvcEFuaW1hdGlvbl07CisKKyAgICAgICAgW3NlbGYgc2V0RnJhbWU6ZW5kUmVjdCBkaXNwbGF5
Ok5PXTsKKyAgICAgICAgW3NlbGYgbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07CisgICAgICAg
IFtzZWxmIGFuaW1hdGVkUmVzaXplRGlkRW5kXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmICghd2FzQW5pbWF0aW5nKSB7CisgICAgICAgIC8vIFdlJ2xsIGRvd25zY2FsZSB0aGUg
d2luZG93IGR1cmluZyB0aGUgYW5pbWF0aW9uIGJhc2VkIG9uIHRoZSBoaWdoZXIgcmVzb2x1dGlv
biByZWN0CisgICAgICAgIEJPT0wgaGlnaGVyUmVzb2x1dGlvbklzRW5kUmVjdCA9IHN0YXJ0UmVj
dC5zaXplLndpZHRoIDwgZW5kUmVjdC5zaXplLndpZHRoICYmIHN0YXJ0UmVjdC5zaXplLmhlaWdo
dCA8IGVuZFJlY3Quc2l6ZS5oZWlnaHQ7CisgICAgICAgIFtzZWxmIHNldEZyYW1lOmhpZ2hlclJl
c29sdXRpb25Jc0VuZFJlY3QgPyBlbmRSZWN0IDogc3RhcnRSZWN0IGRpc3BsYXk6Tk9dOworICAg
IH0KKyAgICAKKyAgICBBU1NFUlQoIV9mdWxsc2NyZWVuQW5pbWF0aW9uKTsKKyAgICBfZnVsbHNj
cmVlbkFuaW1hdGlvbiA9IFtbV2ViV2luZG93U2NhbGVBbmltYXRpb24gYWxsb2NdIGluaXRXaXRo
SGludGVkRHVyYXRpb246MC4yIHdpbmRvdzpzZWxmIGluaXRhbEZyYW1lOnN0YXJ0UmVjdCBmaW5h
bEZyYW1lOmVuZFJlY3RdOworICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBzZXRTdWJBbmltYXRp
b246c3ViQW5pbWF0aW9uXTsKKyAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24gc2V0RGVsZWdhdGU6
c2VsZl07CisgICAgCisgICAgLy8gTWFrZSBzdXJlIHRoZSBhbmltYXRpb24gaGFzIHNjYWxlZCB0
aGUgd2luZG93IGJlZm9yZSBzaG93aW5nIGl0LgorICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBz
ZXRDdXJyZW50UHJvZ3Jlc3M6MF07CisgICAgW3NlbGYgbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2Vs
Zl07CisKKyAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24gc3RhcnRBbmltYXRpb25dOworfQorCist
ICh2b2lkKWFuaW1hdGlvbkRpZEVuZDooTlNBbmltYXRpb24gKilhbmltYXRpb24KK3sKKyAgICBp
ZiAoIVtOU1RocmVhZCBpc01haW5UaHJlYWRdKSB7CisgICAgICAgIFtzZWxmIHBlcmZvcm1TZWxl
Y3Rvck9uTWFpblRocmVhZDpAc2VsZWN0b3IoYW5pbWF0aW9uRGlkRW5kOikgd2l0aE9iamVjdDph
bmltYXRpb24gd2FpdFVudGlsRG9uZTpOT107CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aWYgKGFuaW1hdGlvbiAhPSBfZnVsbHNjcmVlbkFuaW1hdGlvbikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgLy8gVGhlIGFuaW1hdGlvbiBpcyBub3QgcmVhbGx5IG92ZXIgYW5kIHdhcyBpbnRlcnJ1
cHRlZAorICAgIC8vIERvbid0IHNlbmQgY29tcGxldGlvbiBldmVudHMuCisgICAgaWYgKFthbmlt
YXRpb24gY3VycmVudFByb2dyZXNzXSA8IDEuMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
RW5zdXJlIHRoYXQgYW5pbWF0aW9uIChhbmQgc3ViYW5pbWF0aW9uKSBkb24ndCBrZWVwCisgICAg
Ly8gdGhlIHdlYWsgcmVmZXJlbmNlIHRvIHRoZSB3aW5kb3cgaXZhciB0aGF0IG1heSBiZSBkZXN0
cm95ZWQgZnJvbQorICAgIC8vIG5vdyBvbi4KKyAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24gc2V0
V2luZG93Om5pbF07CisKKyAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24gYXV0b3JlbGVhc2VdOwor
ICAgIF9mdWxsc2NyZWVuQW5pbWF0aW9uID0gbmlsOworCisgICAgW3NlbGYgYW5pbWF0ZWRSZXNp
emVEaWRFbmRdOworfQorCistICh2b2lkKW1vdXNlTW92ZWQ6KE5TRXZlbnQgKilldmVudAorewor
ICAgIFVOVVNFRF9QQVJBTShldmVudCk7CisgICAgW1tzZWxmIHdpbmRvd0NvbnRyb2xsZXJdIGZh
ZGVIVURJbl07Cit9CisKK0BlbmQKKworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNjdmZWFlMTM0MmU2YTk3N2M1NmZiMWY1YzUwNDQyMTIwMGRkMjE5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1
bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbXBvcnQgPEFwcEtpdC9OU0J1dHRvbi5oPgorI2lt
cG9ydCA8QXBwS2l0L05TQ29udHJvbC5oPgorI2ltcG9ydCA8QXBwS2l0L05TVGV4dEZpZWxkLmg+
CisjaW1wb3J0IDxBcHBLaXQvTlNUcmFja2luZ0FyZWEuaD4KKyNpbXBvcnQgPEFwcEtpdC9OU1dp
bmRvdy5oPgorI2ltcG9ydCA8QXBwS2l0L05TV2luZG93Q29udHJvbGxlci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBIVE1MVmlkZW9FbGVtZW50OworfQorCitAcHJvdG9jb2wgV2Vi
VmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlOworCitAaW50ZXJmYWNl
IFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgOiBOU1dpbmRvd0NvbnRyb2xs
ZXIgeworICAgIGlkIDxXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVsZWdh
dGU+IF9kZWxlZ2F0ZTsKKyAgICBOU1RpbWVyICpfdGltZWxpbmVVcGRhdGVUaW1lcjsKKyAgICBO
U1RyYWNraW5nQXJlYSAqX2FyZWE7CisgICAgQk9PTCBfbW91c2VJc0luSFVEOworICAgIEJPT0wg
X2lzRW5kaW5nRnVsbHNjcmVlbjsKKyAgICBCT09MIF9pc1NjcnViYmluZzsKKworICAgIE5TQ29u
dHJvbCAqX3RpbWVsaW5lOworICAgIE5TVGV4dEZpZWxkICpfcmVtYWluaW5nVGltZVRleHQ7Cisg
ICAgTlNUZXh0RmllbGQgKl9lbGFwc2VkVGltZVRleHQ7CisgICAgTlNDb250cm9sICpfdm9sdW1l
U2xpZGVyOworICAgIE5TQnV0dG9uICpfcGxheUJ1dHRvbjsKK30KKworLSAoaWQgPFdlYlZpZGVv
RnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGU7CistICh2b2lk
KXNldERlbGVnYXRlOihpZCA8V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRl
bGVnYXRlPilkZWxlZ2F0ZTsKKy0gKHZvaWQpZmFkZVdpbmRvd0luOworLSAodm9pZClmYWRlV2lu
ZG93T3V0OworLSAodm9pZCljbG9zZVdpbmRvdzsKKy0gKHZvaWQpdXBkYXRlUmF0ZTsKKworQGVu
ZAorCitAcHJvdG9jb2wgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVn
YXRlIDxOU09iamVjdD4KKy0gKHZvaWQpcmVxdWVzdEV4aXRGdWxsc2NyZWVuOworLSAoV2ViQ29y
ZTo6SFRNTFZpZGVvRWxlbWVudCopdmlkZW9FbGVtZW50OworQGVuZAorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVu
SFVEV2luZG93Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzNm
NTA2ZTA2ZDk3YmZkZThlYTRjYjA5NTYwYThjNzBiMTIzZjEyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyLm1tCkBAIC0wLDAgKzEsNzMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFC
TEUoVklERU8pICYmIFBMQVRGT1JNKE1BQykKKworI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVu
SFVEV2luZG93Q29udHJvbGxlci5oIgorCisjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0Q29udmVyc2lv
bi5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+CisjaW1wb3J0IDxwYWwv
c3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvUVRLaXRTUEku
aD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKFFU
S2l0KQorCitTT0ZUX0xJTktfQ0xBU1MoUVRLaXQsIFFUSFVEQmFja2dyb3VuZFZpZXcpCitTT0ZU
X0xJTktfQ0xBU1MoUVRLaXQsIFFUSFVEQnV0dG9uKQorU09GVF9MSU5LX0NMQVNTKFFUS2l0LCBR
VEhVRFNsaWRlcikKK1NPRlRfTElOS19DTEFTUyhRVEtpdCwgUVRIVURUaW1lbGluZSkKKworI2Rl
ZmluZSBRVEhVREJhY2tncm91bmRWaWV3IGdldFFUSFVEQmFja2dyb3VuZFZpZXdDbGFzcygpCisj
ZGVmaW5lIFFUSFVEQnV0dG9uIGdldFFUSFVEQnV0dG9uQ2xhc3MoKQorI2RlZmluZSBRVEhVRFNs
aWRlciBnZXRRVEhVRFNsaWRlckNsYXNzKCkKKyNkZWZpbmUgUVRIVURUaW1lbGluZSBnZXRRVEhV
RFRpbWVsaW5lQ2xhc3MoKQorCitlbnVtIGNsYXNzIE1lZGlhVUlDb250cm9sIHsKKyAgICBUaW1l
bGluZSwKKyAgICBTbGlkZXIsCisgICAgUGxheVBhdXNlQnV0dG9uLAorICAgIEV4aXRGdWxsc2Ny
ZWVuQnV0dG9uLAorICAgIFJld2luZEJ1dHRvbiwKKyAgICBGYXN0Rm9yd2FyZEJ1dHRvbiwKKyAg
ICBWb2x1bWVVcEJ1dHRvbiwKKyAgICBWb2x1bWVEb3duQnV0dG9uLAorfTsKKwordXNpbmcgV2Vi
Q29yZTo6SFRNTFZpZGVvRWxlbWVudDsKK3VzaW5nIFdlYkNvcmU6Om5hcnJvd1ByZWNpc2lvblRv
RmxvYXQ7CisKK0BpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxl
ciAoUHJpdmF0ZSkgPE5TV2luZG93RGVsZWdhdGU+CisKKy0gKHZvaWQpdXBkYXRlVGltZTsKKy0g
KHZvaWQpdGltZWxpbmVQb3NpdGlvbkNoYW5nZWQ6KGlkKXNlbmRlcjsKKy0gKGZsb2F0KWN1cnJl
bnRUaW1lOworLSAodm9pZClzZXRDdXJyZW50VGltZTooZmxvYXQpY3VycmVudFRpbWU7CistIChk
b3VibGUpZHVyYXRpb247CisKKy0gKHZvaWQpdm9sdW1lQ2hhbmdlZDooaWQpc2VuZGVyOworLSAo
ZmxvYXQpbWF4Vm9sdW1lOworLSAoZmxvYXQpdm9sdW1lOworLSAodm9pZClzZXRWb2x1bWU6KGZs
b2F0KXZvbHVtZTsKKy0gKHZvaWQpZGVjcmVtZW50Vm9sdW1lOworLSAodm9pZClpbmNyZW1lbnRW
b2x1bWU7CisKKy0gKHZvaWQpdXBkYXRlUGxheUJ1dHRvbjsKKy0gKHZvaWQpdG9nZ2xlUGxheWlu
ZzooaWQpc2VuZGVyOworLSAoQk9PTClwbGF5aW5nOworLSAodm9pZClzZXRQbGF5aW5nOihCT09M
KXBsYXlpbmc7CisKKy0gKHZvaWQpcmV3aW5kOihpZClzZW5kZXI7CistICh2b2lkKWZhc3RGb3J3
YXJkOihpZClzZW5kZXI7CisKKy0gKE5TU3RyaW5nICopcmVtYWluaW5nVGltZVRleHQ7CistIChO
U1N0cmluZyAqKWVsYXBzZWRUaW1lVGV4dDsKKworLSAodm9pZClleGl0RnVsbHNjcmVlbjooaWQp
c2VuZGVyOworQGVuZAorCitAaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvdyA6
IE5TV2luZG93CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURX
aW5kb3cKKworLSAoaWQpaW5pdFdpdGhDb250ZW50UmVjdDooTlNSZWN0KWNvbnRlbnRSZWN0IHN0
eWxlTWFzazooTlNVSW50ZWdlcilhU3R5bGUgYmFja2luZzooTlNCYWNraW5nU3RvcmVUeXBlKWJ1
ZmZlcmluZ1R5cGUgZGVmZXI6KEJPT0wpZmxhZworeworICAgIFVOVVNFRF9QQVJBTShhU3R5bGUp
OworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhDb250ZW50UmVjdDpjb250ZW50UmVjdCBzdHls
ZU1hc2s6TlNXaW5kb3dTdHlsZU1hc2tCb3JkZXJsZXNzIGJhY2tpbmc6YnVmZmVyaW5nVHlwZSBk
ZWZlcjpmbGFnXTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBb
c2VsZiBzZXRPcGFxdWU6Tk9dOworICAgIFtzZWxmIHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xv
ciBjbGVhckNvbG9yXV07CisgICAgW3NlbGYgc2V0TGV2ZWw6TlNQb3BVcE1lbnVXaW5kb3dMZXZl
bF07CisgICAgW3NlbGYgc2V0QWNjZXB0c01vdXNlTW92ZWRFdmVudHM6WUVTXTsKKyAgICBbc2Vs
ZiBzZXRJZ25vcmVzTW91c2VFdmVudHM6Tk9dOworICAgIFtzZWxmIHNldE1vdmFibGVCeVdpbmRv
d0JhY2tncm91bmQ6WUVTXTsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChCT09MKWNhbkJl
Y29tZUtleVdpbmRvdworeworICAgIHJldHVybiBZRVM7Cit9CisKKy0gKHZvaWQpY2FuY2VsT3Bl
cmF0aW9uOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKKyAgICBbW3Nl
bGYgd2luZG93Q29udHJvbGxlcl0gZXhpdEZ1bGxzY3JlZW46c2VsZl07Cit9CisKKy0gKHZvaWQp
Y2VudGVyCit7CisgICAgTlNSZWN0IGh1ZEZyYW1lID0gW3NlbGYgZnJhbWVdOworICAgIE5TUmVj
dCBzY3JlZW5GcmFtZSA9IFtbTlNTY3JlZW4gbWFpblNjcmVlbl0gZnJhbWVdOworICAgIFtzZWxm
IHNldEZyYW1lVG9wTGVmdFBvaW50Ok5TTWFrZVBvaW50KHNjcmVlbkZyYW1lLm9yaWdpbi54ICsg
KHNjcmVlbkZyYW1lLnNpemUud2lkdGggLSBodWRGcmFtZS5zaXplLndpZHRoKSAvIDIsIHNjcmVl
bkZyYW1lLm9yaWdpbi55ICsgKHNjcmVlbkZyYW1lLnNpemUuaGVpZ2h0IC0gaHVkRnJhbWUuc2l6
ZS5oZWlnaHQpIC8gNildOworfQorCistICh2b2lkKWtleURvd246KE5TRXZlbnQgKilldmVudAor
eworICAgIFtzdXBlciBrZXlEb3duOmV2ZW50XTsKKyAgICBbW3NlbGYgd2luZG93Q29udHJvbGxl
cl0gZmFkZVdpbmRvd0luXTsKK30KKworLSAoQk9PTClyZXNpZ25GaXJzdFJlc3BvbmRlcgorewor
ICAgIHJldHVybiBOTzsKK30KKworLSAoQk9PTClwZXJmb3JtS2V5RXF1aXZhbGVudDooTlNFdmVu
dCAqKWV2ZW50Cit7CisgICAgLy8gQmxvY2sgYWxsIGNvbW1hbmQga2V5IGV2ZW50cyB3aGlsZSB0
aGUgZnVsbHNjcmVlbiB3aW5kb3cgaXMgdXAuCisgICAgaWYgKFtldmVudCB0eXBlXSAhPSBOU0V2
ZW50VHlwZUtleURvd24pCisgICAgICAgIHJldHVybiBOTzsKKyAgICAKKyAgICBpZiAoIShbZXZl
bnQgbW9kaWZpZXJGbGFnc10gJiBOU0V2ZW50TW9kaWZpZXJGbGFnQ29tbWFuZCkpCisgICAgICAg
IHJldHVybiBOTzsKKyAgICByZXR1cm4gWUVTOworfQorCitAZW5kCisKK3N0YXRpYyBjb25zdCBD
R0Zsb2F0IHdpbmRvd0hlaWdodCA9IDU5Oworc3RhdGljIGNvbnN0IENHRmxvYXQgd2luZG93V2lk
dGggPSA0Mzg7CisKK3N0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBIVURXaW5kb3dGYWRlT3V0
RGVsYXkgPSAzOworCitAaW1wbGVtZW50YXRpb24gV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93
Q29udHJvbGxlcgorCistIChpZClpbml0Cit7CisgICAgTlNXaW5kb3cgKndpbmRvdyA9IFtbV2Vi
VmlkZW9GdWxsc2NyZWVuSFVEV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5TTWFr
ZVJlY3QoMCwgMCwgd2luZG93V2lkdGgsIHdpbmRvd0hlaWdodCkgc3R5bGVNYXNrOk5TV2luZG93
U3R5bGVNYXNrQm9yZGVybGVzcyBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6
Tk9dOworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhXaW5kb3c6d2luZG93XTsKKyAgICBbd2lu
ZG93IHNldERlbGVnYXRlOnNlbGZdOworICAgIFt3aW5kb3cgcmVsZWFzZV07CisgICAgaWYgKCFz
ZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIFtzZWxmIHdpbmRvd0RpZExvYWRdOworICAg
IHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBBU1NFUlQoIV90aW1l
bGluZVVwZGF0ZVRpbWVyKTsKKyAgICBBU1NFUlQoIV9hcmVhKTsKKyAgICBBU1NFUlQoIV9pc1Nj
cnViYmluZyk7CisgICAgW190aW1lbGluZSByZWxlYXNlXTsKKyAgICBbX3JlbWFpbmluZ1RpbWVU
ZXh0IHJlbGVhc2VdOworICAgIFtfZWxhcHNlZFRpbWVUZXh0IHJlbGVhc2VdOworICAgIFtfdm9s
dW1lU2xpZGVyIHJlbGVhc2VdOworICAgIFtfcGxheUJ1dHRvbiByZWxlYXNlXTsKKyAgICBbc3Vw
ZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpc2V0QXJlYTooTlNUcmFja2luZ0FyZWEgKilhcmVh
Cit7CisgICAgaWYgKGFyZWEgPT0gX2FyZWEpCisgICAgICAgIHJldHVybjsKKyAgICBbX2FyZWEg
cmVsZWFzZV07CisgICAgX2FyZWEgPSBbYXJlYSByZXRhaW5dOworfQorCistICh2b2lkKWtleURv
d246KE5TRXZlbnQgKilldmVudAoreworICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnMgPSBbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXTsKKyAgICBpZiAo
W2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBsZW5ndGhdID09IDEpIHsKKyAgICAgICAgc3dp
dGNoIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGNoYXJhY3RlckF0SW5kZXg6MF0pIHsK
KyAgICAgICAgY2FzZSAnICc6CisgICAgICAgICAgICBbc2VsZiB0b2dnbGVQbGF5aW5nOm5pbF07
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgTlNVcEFycm93RnVuY3Rpb25LZXk6
CisgICAgICAgICAgICBpZiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNFdmVudE1vZGlmaWVy
RmxhZ09wdGlvbikKKyAgICAgICAgICAgICAgICBbc2VsZiBzZXRWb2x1bWU6W3NlbGYgbWF4Vm9s
dW1lXV07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgW3NlbGYgaW5jcmVtZW50
Vm9sdW1lXTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBOU0Rvd25BcnJvd0Z1
bmN0aW9uS2V5OgorICAgICAgICAgICAgaWYgKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TRXZl
bnRNb2RpZmllckZsYWdPcHRpb24pCisgICAgICAgICAgICAgICAgW3NlbGYgc2V0Vm9sdW1lOjBd
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFtzZWxmIGRlY3JlbWVudFZvbHVt
ZV07CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIFtzdXBlciBrZXlEb3duOmV2ZW50XTsKK30K
KworLSAoaWQgPFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZT4p
ZGVsZWdhdGUKK3sKKyAgICByZXR1cm4gX2RlbGVnYXRlOworfQorCistICh2b2lkKXNldERlbGVn
YXRlOihpZCA8V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlPilk
ZWxlZ2F0ZQoreworICAgIF9kZWxlZ2F0ZSA9IGRlbGVnYXRlOworfQorCistICh2b2lkKXNjaGVk
dWxlVGltZVVwZGF0ZQoreworICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1
ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IodW5zY2hlZHVsZVRpbWVVcGRh
dGUpIG9iamVjdDpzZWxmXTsKKworICAgIC8vIEZpcnN0LCB1cGRhdGUgcmlnaHQgYXdheSwgdGhl
biBzY2hlZHVsZSBmdXR1cmUgdXBkYXRlCisgICAgW3NlbGYgdXBkYXRlVGltZV07CisgICAgW3Nl
bGYgdXBkYXRlUGxheUJ1dHRvbl07CisKKyAgICBbX3RpbWVsaW5lVXBkYXRlVGltZXIgaW52YWxp
ZGF0ZV07CisgICAgW190aW1lbGluZVVwZGF0ZVRpbWVyIHJlbGVhc2VdOworCisgICAgLy8gTm90
ZSB0aGF0IHRoaXMgY3JlYXRlcyBhIHJldGFpbiBjeWNsZSBiZXR3ZWVuIHRoZSB3aW5kb3cgYW5k
IHVzLgorICAgIF90aW1lbGluZVVwZGF0ZVRpbWVyID0gW1tOU1RpbWVyIHRpbWVyV2l0aFRpbWVJ
bnRlcnZhbDowLjI1IHRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih1cGRhdGVUaW1lKSB1
c2VySW5mbzpuaWwgcmVwZWF0czpZRVNdIHJldGFpbl07CisgICAgW1tOU1J1bkxvb3AgY3VycmVu
dFJ1bkxvb3BdIGFkZFRpbWVyOl90aW1lbGluZVVwZGF0ZVRpbWVyIGZvck1vZGU6TlNSdW5Mb29w
Q29tbW9uTW9kZXNdOworfQorCistICh2b2lkKXVuc2NoZWR1bGVUaW1lVXBkYXRlCit7CisgICAg
W05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9ybVJlcXVlc3RzV2l0aFRhcmdldDpzZWxmIHNl
bGVjdG9yOkBzZWxlY3Rvcih1bnNjaGVkdWxlVGltZVVwZGF0ZSkgb2JqZWN0Om5pbF07CisKKyAg
ICBbX3RpbWVsaW5lVXBkYXRlVGltZXIgaW52YWxpZGF0ZV07CisgICAgW190aW1lbGluZVVwZGF0
ZVRpbWVyIHJlbGVhc2VdOworICAgIF90aW1lbGluZVVwZGF0ZVRpbWVyID0gbmlsOworfQorCist
ICh2b2lkKWZhZGVXaW5kb3dJbgoreworICAgIE5TV2luZG93ICp3aW5kb3cgPSBbc2VsZiB3aW5k
b3ddOworICAgIGlmICghW3dpbmRvdyBpc1Zpc2libGVdKQorICAgICAgICBbd2luZG93IHNldEFs
cGhhVmFsdWU6MF07CisKKyAgICBbd2luZG93IG1ha2VLZXlBbmRPcmRlckZyb250OnNlbGZdOwor
ICAgIFtbd2luZG93IGFuaW1hdG9yXSBzZXRBbHBoYVZhbHVlOjFdOworICAgIFtzZWxmIHNjaGVk
dWxlVGltZVVwZGF0ZV07CisKKyAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVx
dWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGZhZGVXaW5kb3dPdXQpIG9i
amVjdDpuaWxdOworICAgIGlmICghX21vdXNlSXNJbkhVRCAmJiBbc2VsZiBwbGF5aW5nXSkgLy8g
RG9uJ3QgZmFkZSBvdXQgd2hlbiBwYXVzZWQuCisgICAgICAgIFtzZWxmIHBlcmZvcm1TZWxlY3Rv
cjpAc2VsZWN0b3IoZmFkZVdpbmRvd091dCkgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTpIVURX
aW5kb3dGYWRlT3V0RGVsYXldOworfQorCistICh2b2lkKWZhZGVXaW5kb3dPdXQKK3sKKyAgICBb
TlNDdXJzb3Igc2V0SGlkZGVuVW50aWxNb3VzZU1vdmVzOllFU107CisgICAgW1tbc2VsZiB3aW5k
b3ddIGFuaW1hdG9yXSBzZXRBbHBoYVZhbHVlOjBdOworICAgIFtzZWxmIHBlcmZvcm1TZWxlY3Rv
cjpAc2VsZWN0b3IodW5zY2hlZHVsZVRpbWVVcGRhdGUpIHdpdGhPYmplY3Q6bmlsIGFmdGVyRGVs
YXk6MV07Cit9CisKKy0gKHZvaWQpY2xvc2VXaW5kb3cKK3sKKyAgICBbTlNPYmplY3QgY2FuY2Vs
UHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9y
KGZhZGVXaW5kb3dPdXQpIG9iamVjdDpuaWxdOworICAgIFtzZWxmIHVuc2NoZWR1bGVUaW1lVXBk
YXRlXTsKKyAgICBOU1dpbmRvdyAqd2luZG93ID0gW3NlbGYgd2luZG93XTsKKyAgICBbW3dpbmRv
dyBjb250ZW50Vmlld10gcmVtb3ZlVHJhY2tpbmdBcmVhOl9hcmVhXTsKKyAgICBbc2VsZiBzZXRB
cmVhOm5pbF07CisgICAgW3dpbmRvdyBjbG9zZV07CisgICAgW3dpbmRvdyBzZXREZWxlZ2F0ZTpu
aWxdOworICAgIFtzZWxmIHNldFdpbmRvdzpuaWxdOworfQorCitzdGF0aWMgTlNDb250cm9sICpj
cmVhdGVNZWRpYVVJQ29udHJvbChNZWRpYVVJQ29udHJvbCBjb250cm9sVHlwZSkKK3sKKyAgICBz
d2l0Y2ggKGNvbnRyb2xUeXBlKSB7CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6VGltZWxpbmU6
IHsKKyAgICAgICAgTlNTbGlkZXIgKnNsaWRlciA9IFtbUVRIVURUaW1lbGluZSBhbGxvY10gaW5p
dF07CisgICAgICAgIFtbc2xpZGVyIGNlbGxdIHNldENvbnRpbnVvdXM6WUVTXTsKKyAgICAgICAg
cmV0dXJuIHNsaWRlcjsKKyAgICB9CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6U2xpZGVyOiB7
CisgICAgICAgIE5TQnV0dG9uICpzbGlkZXIgPSBbW1FUSFVEU2xpZGVyIGFsbG9jXSBpbml0XTsK
KyAgICAgICAgW1tzbGlkZXIgY2VsbF0gc2V0Q29udGludW91czpZRVNdOworICAgICAgICByZXR1
cm4gc2xpZGVyOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpQbGF5UGF1c2VCdXR0
b246IHsKKyAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGlu
aXRdOworICAgICAgICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1Bs
YXlUZW1wbGF0ZSJdXTsKKyAgICAgICAgW2J1dHRvbiBzZXRBbHRlcm5hdGVJbWFnZTpbTlNJbWFn
ZSBpbWFnZU5hbWVkOkAiTlNQYXVzZVFUUHJpdmF0ZVRlbXBsYXRlIl1dOworCisgICAgICAgIFtb
YnV0dG9uIGNlbGxdIHNldFNob3dzU3RhdGVCeTpOU0NvbnRlbnRzQ2VsbE1hc2tdOworICAgICAg
ICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9
CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6RXhpdEZ1bGxzY3JlZW5CdXR0b246IHsKKyAgICAg
ICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOworICAgICAg
ICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU0V4aXRGdWxsU2NyZWVu
VGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAgICBy
ZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpSZXdpbmRCdXR0
b246IHsKKyAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGlu
aXRdOworICAgICAgICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1Jl
d2luZFRlbXBsYXRlIl1dOworICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAgICAg
ICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9CisgICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6RmFzdEZv
cndhcmRCdXR0b246IHsKKyAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24g
YWxsb2NdIGluaXRdOworICAgICAgICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFt
ZWQ6QCJOU0Zhc3RGb3J3YXJkVGVtcGxhdGUiXV07CisgICAgICAgIFtidXR0b24gc2V0Qm9yZGVy
ZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOworICAgIH0KKyAgICBjYXNlIE1lZGlhVUlD
b250cm9sOjpWb2x1bWVVcEJ1dHRvbjogeworICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tR
VEhVREJ1dHRvbiBhbGxvY10gaW5pdF07CisgICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1h
Z2UgaW1hZ2VOYW1lZDpAIk5TQXVkaW9PdXRwdXRWb2x1bWVIaWdoVGVtcGxhdGUiXV07CisgICAg
ICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOworICAgICAgICByZXR1cm4gYnV0dG9uOworICAg
IH0KKyAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpWb2x1bWVEb3duQnV0dG9uOiB7CisgICAgICAg
IE5TQnV0dG9uICpidXR0b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAg
W2J1dHRvbiBzZXRJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNBdWRpb091dHB1dFZvbHVt
ZUxvd1RlbXBsYXRlIl1dOworICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKKyAgICAg
ICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIG5pbDsKK30KKworc3RhdGljIE5TQ29udHJvbCAqY3JlYXRlQ29udHJv
bFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2wgY29udHJvbFR5cGUsIE5TUmVj
dCBmcmFtZSkKK3sKKyAgICBOU0NvbnRyb2wgKmNvbnRyb2wgPSBjcmVhdGVNZWRpYVVJQ29udHJv
bChjb250cm9sVHlwZSk7CisgICAgY29udHJvbC5mcmFtZSA9IGZyYW1lOworICAgIHJldHVybiBj
b250cm9sOworfQorCitzdGF0aWMgTlNUZXh0RmllbGQgKmNyZWF0ZVRpbWVUZXh0RmllbGQoTlNS
ZWN0IGZyYW1lKQoreworICAgIE5TVGV4dEZpZWxkICp0ZXh0RmllbGQgPSBbW05TVGV4dEZpZWxk
IGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1lXTsKKyAgICBbdGV4dEZpZWxkIHNldFRleHRDb2xv
cjpbTlNDb2xvciB3aGl0ZUNvbG9yXV07CisgICAgW3RleHRGaWVsZCBzZXRCb3JkZXJlZDpOT107
CisgICAgW3RleHRGaWVsZCBzZXRGb250OltOU0ZvbnQgYm9sZFN5c3RlbUZvbnRPZlNpemU6MTBd
XTsKKyAgICBbdGV4dEZpZWxkIHNldERyYXdzQmFja2dyb3VuZDpOT107CisgICAgW3RleHRGaWVs
ZCBzZXRCZXplbGVkOk5PXTsKKyAgICBbdGV4dEZpZWxkIHNldEVkaXRhYmxlOk5PXTsKKyAgICBb
dGV4dEZpZWxkIHNldFNlbGVjdGFibGU6Tk9dOworICAgIHJldHVybiB0ZXh0RmllbGQ7Cit9CisK
K3N0YXRpYyBOU1ZpZXcgKmNyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldygpCit7CisgICAgaWQg
dmlldyA9IFtbUVRIVURCYWNrZ3JvdW5kVmlldyBhbGxvY10gaW5pdF07CisKKyAgICBjb25zdCBD
R0Zsb2F0IHF1aWNrVGltZVBsYXllckhVREhlaWdodCA9IDU5OworICAgIGNvbnN0IENHRmxvYXQg
cXVpY2tUaW1lUGxheWVySFVEQ29udGVudEJvcmRlclBvc2l0aW9uID0gMzg7CisKKyAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgIFt2aWV3IHNldENvbnRlbnRCb3Jk
ZXJQb3NpdGlvbjpxdWlja1RpbWVQbGF5ZXJIVURDb250ZW50Qm9yZGVyUG9zaXRpb24gLyBxdWlj
a1RpbWVQbGF5ZXJIVURIZWlnaHRdOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAorCisgICAgcmV0dXJuIHZpZXc7Cit9CisKKy0gKHZvaWQpd2luZG93RGlkTG9hZAorewor
ICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IGhvcml6b250YWxNYXJnaW4gPSAxMDsKKyAgICBzdGF0
aWMgY29uc3QgQ0dGbG9hdCBwbGF5QnV0dG9uV2lkdGggPSA0MTsKKyAgICBzdGF0aWMgY29uc3Qg
Q0dGbG9hdCBwbGF5QnV0dG9uSGVpZ2h0ID0gMzU7CisgICAgc3RhdGljIGNvbnN0IENHRmxvYXQg
cGxheUJ1dHRvblRvcE1hcmdpbiA9IDQ7CisgICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdm9sdW1l
U2xpZGVyV2lkdGggPSA1MDsKKyAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB2b2x1bWVTbGlkZXJI
ZWlnaHQgPSAxMzsKKyAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB2b2x1bWVCdXR0b25XaWR0aCA9
IDE4OworICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHZvbHVtZUJ1dHRvbkhlaWdodCA9IDE2Owor
ICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHZvbHVtZVVwQnV0dG9uTGVmdE1hcmdpbiA9IDQ7Cisg
ICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdm9sdW1lQ29udHJvbHNUb3BNYXJnaW4gPSAxMzsKKyAg
ICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBleGl0RnVsbHNjcmVlbkJ1dHRvbldpZHRoID0gMjU7Cisg
ICAgc3RhdGljIGNvbnN0IENHRmxvYXQgZXhpdEZ1bGxzY3JlZW5CdXR0b25IZWlnaHQgPSAyMTsK
KyAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBleGl0RnVsbHNjcmVlbkJ1dHRvblRvcE1hcmdpbiA9
IDExOworICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHRpbWVsaW5lV2lkdGggPSAzMTU7CisgICAg
c3RhdGljIGNvbnN0IENHRmxvYXQgdGltZWxpbmVIZWlnaHQgPSAxNDsKKyAgICBzdGF0aWMgY29u
c3QgQ0dGbG9hdCB0aW1lbGluZUJvdHRvbU1hcmdpbiA9IDc7CisgICAgc3RhdGljIGNvbnN0IENH
RmxvYXQgdGltZVRleHRGaWVsZFdpZHRoID0gNTQ7CisgICAgc3RhdGljIGNvbnN0IENHRmxvYXQg
dGltZVRleHRGaWVsZEhlaWdodCA9IDEzOworICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHRpbWVU
ZXh0RmllbGRIb3Jpem9udGFsTWFyZ2luID0gNzsKKworICAgIE5TV2luZG93ICp3aW5kb3cgPSBb
c2VsZiB3aW5kb3ddOworICAgIEFTU0VSVCh3aW5kb3cpOworCisgICAgTlNWaWV3ICpiYWNrZ3Jv
dW5kID0gY3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KCk7CisKKyAgICBbd2luZG93IHNldENv
bnRlbnRWaWV3OmJhY2tncm91bmRdOworICAgIF9hcmVhID0gW1tOU1RyYWNraW5nQXJlYSBhbGxv
Y10gaW5pdFdpdGhSZWN0OltiYWNrZ3JvdW5kIGJvdW5kc10gb3B0aW9uczpOU1RyYWNraW5nTW91
c2VFbnRlcmVkQW5kRXhpdGVkIHwgTlNUcmFja2luZ0FjdGl2ZUFsd2F5cyBvd25lcjpzZWxmIHVz
ZXJJbmZvOm5pbF07CisgICAgW2JhY2tncm91bmQgYWRkVHJhY2tpbmdBcmVhOl9hcmVhXTsKKyAg
ICBbYmFja2dyb3VuZCByZWxlYXNlXTsgICAgCisKKyAgICBOU1ZpZXcgKmNvbnRlbnRWaWV3ID0g
W3dpbmRvdyBjb250ZW50Vmlld107CisKKyAgICBDR0Zsb2F0IGNlbnRlciA9IENHRmxvb3IoKHdp
bmRvd1dpZHRoIC0gcGxheUJ1dHRvbldpZHRoKSAvIDIpOworICAgIF9wbGF5QnV0dG9uID0gKE5T
QnV0dG9uICopY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRy
b2w6OlBsYXlQYXVzZUJ1dHRvbiwgTlNNYWtlUmVjdChjZW50ZXIsIHdpbmRvd0hlaWdodCAtIHBs
YXlCdXR0b25Ub3BNYXJnaW4gLSBwbGF5QnV0dG9uSGVpZ2h0LCBwbGF5QnV0dG9uV2lkdGgsIHBs
YXlCdXR0b25IZWlnaHQpKTsKKyAgICBBU1NFUlQoW19wbGF5QnV0dG9uIGlzS2luZE9mQ2xhc3M6
W05TQnV0dG9uIGNsYXNzXV0pOworICAgIFtfcGxheUJ1dHRvbiBzZXRUYXJnZXQ6c2VsZl07Cisg
ICAgW19wbGF5QnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlUGxheWluZzopXTsKKyAg
ICBbY29udGVudFZpZXcgYWRkU3VidmlldzpfcGxheUJ1dHRvbl07CisKKyAgICBDR0Zsb2F0IGNs
b3NlVG9SaWdodCA9IHdpbmRvd1dpZHRoIC0gaG9yaXpvbnRhbE1hcmdpbiAtIGV4aXRGdWxsc2Ny
ZWVuQnV0dG9uV2lkdGg7CisgICAgTlNDb250cm9sICpleGl0RnVsbHNjcmVlbkJ1dHRvbiA9IGNy
ZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpFeGl0RnVs
bHNjcmVlbkJ1dHRvbiwgTlNNYWtlUmVjdChjbG9zZVRvUmlnaHQsIHdpbmRvd0hlaWdodCAtIGV4
aXRGdWxsc2NyZWVuQnV0dG9uVG9wTWFyZ2luIC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25IZWlnaHQs
IGV4aXRGdWxsc2NyZWVuQnV0dG9uV2lkdGgsIGV4aXRGdWxsc2NyZWVuQnV0dG9uSGVpZ2h0KSk7
CisgICAgW2V4aXRGdWxsc2NyZWVuQnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3IoZXhpdEZ1bGxz
Y3JlZW46KV07CisgICAgW2V4aXRGdWxsc2NyZWVuQnV0dG9uIHNldFRhcmdldDpzZWxmXTsKKyAg
ICBbY29udGVudFZpZXcgYWRkU3VidmlldzpleGl0RnVsbHNjcmVlbkJ1dHRvbl07CisgICAgW2V4
aXRGdWxsc2NyZWVuQnV0dG9uIHJlbGVhc2VdOworICAgIAorICAgIENHRmxvYXQgdm9sdW1lQ29u
dHJvbHNCb3R0b20gPSB3aW5kb3dIZWlnaHQgLSB2b2x1bWVDb250cm9sc1RvcE1hcmdpbiAtIHZv
bHVtZUJ1dHRvbkhlaWdodDsKKyAgICBDR0Zsb2F0IGxlZnQgPSBob3Jpem9udGFsTWFyZ2luOwor
ICAgIE5TQ29udHJvbCAqdm9sdW1lRG93bkJ1dHRvbiA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFV
SUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpWb2x1bWVEb3duQnV0dG9uLCBOU01ha2VSZWN0
KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tLCB2b2x1bWVCdXR0b25XaWR0aCwgdm9sdW1lQnV0
dG9uSGVpZ2h0KSk7CisgICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6dm9sdW1lRG93bkJ1dHRv
bl07CisgICAgW3ZvbHVtZURvd25CdXR0b24gc2V0VGFyZ2V0OnNlbGZdOworICAgIFt2b2x1bWVE
b3duQnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3Ioc2V0Vm9sdW1lVG9aZXJvOildOworICAgIFt2
b2x1bWVEb3duQnV0dG9uIHJlbGVhc2VdOworCisgICAgbGVmdCArPSB2b2x1bWVCdXR0b25XaWR0
aDsKKyAgICBfdm9sdW1lU2xpZGVyID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5
cGUoTWVkaWFVSUNvbnRyb2w6OlNsaWRlciwgTlNNYWtlUmVjdChsZWZ0LCB2b2x1bWVDb250cm9s
c0JvdHRvbSArIENHRmxvb3IoKHZvbHVtZUJ1dHRvbkhlaWdodCAtIHZvbHVtZVNsaWRlckhlaWdo
dCkgLyAyKSwgdm9sdW1lU2xpZGVyV2lkdGgsIHZvbHVtZVNsaWRlckhlaWdodCkpOworICAgIFtf
dm9sdW1lU2xpZGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOltzZWxmIG1h
eFZvbHVtZV1dIGZvcktleTpAIm1heFZhbHVlIl07CisgICAgW192b2x1bWVTbGlkZXIgc2V0VGFy
Z2V0OnNlbGZdOworICAgIFtfdm9sdW1lU2xpZGVyIHNldEFjdGlvbjpAc2VsZWN0b3Iodm9sdW1l
Q2hhbmdlZDopXTsKKyAgICBbY29udGVudFZpZXcgYWRkU3Vidmlldzpfdm9sdW1lU2xpZGVyXTsK
KworICAgIGxlZnQgKz0gdm9sdW1lU2xpZGVyV2lkdGggKyB2b2x1bWVVcEJ1dHRvbkxlZnRNYXJn
aW47CisgICAgTlNDb250cm9sICp2b2x1bWVVcEJ1dHRvbiA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVk
aWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpWb2x1bWVVcEJ1dHRvbiwgTlNNYWtlUmVj
dChsZWZ0LCB2b2x1bWVDb250cm9sc0JvdHRvbSwgdm9sdW1lQnV0dG9uV2lkdGgsIHZvbHVtZUJ1
dHRvbkhlaWdodCkpOworICAgIFt2b2x1bWVVcEJ1dHRvbiBzZXRUYXJnZXQ6c2VsZl07CisgICAg
W3ZvbHVtZVVwQnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3Ioc2V0Vm9sdW1lVG9NYXhpbXVtOild
OworICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3OnZvbHVtZVVwQnV0dG9uXTsKKyAgICBbdm9s
dW1lVXBCdXR0b24gcmVsZWFzZV07CisKKyAgICBfdGltZWxpbmUgPSBjcmVhdGVNZWRpYVVJQ29u
dHJvbChNZWRpYVVJQ29udHJvbDo6VGltZWxpbmUpOworCisgICAgW190aW1lbGluZSBzZXRUYXJn
ZXQ6c2VsZl07CisgICAgW190aW1lbGluZSBzZXRBY3Rpb246QHNlbGVjdG9yKHRpbWVsaW5lUG9z
aXRpb25DaGFuZ2VkOildOworICAgIFtfdGltZWxpbmUgc2V0RnJhbWU6TlNNYWtlUmVjdChDR0Zs
b29yKCh3aW5kb3dXaWR0aCAtIHRpbWVsaW5lV2lkdGgpIC8gMiksIHRpbWVsaW5lQm90dG9tTWFy
Z2luLCB0aW1lbGluZVdpZHRoLCB0aW1lbGluZUhlaWdodCldOworICAgIFtjb250ZW50VmlldyBh
ZGRTdWJ2aWV3Ol90aW1lbGluZV07CisKKyAgICBfZWxhcHNlZFRpbWVUZXh0ID0gY3JlYXRlVGlt
ZVRleHRGaWVsZChOU01ha2VSZWN0KHRpbWVUZXh0RmllbGRIb3Jpem9udGFsTWFyZ2luLCB0aW1l
bGluZUJvdHRvbU1hcmdpbiwgdGltZVRleHRGaWVsZFdpZHRoLCB0aW1lVGV4dEZpZWxkSGVpZ2h0
KSk7CisgICAgW19lbGFwc2VkVGltZVRleHQgc2V0QWxpZ25tZW50Ok5TVGV4dEFsaWdubWVudExl
ZnRdOworICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3Ol9lbGFwc2VkVGltZVRleHRdOworCisg
ICAgX3JlbWFpbmluZ1RpbWVUZXh0ID0gY3JlYXRlVGltZVRleHRGaWVsZChOU01ha2VSZWN0KHdp
bmRvd1dpZHRoIC0gdGltZVRleHRGaWVsZEhvcml6b250YWxNYXJnaW4gLSB0aW1lVGV4dEZpZWxk
V2lkdGgsIHRpbWVsaW5lQm90dG9tTWFyZ2luLCB0aW1lVGV4dEZpZWxkV2lkdGgsIHRpbWVUZXh0
RmllbGRIZWlnaHQpKTsKKyAgICBbX3JlbWFpbmluZ1RpbWVUZXh0IHNldEFsaWdubWVudDpOU1Rl
eHRBbGlnbm1lbnRSaWdodF07CisgICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X3JlbWFpbmlu
Z1RpbWVUZXh0XTsKKworICAgIFt3aW5kb3cgcmVjYWxjdWxhdGVLZXlWaWV3TG9vcF07CisgICAg
W3dpbmRvdyBzZXRJbml0aWFsRmlyc3RSZXNwb25kZXI6X3BsYXlCdXR0b25dOworICAgIFt3aW5k
b3cgY2VudGVyXTsKK30KKworLSAodm9pZCl1cGRhdGVWb2x1bWUKK3sKKyAgICBbX3ZvbHVtZVNs
aWRlciBzZXRGbG9hdFZhbHVlOltzZWxmIHZvbHVtZV1dOworfQorCistICh2b2lkKXVwZGF0ZVRp
bWUKK3sKKyAgICBbc2VsZiB1cGRhdGVWb2x1bWVdOworCisgICAgW190aW1lbGluZSBzZXRGbG9h
dFZhbHVlOltzZWxmIGN1cnJlbnRUaW1lXV07CisgICAgW190aW1lbGluZSBzZXRWYWx1ZTpbTlNO
dW1iZXIgbnVtYmVyV2l0aERvdWJsZTpbc2VsZiBkdXJhdGlvbl1dIGZvcktleTpAIm1heFZhbHVl
Il07CisKKyAgICBbX3JlbWFpbmluZ1RpbWVUZXh0IHNldFN0cmluZ1ZhbHVlOltzZWxmIHJlbWFp
bmluZ1RpbWVUZXh0XV07CisgICAgW19lbGFwc2VkVGltZVRleHQgc2V0U3RyaW5nVmFsdWU6W3Nl
bGYgZWxhcHNlZFRpbWVUZXh0XV07Cit9CisKKy0gKHZvaWQpZW5kU2NydWJiaW5nCit7CisgICAg
QVNTRVJUKF9pc1NjcnViYmluZyk7CisgICAgX2lzU2NydWJiaW5nID0gTk87CisgICAgaWYgKEhU
TUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCA9IFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkK
KyAgICAgICAgdmlkZW9FbGVtZW50LT5lbmRTY3J1YmJpbmcoKTsKK30KKworLSAodm9pZCl0aW1l
bGluZVBvc2l0aW9uQ2hhbmdlZDooaWQpc2VuZGVyCit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRl
cik7CisgICAgW3NlbGYgc2V0Q3VycmVudFRpbWU6W190aW1lbGluZSBmbG9hdFZhbHVlXV07Cisg
ICAgaWYgKCFfaXNTY3J1YmJpbmcpIHsKKyAgICAgICAgX2lzU2NydWJiaW5nID0gWUVTOworICAg
ICAgICBpZiAoSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50ID0gW19kZWxlZ2F0ZSB2aWRl
b0VsZW1lbnRdKQorICAgICAgICAgICAgdmlkZW9FbGVtZW50LT5iZWdpblNjcnViYmluZygpOwor
ICAgICAgICBzdGF0aWMgTlNBcnJheSAqZW5kU2NydWJiaW5nTW9kZXMgPSBbW05TQXJyYXkgYWxs
b2NdIGluaXRXaXRoT2JqZWN0czpOU0RlZmF1bHRSdW5Mb29wTW9kZSwgTlNNb2RhbFBhbmVsUnVu
TG9vcE1vZGUsIG5pbF07CisgICAgICAgIC8vIFNjaGVkdWxlIC1lbmRTY3J1YmJpbmcgZm9yIHdo
ZW4gbGVhdmluZyBtb3VzZSB0cmFja2luZyBtb2RlLgorICAgICAgICBbW05TUnVuTG9vcCBjdXJy
ZW50UnVuTG9vcF0gcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihlbmRTY3J1YmJpbmcpIHRhcmdl
dDpzZWxmIGFyZ3VtZW50Om5pbCBvcmRlcjowIG1vZGVzOmVuZFNjcnViYmluZ01vZGVzXTsKKyAg
ICB9Cit9CisKKy0gKGZsb2F0KWN1cnJlbnRUaW1lCit7CisgICAgcmV0dXJuIFtfZGVsZWdhdGUg
dmlkZW9FbGVtZW50XSA/IFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+Y3VycmVudFRpbWUoKSA6
IDA7Cit9CisKKy0gKHZvaWQpc2V0Q3VycmVudFRpbWU6KGZsb2F0KWN1cnJlbnRUaW1lCit7Cisg
ICAgaWYgKCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0pCisgICAgICAgIHJldHVybjsKKyAgICBb
X2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lKTsKKyAg
ICBbc2VsZiB1cGRhdGVUaW1lXTsKK30KKworLSAoZG91YmxlKWR1cmF0aW9uCit7CisgICAgcmV0
dXJuIFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSA/IFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+
ZHVyYXRpb24oKSA6IDA7Cit9CisKKy0gKGZsb2F0KW1heFZvbHVtZQoreworICAgIC8vIFNldCB0
aGUgdm9sdW1lIHNsaWRlciByZXNvbHV0aW9uCisgICAgcmV0dXJuIDEwMDsKK30KKworLSAodm9p
ZCl2b2x1bWVDaGFuZ2VkOihpZClzZW5kZXIKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsK
KyAgICBbc2VsZiBzZXRWb2x1bWU6W192b2x1bWVTbGlkZXIgZmxvYXRWYWx1ZV1dOworfQorCist
ICh2b2lkKXNldFZvbHVtZVRvWmVybzooaWQpc2VuZGVyCit7CisgICAgVU5VU0VEX1BBUkFNKHNl
bmRlcik7CisgICAgW3NlbGYgc2V0Vm9sdW1lOjBdOworfQorCistICh2b2lkKXNldFZvbHVtZVRv
TWF4aW11bTooaWQpc2VuZGVyCit7CisgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgW3Nl
bGYgc2V0Vm9sdW1lOltzZWxmIG1heFZvbHVtZV1dOworfQorCistICh2b2lkKWRlY3JlbWVudFZv
bHVtZQoreworICAgIGlmICghW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQorICAgICAgICByZXR1
cm47CisKKyAgICBmbG9hdCB2b2x1bWUgPSBbc2VsZiB2b2x1bWVdIC0gMTA7CisgICAgW3NlbGYg
c2V0Vm9sdW1lOnN0ZDo6bWF4KHZvbHVtZSwgMC4wZildOworfQorCistICh2b2lkKWluY3JlbWVu
dFZvbHVtZQoreworICAgIGlmICghW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBmbG9hdCB2b2x1bWUgPSBbc2VsZiB2b2x1bWVdICsgMTA7CisgICAgW3Nl
bGYgc2V0Vm9sdW1lOnN0ZDo6bWluKHZvbHVtZSwgW3NlbGYgbWF4Vm9sdW1lXSldOworfQorCist
IChmbG9hdCl2b2x1bWUKK3sKKyAgICByZXR1cm4gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdID8g
W19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdLT52b2x1bWUoKSAqIFtzZWxmIG1heFZvbHVtZV0gOiAw
OworfQorCistICh2b2lkKXNldFZvbHVtZTooZmxvYXQpdm9sdW1lCit7CisgICAgaWYgKCFbX2Rl
bGVnYXRlIHZpZGVvRWxlbWVudF0pCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoW19kZWxlZ2F0
ZSB2aWRlb0VsZW1lbnRdLT5tdXRlZCgpKQorICAgICAgICBbX2RlbGVnYXRlIHZpZGVvRWxlbWVu
dF0tPnNldE11dGVkKGZhbHNlKTsKKyAgICBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPnNldFZv
bHVtZSh2b2x1bWUgLyBbc2VsZiBtYXhWb2x1bWVdKTsKKyAgICBbc2VsZiB1cGRhdGVWb2x1bWVd
OworfQorCistICh2b2lkKXVwZGF0ZVBsYXlCdXR0b24KK3sKKyAgICBbX3BsYXlCdXR0b24gc2V0
SW50VmFsdWU6W3NlbGYgcGxheWluZ11dOworfQorCistICh2b2lkKXVwZGF0ZVJhdGUKK3sKKyAg
ICBCT09MIHBsYXlpbmcgPSBbc2VsZiBwbGF5aW5nXTsKKworICAgIC8vIEtlZXAgdGhlIEhVRCB2
aXNpYmxlIHdoZW4gcGF1c2VkLgorICAgIGlmICghcGxheWluZykKKyAgICAgICAgW3NlbGYgZmFk
ZVdpbmRvd0luXTsKKyAgICBlbHNlIGlmICghX21vdXNlSXNJbkhVRCkgeworICAgICAgICBbTlNP
YmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0
b3I6QHNlbGVjdG9yKGZhZGVXaW5kb3dPdXQpIG9iamVjdDpuaWxdOworICAgICAgICBbc2VsZiBw
ZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGZhZGVXaW5kb3dPdXQpIHdpdGhPYmplY3Q6bmlsIGFm
dGVyRGVsYXk6SFVEV2luZG93RmFkZU91dERlbGF5XTsKKyAgICB9CisgICAgW3NlbGYgdXBkYXRl
UGxheUJ1dHRvbl07Cit9CisKKy0gKHZvaWQpdG9nZ2xlUGxheWluZzooaWQpc2VuZGVyCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CisgICAgW3NlbGYgc2V0UGxheWluZzohW3NlbGYgcGxh
eWluZ11dOworfQorCistIChCT09MKXBsYXlpbmcKK3sKKyAgICBIVE1MVmlkZW9FbGVtZW50KiB2
aWRlb0VsZW1lbnQgPSBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF07CisgICAgaWYgKCF2aWRlb0Vs
ZW1lbnQpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIHJldHVybiAhdmlkZW9FbGVtZW50LT5j
YW5QbGF5KCk7Cit9CisKKy0gKHZvaWQpc2V0UGxheWluZzooQk9PTClwbGF5aW5nCit7CisgICAg
SFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50ID0gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRd
OworCisgICAgaWYgKCF2aWRlb0VsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChw
bGF5aW5nKQorICAgICAgICB2aWRlb0VsZW1lbnQtPnBsYXkoKTsKKyAgICBlbHNlCisgICAgICAg
IHZpZGVvRWxlbWVudC0+cGF1c2UoKTsKK30KKworc3RhdGljIE5TU3RyaW5nICp0aW1lVG9TdHJp
bmcoZG91YmxlIHRpbWUpCit7CisgICAgQVNTRVJUX0FSRyh0aW1lLCB0aW1lID49IDApOworCisg
ICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRpbWUpKQorICAgICAgICB0aW1lID0gMDsKKworICAgIGlu
dCBzZWNvbmRzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChzdGQ6OmFicyh0aW1lKSk7CisgICAg
aW50IGhvdXJzID0gc2Vjb25kcyAvICg2MCAqIDYwKTsKKyAgICBpbnQgbWludXRlcyA9IChzZWNv
bmRzIC8gNjApICUgNjA7CisgICAgc2Vjb25kcyAlPSA2MDsKKworICAgIGlmIChob3VycykKKyAg
ICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJWQ6JTAyZDolMDJkIiwg
aG91cnMsIG1pbnV0ZXMsIHNlY29uZHNdOworCisgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJTAyZDolMDJkIiwgbWludXRlcywgc2Vjb25kc107ICAgIAorfQorCistIChO
U1N0cmluZyAqKXJlbWFpbmluZ1RpbWVUZXh0Cit7CisgICAgSFRNTFZpZGVvRWxlbWVudCogdmlk
ZW9FbGVtZW50ID0gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdOworICAgIGlmICghdmlkZW9FbGVt
ZW50KQorICAgICAgICByZXR1cm4gQCIiOworCisgICAgZG91YmxlIHJlbWFpbmluZ1RpbWUgPSAw
OworCisgICAgaWYgKHN0ZDo6aXNmaW5pdGUodmlkZW9FbGVtZW50LT5kdXJhdGlvbigpKSAmJiBz
dGQ6OmlzZmluaXRlKHZpZGVvRWxlbWVudC0+Y3VycmVudFRpbWUoKSkpCisgICAgICAgIHJlbWFp
bmluZ1RpbWUgPSB2aWRlb0VsZW1lbnQtPmR1cmF0aW9uKCkgLSB2aWRlb0VsZW1lbnQtPmN1cnJl
bnRUaW1lKCk7CisKKyAgICByZXR1cm4gW0AiLSIgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6dGlt
ZVRvU3RyaW5nKHJlbWFpbmluZ1RpbWUpXTsKK30KKworLSAoTlNTdHJpbmcgKillbGFwc2VkVGlt
ZVRleHQKK3sKKyAgICBpZiAoIVtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkKKyAgICAgICAgcmV0
dXJuIEAiIjsKKworICAgIHJldHVybiB0aW1lVG9TdHJpbmcoW19kZWxlZ2F0ZSB2aWRlb0VsZW1l
bnRdLT5jdXJyZW50VGltZSgpKTsKK30KKworLy8gTUFSSzogTlNSZXNwb25kZXIKKworLSAodm9p
ZCltb3VzZUVudGVyZWQ6KE5TRXZlbnQgKil0aGVFdmVudAoreworICAgIFVOVVNFRF9QQVJBTSh0
aGVFdmVudCk7CisgICAgLy8gTWFrZSBzdXJlIHRoZSBIVUQgd29uJ3QgYmUgaGlkZGVuIGZyb20g
bm93CisgICAgX21vdXNlSXNJbkhVRCA9IFlFUzsKKyAgICBbc2VsZiBmYWRlV2luZG93SW5dOwor
fQorCistICh2b2lkKW1vdXNlRXhpdGVkOihOU0V2ZW50ICopdGhlRXZlbnQKK3sKKyAgICBVTlVT
RURfUEFSQU0odGhlRXZlbnQpOworICAgIF9tb3VzZUlzSW5IVUQgPSBOTzsKKyAgICBbc2VsZiBm
YWRlV2luZG93SW5dOworfQorCistICh2b2lkKXJld2luZDooaWQpc2VuZGVyCit7CisgICAgVU5V
U0VEX1BBUkFNKHNlbmRlcik7CisgICAgaWYgKCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0pCisg
ICAgICAgIHJldHVybjsKKyAgICBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPnJld2luZCgzMCk7
Cit9CisKKy0gKHZvaWQpZmFzdEZvcndhcmQ6KGlkKXNlbmRlcgoreworICAgIFVOVVNFRF9QQVJB
TShzZW5kZXIpOworICAgIGlmICghW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQorICAgICAgICBy
ZXR1cm47Cit9CisKKy0gKHZvaWQpZXhpdEZ1bGxzY3JlZW46KGlkKXNlbmRlcgoreworICAgIFVO
VVNFRF9QQVJBTShzZW5kZXIpOworICAgIGlmIChfaXNFbmRpbmdGdWxsc2NyZWVuKQorICAgICAg
ICByZXR1cm47CisgICAgX2lzRW5kaW5nRnVsbHNjcmVlbiA9IFlFUzsKKyAgICBbX2RlbGVnYXRl
IHJlcXVlc3RFeGl0RnVsbHNjcmVlbl07IAorfQorCisvLyBNQVJLOiBOU1dpbmRvd0RlbGVnYXRl
CisKKy0gKHZvaWQpd2luZG93RGlkRXhwb3NlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlv
bgoreworICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOworICAgIFtzZWxmIHNjaGVkdWxl
VGltZVVwZGF0ZV07Cit9CisKKy0gKHZvaWQpd2luZG93RGlkQ2xvc2U6KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uCit7CisgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CisgICAg
W3NlbGYgdW5zY2hlZHVsZVRpbWVVcGRhdGVdOworfQorCitAZW5kCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGZjODgwNzZjYjcxYTg4
ZTVmOGY3YzVhMmMzOGM2Y2FkMmZmZGQ0ZGEuLjlkZGU3ZGRlMWE3YWQ3ZmQ2ZjIxODI1NGYwYjE3
ZDMyZWJmN2JiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KQEAgLTI1NSw2ICsyNTUsNyBAQAogI2ltcG9ydCAiV2ViTlNQcmludE9wZXJhdGlvbkV4dHJh
cy5oIgogI2ltcG9ydCAiV2ViUERGVmlldy5oIgogI2ltcG9ydCAiV2ViU3dpdGNoaW5nR1BVQ2xp
ZW50LmgiCisjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmgiCiAjaW1wb3J0
IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRv
cldpbmRvdy5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oPgpAQCAtOTM3OSw3
ICs5MzgwLDYgQEAgYm9vbCBMYXllckZsdXNoQ29udHJvbGxlcjo6Zmx1c2hMYXllcnMoKQogI2lm
IEVOQUJMRShWSURFTykKIC0gKHZvaWQpX2VudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVt
ZW50OihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Kil2aWRlb0VsZW1lbnQgbW9kZTooV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKW1vZGUKIHsKLSNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRy
b2xsZXIpIHsKICAgICAgICAgaWYgKFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgdmlk
ZW9FbGVtZW50XSA9PSB2aWRlb0VsZW1lbnQpIHsKICAgICAgICAgICAgIC8vIFRoZSBiYWNrZW5k
IG1heSBqdXN0IHdhcm4gdXMgdGhhdCB0aGUgdW5kZXJsYXlpbmcgcGxhZnRvcm1Nb3ZpZSgpCkBA
IC05Mzk3LDIyICs5Mzk3LDIzIEBAIGJvb2wgTGF5ZXJGbHVzaENvbnRyb2xsZXI6OmZsdXNoTGF5
ZXJzKCkKICAgICBpZiAoIV9wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlcikgewogICAgICAg
ICBfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgPSBbW1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIgYWxsb2NdIGluaXRdOwogICAgICAgICBbX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250
cm9sbGVyIHNldFZpZGVvRWxlbWVudDp2aWRlb0VsZW1lbnRdOworI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxs
c2NyZWVuOihVSVZpZXcgKilbW1tzZWxmIHdpbmRvd10gaG9zdExheWVyXSBkZWxlZ2F0ZV0gbW9k
ZTptb2RlXTsKKyNlbHNlCisgICAgICAgIFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIg
ZW50ZXJGdWxsc2NyZWVuOltbc2VsZiB3aW5kb3ddIHNjcmVlbl1dOworI2VuZGlmCiAgICAgfQog
ICAgIGVsc2UKICAgICAgICAgW19wcml2YXRlLT5mdWxsc2NyZWVuQ29udHJvbGxlciBzZXRWaWRl
b0VsZW1lbnQ6dmlkZW9FbGVtZW50XTsKLSNlbmRpZgogfQogCiAtICh2b2lkKV9leGl0VmlkZW9G
dWxsc2NyZWVuCiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIV9wcml2YXRl
LT5mdWxsc2NyZWVuQ29udHJvbGxlcikKICAgICAgICAgcmV0dXJuOwogICAgIFtfcHJpdmF0ZS0+
ZnVsbHNjcmVlbkNvbnRyb2xsZXIgZXhpdEZ1bGxzY3JlZW5dOwogICAgIFtfcHJpdmF0ZS0+ZnVs
bHNjcmVlbkNvbnRyb2xsZXIgcmVsZWFzZV07CiAgICAgX3ByaXZhdGUtPmZ1bGxzY3JlZW5Db250
cm9sbGVyID0gbmlsOwotI2VuZGlmCiB9CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>